5

我正在寻找一种方法或算法,它可以让我识别和配对来自两个不同图像的点集,以达到立体视觉的目的。 图片

附图展示了我目前所拥有的:2 个相机在 Y 轴上对齐并在 X 轴上略微偏移,看着一组点。我能够跟踪并获取两个相机图像(IMG0 和 IMG1)上每个点的 2D 位置。

因此,我有两个二维坐标列表:

L0 = { a0, a1, a2, a3, a4, a5, a6 }
L1 = { b0, b1, b2, b3, b4, b5, b6 }

现在,为了进行三角测量以获得每个点的 3D 位置,我需要知道图像 IMG1 上的哪个点对应于 IMG0 上的哪个点。两台相机都看到完全相同的一组点,具有相同的整体形状,但显然,由于轻微的变形和相机在水平方向上的偏移,二维坐标在图像和另一张图像之间不匹配。

理想情况下,我正在寻找的点匹配算法会产生一个列表,例如:

List = {a0-b0, a1-b1, a2-b2,...}

只要我确定每个点都与第二张图像中的正确点配对,列表的顺序并不重要。

我一直在看几篇介绍立体映射算法的论文,但我没有发现任何与我的问题相关的内容,因为大多数算法都基于重图像特征识别,这不适合我想要快速处理真实所有内容的情况-时间。我似乎找到的最接近的解决方案是这里提出的点匹配算法,但这对我的问题来说似乎太重了。

任何帮助将不胜感激。

4

1 回答 1

4

首先,您应该确保您了解极线几何的基本概念,尤其是极线的概念。

简而言之:假设您有一个 3D 点投影到相机图像中的P2D 点。现在你有了第二个摄像头,调用它,你想找到in的图像。极线几何告诉您,给定图像的可能位置仅限于一条线,称为极线。它还告诉您(以及如何)您可以使用所谓的基本矩阵计算这条线并校准您的相机。qABPBPBqq

对于您的问题,这具有以下含义:

让我们q成为 list 中的一个点L0

  • 如果您的列表中有一个点L1位于第二张图像的核线上q,那么这是 的正确对应关系q
  • 如果核线上有几个点,那么你的问题不能用给定的信息解决。在这种情况下,您需要对点在 3D 中的分布进行启发式假设,因为对于每对q与核线上的点,您都会获得一个可能的 3D 点。

如果您的相机仅沿 X 轴偏移,并且它们的方向相同(即图像平面平行),那么这是您的幸运日:在这种特殊的相机配置中,极线是水平的,即对于一个(x,y)点极线是具有任意X坐标和Y坐标的所有点的线y

请注意,在实践中,您还面临一个问题,即由于测量误差和数值问题,点不太可能完全位于核线上。

于 2013-03-19T20:56:58.473 回答