两种截然不同的图像之间的模式识别

时间:2012-03-01 21:06:36

标签: opencv filter pattern-matching

所以,我的问题是我必须在微芯片的两个图像之间找到共同点。这是两个图像的示例: enter image description here enter image description here 在这两个图像之间,我们可以清楚地看到一些常见的图案,如第一张图像右下角的导线,可以在第二张图像中相对相同的位置找到。此外,第一张图像中的白色Z形状可以在第二张图像中看到,有点难,但它就在那里。

我试图将它们与SURF(OpenCV)匹配,没有找到共同点。尝试在两个图像上应用一些滤镜,如边缘检测,阈值处理和我在GIMP中可以找到的其他滤镜,但无论我尝试过什么,都没有找到共同点。

我想知道你是否有任何想法解决这个问题?我现在的建议是手动将两个图像中的关键特征与线段匹配,但最好是自动化。

使用OpenCV的解决方案更可取,但我正在寻找任何可能的建议。在OpenCV中,我看到的所有模式匹配情况都是这个问题的方式更加明显。没有颜色差别等。

2 个答案:

答案 0 :(得分:4)

除非需要实时,否则请使用一种简单的方法来测试旋转是否可以自动化:

与图像中的电路板类似的电路板通常基于垂直的直线段。因此,你可以通过找到linesegments来“去除斑点”并去除咖啡渍等东西。

考虑创建一个内核,其一侧有一条暗像素,另一侧有明亮的像素。将其折叠在图像上(或对其进行交叉相关)以识别具有几乎垂直或水平的亮/暗像素序列的所有像素。

你可以交织以加快速度。 如果你想要接近45 *表示的角度,污渍和斑点的边缘可以存活下来!

生成的图像可以解释为稀疏点云。 您现在可以使用RANSAC或其他类似方法来描述许多剩余的相关性,如线段。 *使用2点线段作为RANSAC的输入模型,如果小则降级。 *确定具有许多内点的无限线 *使用增长或binninng方法来分割线。

好处: 线段表示的高可能性实际上作为图像中的电路存在。段的2点描述,可能的变换很容易。 简单的数据解释,因为它可以叠加在openCV

旋转应该很容易找到旋转,将大多数找到的线与水平轴和/或垂直轴匹配。

  • 申请轮换。

重复两张图片。

现在,您可以通过简单的x,y互相关来确定图像之间的最佳平移。

答案 1 :(得分:1)

如果顶部图像始终具有该质量(准双层模式,易边缘检测),我会尝试使用良好的几何匹配算法(例如Cognex或Halcon),使用顶部图像进行训练并搜索底部图像。 / p>

也许值得首先补偿旋转(我希望没有缩放)。你可以通过确定主导边缘方向,可能使用霍夫变换。或者,更好的是,通过传感器的仔细机械校准。

无论如何,成功的机会很低,这是一个难题。

相关问题