在图像中定位模板

3

我有一张图片和一个模板。我想知道这个模板是否存在于这张图片中,如果存在,它在图片中的位置在哪里。就像这些图片一样:

http://www-cgrl.cs.mcgill.ca/~godfried/teaching/cg-projects/98/normand/ex1-model-bit.gif http://www-cgrl.cs.mcgill.ca/~godfried/teaching/cg-projects/98/normand/ex1-image-bit.gif

这将是结果: http://www-cgrl.cs.mcgill.ca/~godfried/teaching/cg-projects/98/normand/sc1-match.gif 这些图片来自于这个页面: http://www-cgrl.cs.mcgill.ca/~godfried/teaching/cg-projects/98/normand/main.html 有提到Rucklidge的算法,但我没有找到相关信息。
我不需要旋转超过15度或缩放超过20%(无论是放大还是缩小)。最好的方法是什么?
我有一个黑色像素列表,形成了图像的边缘,还有另一个像素列表,形成了模板。我只是想找到一种简单的方法,以找到模板图像像素列表的最佳(x,y)偏移量,使它们尽可能接近形成图像的像素。一些容差会很好,以允许少量缩放或少量旋转,但不要太过激烈。
2个回答

2
从您引用的页面开始追溯链接,可以找到http://www.cs.cornell.edu/vision/hausdorff/hausmatch.html,其中包含一些代码,看起来与您遇到的问题相同。
Rucklidge在他的算法中发表了多个版本,例如在《Efficiently Locating Objects Using the Hausdorff Distance》(计算机视觉国际期刊,第24卷第3期,1997年9月/10月)和一本书《Efficient visual recognition using the Hausdorff distance》(Springer LNCS no 1173)中。我没有阅读过这些内容,只能通过谷歌获取书籍的片段。听起来,Rucklidge有有效的方法来修剪搜索空间,通过证明它们不能包含所搜索的物体的好副本,来排除大量的(位置、转换)区域。
我认为您的问题——“最好的方法是什么?”——需要进行大量的研究工作,而不是一个Stack Overflow答案。据我所知(我不是该领域的专家),这仍然是一个活跃且具有挑战性的研究领域。

谢谢。我想要简单的东西,比如在图像上应用Canny滤波器(以获取边缘图像),然后看看如何计算移动第一张图像的位置(我保持简单,可能会有一点旋转和缩放,不多),以便模板与其大致对齐。 - Dmi

0
关键词在这里是Hausdorff距离。您原来的链接已经很好地解释了Hausdorff度量。因此,一旦您学会了该算法,它就非常简单-
  1. 将图像和模板转换为二进制模式。
  2. 找到具有最低Hausdorff_distance(region, your_template)的图像区域

2
但现在的问题是,我如何找到这个区域呢?暴力测试所有大小为MxN的区域,其中MxN是模板的大小吗? - Dmi
@Dmi,你也可以在该区域上执行滑动窗口。 - Arturo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接