【问题标题】:3D Reconstruction upto real scale真实比例的 3D 重建
【发布时间】:2013-08-09 21:37:21
【问题描述】:

我正在做一个项目来检测物体的 3D 位置。我在房间的两个角落设置了两个摄像头,我已经获得了它们之间的基本矩阵。这些相机经过内部校准。我的图像是 2592 X 1944

K = [1228 0 3267 0 1221 538 0 0 1 ]

F = [-1.098e-7 3.50715e-7 -0.000313 2.312e-7 2.72256e-7 4.629e-5 0.000234 -0.00129250 1]

现在,我该如何进行,以便给定空间中的 3D 点,我应该能够在图像上获得与房间中相同对象相对应的点。如果我能获得正确的投影矩阵(具有正确的比例),我可以稍后将它们用作 OpenCV 的 traingulatePoints 函数的输入来获取对象的位置。

我很长时间以来一直被困在这个问题上。所以,请帮助我。

谢谢。

【问题讨论】:

  • 如果你的相机标定矩阵是行写的,即 Matlab 表示法中的K = [1228 0 3267; 0 1221 538; 0 0 1],我认为这很尴尬。您的图像尺寸为2592 x 1944,并且您的相机校准的主要点通常是图像中点附近的位置(3267, 538)。我认为您的相机校准不正确...

标签: opencv computer-vision camera-calibration 3d-reconstruction


【解决方案1】:

据我所知,您已经通过某种校准方式获得了基本矩阵?无论哪种方式,使用基本矩阵(或校准装置本身),您都可以通过分解基本矩阵来获得位姿差异。一旦你有了它,你就可以使用匹配的特征点(使用特征提取器和描述符,如 SURF、BRISK 等)来识别一个图像中的哪些点与另一张图像中的另一个特征点属于同一对象点。 有了这些信息,您应该能够进行三角测量。

【讨论】:

  • 所以,根据基本矩阵,我使用 E=K2'FK1 计算了基本矩阵。然后,我的 SVD 需要一个对角矩阵,例如 (s,s,1),但我的对角矩阵是 diag(1.3, 1.05, 0)。我认为它已经足够好了,然后使用 T = U 和 R 的最后一列找到翻译​​可能是 UDV' 或 U*D'*V'。如果我找出这些组合中的哪一个是正确的,我将有 P1 = [I|0] 和 P2 = [R|T]。所以,我读到的尺度是一个永远无法确定的模棱两可的东西。我需要知道比例,因为我正在尝试估计对象的确切 3d 坐标。我的方向正确吗?
  • 您可以强制执行此约束,即 SVD 的对角矩阵为 diag(1,1,0),即,如果您的本质矩阵的 SVD 是 E=U*D*V',您可以将正确的本质矩阵 E' 设置为E'=U*diag(1,1,0)*V'en.wikipedia.org/wiki/Eight-point_algorithm 步骤 3 中给出。
【解决方案2】:

抱歉,它的评论量不高。。 所以@user2167617 回复您的评论。 差不多。不过有几点建议:奇异值应该是 (s,s,0),所以 (1.3, 1.05, 0) 是一个很好的猜测。关于 R:从技术上讲,这是正确的,但是忽略迹象。很可能您得到的旋转矩阵不满足约束行列式(R)= 1,而是-1。在这种情况下,您可能希望将其与 -1 相乘。通常,如果您在使用这种方法时遇到问题,请尝试使用 5 点算法确定基本矩阵(在最新版本的 OpenCV 中实现,您必须自己构建)。使用这些信息确实无法获得规模。但是,这一切都是按比例计算的。例如,如果您将相机之间的距离定义为 1 个单位,那么一切都将以该单位进行测量。

【讨论】:

  • 感谢您的回复。我发现旋转和平移矩阵假设 z 从相机中心指向场景。然后,我在匹配点上使用了三角点。当我找到真实场景中两点之间的距离并将其与三角图像中相同点之间的距离进行比较时,可以找到比例尺。我通过这种方式获得的距离有一点误差。我认为这是因为我在没有图像校正的情况下完成了简单的线性三角剖分。我希望我能通过更好的三角测量得到好的结果。
  • 如果完成,则通过接受其中一个答案来结束问题。
【解决方案3】:

使用cv::reprojectImageTo3D 函数会更简单吗?它会给你 3D 坐标。

【讨论】:

  • 我主要关心的是获得投影矩阵 P1 和 P2。我看到在基本矩阵 F 的帮助下,我只能获得规范投影矩阵,但这些都达不到实际规模。您能否指导我如何获得适合实际规模的 P1 和 P2。
  • 这里是关于 3D 重建的讲座 (umiacs.umd.edu/~ramani/cmsc828d/lecture28.pdf),并且有一章“重建歧义”告诉我们我们不能从 2 个视图计算比例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 2013-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多