如何检测两幅图像的微小差异?

在机器视觉(如 AOI 自动光学检测、印刷包装检测)中,对比两幅图像的微小差异是核心任务。通常,完整的检测链路包含三个核心阶段:严格对齐 $\rightarrow$ 差异提取 $\rightarrow$ 综合决策

📌 核心前提:图像必须严格对齐 任何对比算法的前提都是空间位置的统一。通常需要使用 模板匹配(Template Matching) 等几何定位算子,计算出目标物体的仿射变换矩阵(Affine Transformation),将其校正到与标准模板完全一致的像素坐标系下(通常需要达到亚像素级精度)。


一、 差异提取的两大核心方法

根据缺陷特征的不同,我们通常将检测方法分为“像素级(看表面)”和“几何级(看外形)”两大类。

1. 基于灰度值差异(像素级对比)

基于OpenCV的像素差分示例

基于OpenCV的像素差分示例


2. 基于轮廓间距离(几何对比)

轮廓边缘对比与形变分析

轮廓边缘对比与形变分析


二、 业务决策:二次评分与差异反馈机制

获取到上述差异(像素块或距离曲线)后,如何将其转化为产线最终的 OK/NG(合格/不合格)结论?这就是差异反馈与评分机制

实现逻辑

我们不能简单地因为“有一个像素不同”就报废产品。通常会将提取到的差异特征作为“扣分项”,反作用于定位算子的原始得分(如模板匹配的得分):

\[\text{最终得分} = \text{定位基础分} - \sum (\text{权重} \times \text{缺陷特征})\]

为什么需要二次评分?

这种机制的本质是将“二元对错判断”转变为“连续的量化分数”。

  1. 支持动态调优:产线可以根据不同的质量等级(如 A 级品、B 级品)动态调整放行阈值,而不需要重写算法。
  2. 数据趋势分析:通过监控得分的缓慢下降趋势,可以提前预警刀具磨损、相机中轴偏移或光源老化,实现智能预测性维护。