谷歌街景能够计算3D城市点云模型,那么怎么才能够做到?可以来这里了解一下。
计算深度地图
现在我们有了全景图片,接下来需要做的是提取对应的深度地图。
获得一个深度图像的JSON代码(representation)、其中包含了全景图片中每个像素从相机到最近表面的距离信息。
通过Base64处理这些数据,并将其转化成无符号8位整数的阵列( array of unsigned 8-bit integers)后,我们就能获得标题信息(Header Information)并获得有用的数据,例如参考平面数字(number of referenced planes)。
事实上,在512×256网络上的每一个像素都对应了众多平面(Planes)中的一个,通过Normal Vector和其到摄像机的距离而定。
所以,要想计算出一个像素的深度,我们必须决定从摄影机中心发出的光线和相对对应平面的交叉点。
将其重复到所有平面,我们能够将深度地图制成512×256元素的32位浮动阵列(32-bit float array of 512×256 elements),这个要比我们的RGB全景图片分辨率低多了。
至于计算,对于每个点我们考虑它相关的平面,将其距离计算如下:
算法1:深度地图计算
公式中的“indeces”包含了每个像素相关平面的阵列,为了能获得一个代表单平面w∗ h vector的更简便的图片,例如,我们可以创造colored canvas,其中宽度为w、高度为h,而每个像素可以被定义为:
算法2:深度地图可视化
这时候会的出一个下图类似的图片
网友评论