苦苦寻求3D重建的步骤(Matlab)

时间:2016-01-15 16:08:19

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

我们被要求进行3D重建(博士硕士课程),我把头发拉出来。我不确定我是否错过任何步骤,或者我是否错误地做错了。我试图谷歌代码,并用我的功能替换他们的功能,只是为了看看我是否可以从中得到正确的结果,我无法做到。

我只是完成了我到目前为止所做的步骤,我希望你们中的一个能告诉我,我错过了一些明显的事情:

图片我正在使用:http://imgur.com/a/UbshI

  • 加载校准左右图像,点击相应的点以获得P1和P2

  • 使用RQ分解获得K1& K2(以及R1,R2,t1,t2,但我似乎没有在任何地方使用它们。最初我尝试做R = R1 * R2',t = t2-t1设置P1后创建我的新P2是规范的(I | 0),但那也不起作用。

  • 将P1设置为规范(I | 0)

  • 使用RANSAC计算基本矩阵F和对应点im1,im2。

  • 获取点上的像素颜色

  • 通过做K2'获得基本矩阵E. * F * K1

  • 从E中获取4个不同的投影矩阵,然后选择正确的

  • 使用P1,P2,im1,im2进行三角测量匹配以获得3D点

  • 使用散点图绘制3D点,为其提供该点像素的RGB值。

  • 我的结果令人不满意:

    http://imgur.com/OZXXBEC

目前,由于我没有得到任何地方,我想选择最简单的方案并继续努力。仅供参考,我使用的是matlab。如果有人有任何提示,我真的很想听到他们的意见。

2 个答案:

答案 0 :(得分:1)

原来是一个奇怪的原因,为什么它不起作用。我使用的是matlab detectSURFFeatures,它提供了不准确的匹配对。我从来没有认为这是错的,但我的一个同学也有同样的问题。我把它更改为使用detectEigenMinFeatures代替,它工作正常!现在这是我的结果,它并不完美,但它更好,更好:

enter image description here

答案 1 :(得分:0)

如果您已经有P1和P2,那么您可以简单地对两个图像中的匹配点对进行三角测量。没有必要估计基本矩阵。

如果你只有内在函数(单个摄像头的K,或两个不同摄像头的K1和K2),那么你的方法是有效的:

  1. 估算基本矩阵
  2. 获取基本矩阵
  3. 将E分解为R和t
  4. 将P1设置为规范,并从K,R和t计算P2。
  5. 使用P1和P2对匹配点进行三角测量。
  6. 此方法在计算机视觉系统工具箱中的example中进行了说明。

    在任何一种情况下,您都应该仔细检查您的代码,并确保所有矩阵都有意义。 MATLAB的惯例是将行向量乘以矩阵,而许多教科书将矩阵乘以列向量。所以矩阵可能需要转换。

    在此之前,使用showMatchedFeatures绘制您的点数匹配,以确保它们有意义。