4、图像处理入门:灰度化、滤波、阈值分割、边缘检测等常用图像预处理方法
在工业AI机器人控制中,视觉系统获取的原始图像往往包含大量噪声、光照不均、背景干扰等不利因素。如果直接将原始图像送入坐标转换或目标识别算法,不仅计算量大,而且极易导致定位偏差或误识别。图像预处理的核心目标是在不破坏关键特征的前提下,最大限度地突出目标区域、抑制无关信息,为后续的视觉定位与动作执行提供高质量输入。本章将系统讲解灰度化、滤波、阈值分割与边缘检测四大核心预处理方法,并结合工业场景说明其工程应用要点。
4.1 灰度化:从三维彩色空间到单通道亮度
核心原理:工业相机采集的彩色图像通常为RGB三通道数据,每个像素由红、绿、蓝三个分量组成。灰度化是将三维彩色空间映射到一维亮度空间的过程,其本质是加权求和。标准转换公式为:Gray = 0.299R + 0.587G + 0.114B。该权重系数基于人眼对绿色最敏感、蓝色最不敏感的视觉特性设计。在工业场景中,灰度化不仅能减少后续处理的数据量(从3通道降为1通道),还能消除颜色信息对形状特征提取的干扰。
工程判断方法:选择灰度化算法时需考虑以下因素:
- 标准加权法:适用于大多数自然光照场景,色彩还原度较好。
- 平均值法:
Gray = (R+G+B)/3,计算简单但会损失对比度,适合对精度要求不高的快速检测。 - 最大值法:
Gray = max(R,G,B),适合高光或反光较强的金属表面。 - 绿色分量法:直接取G通道,在绿色光源照明下(如绿色LED环形光)效果最佳。
4.2 滤波去噪:在保留边缘的前提下抑制噪声
核心原理:图像噪声主要来源于传感器热噪声、光照波动、电磁干扰等。滤波的本质是邻域操作——用像素周围邻域的统计特征替代当前像素值。工业视觉中最常用的三种滤波器各有适用场景:
| 滤波器类型 | 核大小 | 适用噪声 | 边缘保持能力 | 计算开销 |
|---|---|---|---|---|
| 高斯滤波 | 3×3 / 5×5 | 高斯噪声(随机白噪声) | 中等,σ越大边缘越模糊 | 低 |
| 中值滤波 | 3×3 / 5×5 | 椒盐噪声(脉冲噪声) | 较好,能保留尖锐边缘 | 中 |
| 双边滤波 | 5×5 / 7×7 | 高斯噪声+边缘保持 | 优秀,同时考虑空间距离与灰度差异 | 高 |
操作流程:在实际工业应用中,滤波参数的选择应遵循"最小必要干预"原则。首先观察噪声类型:若图像中存在孤立的白点或黑点(椒盐噪声),优先选择3×3中值滤波;若图像整体颗粒感强(高斯噪声),选择σ=1.0~1.5的高斯滤波。滤波核不宜过大,否则会模糊工件边缘,导致后续边缘检测偏移。
// OpenCV 滤波示例(C++)
cv::Mat src, dst;
cv::GaussianBlur(src, dst, cv::Size(3,3), 1.2); // 高斯滤波,σ=1.2
cv::medianBlur(src, dst, 3); // 中值滤波,核=3
cv::bilateralFilter(src, dst, 5, 50, 50); // 双边滤波,空间sigma=50,灰度sigma=50
4.3 阈值分割:从灰度图到二值图的决策边界
核心原理:阈值分割的核心是寻找一个灰度值T,将图像像素分为前景(目标)和背景两类。其数学表达为:dst(x,y) = 255 if src(x,y) > T else 0。工业场景中常用的阈值方法包括:
- 固定阈值:适用于光照稳定、目标与背景灰度差异大的场景(如黑色工件在白色背景上)。
- Otsu自适应阈值:通过最大化类间方差自动计算最优阈值,适合光照渐变或目标灰度范围波动的情况。
- 局部自适应阈值:对图像分块计算阈值,适合光照不均的较大视野。
案例拆解:某3C电子厂需要定位PCB板上的Mark点(圆形基准标记)。初始方案采用固定阈值T=128,但实际产线光照在上午和下午存在约±20的灰度波动,导致Mark点分割不完整。工程师改用Otsu算法后,系统自动计算每帧图像的最优阈值,分割准确率从92.3%提升至99.1%。具体实施步骤:
- 采集10帧不同光照条件下的图像,统计灰度直方图分布范围(80~200)。
- 在OpenCV中使用
cv::threshold(src, dst, 0, 255, THRESH_BINARY | THRESH_OTSU)自动计算阈值。 - 对分割后的二值图进行形态学开运算(3×3核)去除细小噪点。
- 使用连通域分析提取Mark点轮廓,计算圆心坐标。
4.4 边缘检测:提取目标轮廓的数学算子
核心原理:边缘是图像灰度发生剧烈变化的位置,对应灰度函数的梯度极大值。Canny边缘检测是工业视觉中最常用的算法,其流程包括:高斯平滑→计算梯度幅值与方向→非极大值抑制→双阈值检测与边缘连接。Sobel算子则通过卷积核计算水平与垂直方向的近似梯度,计算量小但边缘较粗。
关键参数选择:
| 参数 | 推荐值 | 影响 |
|---|---|---|
| 高斯核大小 | 3×3 或 5×5 | 越大边缘越平滑,但定位精度下降 |
| 高阈值 | 150~200 | 决定强边缘的判定标准 |
| 低阈值 | 50~80 | 决定弱边缘的保留程度 |
实战场景:在机器人抓取圆柱形工件的场景中,边缘检测用于提取工件的上下边缘线,进而计算工件中心坐标与倾斜角度。若高阈值设置过高(>250),则弱边缘被丢弃,导致边缘断裂;若低阈值设置过低(<30),则噪声被误判为边缘,产生大量伪轮廓。工程上建议先使用Otsu阈值分割确定目标区域,再在ROI内执行Canny检测,可有效减少干扰。