Geometry 将一系列深度贴图和x、y、z、θ值转换为三维模型
我有一个四旋翼,它绕着它飞行,知道它的x,y,z位置和沿x,y,z轴的角位移。它捕获恒定的图像流,这些图像被转换为深度贴图(我们可以估计每个像素和相机之间的距离) 如何编写一种算法,将这些信息转换为环境的三维模型?也就是说,我们如何根据这些信息生成虚拟3D地图 示例:下面的图片说明了quadrotor捕获的内容(顶部)以及将图像转换为什么以输入3D映射算法(底部) 让我们假设这张图像是从一台相机上拍摄的,它的x、y、z坐标(10、5、1)以某些单位表示,x、y、z轴的角位移为90、0、0度。我想做的是把一堆照片坐标元组转换成一张该地区的3D地图 在7/30编辑1:一个明显的解决方案是使用四旋翼wrt与距离贴图的x、y和z轴的角度来计算任何障碍物的笛卡尔坐标。我想我可能会写一个算法,使用这种方法和概率方法来制作一个粗略的3D地图,可能会对它进行矢量化以使其更快Geometry 将一系列深度贴图和x、y、z、θ值转换为三维模型,geometry,geometry-surface,Geometry,Geometry Surface,我有一个四旋翼,它绕着它飞行,知道它的x,y,z位置和沿x,y,z轴的角位移。它捕获恒定的图像流,这些图像被转换为深度贴图(我们可以估计每个像素和相机之间的距离) 如何编写一种算法,将这些信息转换为环境的三维模型?也就是说,我们如何根据这些信息生成虚拟3D地图 示例:下面的图片说明了quadrotor捕获的内容(顶部)以及将图像转换为什么以输入3D映射算法(底部) 让我们假设这张图像是从一台相机上拍摄的,它的x、y、z坐标(10、5、1)以某些单位表示,x、y、z轴的角位移为90、0、0度。我
但是,我想知道是否有任何根本不同的、希望更快的方法来解决这个问题?只需将数据转换为笛卡尔坐标并存储结果。。。如您所知,输入数据的拓扑(数据点之间的空间关系)可以直接映射到网格/曲面,而不是PCL(需要三角剖分或凸包等) 您的图像表明您已经知道拓扑(相邻像素在3D中也是相邻的…),因此您可以直接构建网格3D曲面:
(x,y)
,我们找出到相机焦点的深度距离,并计算相对于相机焦点的3D位置。为此,我们可以使用三角形相似性,因此:
x = camera_focus.x + (pixel.x-camera_focus.x)*depth(pixel.x,pixel.y)/focal_length
y = camera_focus.y + (pixel.y-camera_focus.y)*depth(pixel.x,pixel.y)/focal_length
z = camera_focus.z + depth(pixel.x,pixel.y)
其中,像素
为像素2D位置,深度(x,y)
为相应深度,焦距=znear
为固定摄像机参数(确定视野)。摄像机的焦点是摄像机的焦点位置。通常相机焦点在相机图像的中间,而 Znime/COD>远离图像(投影平面)。
由于这是从移动设备上获取的,所以需要将其转换为全局坐标系(使用相机在空间中的位置和方向)。这是最好的:
(x,y)
转换为3D(x,y,z)
,我们可以以返回3D位置的函数形式编写iot:
(x,y,z) = 3D(x,y)
然后我可以像这样形成四边形:
QUAD( 3D(x,y),3D(x+1,y),3D(x+1,y+1),3D(x,y+1) )
我们可以使用for循环:
for (x=0;x<xs-1;x++)
for (y=0;y<ys-1;y++)
QUAD( 3D(x,y),3D(x+1,y),3D(x+1,y+1),3D(x,y+1) )
<代码> >(x=0;席)已添加了请求的信息。请您详细说明映射到网格/表面的句子。谢谢SpktRe。1个快速问题:什么是“输入数据的拓扑结构”?请将您的评论转换成答案,以便我接受它。我将评论转换为答案。