【问题标题】:Struggling with steps for 3D reconstruction (Matlab)努力进行 3D 重建的步骤(Matlab)
【发布时间】: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


【解决方案1】:

结果证明它不起作用是一个奇怪的原因。我使用的是 matlab 的detectSURFFeatures,它给出了不准确的匹配对。我从不认为这是错误的,但我的一位同学也有同样的问题。我将其更改为使用detectEigenMinFeatures,它工作正常!这是我现在的结果,它并不完美,但要好得多:

【讨论】:

  • SIFT 功能更好,但它们已获得专利 :(。不过,转换整个图像,它看起来会更酷!;)
  • 我该怎么做?我得到了稀疏对应点的最小值和最大值,然后尝试执行 im2Coords = F' * im1Coords,但这不起作用。我需要规范化/非规范化还是我做错了?
  • 我想它给了我极线而不是点,但是我怎样才能得到更多的点呢?
  • 啊,没关系,今天就到了,所以我没有时间做更多的更改并写下它们!
【解决方案2】:

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

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

  1. 估计基本矩阵
  2. 获取基本矩阵
  3. 将 E 分解为 R 和 t
  4. 将 P1 设置为规范,并根据 K、R 和 t 计算 P2。
  5. 使用 P1 和 P2 对匹配点进行三角剖分。

此方法在计算机视觉系统工具箱中的 example 中进行了说明。

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

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

【讨论】:

  • 我从校准图像计算 P1 和 P2,然后从 P1 和 P2 计算 K1 和 K2。这正是我正在做的事情。是的,这就是为什么我一直试图在我可能搞砸的地方使用其他人的代码,但似乎一切都好。我的特征只是场景中物体上的点,所以没关系。对于校准图像,它们有点嘈杂。
  • 当我将 P1 设置为 [R t] 时,我是否将它与 K1 (K1 * P1) 相乘,同样与从基本矩阵中检索到的 P2 相乘,我是否应该做 P2 = K2*P2?跨度>
猜你喜欢
  • 2020-07-21
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 2021-07-21
相关资源
最近更新 更多