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

use*_*623 5 sorting algorithm point matching stereo-3d

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

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

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

L0 = { a0, a1, a2, a3, a4, a5, a6 }
L1 = { b0, b1, b2, b3, b4, b5, b6 }
Run Code Online (Sandbox Code Playgroud)

现在,为了进行三角剖分以获得每个点的3D位置,我需要知道图像IMG1上的哪个点对应于IMG0上的哪个点。两台摄像机都能看到完全相同的一组点,具有相同的总体形状,但是很明显,由于轻微的变形以及摄像机在水平方向上的偏移,因此2D坐标从图像到另一个不匹配。

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

List = {a0-b0, a1-b1, a2-b2,...}
Run Code Online (Sandbox Code Playgroud)

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

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

任何帮助将不胜感激。

DCS*_*DCS 5

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

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

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

q是 list 中的一个点L0

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

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

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