如何检测两幅图像的微小差异?
在机器视觉(如 AOI 自动光学检测、印刷包装检测)中,对比两幅图像的微小差异是核心任务。通常,完整的检测链路包含三个核心阶段:严格对齐 $\rightarrow$ 差异提取 $\rightarrow$ 综合决策。
📌 核心前提:图像必须严格对齐 任何对比算法的前提都是空间位置的统一。通常需要使用 模板匹配(Template Matching) 等几何定位算子,计算出目标物体的仿射变换矩阵(Affine Transformation),将其校正到与标准模板完全一致的像素坐标系下(通常需要达到亚像素级精度)。
一、 差异提取的两大核心方法
根据缺陷特征的不同,我们通常将检测方法分为“像素级(看表面)”和“几何级(看外形)”两大类。
1. 基于灰度值差异(像素级对比)
- 适用场景:检测区域型、表面缺陷。如脏污、划痕、缺料、印刷残缺、崩边等。
- 实现逻辑:
- 绝对差计算:对两张已严格对齐的图像,逐像素计算灰度的绝对差,得到一张差异图(Diff Map)。
- 噪声剔除:由于相机噪声或微小对齐误差,边缘通常会有伪报错。一般需先进行高斯滤波降噪,再通过形态学闭运算(Morphology Close)连接断开的缺陷。
- 阈值分割:设定灰度阈值 $T$,提取差异值超过该阈值的像素连通域(Connected Components),即为潜在缺陷。


2. 基于轮廓间距离(几何对比)
- 适用场景:检测形状偏差、边缘毛刺、尺寸超差、轮廓变形等(关注“对不对齐”,而非“脏不脏”)。
- 实现逻辑:
- 轮廓提取:使用 Canny、Subpixel Edge(亚像素边缘提取)等算子,分别提取模板图像和待测图像的目标轮廓。
- 距离度量:计算参考轮廓与待测轮廓之间的空间几何距离。
- Hausdorff 距离:用于评估两条轮廓的最大绝对偏差。
- 法线搜索/倒角距离(Chamfer Distance):沿参考轮廓的法线方向测量实际轮廓的偏移量,得到一条连续的距离分布曲线。
- 偏差判定:当局部某段轮廓的偏差距离超出了预设的公差范围(Tol),则判定为形状异常。


二、 业务决策:二次评分与差异反馈机制
获取到上述差异(像素块或距离曲线)后,如何将其转化为产线最终的 OK/NG(合格/不合格)结论?这就是差异反馈与评分机制。
实现逻辑
我们不能简单地因为“有一个像素不同”就报废产品。通常会将提取到的差异特征作为“扣分项”,反作用于定位算子的原始得分(如模板匹配的得分):
\[\text{最终得分} = \text{定位基础分} - \sum (\text{权重} \times \text{缺陷特征})\]- 多维度扣分项:
- 面积项:缺陷像素的总面积占目标区域的比例。
- 严重度项:缺陷区域的最大灰度差值值,或轮廓的最大偏差距离。
- 位置项:根据区域重要度分配权重(例如:手机屏幕中心 B 级的权重远高于边缘非外观区)。
- 结果输出:预设满分为 100 分,扣减后得到最终的连续综合质量得分。
为什么需要二次评分?
这种机制的本质是将“二元对错判断”转变为“连续的量化分数”。
- 支持动态调优:产线可以根据不同的质量等级(如 A 级品、B 级品)动态调整放行阈值,而不需要重写算法。
- 数据趋势分析:通过监控得分的缓慢下降趋势,可以提前预警刀具磨损、相机中轴偏移或光源老化,实现智能预测性维护。