Opencv;c++;从线性三角化方法的输出矩阵中提取点云点(x,y,z)

3

我正在尝试在XNA中重构3D对象。为此,我需要点云点。我已经在未校准图像序列下实现了三维重建的概念。我现在卡在了线性三角化上。结果,我得到了一个矩阵值。接下来我该怎么做才能得到(x,y,z)点的列表以绘制网格?


我的未校准图像重建管道如下:1)使用SURF匹配特征并获取对应点。2)使用对应点计算基础矩阵。3)从基础矩阵计算相机矩阵(基于Hartley和Zisserman的“多视角几何”返回相机矩阵)。4)然后进行线性三角测量,Opencv有triangulatePoints方法。我使用了这个方法来三角化这些点。它返回一个矩阵值。到目前为止,这就是我实现的内容。它正确吗?我的下一步是什么?我在三角化点矩阵上卡住了。 - Renien
1个回答

0

查看triangulatePoints文档,它返回一个矩阵,其中包含每个三角化3D点的齐次坐标,即4 x N矩阵。

将此矩阵表示为M,第n个点的XYZ坐标为(概念上)

x = M(0,n) / M(3,n)
y = M(1,n) / M(3,n)
z = M(2,n) / M(3,n)

在你甚至远远考虑进行任何3D重建之前,请确保你理解齐次坐标


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接