☰
电机转子表面缺陷检测:机器视觉方案从成像到部署实战
2026/10/20 3:11:36 网站建设 项目流程

车间里那种“最后一关全靠老师傅拿手电照”的日子,我接手过太多。电机转子这种零件,表面又亮又圆,缺陷藏在弧面高光里,人工拿着强光手电翻来翻去也经常漏掉。后来我们把一套基于机器视觉的电机转子缺陷检测方案跑上了产线,不仅把抽检改成了全检,还把每天被投诉的漏检问题基本清零。这篇文章不讲花架子,就讲我们是怎么从缺陷定义、硬件选型、算法搭建,一直做到产线部署和长期稳定的,适合正在做视觉检测项目、或者准备把实验室方案往现场迁移的朋友参考。

1. 看清缺陷:转子表面在视觉系统里长什么样

1.1 别急着写算法,先把缺陷定义清楚

很多项目翻车,不是因为算法不行,而是因为“缺陷”这两个字根本没定义明白。同样一个黑点,在转子铁芯外圆上可能是碰伤,在换向器表面可能只是油污,判定标准完全不同。所以开始设计视觉方案之前,我们跟质检、工艺、设备三拨人关在会议室里,把转子所有可能出现的问题列成了一张清单。

以我们当时做的某型电机转子为例,核心区域包括转子铁芯外圆、端面、换向器表面和平衡孔位。缺陷大概分四类:

  • 表面外伤类:划痕、磕碰、毛刺,这类缺陷的特征是形状不规则,灰度与周围差异大;
  • 脏污异物类:油污、锈斑、金属屑,灰度通常偏低或偏高,但是边界往往不锐利;
  • 加工异常类:车削纹路异常、换向器槽内残留、平衡孔漏钻或位置偏移;
  • 装配缺失类:卡簧漏装、磁钢破损、端部绝缘漆剥落。

这张表定下来之后,后面所有工作才有依据。比如“划痕”我们规定为长度大于等于1.5mm、宽度大于等于0.15mm的线性缺陷;“油污”则根据灰度、面积结合形状来判断。没有这个量化过程,算法在调参时就会陷入“看着像就是”的泥潭。

1.2 人工检测为什么越来越吃力

转子转速高、工作环境恶劣,表面缺陷直接关系到噪音、振动和寿命。早年产线靠人工目检,一个人盯一台设备,一分钟翻看十来个转子,时间一长眼花是肯定的,尤其那些宽度不到0.2mm的细划痕,在移动的工件上几乎要靠运气才能发现。

人工检测另一大问题是不稳定。夜班、倒班、情绪波动都会影响结果。某一次我蹲在产线统计,同一个缺陷样品让三位老师傅看,结论竟然分成两种。这倒不是老师傅不认真,而是人的视觉判定本身就带有主观性。后来上机器视觉,我们追求的不是“比老师傅更聪明”,而是“每次都按同一套标准执行”。标准一旦固化,漏检率自然就下来了。

当然机器视觉不是万能的。转子是圆柱体,表面反光很厉害,拍摄角度稍微一变,同一处缺陷可能呈现完全不同的亮度;有些深色划痕在暗背景下几乎隐形。这些难点我们在硬件和算法上花了很大功夫才解决,后面逐步展开。

2. 硬件链路怎么选:一次检测动作背后的成像设计

2.1 先算像素,再选相机:0.1mm缺陷怎么定量

我习惯拿到缺陷清单后先干一件事:计算需要多大分辨率。这里有个经验公式——最小缺陷在图像上至少占2到3个像素,否则分割阶段很容易被当成噪声滤掉。

假设我们要检测的最小缺陷是0.2mm的划痕,取3个像素,那么单个像素对应的物理尺寸是0.2/3,约0.067mm。再把单次拍摄视野定为100mm宽,所需的横向像素数是100/0.067,大约1500。听着不多,但转子外圆是个圆弧,如果只拍正面,两侧边缘会虚焦,要保证整个被测区域清晰,视野就要放大到120mm甚至更大,这时500万像素级别的面阵相机就成了起步配置。

