如何在 OpenCV 中匹配同一对象的两个不同图像的方向和比例?

How to match orientation and scale of two different image of the same object in OpenCV?

我有 2 张印刷电路板 (PCB) 图片都显示了相同的 PCB。它们之间的区别在于照明、比例和方向(因为我用 phone 相机拍摄 PCB 图像)。

现在我想用一张PCB图片来检查电路的所有元件是否都组装在另一个相同的PCB上。

有没有方便的方法来检查两个相同PCB的两个图像之间的差异?

顺便说一句,我可以在 PCB 上添加一些标记,以便在 OpenCV 中我可以更正图像的方向和比例。

PCB = 印刷电路板,对吧?!?

您可能可以计算两个图像中匹配点之间的投影 projective transformation or homography。此转换可用于匹配平面(如 PCB)并考虑图像之间的比例、旋转、剪切和投影变化。

方法很简单:

Select 至少 4 个点并求解一个线性方程组。在 Math SE 上查看此问题的答案,它对此进行了准确的解释。

这个OpenCV example使用(自动)特征匹配来找到对应的图像点,然后计算单应性。

这种转换的有趣推导可以在每一本计算机视觉教科书中找到,例如标准齐瑟曼 "Multiple View Geometry" or Ma's "An Invitation to 3-D Vision".

编辑:

此方法不会消除镜面反射或其他强度差异。