2012-03-11 152 views
12

我打算编写一个程序来检测和区分几乎固体背景中的某些对象。前景和背景具有高对比度差异,我将进一步增加以辅助对象识别过程。我打算使用Hough变换技术和OpenCV。如何识别图像中的不同物体?

Sample image

作为上述图像中所看到的,我希望单独识别所述圆形物体和方形对象(或任何其它形状出一组有限的形状中的)。由于我对图像处理相当陌生,因此我不知道这种情况是否需要实施一个神经网络并预先学习每种形状。像模板匹配这样的技术会让我在没有神经网络的情况下做到这一点吗?

回答

9

如果您打算检测除圆以外的其他形状(并根据图像我假设您是这样做的),我会建议倒角匹配以便快速启动,特别是因为您具有良好的对比度。

的基本前提,简单来说解释的,以下:

  1. 您做的边缘检测(例如,cvCanny在OpenCV中)
  2. 创建的距离图像中,每个像素的其中值意味着距离最近边缘的距离。
  3. 您采用想要检测的形状,沿着形状的边缘定义采样点,并尝试在距离图像上匹配这些点。基本上,只要将距离图像上的值添加到采样点坐标“下方”,并给定了对象的特定位置即可。
  4. 找到一个好的最小化算法,这个的有效性取决于你的应用。

这个基本的方法是一个通用的解决方案,通常效果很好,但没有进一步的进步,它是非常缓慢的。

通常首先分离感兴趣的对象是一个好主意,因此您不必总是对整个图像进行全面搜索。找到一个好的threshold,所以你可以分开对象。你仍然不知道它是哪个对象,但你只需要在这个对象附近进行匹配。

另一个好主意是,不是在高分辨率图像上进行全面搜索,而是先以非常低的分辨率进行搜索。结果不会很准确,但是您可以了解在更高分辨率下搜索的一般区域,因此您不会在没有任何兴趣的地方浪费时间。

有许多更先进的技术,但仍然值得看看基本的倒角匹配,因为它是大量技术的基础。