如果是检测转子外圆整圈,情况又不一样。一个外径80mm的转子,周长约251mm,用面阵相机拍一圈需要好几张图,拼接复杂。更常用的做法是转子旋转一圈,用线扫相机配合编码器连续成像,展开成一张平面图。线扫方向的分辨率按0.05mm/像素算,一圈需要约5000个像素,所以4K或更高分辨率的线扫相机是合理选择。

面阵方案和线扫方案的取舍,我一般这么判断:

  • 面阵相机:适合检测单面局部区域,安装简单,调试快,适合换向器端面或铁芯端面;
  • 线扫相机:适合圆柱外圈连续展开,检测全覆盖,但需要转台或旋转轴,对编码同步要求高;
  • 多相机组合:用于同时检测多个区域,注意各站位之间不要互相遮挡。

2.2 镜头和光源:金属曲面反光怎么压下去

镜头选择相对简单,核心是算焦距和工作距离。一个常用公式是:焦距 = 工作距离 × 传感器靶面宽度 / 视场宽度。比如工作距离200mm,传感器靶面宽8.8mm,视场112mm,算出来焦距约15.7mm,那就选16mm定焦镜头。这里提醒一句,不要为了省空间把工作距离压得太短,后续加光源、遮光罩、保护玻璃都需要空间。

光源才是整个成像设计里最费时间的环节。转子表面是金属,镜面反射非常强烈,普通打光很容易出现一片死白。我们试过几种常见光源,总结如下:

  • 环形光源:适合平面端面,均匀性好,但碰到亮弧面会产生中心高光;
  • 低角度条形光:能让划痕和轻微凹坑形成明显暗场,适合检测外圆表面划痕;
  • 圆顶无影光源:漫射均匀,可以显著减少曲面反光,适合检测油污和较大区域脏污;
  • 同轴光源:垂直照射,适合高反光平面的刻印和换向器片间沟槽。

实际项目里,我们常用两套光源组合:检测外圆划痕用低角度条形光,检测端面和换向器用圆顶光加偏振片。偏振片是我特别想强调的,金属反射光大部分是偏振光,在镜头前加一片偏振片可以滤掉大量镜面反光,缺陷区域反而保留原样,对比度立刻不一样。

2.3 触发与节拍:从感应到图像被抓到只要一条硬连线

实验室里可以慢慢拍,产线上不行。我见过不少项目死在节拍上:算法跑得再快,图像触发不准也是白搭。我们的建议是,从光电传感器到相机触发采用硬连线,不经过PLC中转。PLC扫描周期普遍在10ms级别,中转一次,高速线上可能已经跑过去一个工件了。

举个例子,转子到达检测工位后,光电传感器给出信号,相机在5ms内完成曝光,图像传给工控机处理,整体判定结果在100ms内出来,PLC再从IO口读取OK/NG信号。这里每一步都有时序余量,产线节拍只要低于这个总时间就能稳定跟随。如果工件是旋转状态,最好在旋转轴上装编码器,用编码器脉冲触发线扫相机,保证每行图像对应的圆周间距一致。我们项目里就吃过没有编码器同步的亏,转子转速稍有波动,展开图就忽胖忽瘦,后续算法完全没法统一处理。

3. 算法流水线:把“看不清”变成“判得准”

3.1 第一步不是分割,是让图像“平”

拿到一张转子图像,第一反应往往是直接做阈值分割,但很快会发现阈值根本选不出一致的背景。金属曲面在光照下灰度分布极不均匀,同一块无缺陷区域,中心和边缘灰度可能差了几十甚至上百。这时候必须先做光照不均校正。

常见的做法是形态学背景估计:用一个大尺寸的形态学开运算或者均值滤波去估计背景灰度,然后把原图减去这个背景,得到“平坦化”后的图像。用生活化类比,这就像是把一块坑洼地面的“地势起伏”先抹平,剩下那些真正突出的坑洞和裂缝反而更好分辨。

