我是否应该使用直方图或其他更高级的数学工具(如贝叶斯网络)进行材料分类/识别?

2024-06-06 06:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习OpenCV的基础知识,我认为一个好的项目可以帮助我使学习变得更有趣。在思考了一些想法后,我想出了一些材料识别项目。比方说,我给自己买了一台输送机,它用来运送生产某种产品的材料(这个产品其实并不重要,但是)。有3种材料,照明条件会有所不同(从早上到下午使用自然光,晚上使用灯泡)。这就是问题描述。在

我想用沙子,木头和石头,这些东西很容易弄到。把它们放在塑料表面上。拍完照片后,我会应用一些直方图来获得颜色,并使用这种颜色来识别材质。但是,由于闪电的条件会随着时间的推移而变化,当我拍下这张照片并应用直方图时,颜色会发生变化,材料将无法正确识别。我想,如果我用沙子和灰尘,它们的颜色非常相似,但质地不同,有什么可以帮助我的吗?在

我只是想要一些想法,也许这个领域的专家可以指导我。在


Tags: 项目产品颜色直方图条件opencv照片材料
1条回答
网友
1楼 · 发布于 2024-06-06 06:30:35

对于一个开始的项目来说,这是一个相当先进的想法。色相的差异可以用色相或色相来表示。然而,“质地”的问题可以用两种方式来处理:

  1. 特征描述符:如果你处理灰度图像,有一组称为灰度共生矩阵(GLCM)的特征描述符,它给出了图像中不同区域纹理的度量。这是在Matlab中提供的,对于OpenCV有以下代码:in C。在

    所以你们可以拍摄一些沙子、木材和岩石的标准照片,并将它们作为分类器上的训练样本——NN、SVM、OpenCV的Haar分类器等等。然后用阴性样本训练它。分类器的特征向量将是每个图片的GLCM输出。然后在实际图片上运行它,看看它们有多准确。

  2. 纹理粗糙度:偶然发现了this有用的论文,它展示了一种称为特征变换的纹理“粗糙度”的单值度量。计算非常简单,特别是如果使用OpenCV的SVD()来计算特征值。本征变换的结果给出了与该部分粗糙度相对应的值。这可以用来分离出所需的部分。

相关问题 更多 >