如何识别图像中的三种类型的对象?

时间:2018-06-09 17:08:10

标签: python opencv image-processing classification

我想从卫星风图像中识别出三个不同的物体。问题是其中三个有些相似。我试图识别使用模板匹配,但它没有工作。三个对象如下。

object 1

object 2

object 3

这里物体的方向并不重要,但线路中头部的类型很重要。你能建议一种方法吗?

2 个答案:

答案 0 :(得分:0)

假设您的图像仅由纯黑色和纯白色像素组成,

您可以为每个轮廓找到轮廓及其边界矩形或minAreaRect。

https://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=minarearect#minarearect

然后迭代轮廓,将矩形视为单独的图像。现在您对这些图像进行分类。您也可以使用模板匹配。

祝你好运!

答案 1 :(得分:0)

您是否考虑过机器学习?

例如,用于数字识别的小型cnn可以使用一小部分图像进行“重新训练”,Keras还具有数据增强功能,有助于确保训练强大的分类器。

有一篇非常好的博客文章 Yash Katariya找到@ https://yashk2810.github.io/Applying-Convolutional-Neural-Network-on-the-MNIST-dataset/,其中加载了MNIST数据集并且网络已经过培训,它会经历您需要的所有阶段,以便将ML用于您的问题。

你提到你已经尝试过模板匹配,但是你也提到旋转并不重要,这对我来说意味着可以旋转一个对象,这会导致TM失败。

您可以查看LBP(局部二进制模式),或OpenCV的Haar分类器(但它对旋转敏感)。

除了我建议的项目之外,还有一个很棒的教程@ https://gogul09.github.io/software/image-classification-python,它使用功能和机器学习,你可以从应用这个问题中受益。

我希望虽然没有直接给你一个问题的答案,但我已经给了你一套你可以使用的工具,这些工具可以通过一些时间投入和一些阅读来解决它。