我们当时的参数大约是:背景估计核尺寸50像素,平坦化后整体灰度均值拉回到128附近,再配合局部自适应阈值。注意核尺寸要比最大缺陷大,否则缺陷会被当成背景一起抹掉。

3.2 缺陷分割与Blob分析:从像素点变成候选缺陷

平坦化之后的图像,下一步是把缺陷区域分离出来。全局阈值在光照不均场景下不好用,我们一般用局部自适应阈值,参考窗口大小设为31×31像素,偏移量根据现场调试定。这一步会产生很多离散小点,用中值滤波或形态学开运算先去掉单点噪声。

接下来是连通域分析。我们需要提取每个候选区域的几何特征,包括面积、周长、外接矩形长宽比、延伸率、圆形度、主轴方向、灰度均值等。这一步相当于把图像问题变成了表格问题:每个候选缺陷一行记录,后面所有判断都基于这些数字。

这里有个经验值:如果最小缺陷对应的像素面积是24像素,那么面积阈值设为10像素比较合适。设低了会把噪声误判成缺陷,设高了又会漏掉细划痕。还有长宽比,划痕通常是细长的,长宽比经常大于5,而油污则更接近圆形,长宽比一般小于2。就凭这一项,就能过滤掉大量油污误报。

3.3 判定规则和分类器怎么搭

规则优先,模型兜底,是我一直坚持的路线。第一版系统我们只用几条显式规则:面积大于阈值、长宽比大于阈值、灰度差大于阈值,同时满足才判NG。这种规则的好处是每一条都能回到现场解释,出了问题也方便排查。

但如果缺陷种类多,比如同时要识别划痕、毛刺、锈斑、平衡孔漏打,规则就会互相打架。这时可以把提取出的特征放进一个浅层分类器,比如随机森林或者支持向量机,样本几百个就够训练了。我们不建议一上来就上深度学习,因为缺陷样本太少,标注成本高,而且产线上的稳定性反而不容易把控。深度学习更适合后期积累了大量真实缺陷图之后再引入。

一个典型的判定流程伪代码如下:

def detect_surface_defect(image): roi = crop_region(image, rotor_area) flat = flat_field_correction(roi, kernel_size=50) binary = local_adaptive_threshold(flat, block=31, offset=12) blobs = connected_components(binary) for blob in blobs: area = blob.area length_width_ratio = blob.major_axis / blob.minor_axis gray_diff = blob.mean_gray - background_gray if area > min_area and length_width_ratio > 3 and gray_diff > min_diff: mark_ng(blob) return ok_or_ng

这套流程跑下来,单张图的处理时间大概在50ms左右,完全满足产线节拍。

4. 现场误报日记:三条让我改代码的真实线索

4.1 油污和划痕的灰度都会变暗,但形状不会骗人

项目上线第二天,后道反馈“误杀特别多”,我们查了NG图片,发现大部分是油污。油污在图像上也是暗色区域,面积不小,灰度差也够,按照当时的面积阈值,全部被当成划痕判掉了。

后来我把两类样本的连通域特征拉出来对比,发现划痕的长宽比普遍在5以上,而油污多是圆形或块状,长宽比不超过2。于是我在判定条件里加入长宽比约束,并把面积阈值从20像素上调到30像素,误报率立刻降了一个数量级。这件事让我养成了一个习惯:拿到误报图像,先统计特征分布,不要急着调阈值。

4.2 平衡孔位置判断:先找圆心,再量孔距

有一阵子系统频繁报警“平衡孔漏钻”,可操作工确认孔在,只是位置偏了一点。问题出在定位基准上。转子在检测工位上的周向角度每次都有微小差异,我最初直接用整帧图像的左上角作为坐标原点,孔位置一偏移就触发阈值。

正确做法是先用外圆拟合出转子中心,建立相对坐标系,再在这个坐标系里测量各平衡孔的相对位置和孔径。后来我还加了一个模板匹配步骤,先在图像里找到转子端面的定位标记,再套用标准孔位模板。这样转子本身的旋转和微小平移都不会影响判断。

4.3 光源衰减:系统没有漏检,只是“瞎了”

