模板匹配前的必要图像处理操作


13

好吧,这可能表明我没有参加图像处理课程。

我有这个模板来匹配图像中的对象。但是,例如,图像中的真实对象看起来并不像第二个图像。我需要进行哪些操作才能使像第二张图像一样准备好进行模板匹配?仅供参考,第三张图片显示了理想的匹配。

在另一个想法中,我使模板适合图像。也就是说,我在图像上给出了四个角坐标以匹配模板中的角坐标。然后,它将计算出一种使模板适合该区域的方法。

更新:问题已解决。感谢我在下面选择的答案。我成功地将模板应用于图像。最后一张图片显示了结果。

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明 在此处输入图片说明


您不会匹配该白色网格,是吗?您想在第二张图像中匹配实际的彩色网格,对吗?
endolith

@endolith我认为任何一种方式都可以。
Tae-Sung Shin

您可以分享算法的基本概念吗?我需要为图表做同样的事情。
吉拉德(Gilad)

Answers:


9

您发布的示例图像具有相对较强的透视图(并非从表面法线方向直接成像),这可能会导致模板匹配技术出现问题,例如使用块处理。我假设您必须拍摄具有强透视图的图像,所以我们要做的第一件事是估计图像变换,该变换将消除透视图投影并得到经过校正的图像(“纯图像”)。

已知形状时校正透视投影

预处理的最终目标是找到作为颜色图表背景的灰色矩形的角。我从简单地用恒定值阈值开始。文献/网络上有很多有关在图像光线不均匀时如何进行阈值处理的信息,但是如果可以,请尝试校正成像设置,以使光线相对均匀。

阈值恒定

我假设色卡占据了屏幕的很大一部分,因此它可能是图像的最大连续区域。存在许多黑白标签功能(MATLAB bwlabel,IPP LabelMarkers,OpenCV具有外部库cvblob),它们将为每个不同的连接区域提供自己的索引。贴标签后,您可以使用直方图计算连接的组件的面积,然后选择面积最大的组件。

查找最大的斑点

通常最好填充零部件,使零部件没有孔,这样可以减少边缘像素的数量。

填充斑点

现在,我们可以使用边缘查找运算符(我使用了基于梯度的方法,但是您也可以通过跟踪连接到黑色像素的白色像素来跟踪边缘),以获得属于边界的像素。

寻找边缘

由于我们感兴趣的对象是矩形,因此我使用鲁棒线拟合(RANSAC)将四条线拟合到边缘像素。找到新线后,我删除了所有与找到的线接近的点,这将强制后续的拟合操作返回对象的其他边缘。最终,当找到所有边缘时,我计算了线组之间所有可能的交点。从结果点集中,我删除了图像之外的所有点。

HH

x=HX

然后,可以使用此变换矩阵对原始图像进行变换,以使颜色图表从表面法线的方向直接成像。

使线条适合边缘

H

如果我们仍然想进行模板匹配,则可以使用任何合适的模板匹配方法。该方法不必是旋转/缩放不变的,因为图像已经被校正。

正确的观点


1

从边缘检测开始。然后使用霍夫变换检测直线。然后找出哪些线是平行的,哪些线应该是垂直的。然后估计投影变换,以使应该垂直的线实际上是垂直的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.