我想识别图片中的一个球。我正在考虑使用索贝尔边缘检测算法,这样我可以检测图像中的圆形物体。
但是我如何区分不同的对象。例如,一张图片中有一个足球,而另一张图片中有一张月亮的图片。如何区分检测到的物体。
当我使用我的算法时,我在这两种情况下都会得到球。有什么想法吗?
最佳答案
如果您想要区分的所有对象都是圆形的,您甚至可以对圆形对象使用霍夫变换。这是区分圆形物体的一种非常好的方法。
但是你的基本问题似乎是分类 - 将图像上的对象分类为不同的类。
为此,您实际上并不需要神经网络,您可以简单地尝试使用最近邻匹配。它的功能有点像神经网络,因为您可以给它几张引用图片,告诉系统在那里可以看到什么,它会针对您检测到的每个属性将自身优化为最佳平均值。这样您就可以获得不同类型对象的簇字典。
但是为此,您当然首先需要能够区分球和月亮的东西。 由于它们都是真实的圆形物体(显示为圆形),因此比较圆度、周长、直径或面积是没有用的(前提是您的相机稳定并且您知道月亮在图像上始终具有相同的大小,除了球之外)。
所以基本上你需要查看物体本身的内部,你可以尝试比较它们的平均颜色值或灰度值或物体内部的对比度(月亮主要有中灰色值,而足球由黑色和白色组成)白色部分)
您还可以对分段对象运行边缘过滤器,以确定哪个在其纹理中更“尖锐”。但为此我想有更好的方法......
基本上你需要先做什么:
- 找到几个属性来帮助您区分不同的圆形物体(假设它们已经分开)
- 实现一些东西来从圆形物体的图片中获取这些值(当然,它已经被分割,因此它的背景为 0)
- 构建一个系统,您可以提供多个图像及其类别,以建立一个监督学习系统,并为其提供每种类型的多个图像(网上有很多实现)
现在您的系统正在运行,并且可以将其他对象提供给它进行分类。
- 为此,您需要通过边缘过滤器或霍夫变换来分割图像中的对象
- 对于图像中的每个分割对象,让它运行您的分类系统,它应该告诉您它属于哪个类(对象类型)...
希望有帮助...如果没有,请继续询问...
关于image - 区分物体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4896486/