4. 图像质量与预处理实战
在精密测量中,相机输出的原始图像并不是“所见即所得”的测量基准。镜头渐晕、传感器像素响应不一致、暗电流、坏点、随机噪声以及照明不均,都会让同一物理量在不同像素位置得到不同灰度,从而直接污染边缘定位、亚像素拟合和尺寸计算。预处理的目标不是把图像“修得好看”,而是把图像变成灰度与物理量之间关系稳定、可复现、可标定的测量输入。本节按“先定标、再修复、后增强、最后标准化”的顺序展开,并给出可直接落地的参数与判断依据。
一、平场校正与暗场校正:先建立灰度线性模型
相机响应可近似为线性模型:I_raw = G · (R · L + D) + N。其中 L 是入射光强,R 是像素响应率(含镜头渐晕),D 是暗电流偏置,G 是增益,N 是噪声。平场校正(Flat Field Correction, FFC)与暗场校正(Dark Field Correction, DFC)就是分别估计 R 与 D,再反解出与位置无关的 L。
暗场校正:盖住镜头或关闭光源,在与测量相同的曝光、增益、温度下采集 16~32 帧,逐像素取中位数得到暗场图 D(x,y)。用中位数而非均值,可抑制热像素对暗场的污染。校正时执行 I1 = I_raw − D,并做下限截断避免负值。
平场校正:使用均匀漫射面(积分球、均匀背光板或白纸+匀光)在相同光学条件下采集亮场,先做暗场扣除得到 F = I_flat − D,再对 F 做低通或中值滤波去除灰尘与坏点,最后归一化:K(x,y) = mean(F) / F(x,y)。校正公式为 I_corr = (I_raw − D) · K。若相机支持硬件平场,优先在相机内完成,可避免 8 bit 量化损失;若在软件端做,建议使用 12/16 bit 原始数据。
二、坏点修复:区分热像素、死像素与簇状缺陷
坏点分三类:死像素(恒为低值)、热像素(恒为高值)、簇状缺陷(相邻多个异常像素)。检测方法:在暗场图中,若某像素与邻域中位数偏差超过 k·σ(k 取 5~8),标记为候选坏点;再在亮场图中复核,避免把真实暗纹理误判为坏点。修复优先用邻域中值或方向性插值,而不是简单均值,以免模糊边缘。
对测量任务,坏点表应固化为标定文件,随相机序列号保存。若坏点落在被测边缘附近,仅靠插值可能引入 0.1~0.3 像素偏差,此时应调整视场让关键边缘避开坏点,或改用多点平均测量。
三、滤波去噪:在噪声与边缘之间取舍
精密测量最怕滤波把边缘“抹平”。选择原则:先判断噪声类型,再选滤波器。高斯噪声用高斯滤波或双边滤波;椒盐噪声用中值滤波;周期性条纹用频域陷波。对亚像素边缘测量,推荐 3×3 或 5×5 高斯核,σ 取 0.8~1.2;若边缘对比度低于 20 灰度级,应优先改善照明而非加大滤波。
示例参数:某金属件边缘测量,原始图像噪声 σ≈3.2 灰度级,使用 σ=1.0 的高斯滤波后噪声降至 σ≈1.1,边缘位置漂移小于 0.05 像素;若改用 7×7 均值滤波,噪声虽降至 σ≈0.9,但边缘漂移达 0.4 像素,不可接受。
四、对比度增强与测量前标准化
对比度增强只改变显示或后续阈值分割的输入,不应改变几何边缘位置。常用方法:线性拉伸、CLAHE、Gamma 校正。对测量,推荐先做线性拉伸到 10%~90% 灰度范围,再用固定阈值或亚像素边缘算子提取。CLAHE 适合低对比纹理,但会放大噪声,需配合滤波使用。
测量前标准化的核心是“同物同灰度”:固定曝光、增益、光源电流与温度,固定平场/暗场文件,固定滤波与增强参数,并把所有参数写入配方文件。每次开机后先采集暗场与亮场做快速校验,若均匀性偏差超过阈值则重新标定。
五、可执行的标准化配方示例
下面给出一份可直接填入配方文件的参数表,字段与本节处理链一一对应。示例数值属于教学假设,实际应以现场标定结果为准。
| 项目 | 示例值 | 说明 |
|---|---|---|
| 曝光时间 | 8000 μs | 固定,不随工件变化 |
| 增益 | 0 dB | 优先低增益,减少噪声 |
| 暗场文件 | dark_16f_med.tif | 16 帧中位数 |
| 平场文件 | flat_norm_k.tif | 已归一化 K 图 |
| 坏点表 | defect_map.csv | 坐标 + 类型 |
| 滤波 | Gaussian 3×3, σ=1.0 | 边缘漂移 < 0.05 px |
| 灰度拉伸 | 10%~90% | 线性,不改变边缘 |
| 均匀性阈值 | 2% | 超限则重标定 |
完成上述处理后,图像才具备“同物同灰度、同边缘同位置”的测量前提。后续的相机标定、亚像素边缘提取与尺寸计算,都应基于标准化后的图像进行,并把配方文件与标定文件一起纳入版本管理,确保换班、换机、换光源后仍能复现同一测量结果。