使用任意已知几何关系计算单应矩阵

Mar*_*cin 5 opencv measurement computer-vision homography

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

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

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

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

在此处输入图片说明

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

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

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

BCo*_*nic 2

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

\n\n

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

\n\n

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

\n\n

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

\n\n

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

\n\n

由于我们只需要每个图像的相机的相对位姿,因此我们可以选择使用以相机坐标系为中心并与 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建模镜头畸变的系数。

\n\n

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

\n\n

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

\n\n

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

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

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

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

  6. \n
  7. 从 E 12和一点对应推断 R 2和 t 2 (请参阅相关问题的答案)。此时,您已经对相机姿势进行了仿射估计,但不是按比例估计,因为 t 2具有单位范数。

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

  10. \n
  11. 为了获得最佳精度,您可以使用捆绑调整来细化 P 1和 P 2 ,其中 K 1和 ||t 2 || 根据 I 1和 I 2中相应的标记位置进行固定。

  12. \n
\n\n

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

\n\n
    \n
  1. 使用 D 1和 D 2校正图像 I 1和 I 2的镜头畸变,然后确定校正图像中的标记位置(与上面的 2 相同,无需重新执行),并根据这些对应的值估计 H m 12职位

  2. \n
  3. 通过求解以下线性方程来计算描述标记平面 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

  4. \n
  5. 由于物平面 p o与pm平行,因此它们具有相同的法线 n。因此,您可以根据p m到原点 d m的距离以及测量的平面偏移 d m-o推断出 p o到原点 d o的距离,如下所示: d o = d m \xc2\xb1 d m-o(符号取决于平面的相对位置:对于 I 1而言,如果 p m比 p o更接近相机,则为正值,否则为负值)。

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

  8. \n
  9. 单应性H o 12将I 1中被测物体上的点映射到I 2中的对应点,其中假定I 1和I 2都针对镜头畸变进行了校正。如果您需要将点映射到原始失真图像,请不要忘记使用失真系数 D 1和 D 2来变换 H o 12的输入和输出点。

  10. \n
\n\n

我使用的参考:

\n\n

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

\n