【发布时间】:2011-02-04 09:37:13
【问题描述】:
我想识别图片中的一个球。我正在考虑使用sobel边缘检测算法,这样我就可以检测到图像中的圆形物体。
但是我如何区分不同的对象。例如,在一张图片中有一个足球,而在另一张图片中我有一张月亮的图片。如何区分检测到的物体。
当我使用我的算法时,我在这两种情况下都会得到球。有什么想法吗?
【问题讨论】:
-
这很难。检查liesiejjj.deviantart.com/art/… :)
我想识别图片中的一个球。我正在考虑使用sobel边缘检测算法,这样我就可以检测到图像中的圆形物体。
但是我如何区分不同的对象。例如,在一张图片中有一个足球,而在另一张图片中我有一张月亮的图片。如何区分检测到的物体。
当我使用我的算法时,我在这两种情况下都会得到球。有什么想法吗?
【问题讨论】:
如果您想要区分的所有对象都是圆形的,您甚至可以对圆形对象使用霍夫变换。这是区分圆形物体的好方法。
但您的基本问题似乎是分类 - 将图像上的对象分类为不同的类别。
为此,您实际上并不需要神经网络,您可以简单地尝试使用最近邻匹配。它的功能有点像神经网络,因为你可以给它几张参考图片,告诉系统在那里可以看到什么,它会优化自己,为你检测到的每个属性提供最佳平均值。通过这个,您可以获得不同类型对象的集群字典。
但为此,您当然首先需要能够区分球和月亮的东西。 由于它们都是真正的圆形物体(显示为圆形),因此比较圆形度、周长、直径或面积是没有用的(只有当你的相机稳定并且你知道月亮在你的图像上总是有相同的大小时,除了球)。
所以基本上你需要查看对象本身的内部,你可以尝试比较它们的平均颜色值或灰度值或对象内部的对比度(月亮大多具有中灰度值,而足球由黑色和白色部分)
您还可以对分段对象运行边缘过滤器,以确定哪个纹理更“前卫”。但为此,我猜有更好的方法......
所以基本上你首先需要做什么:
现在您的系统正在运行,并且可以将其他对象交给它进行分类。
希望对您有所帮助...如果没有,请继续询问...
【讨论】:
当您应用边缘检测算法时,您会丢失信息。
因此月亮和球是一样的。 月亮有不同的颜色、不同的纹理……您可以使用这些信息来区分检测到的物体。
【讨论】:
这是人工智能中的一个问题。
如果你仔细想想,你之所以知道它是一个球而不是月亮,是因为你在生活中见过很多球和月亮。
所以,你需要教程序什么是球,什么是月亮。给它一些字典什么的。
当然,字典的问题在于将对象与字典中的所有对象进行匹配需要时间。
所以最好的解决方案可能是使用Neural networks。我不知道您使用的是哪种编程语言,但我遇到的大多数语言都有神经网络实现。
你必须阅读一些关于它的内容,决定什么样的神经网络,以及它的架构。
实施后,它就变得容易了。你只要给它很多图片来学习(神经网络得到一个向量作为输入,所以你可以给它整个图片)。
对于你给它的每张图片,你告诉它它是什么。所以你给它20张不同的月亮图片,20张不同的球图片。之后你告诉它学习(通常是内置函数)。
神经网络将检查您提供给它的数据,并学习如何区分这 2 个对象。
以后你可以使用你教过的那个网络,给它一张图片,它是它认为的东西的标记,比如 30% 的球,85% 的月亮。
【讨论】:
这已经讨论过了。看看this question。更多信息here 和here。
【讨论】: