简介:机器视觉工业缺陷检测的那些事是一份面向工业视觉检测工程师及学习者的知识梳理PDF文档,聚焦工件尺寸测量、表面缺陷检测与Logo标识识别等典型场景。内容系统覆盖视觉系统硬件选型,包括LED、萤光灯、卤素灯等光源特性与背向、前向、同轴、低角度等照明方式的选择要点,也讲解了相机、镜头、图像采集卡的关键参数与匹配思路;图像处理部分则涉及去噪、增强、边缘检测、模板匹配等常用算法及主流算法库,有助于读者建立从硬件搭建到算法落地的完整认知。压缩包内共1个PDF文件,大小1.26MB,便于离线阅读。目前已有1188人学习,适合刚入门机器视觉或需系统性梳理缺陷检测知识的从业人员参考,能帮助缩短设备选型与图像调试的摸索过程。
1. 机器视觉工业缺陷检测:一条划痕怎么从看不见变成看得清
工业缺陷检测的现场常常是这样:同样一条0.2mm宽的金属划痕,在环形光下清晰得刺眼,换到同轴光下就消失不见。这不是算法能力的问题,而是光源、相机、镜头三个硬件环节在成像阶段就已经决定了结果。机器视觉的完整链路——光源、相机、镜头、图像采集卡、图像处理算法、缺陷识别——每一步都在压缩不确定性,选型错误往往无法用后期算法补救。这份梳理正好覆盖了这条链路:硬件怎么选、参数怎么算、图像处理在什么场景下用哪一类算法、Halcon和OpenCV各自的边界在哪。刚接手视觉项目、需要在一周内给出硬件选型方案的工程师,或者想系统补一遍传感器、镜头参数和算法选型逻辑的从业者,都能直接照着用。
2. 光源选型:先定照明方式,再挑灯型、颜色与波长
光源是视觉系统里最便宜、却最容易被低估的硬件。两千块的灯能解决的问题,最后可能要花两万块在相机和算法上补。选型顺序我习惯固定成三步:先定照明方式,再定灯型,最后考虑光源颜色、波长和表面反光处理。反过来做,基本都会翻车。打光这活儿圈里常说是玄学,其实背后就是这几种光路逻辑,把逻辑理清了,剩下的是测试。
2.1 背向、前向、结构与频闪:四种照明方式的选择逻辑
照明方式决定图像的基本面貌。背向照明把被测物放在光源和相机之间,光线绕物体边缘进入镜头,图像呈现为黑白分明的轮廓,对比度非常高,但表面细节几乎全部丢失。这种方式的典型用途是尺寸测量,比如检测工件的长宽高、外轮廓、通孔位置,因为轮廓边缘清晰,测量特征提取最稳定。我一般会提醒项目成员:背光图能测尺寸,但别指望同一张图既测轮廓又看划痕,那是两套照明方案。
前向照明是光源和相机位于被测物同一侧,安装最方便,也是缺陷检测的主力。它照射的是物体表面,光线经表面反射进入镜头,划痕、斑点、孔洞、焊点这类表面特征会被亮度差异显现出来。前向照明的难点在于反光控制,表面越光滑,镜面反射越强,越容易局部过曝。结构光照明是把光栅或线光源投射到被测物上,利用光栅畸变解调出物体三维信息,适合做平整度检测、凹凸测量这类需要高度信息的场景。频闪光照明则用高频率光脉冲照射物体,相机与光源同步采集,常用于高速运动物体的抓拍,避免运动模糊。四种方式的分工很清晰:测尺寸找背光,看表面缺陷找前向,量化凹凸找结构光,高速抓拍找频闪。
提示:选择照明方式时,先回答两个问题——你要检测的是轮廓还是表面?要检测的物体是静止还是运动的?答案直接决定背光还是前向。
2.2 穹形、环形、条形、同轴光:四种灯型的应用场景
照明方式定了之后,再选灯型。穹形光源是半球形漫射结构,光线从各个角度均匀打在物体表面,专门对付球型或曲面物体、金属镜面这些容易产生定向反光的表面。玻璃瓶、滚珠、小工件表面、塑料或铝制容器上的缺陷检测,用穹形光效果最稳,因为漫射把镜面反光打散,表面亮度均匀,缺陷反而更突出。
环形光源是通用性最强的首选,多用于集成电路料带与管脚字符检测、金属工件刻印字符、光滑表面划痕、瓶口尺寸或裂痕检测。环光安装简单、价格亲民,但要注意它对倾斜表面会产生亮度不均,遇到曲面工件需要换穹形。条形光源是从侧面打光的照明方式,常用角度是45度,侧光能避开正面照射的强烈反光,同时对边缘部分实现高亮照明。LCD缺陷检测、包装文字检测、包装膜破损检测、纸张质量检测、常规印刷质量检测、制造物裂纹检测、电子部件形状识别和大小测量、各种线阵检测,都是条形光的典型战场。
同轴光的原理是光路与镜头同轴,光线垂直照射后再垂直反射进入镜头,图像效果为明亮背景上的黑色特征。它特别适合反光厉害的平面物体,能加强有角度差异的表面特征,比如划痕、凹陷、压印,同时减少阴影。金属、玻璃等光洁表面的划痕和瑕疵检测,芯片和硅片的破损检测,金属件上的冲压字符检测,线路板焊点与符号检测,集成电路管脚字符检测,都用同轴光。另外还有入射角度不同带来的效果差异:高角度照射图像整体较亮,适合表面不反光的物体;低角度照射背景黑、特征白,能突出轮廓和表面凹凸变化;多角度照射图像柔和,适合曲面。下表是常用灯型的速查对照。
| 灯型 | 成像特点 | 典型场景 |
|---|---|---|
| 穹形光源 | 漫射均匀,消除定向反光 | 球面/曲面缺陷、金属镜面、玻璃瓶、滚珠 |
| 环形光源 | 环状照明,通用性强 | 管脚字符、金属刻印、光滑划痕、瓶口检测 |
| 条形光源 | 45度侧光,边缘高亮 | LCD缺陷、纸张检测、裂纹、线阵方案 |
| 同轴光 | 亮背景黑特征,减少阴影 | 金属玻璃划痕、芯片破损、焊点字符 |
2.3 光源颜色、波长与漫射:三个容易忽略的细节
灯型选完之后,还有三个细节直接影响成像对比度。第一是光源颜色与背景颜色的关系。使用与被测物同色系的光会使图像变亮,比如红光照射红色物体,物体更亮;使用与被测物相反色系的光会使图像变暗,比如红光照射蓝色物体,物体变暗,蓝光照射黄色物体呈现黑色。这个规律在做彩色物体缺陷检测时非常实用——想突出某个颜色特征就选同色系光,想把背景压暗就用反色系光。第二是波长选择。波长越长穿透能力越强,波长越短扩散能力越强。红外穿透力强,适合检测透光性差的物体,比如棕色口服液里面的杂质检测;紫外对表面细微特征敏感,适合检测对比不够明显的地方,比如食用油瓶上的文字检测。如果工件表面反光严重,则优先选漫射光源,多角度漫射照明能让表面整体亮度均匀,图像背景柔和,检测特征不受背景干扰。
注意:光源颜色不能靠肉眼判断最终效果,必须以相机采集后的灰度直方图为准。现场经常出现肉眼看得很清楚、相机一拍对比度极低的情况,这会直接影响后续阈值分割的稳定性。
3. 相机与镜头:分辨率、帧率、接口的选型计算
相机和镜头决定了图像的空间分辨率和清晰度,是整个视觉系统里参数计算最密集的部分。相机的任务是把光信号变成数字图像,镜头负责把视野映射到芯片靶面上。选型时要看的参数很多,但真正决定方案是否成立的只有几个:分辨率算够不够、帧率跟不跟得上产线节拍、接口和镜头匹不匹配。图像采集卡在这个环节的作用也要先搞清楚——它承担A/D转换、图像传输、采集控制,部分卡还带FPGA或DSP做图像处理。现在千兆网口和USB3.0相机已经把采集功能做进相机本体,独立采集卡只在模拟相机、Camera Link或需要多相机并行触发的场合才是必要的。
3.1 面阵与线阵、CCD与CMOS:按检测任务选相机形态
面阵相机一次采集一整幅二维图像,适合静态或低速场景,视场有限,尺寸测量和一般缺陷检测用面阵最方便。线阵相机则是一行一行地扫描,用行频表示速度,单位为KHz,比如12KHz表示相机1秒钟最多采集12000行图像数据。线阵方案适合大幅面连续运动的物体,比如纸张、薄膜、金属板材的表面检测——产品是长条形且连续运动的,线阵相机加编码器是最常见的做法。
芯片类型的选择相对明确。CCD传感器图像质量高、灵敏度高、对比度高,但存在Blooming现象、不能直接访问每个像素、没有片上处理功能,适合高速动态测量。CMOS传感器把光敏元件、放大器、A/D转换器、存储器、数字信号处理器和计算机接口控制电路集成在一块硅片上,体积小、结构简单、片上处理功能多、低功耗、没有Blooming现象、能直接访问单个像素、动态范围可达120dB、帧率可以更高;缺点是一致性差、光灵敏度差、噪声大。CMOS的随机读取特性还支持矩形感兴趣区域(AOI)读出,针对较小AOI时可以获得更高帧率。现实中CCD用于动态测量,CMOS用于低速或静态测量,但全局曝光CMOS现在已经能胜任动态测量,而且CMOS是趋势。
| 对比项 | CCD | CMOS |
|---|---|---|
| 成像质量 | 高 | 一般 |
| 价格 | 较贵 | 便宜 |
| 功耗 | 较高 | 低 |
| 动态测量 | 适合 | 低速/静态适合,全局曝光亦可 |
| 趋势 | 当前主流 | 正在赶上,未来方向 |
3.2 相机参数逐个理清:分辨率、像元深度、信噪比与动态范围
分辨率是相机最基本的参数,由芯片靶面排列的像元数量决定。面阵相机用水平×垂直两个数字表示,比如1920(H)×1080(V),前面是每行的像元数量,后面是像元行数。行业里常用多少K来表示分辨率,1K即1024,2K即2048。帧频和行频对应采集速度,面阵相机用fps表示每秒最多采集多少帧,线阵相机用KHz表示每秒采集多少行。实际应用中,相机速度需要满足运动物体的成像要求,而帧率首先受芯片设计最高时钟限制。
像元深度定义灰度由暗到亮的灰阶数。8bit相机0代表全暗、255代表全亮,10bit有1024个灰阶,12bit有4096个灰阶。从8bit升到10bit或12bit确实能增强测量精度,但代价是系统速度下降、集成难度提高,线缆增加、尺寸变大,所以要慎重。噪方面,散粒噪声由有效信号带来、符合泊松分布,不可避免,噪声平方等于信号均值;相机固有噪声来自读出电路和信号处理放大电路,每台相机不一样;数字相机A/D转换时还会产生量化噪声,量化位数越高噪声越低。信噪比是有效信号平均灰度值与噪声均方根的比值,代表图像质量。动态范围表明相机探测光信号的范围,可用倍数、dB或Bit表示,动态范围越大,对光照强度的适应能力越强。
3.3 分辨率怎么算:从视野和检测精度反推最低像素
分辨率选型是一个纯计算过程。核心公式是:相机像素精度=单方向视野范围大小/相机单方向分辨率,反过来就是相机单方向分辨率=单方向视野范围大小/理论精度。举个例子,检测物体表面划痕,物体大小为10×8mm,要求检测精度0.01mm,假设拍摄视野范围12×10mm,那么相机最低分辨率应该是(12/0.01)×(10/0.01)=1200×1000,约120万像素。
这里有一个关键的稳定性原则:如果一个像素对应一个缺陷,系统一定极不稳定,因为随便一个干扰像素点都可能被误认为缺陷。为了提高系统的精准度和稳定性,最好让缺陷面积覆盖3到4个像素以上。按这个标准,上面的例子要选130万像素乘以3以上,即最低不能少于300万像素,通常采用300万像素的相机为最佳。我也见过有人抱着亚像素不放,说要做到零点几的亚像素精度,但真有那个需求,靠的是算法和光学放大,而不是盲目降分辨率。实际选型时还要加上光照不稳定余量和温度漂移余量,我一般会在理论值基础上再乘2到3倍。
3.4 镜头选型:视场、焦距、景深与光学接口
镜头选型要同时盯住五个参数:视场、工作距离、景深、焦距、接口。视场是充满相机采集芯片的物体部分,选型时视野要略大于被测物体,给运动控制留余量。工作距离是从镜头前部到受检验物体的距离,要确认现场是否有安装空间、距离是否可调。焦距的计算公式是f=工作距离/视野范围长边×CCD长边,焦距大小直接影响成像效果——焦距越小,景深越大,但畸变越大,渐晕现象越严重,会使像差边缘照度降低。
景深和焦距、光圈、物距三者相关:光圈越小景深越大,拍摄距离越大景深越大,焦距越短景深越大。对景深有要求的项目,尽可能使用小光圈;在选择放大倍率的镜头时,项目许可下尽量选低倍率镜头。光圈用F值表示,如f1.4、f2、f2.8,光圈越大图像亮度越高、景深越小、分辨率越高。光学放大倍率用PMAG=CCD Size/FOV计算。另外几个规律值得记住:同档次的固定焦距镜头比变焦镜头分辨率高,短焦镜头边缘分辨率一般低于中心,长焦镜头中心比边缘分辨率低;光波波长越短,得到的图像分辨率越高,所以精密尺寸及位置测量系统尽量采用短波长的单色光照明。
镜头接口是现场最容易踩坑的地方。常用接口有C口、CS口、F口,C型接口后截距17.526mm,CS型接口后截距12.5mm,F型接口46.5mm。C型镜头与C型摄像机、CS型镜头与CS型摄像机可以配合使用;C型镜头与CS型摄像机之间增加一个5mm的C/CS转接环可以配合使用;CS型镜头与C型摄像机无法配合使用。M42镜头适配器源于高端摄像标准,相机的Z轴均依据适配器优化过,一般情况下不要轻易拆卸镜头适配器。
| 接口类型 | 后截距 | 接口形式 |
|---|---|---|
| C口 | 17.526mm | 螺口 |
| CS口 | 12.5mm | 螺口 |
| F口 | 46.5mm | 卡口 |
4. 图像处理算法与算法库:预处理、分割与缺陷识别的选型逻辑
硬件成像之后进入软件环节。图像处理的完整流程分三步:预处理让缺陷特征更明显,分割把缺陷从背景里分离出来,特征提取加分类器判断是哪种缺陷。很多项目把精力全放在最后一步的分类器上,实际上前面两步没做扎实,后面再好的算法也白搭。预处理对图像数据进行加工,使我们需要的特征更加明显;检测处理根据图像特征对损伤、尺寸进行检测——这是整个软件链路的基本分工。
4.1 预处理:灰度变换、直方图均衡化与滤波的取舍
预处理的目标是突出目标特征、抑制无关信息。灰度变换包括线性灰度变换、分段线性灰度变换和非线性灰度变换,核心逻辑是把感兴趣的灰度区间拉伸,增大缺陷与背景的对比度。直方图增强包括直方图统计和直方图均衡化,均衡化把灰度分布拉开,适合整体偏暗或偏亮的图像。但要注意,光照不均的现场使用直方图均衡化容易放大背景噪声,这是常见的误用场景。
降噪滤波是预处理里最需要分寸感的部分。邻域平均法和加权平均法简单但会模糊边缘;中值滤波对椒盐噪声效果好且能较好保留边缘;均值滤波和高斯滤波适合平滑高斯噪声,但会模糊细节;双边滤波在去噪的同时保留边缘,是表面缺陷检测里比较稳妥的选择。边缘锐化常用梯度锐化、Roberts算子、Laplace算子、Sobel算子。实际项目中,划痕检测最常见的是Sobel或Canny找边缘,配合中值滤波去噪。我一般会提醒:缺陷检测里不要过度降噪,中值滤波加轻高斯足够了,过度平滑会把细小划痕也抹掉。
4.2 分割与特征:阈值、边缘、Blob与LBP
分割是把缺陷从背景中分离出来的关键步骤。阈值分割分三种:固定阈值分割适合背景和缺陷灰度分离明显的情况;OTSU最优阈值分割能自动计算阈值,是最常用的起点;自适应阈值分割适合光照不均、背景灰度渐变的场景,比如纸张、薄膜表面。基于边界的分割用Canny边缘检测、轮廓提取和边界跟踪,适合划痕、裂纹、毛刺这类线状缺陷。Hough变换直线和圆检测多用于定位和几何尺寸测量。区域生长、区域归并与分裂、聚类分割属于区域分割方法;分水岭分割常用于粘连目标的分离。
特征提取决定缺陷怎么描述。几何特征包括位置与方向、周长、面积、长轴与短轴、距离;形状特征用Blob分析计算矩形度、圆形度、不变矩、偏心率、多边形描述、曲线描述;直方图特征包括均值、方差、能量、熵,计算简单,具有平移和旋转不变性,对颜色像素的精确空间分布不敏感,在表面检测、缺陷识别中应用广泛。LBP局部二值模式对光照变化造成的灰度变化有较强鲁棒性,在表面缺陷检测、指纹识别、光学字符识别、人脸识别及车牌识别领域都有应用,而且计算简单,可用于实时检测。选特征的原则是:能用一个特征分清的不要用两个,Blob分析先做,再看缺陷的灰度属性,最后才考虑纹理特征。
4.3 缺陷分类与算法库:Halcon、OpenCV的现实对比
缺陷目标识别算法方面,传统方法包括贝叶斯分类、K最近邻(KNN)、人工神经网络(ANN)、支持向量机(SVM)、K-means等。样本量不大时,SVM在缺陷分类任务上表现稳定;K-means适合无监督聚类打标,先聚类再人工标注,是快速建立缺陷样本集的有效技巧。深度学习方案现在是热门方向,但传统方法在缺陷样本有限、要求可解释性的场景下仍然有不可替代的地位。
算法库选型是项目落地时最现实的问题。Halcon底层功能算法多、运算性能快、功能齐全、容易上手、开发项目周期短,但它是非开源商业软件,价格大概10K到15K一个加密狗。OpenCV功能算法相对少一些,但开源、可用于商用,开发周期较长,有些算法要自己写。我的经验是:项目周期短、预算允许、算法复用场景多的,直接选Halcon;做研究、做原型、想控制授权成本的走OpenCV路线,但要做好自己写算法的心理准备。行业里做视觉集成的公司,比如大恒图像、凌云光、大族激光、康耐视、基恩士,各家的方案也都是在这类库基础上做的二次开发。
| 对比项 | Halcon | OpenCV |
|---|---|---|
| 开源情况 | 非开源,商用收费 | 开源,可商用 |
| 功能算法 | 多且底层 | 相对较少 |
| 开发周期 | 短,易上手 | 较长,部分算法需自写 |
| 适用对象 | 商用项目 | 研究、原型、低成本方案 |
5. 避坑记录:打光、选型和现场调试的五次翻车
这一章是梳理资料时对照现场经历整理出来的踩坑记录。每一条都有人付过学费,现象、原因、解决思路写清楚,能帮你在方案阶段就绕开。
5.1 同轴光下金属划痕时有时无
现象:同轴光下检测同一块铝板,划痕亮度不稳定,有时候清晰可见,有时候几乎消失,导致漏检率波动。
原因:同轴光对表面角度差异敏感,划痕方向、深度和角度的变化会改变反射光路。划痕方向与光路平行时,反射光无法进入镜头,对比度骤降。
解决:改用低角度条形光并做旋转角度测试,或者用同轴光加一组侧光辅助,形成多角度照明组合。打光方案必须在样品上实测确认,不能只看厂商给的效果图。
5.2 高分辨率相机一上产线帧率就掉
现象:标称500万像素30fps的相机,实际采集只有十几帧,产线上产品连续通过时频繁漏检。
原因:分辨率与帧率此消彼长,500万像素全幅读出的时间远高于小分辨率相机;带宽不足也会限制传输,GigE相机接到百兆网卡或USB3.0相机经过Hub,帧率都会掉。
解决:按产线节拍反推最低帧率,再选相机。不需要全幅输出时用CMOS的AOI感兴趣区域读出,帧率能明显提升。同时检查接口带宽,GigE接千兆网卡,USB3.0直连主板,不经过Hub。
5.3 C接口镜头装不上CS接口相机
现象:镜头拧上去之后成像模糊,或者根本拧不到底,现场误以为镜头坏了。
原因:C接口后截距是17.526mm,CS接口是12.5mm,两者相差5mm。C型镜头装在CS型摄像机上,镜片到芯片的距离不对,无法合焦。
解决:C型镜头配CS型摄像机时加一个5mm的C/CS转接环即可;CS型镜头配C型摄像机则无法配合。采购时把镜头接口和后截距写清楚,别只看都是螺口。
5.4 彩色相机做灰度缺陷检测误检率偏高
现象:检测白色塑料表面的黑色脏污,用彩色相机转灰度后误检率比预期高,缺陷边界模糊。
原因:彩色相机使用Bayer插值将颜色信息转为灰度时会引入伪彩色和马赛克噪声,缺陷边界被插值算法模糊;彩色成像为还原颜色本身就需要牺牲一定的空间分辨率。
解决:不涉及颜色判断的缺陷检测,直接用黑白相机加对应波长的单色光,比彩色相机转灰度更稳定。只有需要区分颜色缺陷时,比如Logo印刷色彩错误,才用彩色相机。
5.5 视野边缘发暗导致漏检
现象:画面中心缺陷清晰,靠近视野边缘的缺陷对比度明显下降,边缘区域出现漏检。
原因:光源尺寸小于视野范围,光线在边缘衰减;镜头自身的渐晕和像差进一步加重了边缘亮度不均。
解决:光源尺寸选择要求略大于视野,保障整个视野内光线均匀;镜头靶面尺寸不能小于相机芯片尺寸,2/3英寸镜头无法支撑1英寸以上靶面;必要时做平场校正或多点光源补偿。
6. 选型实战:从需求表到参数表的完整推导
用一个具体场景把前面的选型逻辑串起来。假设要检测手机中框铝合金表面的划痕,工件尺寸约120mm×60mm,要求检出0.05mm以上的划痕,生产节拍2秒一件,工作距离固定200mm,中框表面高反光。
第一步算视野。工件120×60mm,四周留10mm余量,视野定为140×80mm。第二步算分辨率。单方向分辨率等于视野除以理论精度:140/0.05=2800,80/0.05=1600,相乘约450万像素。按缺陷覆盖3到4个像素的稳定性原则,理论值要再乘3倍,所以实际选型不低于1200万像素。如果成本受限,退一步的方案是500万像素配合更高倍率镜头缩小视野,但检测稳定性要重新验证。第三步选相机形态。工件是取放位静态拍照,节拍2秒,选面阵CMOS,全局曝光为佳,黑白相机——金属划痕检测不涉及颜色判断,黑白加单色光更稳。
第四步算镜头焦距。假设选1/1.8英寸黑白CMOS,靶面约7.2mm×5.4mm,焦距f=工作距离/视野长边×CCD长边=200/140×7.2≈10.3mm,取12mm定焦。第五步算曝光时间。像素当量=视野长边/水平像素数,500万相机水平方向约2448像素,当量约0.057mm/pixel。如果抓拍瞬间有0.5m/s的运动速度,不出现拖影的条件是t≤像素当量×1.5/运动速度,即t≤0.057×1.5/500≈0.000171秒,约1/5800秒。这意味着光源亮度必须足够高,才能在这个快门速度下保证图像正常曝光。
第六步定光源方案。铝合金高反光表面,主光源用同轴光增强划痕凹陷特征,再配一组低角度条形光突出轮廓,双光源组合。装夹前用真实样品试拍,看灰度直方图确认缺陷与背景灰度差是否大于30个灰度级、有无过曝区域、边缘有无暗角。这套流程走下来,选型表就齐了:1200万像素黑白CMOS面阵相机、12mm定焦镜头、同轴光加低角度条形光、快门不低于1/5800秒。从那以后,我每次做视觉选型都强制先走一遍这条推导链——视野、分辨率、帧率、焦距、曝光时间、光源,所有参数写进表里再下单,硬件到货第一件事也是按这个表逐项验证。这套流程能帮你在方案阶段就消灭掉一大半的现场问题。希望帮到你。
本文还有配套的精品资源,点击获取