5

我正在将 OpenCV 用于光学测量系统。我需要在数码相机拍摄的两张图像之间进行透视变换。在相机的视野中,我放置了一组标记(位于一个公共平面上),我将它们用作两个图像中的对应点。使用标记的位置,我可以计算单应矩阵。问题是,我实际上想要转换其图像的被测量对象位于离标记很近的距离处,并且与标记平面平行。我可以测量这个距离。

我的问题是,在计算单应矩阵时如何考虑该距离,这是执行透视变换所必需的。

在我的解决方案中,强烈要求不要使用测量的对象点来计算单应性(这就是为什么我需要视野中的其他标记)。

如果描述不准确,请告诉我。

在此处输入图像描述

图中呈现的是示例性图像。

红色矩形为被测对象。它物理放置在圆形标记后面的一小段距离内。

我从不同的相机位置捕捉物体的图像。被测物体可以在每次采集之间变形。使用圆形标记,我想将对象的图像转换为相同的坐标。我可以测量对象和标记之间的距离,但我不知道,我应该如何修改单应矩阵以便在测量对象(而不是标记)上工作。

4

1 回答 1

2

这个问题很老了,但它很有趣,可能对某人有用。

首先,这是我如何理解问题中提出的问题:

您有两个图像 I 1和 I 2由同一数码相机在两个不同位置获取。这些图像都显示了一组标记,这些标记都位于一个公共平面 p m中。还有一个被测对象,其可见表面位于与标记平面平行但有小偏移的平面 p o中。您计算了单应性 H m 12 ,将 I 1中的标记位置映射到 I 2中的相应标记位置,并测量了平面 p o和 p m之间的偏移量 d m-o。由此,您想计算单应性 H o 12将I 1中被测物体上的点映射到I 2中的对应点。

关于这个问题的几点说明:

首先,请注意单应性是图像点之间的关系,而标记平面和对象平面之间的距离是世界坐标中的距离。使用后者来推断前者需要对相机姿势进行度量估计,即您需要为两个图像中的每一个确定相机的欧几里得按比例缩放的相对位置和方向。欧几里得要求意味着必须校准数码相机,这对于“光学测量系统”来说应该不是问题。规模化要求意味着必须知道两个给定 3D 点之间的真实 3D 距离。例如,您需要知道两个任意标记之间的真实距离 l 0 。

由于我们只需要每张图像的相机相对位姿,我们可以选择使用以相机坐标系为中心并与 I 1对齐的 3D 坐标系。因此,我们将 I 1的投影矩阵表示为P 1 = K 1 * [ I | 0]。然后,我们将 I 2的投影矩阵(在同一 3D 坐标系中)表示为 P 2 = K 2 * [ R 2 | t 2 ]。我们还将用 D 1和 D 2分别表示为 I 1和 I 2建模镜头畸变的系数。

由于单个数码相机同时采集了 I 1和 I 2,您可以假设 K 1 = K 2 = K 和 D 1 = D 2 = D。但是,如果 I 1和 I 2是在采集之间有很长的延迟的情况下采集的(或使用不同的变焦等),考虑涉及两个不同的相机矩阵和两组失真系数会更准确。

以下是解决此类问题的方法:

估计 P 1和 P 2的步骤如下:

  1. 通过数码相机的校准估计 K 1 , K 2和 D 1 , D 2

  2. 使用 D 1和 D 2校正图像 I 1和 I 2的镜头畸变,然后确定校正图像中的标记位置

  3. 从相应的标记位置计算基本矩阵 F 12(将 I 1中的点映射到 I 2中的外延线)并推断基本矩阵 E 12 = K 2 T * F 12 * K 1

  4. 从 E 12和一点对应推断 R 2和 t 2 (参见相关问题的答案)。此时,您对相机位姿进行了仿射估计,但由于 t 2具有单位范数,因此无法进行大规模估计。

  5. 使用两个任意标记之间的测量距离 l 0来推断 t 2的正确范数。

  6. 为了获得最佳准确度,您可以使用捆绑调整来优化 P 1和 P 2 ,其中 K 1和 ||t 2 || 固定,基于 I 1和 I 2中的相应标记位置。

此时,您对相机位姿 P 1 = K 1 * [ I |有一个准确的度量估计。0 ] 和 P 2 = K 2 * [ R 2 | t 2 ]。现在,估计 H o 12的步骤如下:

  1. 使用D 1和D 2校正图像I 1和I 2的镜头畸变,然后确定校正图像中的标记位置(同上2.,无需重新做),并从这些对应的估计H m 12职位

  2. 通过求解以下线性方程计算描述标记平面 p m的 3x1 向量 v : Z * H m 12 = K 2 * ( R 2 - t 2 * v T ) * K 1 -1(参见 HZ00 第 13 章,结果 13.5和等式 13.2 作为参考),其中 Z 是比例因子。推断到原点的距离 d m = ||v|| 和正常的 n = v / ||v||,它在 3D中描述了标记的平面 p m 。

  3. 由于物体平面 p o平行于 p m,因此它们具有相同的法线 n。因此,您可以从p m到原点 d m的距离和从测量的平面偏移 d m-o推断出到原点 d o的距离,如下所示: d o = d m ± d m-o(符号取决于平面的相对位置:如果 p m对于 I 1比 p o更靠近相机,则为正,否则为负)。

  4. 从描述 3D 物体平面的n 和 d o推断出单应性 H o 12 = K 2 * ( R 2 - t 2 * n T / d o ) * K 1 -1(参见 HZ00 第 13 章,方程 13.2)

  5. 单应性 H o 12将 I 1中的测量对象上的点映射到I 2中的对应点,其中假设 I 1和 I 2都针对镜头畸变进行了校正。如果您需要在原始失真图像之间映射点,请不要忘记使用失真系数 D 1和 D 2来转换 H o 12的输入和输出点。

我使用的参考:

[HZ00]“计算机视觉的多视图几何”,R.Hartley 和 A.Zisserman,2000 年。

于 2014-04-04T09:29:03.667 回答