ZeroOne AI
← 返回文章列表

滴灌带打孔粘接程度智能评估:基于机器视觉、多特征融合与时序预测的在线检测方案

👁 2
分类:AI视觉

针对滴灌带滴头粘接质量人工抽检的痛点,本文介绍基于工业相机+VisionPro定位+OpenCV多特征融合(Sobel/Laplacian/EdgeSharpness)+Kalman/EMA时序平滑+2秒统计窗口的在线检测方案,输出0~100质量指数并支持趋势预警,可对接PLC/HMI/MES,实现从单张图片判定到全过程粘接质量持续评价的升级。

一、项目背景

在滴灌带生产过程中,滴头经过打孔、定位和热熔/粘接后,需要保证滴头与滴灌带之间具有足够的粘接牢固度。

传统检测主要依靠人工抽检,存在几个问题:

因此,本项目采用工业相机 + VisionPro定位 + OpenCV图像分析 + 多特征融合 + Kalman/EMA时序平滑 + 2秒质量评价,建立一套适合连续生产线的滴灌带滴头粘接程度在线评估系统。


二、检测目标

系统主要评价:

滴头与滴灌带在打孔及粘接区域的结合质量。

重点关注滴头:

       滴头
  ┌─────────────┐
──┤             ├──
  │             │
──┤             ├──
  └─────────────┘
     ↑         ↑
  左粘接     右粘接
   AOI       AOI

粘接牢固时,粘接区域通常具有较明显的边缘结构、纹理和高频细节。

粘接不牢时,前后边缘逐渐出现:

清晰 → 变浅 → 变宽 → 模糊

因此,本项目并不是简单判断某个像素,而是将边缘强度、细节能量和边缘清晰度综合起来形成质量评分。


三、总体算法架构

整个系统可以分为五层:

┌─────────────────────────────────────┐
│          图像采集层                  │
│   工业相机 + 光源 + 触发            │
└─────────────────┬───────────────────┘
                  ↓
┌─────────────────────────────────────┐
│          定位与AOI层                 │
│  VisionPro模板匹配 → 滴头定位 → AOI │
└─────────────────┬───────────────────┘
                  ↓
┌─────────────────────────────────────┐
│          图像特征层                  │
│   CLAHE + Sobel + Laplacian + Edge  │
└─────────────────┬───────────────────┘
                  ↓
┌─────────────────────────────────────┐
│          质量评分层                  │
│  Normalize → 多特征融合 → Raw Score │
└─────────────────┬───────────────────┘
                  ↓
┌─────────────────────────────────────┐
│          时序评价层                  │
│  Kalman → EMA → 2秒统计 → 趋势预测  │
└─────────────────┬───────────────────┘
                  ↓
         Quality Index(0~100)
                  ↓
          OK / Warning / NG

四、第一步:工业相机采集

系统采用工业相机连续采集滴灌带图像。

之前的测试环境采用:

高速生产过程中,首先需要保证图像本身稳定。

如果图像存在严重运动模糊,那么后面的算法再复杂也无法得到稳定结果。

因此:光学系统稳定是算法稳定的基础。


五、第二步:VisionPro模板匹配定位

由于滴灌带连续运动,滴头并不一定每次都处于完全相同的位置。

因此首先使用VisionPro进行模板匹配。

流程:

原始图像
   ↓
VisionPro Pattern Match
   ↓
滴头中心位置
   ↓
滴头ROI

得到:

X
Y
Angle

然后根据滴头位置自动生成检测区域。

这样做的好处是:AOI不是固定在图像坐标上,而是跟随滴头运动。


六、第三步:自动建立左右AOI

本项目重点检测滴头前后两侧的粘接区域。

例如:

        滴头
  ┌─────────┐
──┤         ├──
  └─────────┘
    │       │
  Left    Right
   AOI     AOI

代码可以根据当前滴头ROI自动计算:

AOIWidth = (int)(box.Width * 0.10);
result.LeftAOI =
 new Rect(
 0,
 0,
 AOIWidth,
 box.Height);
result.RightAOI =
 new Rect(
 box.Width - AOIWidth,
 0,
 AOIWidth,
 box.Height);

