【问题标题】:Understanding depth values in 3D point cloud了解 3D 点云中的深度值
【发布时间】:2014-09-17 01:25:38
【问题描述】:

我无法理解 3D 点云中的深度 (Z) 值是由 3D 稀疏重建导致的,例如 MATLAB 中的这个示例:http://www.mathworks.com/help/vision/ug/sparse-3-d-reconstruction-from-multiple-views.html

我附上了一张图片,显示了上面示例中重建的 3D 点云。我在图中添加了一些数据提示,以便我们知道点的 (x,y,z) 坐标。这是我的问题:

1-点云中的Z值代表什么?是距离相机以毫米为单位的距离吗?如果是这种情况,那么根据我附上的图片,它没有意义,因为我确信球体和棋盘与相机的距离必须大于 200 毫米。 或者它可能来自太空中的某个参考点?那么这个参考点是什么?以及如何制作 Z 值指示与相机距离的 3D 点云?

2- 为什么 Z 有负值?就到相机的距离而言,这意味着什么?

如果有人能解释一下,我很感激。

【问题讨论】:

    标签: matlab 3d computer-vision matlab-cvst


    【解决方案1】:

    在本例中,世界坐标由棋盘定义。棋盘定义了 X-Y 平面,Z 轴指向棋盘,如documentation 中所述:

    由于您的 3D 点位于棋盘上方,因此它们的 Z 坐标为负。

    【讨论】:

    • 那张图说明了一切。 +1。
    【解决方案2】:

    您的 (x,y,z) 坐标采用世界单位,与公制值完全脱节(除非您在世界和公制之间建立比例,有多种方法可以做到这一点)。所以 z 值告诉你世界坐标中每个点的深度。

    如果您有每个相机的位姿,并且将每个点乘以相机投影矩阵,您将得到相机坐标中的 (x',y',z') 点。此时,如果 z' 为负数,则表示它在相机后面

    【讨论】:

    • 但有人告诉我,如果相机校准矩阵(我的意思是旋转和平移)以毫米为单位,那么 3D 点云将以毫米为单位,如上面的 MATLAB 示例所示。你也可以看看附图的标签,它们都是以毫米为单位的。相机后面没有物体。球体和棋盘都在镜头前!所以这个例子错了??
    • 您使用的是立体声对还是单个摄像头?您无法仅使用单个相机从视觉中获得度量重建。在某些情况下,您需要以 mm 为单位的传感器尺寸来构建校准矩阵(它不是旋转和平移 btw),但是您必须转换为像素。
    • 是的,我当然使用的是立体声对,如本例 (mathworks.com/help/vision/ug/…) 中所述。我认为在 SPARSE 3D 重建的情况下您不需要传感器尺寸,因为外部参数(平移)以 mm 为单位。如果您使用视差图进行密集 3D 重建,则只需要传感器尺寸。如果我错了,请纠正我。
    • 您需要“一些”尺寸(例如传感器尺寸,或场景中物体的尺寸——也许是校准目标)来进行任何类型的度量重建。没有它,你所有的世界(或相机)坐标只能在某个未知的范围内知道。
    • 我有棋盘格大小(每个正方形是 30 毫米)。我们可以回到我的主要问题吗?如何从这个 3D 点云中获取到相机的距离,负 Z 是什么意思?
    猜你喜欢
    • 2020-10-19
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    相关资源
    最近更新 更多