Lui*_*bed 2 python opencv bayesian-networks object-recognition material
我正在学习OpenCV的基础知识,我认为一个好的项目可以帮助我让学习变得更有趣.在思考了一些想法之后,我想出了一些物质识别项目.比方说,我给自己做了一台输送机,它正在运输用于生产某种产品的材料(这个产品并不重要,所以).有3种材料,照明条件会有所不同(早上到下午使用自然光,晚上使用灯泡).这将是问题描述.
我正在考虑使用容易获得的沙子,木头和岩石.并将它们放在塑料表面上.在拍完照片之后,我将应用一些直方图来获得颜色,并使用这种颜色我将识别材料.但是,由于闪电条件会随着时间的推移而变化,当我拍摄这张照片并应用直方图时,颜色会发生变化,材料将无法正确识别.而且我想,如果我使用沙子和灰尘,他们有非常相似的颜色,但不同的质地,有什么东西可以帮助我吗?
我只是想要一些想法,也许该领域的一些专家可以指导我.
对于一个起始项目来说,这是一个非常先进 采用HSV或其他颜色空间,采用Hue组件可以解决照明方面的差异.然而,"纹理"的问题可以通过两种方式处理:
特征描述符:如果处理灰度图像,则有一组称为灰度共生矩阵(GLCM)的特征描述符,用于衡量图像中不同区域的纹理.这在Matlab中存在,对于OpenCV,有以下代码:在C中.
因此,您可以拍摄沙子,木头和岩石的几个标准镜头,并将它们用作分类器上的训练样本 - NN,SVM,OpenCV的Haar分类器,无论如何.然后用负样本训练它.分类器的特征向量将是每个图片的GLCM输出.然后在实际图片上运行它,看看它们有多准确.
纹理粗糙度:遇到这篇有用的论文,它显示了一个称为"特征变换"的纹理"粗糙度"的单值度量.计算非常简单,特别是如果您使用OpenCV SVD()
进行特征值计算.特征变换的结果给出对应于该部分的粗糙度的值.这可以用于分离出所需的部分.