4. 图像预处理与计量特征增强
在精密测量中,图像预处理的目标与普通视觉检测有本质区别:普通检测追求“看得清、分得开”,而计量追求“边缘位置不漂移、特征尺寸不失真”。任何预处理算子都会改变像素灰度分布,进而影响亚像素边缘提取的定位结果。因此,本节的核心不是罗列算子,而是建立一条判断准则——预处理只能增强信噪比,不能改变几何量。凡是会引入几何偏移、边缘展宽或位置依赖的操作,都必须评估其计量代价。
一、灰度变换:先解决“对比度是否落在有效量化区间”
灰度变换是逐像素的点运算,不改变像素空间位置,因此对几何量最安全。在 HALCON 中常用 scale_image、scale_image_max、emphasize 和 equ_histo_image。对于 8 位图像,若目标边缘附近的灰度差只有 5~10 个灰度级,而噪声标准差已达 3~4 个灰度级,边缘信噪比不足,亚像素拟合会明显抖动。此时用线性拉伸把有效灰度区间映射到 0~255,可提升边缘梯度幅值。
但要注意两个边界。第一,equ_histo_image 是全局非线性映射,会压缩或拉伸不同灰度段的间距,若被测特征与背景的灰度关系在拉伸后发生交叉,边缘极性可能反转,导致 edges_sub_pix 提取到错误边缘。第二,线性拉伸的乘数 Mult 与偏移 Add 必须保证目标灰度不饱和:一旦边缘一侧被截断到 255,梯度峰值被削平,亚像素插值会系统性偏向饱和侧。判断方法很简单:对变换后的图像统计目标区域灰度直方图,确认边缘两侧灰度均未贴边。
二、滤波:平滑与保边的取舍决定边缘定位偏差
滤波是邻域运算,会改变边缘的灰度过渡带宽度。高斯滤波 gauss_filter 或 smooth_image 能抑制噪声,但会把理想阶跃边缘展宽为类高斯过渡带。对于 edges_sub_pix 使用的 Deriche/Lanser 滤波器,其定位精度依赖边缘模型的对称性;只要过渡带对称,展宽本身不引入偏移,但会降低梯度峰值,使弱边缘更难被阈值检出。
中值滤波 median_image 对椒盐噪声有效,但在边缘附近会因排序取中值而产生“台阶”效应,对圆弧或斜边会造成局部位置跳动,精密测量中应谨慎用于最终边缘提取前的最后一级。频域滤波 fft_image + gen_highpass 适合抑制周期性纹理,但振铃效应会在边缘两侧产生虚假亮暗带,必须配合掩膜半径控制。
参数选择上,高斯滤波的 Sigma 与边缘提取的 Alpha 存在耦合:Sigma 越大,平滑越强,但边缘定位的随机误差下降、系统偏差上升。经验做法是先用 Sigma=0.8~1.2 做一次预平滑,再用 edges_sub_pix 的 Alpha=0.5~1.0 提取,最后用 fit_circle_contour_xld 或 fit_line_contour_xld 拟合,通过拟合残差 RMS 判断参数是否合适。若残差随 Sigma 增大先降后升,说明存在最优平滑尺度。
三、形态学:只用于掩膜与区域,不用于最终边缘
形态学操作 opening_circle、closing_rectangle1、erosion_circle 等会按结构元尺寸改变区域边界。在精密测量中,形态学的正确用法是生成掩膜、去除毛刺、连接断裂区域,而不是直接对灰度图做边缘提取。例如,先用 threshold 得到粗略区域,再用 opening_circle 去掉小噪点,最后用 reduce_domain 把处理限定在掩膜内,边缘提取仍在原始灰度图上进行。
结构元半径的选择要与最小特征尺寸挂钩。若被测圆孔直径约 40 像素,结构元半径不应超过 3 像素,否则圆孔边界会被明显腐蚀或膨胀,导致直径测量偏差。一个可操作的检查方法是:对同一图像分别用半径 1、2、3 的结构元处理,比较掩膜面积变化率;当面积变化率超过 2% 时,说明结构元已开始侵蚀有效特征。
四、ROI 管理:把计算量和干扰都限制在有效域内
ROI 在 HALCON 中通过 gen_rectangle1、gen_circle、reduce_domain 实现。它的价值有两层:一是减少计算量,二是避免无关区域参与阈值统计和边缘提取。在精密测量中,ROI 边界必须与被测特征保持安全距离,通常建议 ROI 边缘距目标边缘不少于 10 像素,防止 edges_sub_pix 在 ROI 边界处产生虚假边缘。
对于多特征测量,建议采用“粗定位 ROI → 精定位 ROI”的两级策略:先用低分辨率或简单阈值找到特征大致位置,再以该位置为中心生成小尺寸 ROI,在 ROI 内做高精度边缘提取。这样既保证效率,又避免全局阈值受背景灰度漂移影响。
Sigma 从 0.8 起调,以拟合残差 RMS 最小为准则;中值滤波不用于最终边缘前级;形态学结构元半径 ≤ 最小特征尺寸的 1/10;ROI 边缘距目标 ≥ 10 像素。
equ_histo_image 当作万能增强,导致边缘极性反转;用大 Sigma 高斯滤波后不重新评估边缘阈值,造成弱边缘漏检;在灰度图上直接做形态学开运算再提取边缘,引入不可控的几何偏移。
总结来看,预处理在精密测量中的适用边界可以归纳为一句话:点运算可放心用,邻域运算需验证,形态学只做掩膜,ROI 必须留安全边。每一次预处理后,都应以拟合残差、重复性和标准件偏差三项指标做回归验证,确认几何量未被改变,才能进入下一级测量流程。