来自两个不同图像的点匹配算法

时间:2013-03-19 17:43:26

标签: algorithm sorting matching point stereo-3d

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

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

因此,我有两个2D坐标列表:

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

现在,为了进行三角测量以获得每个点的3D位置,我需要知道图像IMG1上的哪个点对应于IMG0上的哪个点。两个相机都看到完全相同的一组点,具有相同的整体形状,但很明显,由于轻微失真并且相机在水平方向上偏移,因此2D坐标与图像不匹配。

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

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

只要我确定每个点与第二张图像中的右点配对,列表的顺序无关紧要。

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

首先,您应该确保理解epipolar geometry的基本概念,尤其是极线的概念。

简而言之:假设您有一个3D点P投射到相机q图像中的2D点A。现在您有第二个摄像头,称之为B,并且您希望在P中找到B的图像。对极几何会告诉您P B中给定q的图像的可能位置仅限于一条线,称为极线。它还告诉您(以及如何)您可以使用所谓的基本矩阵从q计算此线以及校准相机。

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

q成为列表L0中的一个点。

  • 如果列表L1中的单点位于第二张图片的q的极线上,那么这是{{q的正确对应关系1}}。
  • 如果极线上有多个点,那么使用给定的信息无法解决您的问题。在这种情况下,您需要对3D点的分布进行启发式假设,因为对于q的每个配对和极线上的点,您可以得到一个可能的3D点。

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

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