【发布时间】:2010-10-11 17:27:24
【问题描述】:
我对图像处理有了基本的了解,现在正在深入研究 Gonzales 的《数字图像处理》一书。
当给定图像和感兴趣对象的近似形式已知(例如圆形、三角形)时, 在图像上找到这个对象的最佳算法/方法是什么?
物体可能会轻微变形,所以蛮力方法无济于事。
【问题讨论】:
标签: image-processing pattern-matching computer-vision pattern-recognition
我对图像处理有了基本的了解,现在正在深入研究 Gonzales 的《数字图像处理》一书。
当给定图像和感兴趣对象的近似形式已知(例如圆形、三角形)时, 在图像上找到这个对象的最佳算法/方法是什么?
物体可能会轻微变形,所以蛮力方法无济于事。
【问题讨论】:
标签: image-processing pattern-matching computer-vision pattern-recognition
看起来像来自舍布克大学的Jean Rouat 教授,已经找到了一种通过处理中性脉冲神经网络来查找图像中对象的方法。他的技术名称RN-SPIKES,似乎可以授权。
【讨论】:
您可以专门尝试“人脸识别”。因为,你知道这是一个特定的话题。另一方面,“面部检测”等。EmguCV 对您很有用。它是英特尔 OpenCV 图像处理库的 .Net 包装器。
【讨论】:
我强烈推荐你使用OpenCV,它是一个很棒的计算机视觉库,对任何与计算机视觉相关的事情都有很大帮助。他们的网站不是很吸引人,也不是很有帮助,但 API 确实很强大。
由于网络上没有大量文档,因此对我有很大帮助的一本书是Learning OpenCV。 API 附带的文档很好,但不适合学习如何使用它。
与您的问题相关,您可以使用 Canny Edge 检测器来查找项目的边界然后对其进行分析,或者您可以继续使用霍夫变换来搜索线和/或圆。
【讨论】:
您可以尝试使用方向梯度直方图(也称为边缘方向直方图)。我们已将它们用于检测道路标志。 http://en.wikipedia.org/wiki/Histogram_of_oriented_gradients 和 Bill Triggs 的论文应该可以帮助您入门。
【讨论】:
我会分两步看你的问题:
首先找到对象的外边界: 我假设您已经对比了足够的图像,您可以轻松地进行阈值以获得对象的二进制图像。您需要提取对象边界链码。
然后分析边界的形状推导出形式(圆形、多边形、...): 您可以计算边界链的每个点的曲率,从而确定您的形状中有多少个锐角(即高曲率值)。几个锐角意味着你有一个多边形,没有一个意味着你有一个圆(恒定曲率)。
您可以在Gonzalez's Digital Image Processing, chapter 11 中找到有关如何从二进制图像中获取对象边界以及分析方法的说明。
我还发现了这个 insightful presentation on binary image analyis (PPT) 和一个 matlab script,它们实现了 Gonzalez 在 DIP 中谈到的一些技术。
【讨论】:
我建议您使用 Hough 变换,它可以让您找到由方程式描述的任何给定模式。此外,霍夫变换也适用于变形对象。
算法和实现本身非常简单。 更多细节可以在这里找到:http://en.wikipedia.org/wiki/Hough_transform,甚至这个算法的源代码也包含在参考页面(http://www.rob.cs.tu-bs.de/content/04-teaching/06-interactive/HNF.html)上。
希望对你有帮助。
【讨论】: