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

5
我正在使用OpenCV进行光学测量系统。我需要在由数字相机捕获的两个图像之间执行透视变换。在相机的视野范围内,我放置了一组标记(位于公共平面上),我将它们用作两个图像中的对应点。使用标记的位置,我可以计算出单应矩阵。问题是,我实际想要转换其图像的测量对象位于距离标记很近并且与标记平面平行的位置。我可以测量这个距离。
我的问题是,在计算单应矩阵时如何考虑这个距离,这是执行透视变换所必需的。
在我的解决方案中,强制要求不使用测量对象点来计算单应性(这就是为什么我需要视野中的其他标记)。
如果描述不准确,请告诉我。
图中展示了示例图像。
红色矩形是测量对象。它实际上位于圆形标记后面的小距离处。
我从不同的相机位置拍摄对象的图像。测量对象可以在每次采集之间变形。使用圆形标记,我想将对象的图像转换为相同的坐标系。我可以测量物体和标记之间的距离,但我不知道应该如何修改单应矩阵以便处理测量对象(而不是标记)。

1
一张图片胜过千言万语 - koan
1
你为什么要寻找单应性矩阵?你打算用它做什么?我问这个问题是因为很难理解你的问题。我现在认为我理解了。我现在还不知道答案,但也许采用不同的方法会更快地得到答案,所以我想知道你想要实现什么目标。 - Unapiedra
1个回答

2
这个问题很旧,但很有趣,对某些人可能很有用。
首先,我理解问题的描述如下:
您有两张由同一数码相机在不同位置拍摄的图像I1和I2。这些图像都显示了一组标记,这些标记都位于共面pm上。还有一个被测物体,其可见表面位于平行于标记平面但具有小偏移量的平面po上。您计算了将I1中标记位置映射到I2中相应标记位置的单应性Hm12,并且测量了平面pm和po之间的偏移量dm-o。基于此,您想要计算将I1中测量对象上的点映射到I2中相应点的单应性Ho12
对于这个问题,以下是几点说明:
首先,需要注意的是单应性是图像点之间的关系,而标记平面和物体平面之间的距离是世界坐标系下的距离。使用后者来推断前者需要对相机姿态进行度量估计,即需要确定每个图像的相机的欧几里得和比例尺的相对位置和方向。欧几里得要求意味着数字相机必须经过校准,这对于“光学测量系统”来说不应该是问题。比例尺要求意味着必须知道两个给定3D点之间的真实3D距离。例如,您需要知道任意两个标记之间的真实距离l0
由于我们只需要每个图像相机的相对位姿,因此我们可以选择使用一个以I1相机的坐标系为中心和对齐的三维坐标系。因此,我们将用P1=K1*[I|0]表示I1的投影矩阵。然后,我们用P2=K2*[R2|t2]表示在同一3D坐标系下I2的投影矩阵。我们还分别用D1和D2表示建模镜头畸变的系数,用于I1和I2
作为一台单一的数码相机同时获得了I1和I2,您可以假设K1=K2=K和D1=D2=D。然而,如果I1和I2之间存在较长时间延迟(或使用不同的变焦等),考虑到涉及两个不同的相机矩阵和两组畸变系数将更加准确。

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

估计P1和P2的步骤如下:

通过数字相机的校准来估计K1,K2和D1,D2。 使用D1和D2来校正镜头畸变后的图像I1和I2,然后确定更正后图像中的标记位置。 从对应的标记位置计算基础矩阵F12(将I1中的点映射到I2中的极线),并推断本质矩阵E12= K2T * F12 * K1。 从E12和一个点对应关系(参见this answer相关问题)推断出R2和t2。此时,您已经得到了相机姿态的仿射估计,但不是按比例缩放的估计,因为t2具有单位范数。 使用两个任意标记之间测量的距离l0来推断t2的正确范数。 为了获得最佳精度,可以使用基于I1和I2中的对应标记位置的捆绑调整来优化P1和P2,其中K1和||t2||固定。
此时,您已经获得了相机姿态的准确度量估计:P1=K1 * [I | 0] 和 P2=K2 * [R2 | t2]。现在,估算Ho12的步骤如下:
使用D1和D2来校正图像I1和I2的镜头畸变,然后确定校正后图像中的标记位置(同上述第2点,无需重新执行),并从这些对应位置估计Hm12
通过解决线性方程Z * Hm12 = K2 * ( R2 - t2 * vT ) * K1-1(参见HZ00第13章,结果13.5和方程13.2),计算描述标记平面pm的3x1向量v。其中,Z是一个缩放因子。推断出到原点的距离dm=||v||和法向量n=v / ||v||,它们描述了3D中的标记平面pm
由于物体平面po与pm平行,它们具有相同的法向量n。因此,您可以通过测量平面偏移量dm-o,从描述pm的到原点的距离dm推断出po的到原点的距离do,如下所示:do=dm ± dm-o(符号取决于平面的相对位置:如果I1中pm比po更靠近相机,则为正,否则为负)。
从描述物体平面在3D中的法向量n和到原点的距离do推断出单应性矩阵Ho12=K2 * ( R2 - t2 * nT / do ) * K1-1(参见HZ00第13章,方程13.2)。
单应性矩阵Ho12将I1中测量对象上的点映射到I2中对应的点,其中假定I1和I2均已校正镜头畸变。如果需要从原始畸变图像映射点,不要忘记使用畸变系数D1和D2来转换Ho12的输入和输出点。
我使用的参考文献:
[HZ00] "Multiple view geometry for computer vision",作者为R.Hartley和A.Zisserman,2000年出版。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接