区分对象?

时间:2011-02-04 09:37:14

标签: image image-processing

我想在图片中识别出一个球。我很兴奋使用sobel边缘检测算法,我可以检测到图像中的圆形物体。

但我如何区分不同的对象。例如,一张图片中有一个脚球,另一张图片中有一张月球图片。如何区分检测到的物体。

当我使用我的算法时,我在两种情况下都得到了球。有什么想法吗?

4 个答案:

答案 0 :(得分:2)

如果您要区分的所有对象都是圆形的,您甚至可以对圆形对象使用霍夫变换。这是区分圆形物体的一种非常好的方法。

但是你的基本问题似乎是分类 - 将图像上的对象分类到不同的类中。

为此您不需要神经网络,只需尝试最近邻匹配即可。它的功能有点像神经网络,因为你可以给它几个参考图片,告诉系统在那里可以看到什么,它会优化自己到你检测到的每个属性的最佳平均值。通过这种方式,您可以获得不同类型对象的聚类字典。

但是对于这一点,你当然首先需要能够区分球和月球的东西。 由于它们都是真正的圆形物体(显示为圆形),因此比较圆形度,圆周,直径或面积(仅当您的相机稳定并且如果您知道月球在图像上总是具有相同尺寸时)除了球之外。

所以基本上你需要查看对象本身,你可以尝试比较它们的平均颜色值或灰度值或对象内部的对比度(月亮主要是中灰色值,而足球由黑色和白色部分)

您还可以在分段对象上运行边缘过滤器,以确定其纹理中哪个更“前卫”。但为此,我猜有更好的方法......

所以基本上你需要先做的事情:

  1. 找到几个可以帮助您区分不同圆形对象的属性(假设它们已经分开)
  2. 实现一些东西,以便从圆形对象的图片中获取这些值(当然,它已经被分段,因此背景为0)
  3. 构建一个系统,您可以将多个图像及其类提供给一个有监督的学习系统,并为其提供几种类型的图像(在线有很多实现)
  4. 现在您的系统正在运行,并且可以为其提供其他对象进行分类。

    1. 为此,您需要通过边缘滤镜或Hough变换
    2. 来分割图像中的对象
    3. 对于图像中的每个分段对象,让它运行您的分类系统,它应该告诉您它属于哪个类(对象类型)...
    4. 希望有帮助......如果没有,请继续问......

答案 1 :(得分:1)

当您应用边缘检测算法时,丢失信息

因此月球和球是一样的。 月亮具有不同的颜色,不同的纹理......您可以使用这些信息来区分已检测到的物体。

答案 2 :(得分:0)

这是AI中的一个问题。

如果你想一想,你知道它是一个球而不是一个月球的原因是因为你在生活中看到过很多球和卫星。
所以,你需要教会程序球是什么,月球是什么。给它一些字典或其他东西。

字典的问题当然是将对象与字典中的所有对象相匹配需要时间。

所以最好的解决方案可能会使用Neural networks。我不知道你正在使用什么编程语言,但我遇到的大多数语言都有神经网络实现。

你必须仔细阅读它,决定什么样的神经网络及其架构。

实施后,它变得简单。你只需要给它很多图片来学习(神经网络得到一个矢量作为输入,所以你可以给它全貌)。
对于你给出的每张照片,你要告诉它它是什么。所以你给它像20张不同的月亮图片,20张不同的球图片。之后你告诉它学习(通常是内置功能)。

神经网络将遍历您提供的数据,并学习如何区分这两个对象。

稍后您可以使用您教过的网络,给它一张照片,并标记它的想法,例如30%的球,85%的月亮。

答案 3 :(得分:0)

之前已经讨论过这个问题。看看this question。更多信息herehere

相关问题