2

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

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

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

4

1 回答 1

5

对于一个启动项目来说,这是一个非常先进的想法。可以通过使用 HSV 或其他色彩空间,采用 Hue 组件来解决照明的差异。然而,“纹理”的问题可以通过两种方式处理:

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

    因此,您可以拍摄沙子、木头和岩石的几张标准照片,并将它们用作分类器上的训练样本——NN、SVM、OpenCV 的 Haar 分类器等等。然后用负样本训练它。分类器的特征向量将是每张图片的 GLCM 输出。然后在实际图片上运行它,看看它们有多准确。

  2. 纹理粗糙度:看到这篇有用的论文,它显示了一种称为特征变换的纹理“粗糙度”的单值度量。计算非常简单,特别是如果您使用 OpenCVSVD()进行特征值计算。本征变换的结果给出了对应于该部分粗糙度的值。这可用于分离出所需的部分。

于 2011-08-11T02:00:40.630 回答