相比整幅图像分析,只对粘接区域计算,可以明显降低:


七、第四步:CLAHE图像增强

由于塑料材料容易产生反光,同时粘接区域的纹理对比度可能比较低,因此首先进行局部对比度增强。

采用:CLAHE(Contrast Limited Adaptive Histogram Equalization)

基本流程:

原始AOI
   ↓
灰度化
   ↓
CLAHE
   ↓
局部对比度增强
   ↓
特征提取

CLAHE相比普通直方图均衡化更加适合工业视觉,因为它可以限制局部对比度过度增强导致的噪声放大。


八、第五步:Sobel边缘特征

目前实际测试数据表明,Sobel是这套算法中比较重要的特征。

Sobel主要反映:粘接区域边缘变化是否明显。

粘接牢固:
██████████
██████████
████
边缘变化明显。

粘接不牢:
██████████
████████
██████
█████
边缘变化更加缓慢。

因此:

Sobel高 → 边缘清晰 → 粘接质量倾向较好
Sobel低 → 边缘模糊 → 需要重点关注

左右两侧分别计算:

result.SobelLeft =
 Sobel(result.LeftROI);
result.SobelRight =
 Sobel(result.RightROI);

九、第六步:Laplacian高频能量

第二个重要特征是Laplacian。

Laplacian对图像中的高频变化比较敏感。

粘接纹理比较明显时:

边缘 + 纹理 + 细节

会产生较丰富的高频信息。

而粘接区域变得模糊以后,高频细节通常会下降。

因此:

result.FFTLeft =
 HighFrequency(result.LeftROI);
result.FFTRight =
 HighFrequency(result.RightROI);

虽然当前代码变量命名为 FFTLeft,如果实际实现的是Laplacian高频能量,建议后续把变量重新命名为:

LaplacianLeft
LaplacianRight

这样代码语义会更加清晰。


十、EdgeSharpness边缘清晰度

针对本项目最关键的缺陷:粘接不良以后,滴头前后边缘开始模糊。

因此加入EdgeSharpness。

需要注意的是,之前尝试的简单 10% → 90% 边缘扩散算法容易得到 Edge = 0,原因是实际滴头边缘并不是理想的单调阶跃边缘。

因此后续更推荐使用:灰度Profile + 一阶梯度 + 最大梯度

例如:

灰度Profile
220
215
205
180
130
70
30
20

计算相邻像素差:
5
10
25
50
60
40
10

最大值:60

这个值可以反映边缘陡峭程度。

边缘越清晰:Gradient Peak ↑
边缘越模糊:Gradient Peak ↓

十一、多特征融合评分

经过前面的处理,可以得到:Sobel、Laplacian、EdgeSharpness 三个特征。

不能直接把原始值相加,因为它们量纲不同。

例如:

Sobel    = 70
Laplacian = 80
Edge     = 10

因此首先进行Normalize:

public static double Normalize(
 double value,
 double min,
 double max)
{
 if (max <= min)
  return 0;
 if (value <= min)
  return 0;
 if (value >= max)
  return 1;
 return (value - min) /
  (max - min);
}

十二、当前推荐评分模型

根据前面实际采集的OK/NG数据,目前建议采用:

Sobel      60%
Laplacian  25%
EdgeSharpness 15%

例如:

public static double Calculate(AOIResult r)
{
 double avgSobel =
  (r.SobelLeft + r.SobelRight) / 2.0;
 double avgLap =
  (r.FFTLeft + r.FFTRight) / 2.0;
 double avgEdge =
  (r.EdgeLeft + r.EdgeRight) / 2.0;
 double sobel =
  Normalize(avgSobel, 45, 75);
 double lap =
  Normalize(avgLap, 50, 80);
 double edge =
  Normalize(avgEdge, 8, 12);
 double score =
  sobel * 0.60
  + lap * 0.25
  + edge * 0.15;
 return score * 100.0;
}

这里的 4575、5080、8~12 应该理解为当前测试阶段的初始参数,正式量产前最好根据更多生产数据重新计算。


十三、为什么不继续使用Gabor?

前期测试中加入了Gabor纹理特征。

