如何在 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".
编辑:
此方法不会消除镜面反射或其他强度差异。
我有 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".
编辑:
此方法不会消除镜面反射或其他强度差异。