OpenCV 在连接器缺陷检测中的参数调优
金属端子的反光是视觉检测里最麻烦的干扰源。同一批工件在光源角度变化 5° 后,二值化结果可能完全相反。
从固定阈值到自适应
最初的方案是固定 threshold(120, 255),结果在镀金端子上几乎全白。改用 adaptiveThreshold 后有明显改善,但窗口大小需要跟端子尺寸匹配:
adaptiveThreshold(gray, bin, 255,
ADAPTIVE_THRESH_GAUSSIAN_C,
THRESH_BINARY_INV, 21, 8);
块大小 21 是我们针对 1.2mm 端子间距实测的最优值。太小会把反光斑点当成缺陷,太大则丢失细微裂纹。
形态学处理的取舍
开运算能去掉孤立噪点,但也会吃掉真实的小缺陷。我们的做法是先开运算去噪,再对原图做差值找回被削弱的部分:
open用 3×3 椭圆核,迭代 1 次- 差值图与原二值图取并集
- 面积过滤阈值设为 15 像素,低于此值不判定
误检抑制
最后一道防线是形状校验。真实缺陷的长宽比通常大于 2.5,而反光噪点接近圆形。加上这一条后,误检从每千件 12 次降到 0.8 次。
代价是漏检率上升了 0.1%——在可接受范围内。