但是实际数据表现出:

OK:247 248 249 246
NG:246 247 250 248

两者高度重叠。

也就是说:Gabor在当前光学条件和AOI定义下,对粘接牢固度的贡献较小。

因此当前方案暂时取消Gabor。这样不仅减少算法复杂度,也可以降低计算时间。


十四、为什么不能直接用单张图片判定?

这是整个方案非常重要的一点。

假设某一个滴头因为反光:Raw Score = 55,但实际上它是合格产品。

如果直接:

Score < 65 → NG

就会产生误报。

反过来,一个粘接不良滴头可能因为局部高光:Raw Score = 72,也可能被误判为OK。

因此:最终质量评价不能只依赖单张图片。


十五、Kalman滤波

每检测一个滴头得到 RawScore,首先进入一维Kalman滤波。

public class KalmanFilter1D
{
 public double X { get; private set; }
 private double P = 1;
 public double Q = 0.10;
 public double R = 0.50;

 public KalmanFilter1D(double init)
 {
  X = init;
 }

 public double Update(double measurement)
 {
  P += Q;
  double K =
   P / (P + R);
  X =
   X + K *
   (measurement - X);
  P =
   (1 - K) * P;
  return X;
 }
}

例如原始数据:

80 81 79 82 58 80 79

经过滤波后:

80.0 80.3 80.0 80.5 76.8 77.5 77.8

可以有效降低单个异常值对系统的影响。


十六、EMA指数平滑

Kalman之后继续使用EMA。

public class EMAFilter
{
 public double Alpha = 0.25;
 private bool initialized;
 private double value;

 public double Update(double input)
 {
  if (!initialized)
  {
   value = input;
   initialized = true;
   return value;
  }
  value =
   Alpha * input +
   (1 - Alpha) * value;
  return value;
 }

 public double Value
 {
  get { return value; }
 }
}

整个过程:

RawScore
   ↓
Kalman
   ↓
EMA
   ↓
StableScore

因此HMI显示的应该是平滑后的质量分数,而不是显示 Slope = -0.38。Slope属于后台趋势分析数据。


十七、2秒质量评价窗口

本项目最终不是每个滴头输出一次结果,而是每2秒输出一次质量指数QI

假设生产速度约350 m/min,根据滴头间距不同,每2秒可以积累几十个滴头数据。

例如:

2秒窗口
72 75 73 78 74 76 ... 80 77 75

系统对这个窗口进行统计:

Mean
Median
Std
Min
Max

例如:

Mean   = 76.8
Median = 77.2
Std    = 2.1
Min    = 72.4
Max    = 81.5

最终得到:Quality Index = 76.8

这样比单个滴头直接判定稳定得多。


十八、连续数据预测

除了当前质量评分,还可以建立历史质量曲线:

时间 →
QI
90 ┤        ●
85 ┤     ●
80 ┤  ●
75 ┤ ●
70 ┤
65 ┤
60 ┤
   └──────────────────────

系统计算历史质量指数的变化趋势。

如果:

80 79 78 77 75 73 71

说明质量正在持续下降。

此时即使当前 QI = 71 还没有进入NG,也可以提前进入 Warning。


十九、卡尔曼和趋势预测的区别

需要特别说明:

所以三者职责不同:

Raw Score
   │
   ├──→ Kalman ──→ 当前真实分数
   │
   └──→ EMA ─────→ 稳定显示分数
   │
   ↓
 历史质量数据
   │
   ↓
 Trend预测

二十、最终质量评价

建议建立三级状态:

QI ≥ 80          OK
65 ≤ QI < 80     Warning
QI < 65          NG

但是正式量产前,这几个阈值不能永久固定。

应该使用大量真实数据重新计算:

OK样本分布 + NG样本分布 → 统计分析 → 最佳阈值

最终可能得到:

OK ≥ 78.5
Warning 68~78.5
NG < 68

实际阈值应该由现场数据决定。


二十一、连续生产预测机制

真正值得本项目进一步开发的是:质量趋势提前预警

例如当前 QI = 76,但是过去30秒:

82 81 80 79 78 77 76

系统判断:质量持续下降

可以输出:

