4、传统图像处理与特征提取:边缘检测、阈值分割、形态学操作、纹理与颜色特征提取

在工业视觉AI分类与分拣系统中,深度学习模型并非唯一的技术路径。传统图像处理与特征提取方法凭借其计算效率高、可解释性强、对硬件要求低等优势,在高速产线、嵌入式视觉控制器和特定纹理/颜色分拣场景中依然占据不可替代的地位。本章将系统讲解边缘检测、阈值分割、形态学操作以及纹理与颜色特征提取的核心原理、工程实现方法与典型应用,帮助学员建立从像素到特征向量的完整技术链路。

传统图像处理与特征提取技术链路 输入图像 预处理 边缘检测 阈值分割 形态学操作 特征提取 纹理特征 颜色特征 分类器/决策 分拣执行 参数反馈与优化

4.1 边缘检测:从梯度到轮廓

4.1.1 核心原理

边缘是图像中灰度值发生剧烈变化的位置,对应物体边界、表面纹理突变或光照阴影。从数学角度看,边缘检测本质上是计算图像灰度函数的梯度。对于离散像素,常用Sobel算子、Prewitt算子或Laplacian算子来近似梯度。Sobel算子通过两个3×3卷积核分别计算水平方向(Gx)和垂直方向(Gy)的梯度,梯度幅值G = √(Gx² + Gy²),梯度方向θ = arctan(Gy/Gx)。Canny边缘检测器则在梯度基础上增加了非极大值抑制和双阈值滞后连接,能够生成单像素宽、连续且抗噪的边缘轮廓。

算子特点计算量适用场景
Sobel对噪声有一定抑制,边缘较粗低实时性要求高的粗定位
Laplacian对噪声敏感,产生双像素边缘低配合高斯滤波使用
Canny边缘连续、单像素宽、抗噪强中精密测量、轮廓提取

4.1.2 操作流程与参数选择

  1. 图像灰度化与高斯滤波(σ通常取1.0~1.5)
  2. 计算梯度幅值与方向
  3. 非极大值抑制:沿梯度方向保留局部最大值
  4. 双阈值处理:高阈值(如120)确定强边缘,低阈值(如60)连接弱边缘
经验提醒:工业现场光照波动大时,Canny的高/低阈值建议按梯度直方图的百分位动态设定(如高阈值取梯度幅值前20%分位),而非固定值。

4.1.3 案例拆解:轴承外圈划痕检测

某汽车零部件产线需检测轴承外圈表面划痕,划痕宽度约2~5像素,背景为均匀金属光泽。初始使用固定阈值Canny(高=150,低=75),发现漏检率高达12%。分析梯度直方图后发现,由于不同批次轴承表面粗糙度差异,梯度幅值整体偏移。改进方案:先计算图像梯度幅值直方图,取累计95%分位作为高阈值,高阈值的0.4倍作为低阈值。调整后漏检率降至1.8%,过检率从9%降至2.3%。代价是每帧图像需额外计算直方图,耗时增加约3ms,仍满足产线节拍。

风险提示:边缘检测对反光、油污、振动模糊极为敏感。若工件表面有液体残留,应优先考虑偏振光源或调整打光角度,而非单纯调阈值。

4.2 阈值分割:从灰度到二值

4.2.1 核心原理

阈值分割的目标是将图像划分为前景与背景。全局阈值法(如Otsu)通过最大化类间方差自动确定最优阈值,适用于前景与背景灰度分布呈双峰的情况。但当光照不均或目标灰度与背景重叠时,全局阈值失效,需采用自适应阈值(局部阈值),即对每个像素根据其邻域灰度统计(如均值、高斯加权均值)计算动态阈值。工业分拣中,背光照明下的零件轮廓提取、暗场照明下的缺陷检测,是阈值分割最典型的应用场景。

4.2.2 判断方法

  • 先绘制灰度直方图,观察是否存在明显双峰;若单峰或平缓,则考虑自适应阈值
  • Otsu阈值适合双峰谷底较深的情况;若峰谷不明显,可先做直方图均衡化
  • 自适应阈值需设定邻域尺寸(如31×31)和常数C(通常取2~10),C越大,分割出的区域越小
// OpenCV自适应阈值示例
cv::adaptiveThreshold(src, dst, 255,
    cv::ADAPTIVE_THRESH_GAUSSIAN_C,
    cv::THRESH_BINARY, 31, 5);

4.2.3 实战场景:药片缺角检测

药片在传送带上以背光方式成像,正常药片投影为完整圆形。由于环境光干扰,图像左侧比右侧亮约30灰度级。使用Otsu全局阈值时,左侧药片边缘被错误分割,导致缺角误判。改用邻域尺寸为51×51的自适应阈值后,左右两侧均能稳定分割。但自适应阈值在药片密集排列时,邻域内包含多个药片,导致阈值偏移。最终方案:先使用全局Otsu粗分割定位药片中心,再以每个药片中心周围80×80区域做局部阈值精分割。误检率从5.2%降至0.6%。

4.3 形态学操作:修正二值图像

4.3.1 核心原理

