1. 从“找不同”到工业质检:为什么GMM纹理检测是你的新利器
在工厂的生产线上,质检员每天要盯着成千上万的产品表面,寻找那些微小的划痕、污渍、纹理不均。这活儿干久了,眼睛累,还容易出错。我干了十几年机器视觉,见过太多工厂想用自动化解决这个问题,但往往卡在第一步:面对复杂多变的纹理背景(比如布匹、皮革、木纹、金属拉丝),传统的“找茬”算法(比如简单的图像差分)直接就“瞎”了,把正常的纹理起伏也当成缺陷报出来,误检率高得没法用。
这时候,Halcon里的基于高斯混合模型(GMM)的特征训练方法,就像一位经验老道的老师傅。它不靠死记硬背模板,而是先去学习一批“完美样品”的纹理特征,总结出正常纹理应该长什么样,有什么样的统计规律。等它“学成出师”后,再去看新产品,就能一眼分辨出哪些是“正常波动”,哪些是“异常缺陷”。这种方法特别适合那些背景纹理有规律但又不完全重复的场景,可以说是为工业纹理缺陷检测量身定做的。
简单来说,它的核心思想是“先学习正常,再识别异常”。你不需要去定义缺陷具体是什么样子(因为缺陷千奇百怪),你只需要告诉系统“好的产品长这样”。系统通过GMM模型,从多个尺度(图像金字塔)去分析正常纹理的特征分布。在检测时,它会计算待测图像每个区域的“新奇分数”,分数越高,说明这个区域越偏离之前学到的正常模式,就越可能是缺陷。
我经手过一个汽车内饰皮革检测的项目,皮革表面的天然纹路每一块都不同,但又有其整体的一致性。用传统方法根本没法区分天然纹路和压伤、刮痕。上了GMM纹理检测后,我们只用了几十张无瑕疵的皮革图片训练模型,它就能稳定地揪出各种微小缺陷,误检率降到了千分之三以下,效果立竿见影。接下来,我就带你一步步拆解这个强大的工具,从零开始搞定一个实战项目。
2. 实战第一步:准备“教材”与搭建“教室”
任何机器学习方法,数据都是基石。对于GMM纹理检测来说,你的训练图像就是教给系统的“教材”。这一步没做好,后面模型再厉害也是白搭。
首先,关于“教材”(训练图像)的硬性要求:必须完美无瑕。 这句话要划重点。我见过不少工程师在这里栽跟头,觉得“差不多就行”,把一些看似微小瑕疵、或者对比度稍差的图片也塞进训练集。结果就是,模型把这些缺陷特征也当成了“正常”的一部分去学习,导致后续检测时对这些类似的缺陷“睁一只眼闭一只眼”,灵敏度严重下降。所以,挑选训练图像时,要像质检组长一样苛刻,确保每一张都是毫无争议的良品。通常准备20-50张覆盖不同光照、不同位置、但纹理一致的图像就足够了。
其次,搭建“教室”(Halcon程序框架)。 整个过程就像一套标准流程,我们先在Halcon中把架子搭起来。核心算子就那么几个,但顺序和参数理解是关键。
* 1. 创建模型
create_texture_inspection_model ('basic', TextureInspectionModel)
* 2. 读取并添加训练图像
for Index := 1 to |ImageFiles| by 1
read_image (Image, ImageFiles[Index])
* 这里可以加一些预处理,比如统一尺寸、转换色彩空间为灰度等
* 但切记不要做任何改变纹理本质的处理,如强滤波。
add_texture_inspection_model_image (Image, TextureInspectionModel, Indices)
endfor
* 3. 设置关键训练参数(先使用默认值,后续再调)
* set_texture_inspection_model_param (TextureInspectionModel, 'pat


306

被折叠的 条评论
为什么被折叠?