这个坑最隐蔽。运行三个月后,系统漏检率悄悄上升,但打开实时画面看,图像看起来也还行。后来我们对比了初始图像和当前图像的灰度直方图,发现整体灰度均值下降了30多。LED光源在持续工作状态下会慢慢衰减,加上车间里的油雾附着在光源表面,打出去的亮度越来越弱,缺陷对比度也跟着下降。

从那以后,我们在系统里加了两道保险:一是光源控制器选用带电流反馈的型号,亮度低于阈值自动报警;二是每天开机后用标准校色块拍一张图,统计灰度均值,如果偏离基准超过15%就提示维护。这个方法成本不高,但能避免很多“慢性漏检”。

5. 从实验室到产线:稳定运行的最后一公里

5.1 装在哪、怎么防:振动、油雾、强光的现场教训

实验室里装好的视觉系统,搬到现场往往要重新调一遍。最典型的是振动。冲压、压装设备就在旁边,振动传到相机支架上,图像模糊半格,细小划痕就没了。我们重新设计了一个落地式支架,和机床本体完全分离,并在相机安装板上加了橡胶减震垫。

另一个常被忽略的是油雾。电机产线切削液和润滑油挥发出来的油雾会附着在镜头和保护玻璃上。我们给镜头前端加了保护玻璃,并设计了压缩空气吹扫装置,每检测间隔吹气一次。保护玻璃要作为耗材定期更换,否则光路发雾,怎么看都是糊的。

还要注意环境光干扰。车间顶灯和焊接弧光会让图像忽明忽暗。我处理的方法是加遮光罩,同时检查光源频率。车间灯大多是工频驱动,会在图像里产生明暗条纹,所以相机曝光时间尽量避开交流电频率的整倍数,或者用短曝光把影响降到最小。

5.2 结果怎么发出去:剔除位置补偿和MES对接

算法给出NG信号只是第一步,产线还需要把坏件从流线上剔出去。这里有个容易算错的公式:从相机拍照位置到剔除气缸之间,转子还在随传送带运动,所以不能拍完立刻剔除,必须做位置补偿。

假设传送带速度是0.5m/s,相机到剔除气缸的距离是1.2m,那么从拍照到执行剔除的延迟时间是2.4秒。程序中要用编码器脉冲实时计算这个延迟,或者直接把延迟距离换算成脉冲数。漏了这一步,剔除机构打的总是下一个工件,现场会以为系统“乱杀”。

结果数据还要反向追溯,不然每次客诉都要翻录像。我们当时的做法是把每张检测图像、特征数据、判定结果按转子的序列号一起保存,同时通过通信模块把检测结果发送给现场的制造执行系统。通信协议尽量选择产线常用的工业协议,而不是用简单的TCP/IP裸传,否则后期对接每个设备都要改代码。数据格式用JSON最灵活,字段名提前和对方IT约定好,省得来回扯皮。

5.3 长期维护清单:阈值、样本、灰度标准的更新节奏

上线不是结束,而是另一个开始。我一般会在验收后跟客户定一份简单的维护清单:

  • 每天:检查保护玻璃有无油污,执行灰度校准;
  • 每周:抽查100个通过件,统计误报率和漏报率;
  • 每月:用标准缺陷样件验证系统检出能力,更新基准图像;
  • 每季度:回顾所有NG图像,补充新的缺陷类型到样本库,重新训练分类器。

现场的光线、材料批次、前道工艺会慢慢变化,没有这套节奏,再好的系统也会在半年后变成摆设。我见过一些项目,验收时准确率99%,三个月后客户打电话说系统疯了,其实就是没人管图像质量。

回想起来,做转子缺陷检测最难的从来不是单个算法,而是把“检测”这件事闭环成一整套能跟着产线呼吸的系统。它需要你蹲在现场看缺陷、算节拍、调光源,也要你耐得住性子去处理那些看似弱智的误报。如果你正准备做类似项目,我的建议是先别急着上高深模型,把成像做扎实,用规则把标准固化下来,留好后期升级的接口。这条路走起来稳,踩过的坑也都能平。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询