形态学操作基于集合论,通过结构元素(如3×3矩形、十字形、圆形)对二值图像进行膨胀、腐蚀、开运算、闭运算。膨胀使前景区域扩大,腐蚀使前景区域缩小。开运算(先腐蚀后膨胀)用于去除小的噪点、断开细连接;闭运算(先膨胀后腐蚀)用于填充小孔洞、连接断裂区域。在分拣系统中,形态学操作常用于清理阈值分割后的二值图,使后续特征提取更稳定。

4.3.2 操作流程

  1. 对分割后的二值图执行开运算(结构元素尺寸取目标最小特征尺寸的1/3~1/2)
  2. 执行闭运算填补内部孔洞
  3. 使用连通域分析(如cv::connectedComponentsWithStats)标记每个独立区域
  4. 根据面积、宽高比、填充度等几何特征过滤干扰区域
关键参数:结构元素形状选择——矩形适合去除直角噪点,圆形适合保持边缘圆润,十字形适合处理水平/垂直线条。迭代次数一般不超过3次,过多会导致目标形变。

4.3.3 案例:电子元件引脚检测

检测PCB板上芯片引脚是否缺失。阈值分割后,引脚区域存在焊盘反光造成的断裂,同时有微小锡珠噪点。使用5×5矩形结构元素做一次开运算去除锡珠,再用7×7圆形结构元素做闭运算连接断裂引脚。处理后引脚数量统计准确率达到99.7%。若结构元素过大(如11×11),相邻引脚会被错误连接,导致计数失败。因此结构元素尺寸需根据引脚间距(约0.8mm)和相机分辨率(0.05mm/pixel)计算,即间距16像素,结构元素直径应小于16像素。

4.4 纹理与颜色特征提取

4.4.1 纹理特征核心原理

纹理描述图像局部区域的灰度空间分布规律。工业中常用的纹理特征包括:灰度共生矩阵(GLCM)的对比度、能量、熵、相关性;局部二值模式(LBP)的直方图;Gabor滤波器组在不同尺度和方向上的响应能量。GLCM适合描述周期性纹理(如织物、木材),LBP对光照变化鲁棒,适合表面粗糙度分类。颜色特征则通常在HSV或Lab色彩空间提取,因为RGB空间对光照变化敏感。常用颜色特征包括颜色直方图、颜色矩(均值、方差、偏度)和颜色连通域。

特征类型提取方法维度典型应用
纹理GLCM(距离=1,角度=0°/45°/90°/135°)4×4=16维木材分级、布料瑕疵
纹理LBP(半径=1,邻域=8)256维直方图瓷砖表面均匀性
颜色HSV直方图(H:30bin, S:32bin, V:32bin)约3072维水果成熟度分拣
颜色颜色矩(HSV各通道前3阶矩)9维塑料回收分类

4.4.2 操作流程与判断方法

  • 纹理特征提取前需做光照归一化(如直方图匹配或除以局部均值)
  • GLCM计算前需将灰度级压缩到16或32级,否则计算量过大
  • 颜色特征提取建议使用HSV空间,H通道对阴影鲁棒,S通道对高光敏感
  • 特征融合时需做归一化(如Z-score),避免量纲差异导致分类器偏向高数值特征

4.4.3 案例:塑料瓶碎片颜色分拣

回收产线需将透明、白色、蓝色、绿色四种PET塑料瓶碎片分开。初始使用RGB颜色直方图(每通道32bin),分类准确率仅82%。分析发现,碎片表面反光导致RGB值漂移。改用HSV空间,仅使用H通道(色相)直方图(30bin),准确率提升至94%。进一步加入S通道均值(饱和度)区分透明与白色碎片(透明碎片S值低于0.15,白色碎片S值在0.2~0.4之间),最终准确率达到97.5%。处理速度为每帧5ms,满足每秒200个碎片的产线速度。

常见误区:不要盲目增加特征维度。高维特征不仅增加计算量,还可能导致过拟合。工业场景优先选择物理意义明确、对光照和噪声鲁棒的低维特征(如颜色矩+少量GLCM特征),并使用PCA或特征选择方法降维。

4.5 本章总结与工程复盘

传统图像处理方法的工程落地需遵循"先分析、后处理、再验证"的流程。首先明确目标特征(边缘、区域、纹理还是颜色),然后选择对应的核心算法,最后通过形态学操作和特征提取将图像信息转化为可决策的数值向量。在工业分拣系统中,边缘检测与阈值分割通常用于定位和分割目标区域,形态学操作用于净化分割结果,纹理与颜色特征则用于最终分类。实际项目中,应建立标准测试集(包含正常品、缺陷品、边界样本),量化评估每个环节的准确率、过检率和漏检率,并记录光照、振动、速度等环境参数变化对算法的影响。

复盘要点:(1)边缘检测参数需根据梯度直方图动态调整;(2)阈值分割优先尝试Otsu,失败则切换自适应阈值;(3)形态学结构元素尺寸必须与目标物理尺寸和分辨率匹配;(4)颜色特征使用HSV空间,纹理特征使用GLCM或LBP;(5)所有特征在送入分类器前必须归一化。