基于几何形状检测图像上的对象

时间:2009-03-06 10:25:28

标签: image-processing pattern-matching computer-vision pattern-recognition

我对图像处理有基本的了解,现在正在深入研究冈萨雷斯的“数字图像处理”一书。

当给出的图像和感兴趣的物体近似形式时(例如圆形,三角形), 在图像上找到这个对象的最佳算法/方法是什么?

物体可能会稍微变形,因此蛮力方法无济于事。

6 个答案:

答案 0 :(得分:7)

您可以尝试使用方向梯度直方图(也称为边缘方向直方图)。我们用它们来检测道路标志。 http://en.wikipedia.org/wiki/Histogram_of_oriented_gradients和Bill Triggs的论文应该让你开始。

答案 1 :(得分:5)

我建议您使用Hough变换,它允许您查找由等式描述的任何给定模式。而且霍夫变换对变形物体的作用也很大。

算法和实现本身非常简单。 可以在此处找到更多详细信息:http://en.wikipedia.org/wiki/Hough_transform,甚至此算法的源代码也包含在引用的页面上(http://www.rob.cs.tu-bs.de/content/04-teaching/06-interactive/HNF.html)。

我希望能帮助你。

答案 2 :(得分:3)

我会分两步看你的问题:

  • 首先找到对象的外边界: 我假设您已经对比了足够的图像,您可以轻松地获得阈值以获得对象的二进制图像。您需要提取对象边界链代码。

  • 然后分析边界的形状以推导出形式(圆形,多边形,......): 您可以计算边界链每个点的曲率,从而确定形状中有多少个锐角(即高曲率值)。几个锐角​​意味着你有一个多边形,没有意味着你有一个圆(恒定曲率)。

您可以在Gonzalez's Digital Image Processing, chapter 11找到有关如何从二进制图像获取对象边界的说明以及分析它的方法。

我还发现了这个insightful presentation on binary image analyis (PPT)和一个matlab script,它实现了Gonzalez在DIP中谈到的一些技巧。

答案 3 :(得分:1)

我强烈建议您使用OpenCV,它是一个出色的计算机视觉库,可以极大地帮助解决与计算机视觉相关的任何问题。他们的网站不是很吸引人,也没有帮助,但API非常强大。

由于网上没有大量文档,因此帮助我很多的书是Learning OpenCV。 API附带的文档很好,但不适合学习如何使用它。

与您的问题相关,您可以使用Canny Edge探测器查找项目的边框然后进行分析,或者您可以继续进行Hough变换以搜索线条和/或圆圈。

答案 4 :(得分:1)

你可以特别试试'面部识别'。因为,您知道这是一个特定的主题。另一方面'人脸检测'等.EmguCV对你有用..它是英特尔OpenCV图像处理库的.Net包装。

答案 5 :(得分:1)

看起来Sherbooke大学的教授Jean Rouat找到了一种通过处理中性尖峰神经网络在图像中找到物体的方法。他的技术名称RN-SPIKES似乎可以获得许可。