【发布时间】:2016-01-15 16:08:18
【问题描述】:
我们被要求进行 3D 重建(PhD 硕士模块),而我正在抓狂。我不确定我是否遗漏了任何步骤,或者我是否做错了。我试图用谷歌搜索代码,并用我的函数替换它们的函数,看看我是否能从中得到正确的结果,但我做不到。
我将简单介绍一下我目前正在做的事情,我希望你们中的一个人能告诉我我遗漏了一些明显的东西:
我正在使用的图片:http://imgur.com/a/UbshI
加载校准左右图像,点击对应点得到P1和P2
使用 RQ decomp 获取 K1 & K2(以及 R1、R2、t1、t2,但我似乎没有在任何地方使用它们。最初我尝试做 R = R1*R2', t = t2- t1 在将 P1 设置为规范 (I|0) 后创建我的新 P2,但这也不起作用。
将 P1 设置为规范 (I | 0)
使用 RANSAC 计算基本矩阵 F,以及对应点 im1、im2。
获取点的像素颜色
通过 K2' * F * K1 得到基本矩阵 E
从E中得到4个不同的投影矩阵,然后选择正确的一个
使用 P1、P2、im1、im2 进行三角匹配以获得 3D 点
使用散点图绘制 3D 点,为它们提供该点像素的 RGB 值。
-
我不满意的结果:
目前,由于我无处可去,因此我想选择最简单的选项并逐步提高。仅供参考,我正在使用matlab。如果有人有任何提示,我真的很想听听。
【问题讨论】:
-
感觉即使这些点是正确的,你也会注意到。这些真的很少。
-
嘿安德,是我,海军!你什么意思?我之前放的图有误(我尝试在校准图像上运行,但无济于事),我将图像更改为使用场景图像的图像。
-
我的意思是,在该结果图像中,对于 3D 模型来说,点的数量非常少(或者看起来如此!)。您如何选择三角测量的点?最后一个数字是如何绘制的?我可能理解错了,但这不应该是 3D 情节吗?
-
我使用
detectSURFFeatures, extractFeatures, matchFeatures来获取分数,通过 RANSAC 运行它以获取 F,并去除异常值。然后我使用scatter3(X(:,1),X(:,2),(X:,3))绘制它们。是的,我现在旋转它并更改了图像。 -
SURF 特征非常好,因为它们在成像中是“一致的”。它们是图像之间匹配并获得良好基本矩阵的好点。一旦你得到基本矩阵,这意味着你知道从一个图像到另一个图像的变换,所以你可以选择任意数量的点来从一个图像变换到另一个图像!尝试在这一步之后得到一个密集的点云,这样你可以更好地看到整个模型已经正确重建。我仍然认为,要得出结论正确性的结论太少了。
标签: matlab 3d computer-vision matlab-cvst 3d-reconstruction