我对图像处理有基本的了解,现在正在深入研究冈萨雷斯的“数字图像处理”一书。
当给出的图像和感兴趣的物体近似形式时(例如圆形,三角形), 在图像上找到这个对象的最佳算法/方法是什么?
物体可能会稍微变形,因此蛮力方法无济于事。
答案 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似乎可以获得许可。