当前质量:76
状态:Warning
趋势:下降

甚至进一步计算:预计质量进入NG,约20秒后。

这样操作员不用等到大量不良滴灌带产生之后才发现问题。


二十二、最终C#处理流程

最终代码逻辑可以整理为:

Task.Run(() =>
{
 try
 {
  // 1. 当前滴头原始评分
  double rawScore =
   globalSoftPar
   .mSearchMarkPar
   .mImageProcess
   .AOIDetectAnalyzer(
    mShowDstImage[0]);
  // 2. Kalman
  if (mkalmanScoreFilter1D == null)
  {
   mkalmanScoreFilter1D =
    new KalmanFilter1D(rawScore);
  }
  double kalmanScore =
   mkalmanScoreFilter1D
   .Update(rawScore);
  // 3. EMA
  double stableScore =
   mEMAFilter
   .Update(kalmanScore);
  // 4. 加入2秒统计窗口
  AddScore(stableScore);
  // 5. 达到2秒
  if (IsTwoSecondWindow())
  {
   QualityResult result =
    CalculateQuality();
   // 6. 更新HMI
   UpdataAOIScore(
    result.QualityIndex);
   // 7. 保存历史
   SaveQualityHistory(result);
   // 8. 清空窗口
   ClearScoreBuffer();
  }
 }
 catch (Exception ex)
 {
  Debug.WriteLine(ex);
 }
});

二十三、最终系统输出

HMI不建议只显示一个 OK / NG,建议显示:

┌──────────────────────────────┐
│      滴头粘接质量检测         │
├──────────────────────────────┤
│                              │
│        质量指数 QI           │
│                              │
│           82.6               │
│                              │
│           OK                 │
│                              │
├──────────────────────────────┤
│ 2秒平均   82.6               │
│ 标准差    2.1                │
│ 当前评分  83.2               │
│                              │
│ 质量趋势 → 稳定              │
│                              │
│ 预测状态  正常               │
└──────────────────────────────┘

MES则可以进一步保存:

时间 / 设备编号 / 滴灌带规格 / 滴头编号 / RawScore / KalmanScore / QI / Std / 状态

形成完整的质量追溯数据。


二十四、方案的核心优势

  1. 精确定位:VisionPro模板匹配自动定位滴头,避免固定ROI带来的位置误差。

  2. 双侧检测:左右粘接区域分别检测,避免单侧缺陷被平均值掩盖。

  3. 多特征融合:采用 Sobel + Laplacian + EdgeSharpness,从不同角度评价粘接区域。

  4. 抗随机干扰:通过 Kalman + EMA 降低光照、反光和单张图像异常造成的波动。

  5. 连续质量评价:通过2秒窗口统计几十个滴头,而不是单张图片直接决定产品质量。

  6. 趋势预测:不仅判断当前是否合格,还可以发现粘接质量正在变差,从而提前调整生产参数。

  7. 数据可追溯:最终可以与 PLC、HMI、MES、数据库连接,形成从视觉检测到生产质量追溯的完整闭环。


二十五、最终方案总结

本项目最终形成的是一套 "定位—增强—特征—评分—滤波—统计—预测—追溯" 的滴灌带滴头粘接质量智能检测体系。

核心流程可以浓缩为:

工业相机
   ↓
VisionPro模板定位
   ↓
自动生成左右粘接AOI
   ↓
CLAHE增强
   ↓
Sobel / Laplacian / EdgeSharpness
   ↓
Normalize
   ↓
Raw Score
   ↓
Kalman滤波
   ↓
EMA平滑
   ↓
2秒统计窗口
   ↓
Quality Index(0~100)
   ↓
历史趋势分析
   ↓
OK / Warning / NG
   ↓
PLC + HMI + MES

相比传统的单张图片阈值判断,该方案最大的提升在于:从"检测一个滴头好不好",升级为"持续评价整条生产过程的粘接质量"。

这也为后续进一步加入温度、压力、生产速度、打孔参数、设备状态提供了接口。最终可以建立"视觉质量指数 ↔ 工艺参数"的关联模型,实现从事后发现不良向提前预测粘接质量风险转变。

评论(0