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

信息处理 图像处理 图片 模板匹配
2021-12-29 07:02:32

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

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

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

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

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述 在此处输入图像描述

2个回答

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

已知形状时校正透视投影

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

以恒定值阈值

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

找到最大的 blob

填充组件以使组件没有孔通常是个好主意,这样可以减少边缘像素的数量。

填充斑点

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

寻找边缘

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

现在我们有了彩色图表的角,并且我们知道图表的尺寸,我们可以计算毫米坐标之间(单应性,两个平面之间的投影。使用直接线性变换 (DLT) 求解 )像素坐标。HH

x=HX

This transformation matrix can be then used to transform the original image such that color chart is imaged straight from the direction of the surface normal.

Fit lines to the edges

As can be seen only radial distortion is left. When we used transformation H for image transformation (2D interpolation), we chose the interpolation coordinates such, that the we know the precise resolution of the image, meaning that we now know for example the size of the letters.

If we still want to do some template matching, we can use any decent template matching method. The method does not have to be rotation/scale invariant as the image is already rectified.

Correct perspective

Start with edge detection. Then use Hough transform to detect straight lines. Then figure out which lines are parallel and which ones should be perpendicular. Then estimate the projective transformation so that the lines that should be perpendicular actually are perpendicular.