ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

金属罐曲面包装文字反光检测:成像打光与算法实践

金属罐曲面包装文字反光检测:成像打光与算法实践 做金属罐外观检测的朋友十有八九都被同一个问题卡过罐子明明是干干净净的金属面印上去的文字却因为反光变得“缺胳膊少腿”相机拍出来要么白花花一片要么亮一条黑一条别说检测了人眼盯屏幕都费劲。这个“金属罐曲面包装文字反光怎么检测”的问题我在项目里踩了好几次坑也总结了一套从成像到算法的完整思路。这篇就把我的实际做法、选型依据和现场排查经验一起写出来供参考。1. 先想清楚金属罐曲面文字检测到底在检什么1.1 印刷文字缺陷的主要类型金属罐外形看起来简单但“文字检测”这四个字背后包含了完全不同的缺陷类型。常见的有字符缺笔断划、油墨漏印导致整行文字缺失、印刷糊版粘连、拖墨拉丝、字符区域脏点、内容错误喷码批号打错、位置偏移超出公差等等。这些缺陷在不同工艺下表现差异很大。UV喷码的文字是墨水喷射后固化容易出现断墨、溅墨、字符边缘毛刺柔印和丝印文字则是整版印刷容易出油墨不均、网点缺失、前后色套印偏差激光打标文字不存在油墨问题但会有打标深浅不一、线条断续。检测方案如果没有先定义清楚“要抓哪些缺陷”后面很容易陷入“能拍清楚但不知道该怎么判”的窘境。所以在项目启动时我通常会要求客户先提供一个缺陷优先级清单哪些是必须检出的致命缺陷哪些是允许一定容忍度的外观问题哪些只是毛边但不影响使用。这个清单会直接影响后续的光源选择和算法复杂程度。1.2 为什么金属罐曲面会让反光问题被放大很多人觉得金属反光只要加个漫射光源就行但罐体是曲面问题就变了性质。平面金属表面反射方向单一光源位置找对了基本就能让相机避开镜面反射。可圆柱形罐体的表面法线是连续变化的一束光打上去反射光在不同位置指向完全不同的方向几乎必然有某个区域刚好把强光反射进镜头。再叠加罐身印刷区域往往还有圆弧过渡、罐肩压痕、卷封凸起这些局部曲率突变位置更容易形成高光斑。更要命的是高光斑一旦落在字符笔画上图像的灰度关系会被彻底打乱。原本油墨区域应该是暗色的但在强反光作用下那里可能变成一片白色字符就像被“吃掉”了一样。反过来如果使用硬光从侧向照明字符一侧锐利、另一侧却被阴影吞没也严重影响检测。还有一个隐蔽问题曲面印刷时设计稿是按展开平面做的印到圆柱面上后从相机正视角度看到的文字会有明显的透视压缩和桶形畸变。也就是说就算没有反光左右边缘的字符也会比中间窄。如果检测算法不做校正单靠模板匹配会非常吃力。1.3 检测需求要在一开始就锁死在选任何硬件之前我会先把需求清单拉出来。包括最小检测字符尺寸一般要求最小笔画宽度在图像上不少于5个像素产线节拍是每分钟300罐还是600罐这决定相机帧率和光源频闪方式误报率和漏检率要求食品饮料罐往往要求误报尽量低因为误剔会直接造成产线损耗安装空间和观察角度是罐体竖直还是躺倒相机从侧面拍还是从顶部斜拍罐体到位时的定位精度是有定位工装还是仅仅靠传送带上的限位挡块。这一项一项确认完心里基本就有数了。我的原则是先别急着买相机先拿客户的实物样罐和光源做一轮快速成像验证。很多时候现场真正的问题不只是“反光”而是“在现有产线空间和节拍下成像系统能不能稳定看清文字”。这一步做扎实后面算法才会省心。2. 成像方案选型与打光设计反光的“治本”手段2.1 明场、暗场与穹顶光怎么选解决反光80%的功夫都在打光上。基础概念先理清楚明场照明光源从正面打镜面反射光能进入相机金属背景在图像里偏亮吸光的油墨字符则偏暗形成暗字亮底暗场照明则相反光源以很低的角度照射表面正常情况下镜面光反射到相机外面背景偏暗而凸起的字符、压痕、表面异物会把光散射进镜头形成亮字暗底。对平面金属件这两种方式都容易调。但在曲面上明场会带来一道亮带暗场则可能让大部分字符区域都陷在阴影里。所以我的常用思路是优先试穹顶光源也就是球积分光源。穹顶光源内壁是漫反射面光线经过多次反射后变成接近无方向性的均匀光打到曲面罐体上镜面反射的能量被大幅摊开不再形成尖锐光斑字符和背景的对比主要依靠油墨本身的吸收特性。穹顶光源的缺点也很明显光效低、体积大在狭窄产线不好安装而且对高光泽亮油墨漫射光依然会在局部产生弱反光。所以它不是万能解但作为打光实验的“起手式”非常合适。2.2 低角度环形光在曲面罐上的正确用法如果罐体是圆柱罐低角度环形光也可以调出不错的效果关键在于控制反射带的位置。把环形光源装在相机周围让光线近水平地打在罐体表面此时罐身会形成一道沿轴线的反射亮带。亮带的位置取决于光源中心高度、罐体半径和罐体表面法线方向通过上下调节光源高度可以让亮带落在字符区域之外比如落在字符上方或下方的空白区这样字符本身主要由散射光照明不会出现刺眼高光。这个方案的现场调试比较磨人因为罐子一旦换规格直径变了亮带位置就会变通常需要重新调光源高度。实际项目中我遇到过一个需要检测罐身两行喷码的场景环形光高度怎么调都有一行字符被亮带扫到。后来换成了两个半弧形光源分别从上下两个角度补光把中间字符区域“让”出来问题才解决。补充一点如果罐体在检测工位是旋转的低角度环形光还要配合编码器触发和频闪照明否则表面产生运动模糊再好的光也没有意义。这个我在后面现场问题里会展开说。2.3 偏振成像对付金属反光最直接的工具偏振是金属罐反光检测里非常实用的一招但很多人用不好。原理其实不复杂在光源前加一块偏振片让照明光变成偏振方向一致的偏振光在相机镜头前也加一块偏振片作为检偏器。当两块偏振片方向平行时镜面反射光能顺利进入相机图像还是有很多高光当把检偏器转到与起偏器正交时金属表面的镜面反射光会被大幅压制因为镜面反射基本保持了光源的偏振方向而油墨层和表面微结构引起的漫反射光偏振方向被打乱仍能部分进入相机。实际操作时往往不是追求完全正交最暗因为完全正交也可能把字符信号压得太低。我一般是把检偏器装在镜头上一边实时看图像一边缓慢旋转到“高光明显变暗、字符仍然清晰”的位置锁定后再微调光源亮度。偏振方案要注意三个细节一是偏振片对波长敏感不同颜色光源效果不一样二是金属表面的多次反射可能改变偏振态深冲罐和光板罐效果差异很大必须实测三是加偏振片后光亮度通常要打七折甚至更狠所以光源功率要留余量或者把相机曝光增益适当放开。2.4 相机、镜头和触发方式的关键参数成像系统里相机分辨率不是越高越好而是看最小字符笔画覆盖几个像素。举个例子罐身文字区域宽度约150mm最小笔画宽度0.5mm想要每笔至少占5个像素那么一个方向上至少需要150/0.5*5 1500个像素再加上边缘余量和定位波动选200万像素相机约1600×1200是比较安全的起步。如果字符只有二维码大小那就得按码元尺寸重新算。镜头方面我很少在罐体检测上用远心镜头因为罐径大、景深浅远心镜头视野和景深往往不够价格还高。普通低畸变FA镜头光圈收到f/8到f/16配合足够的照明基本能保证罐身中央和边缘同时清晰。如果罐体表面有强烈弧面光圈太小又会引入衍射模糊所以要找一个中间值。触发方式直接影响检测稳定性。罐体在产线上不是绝对静止的最可靠的做法是光电传感器检测到罐子到位后延时触发相机同时用编码器信号锁定罐体水平位置。如果罐子还需要旋转拍照编码器就用来触发频闪光源保证每次触发时罐身角度一致。自由运行模式下靠时间等待的方式我只在速度很低的实验台上用过正式项目不建议。3. 图像处理与文字缺陷检测实现细节3.1 先把ROI稳住定位与曲面校正就算相机安装得再稳罐体到位时也会有几毫米的位置波动加上直径公差图像中的字符不会固定在同一像素位置。如果直接在全图上做模板匹配光源稍有不均就会误报。我的常规流程是先做粗定位用找圆或边缘拟合提取罐体轮廓确定罐身轴线位置和左右边界再根据罐径先验值在图像上建立一个或多个矩形ROI把喷码区域、印刷文字区域框出来最后在ROI内部做精确定位可以用字符行首的固定标记、罐体上的色块边界或者对已知区域做模板匹配获取亚像素偏移。如果需要对比的是展开后的平面文字我还会做一个柱面展开映射。设罐体半径为R图像中某位置对应弧长为s则对应角度θ s / R展开图在水平方向用θ取代s。这样能减轻因曲面透视造成的左右字符宽度不一致。不过罐体表面不是完美圆柱展开系数需要现场标定标定了之后也只适用于同一规格罐型。3.2 预处理算法顶帽、CLAHE与偏振合成光源调得再好图像上仍会有渐变阴影和局部残余高光。预处理阶段几个算子非常实用。灰度化后先做噪声过滤用高斯滤波或中值滤波窗口3×3到5×5即可过大的窗口会把细笔画糊掉。接着我习惯做顶帽变换也就是先对原图做形态学开运算用一个大尺寸结构元比如30×30估计背景亮度再拿原图减去背景这样能把金属曲面固有的低频明暗渐变去掉只保留字符这类高频细节。如果字符本身偏暗、背景偏亮顶帽有效如果检测的是激光打标亮字、背景偏暗就改用黑帽变换。局部对比度不均的问题我会用CLAHE也就是限制对比度自适应直方图均衡把画面分成小块分别做直方图拉伸再用插值融合。这个方法对罐身中间亮、两边暗的情况有奇效但要注意限制参数别设太大否则噪声会被放大成伪纹理。如果成像系统支持多光源采集还可以把明场图和暗场图或偏振图做合成。比如用偏振图保留字符信息用非偏振图生成高光区域掩膜把高光mask与最终差分图做“与”运算排除能明显抑制以反光为伪因的误检。这个思路比单纯调参要根治得多。3.3 缺陷判定模板匹配、OCR与深度学习的搭配文字缺陷判定没有一个算法能打天下我通常按字符类型分三种处理。第一种是位置相对固定、内容不变的固定文字比如罐身上的品牌名、净含量、配料表标题。这类用灰度或边缘模板匹配就很好。匹配算法推荐带归一化的NCC匹配光照变化对结果影响会小一些如果字符在曲面上有弹性变形可以拆成单个字符模板对每个字符分别匹配这样即使整体有畸变单字符的匹配度仍然高。第二种是可变的日期、批号、追溯码。这种内容每次印刷都可能不同模板匹配不适用直接用OCR识别更合理。工业场景下可以选择PaddleOCR、Tesseract或者商用机器视觉软件自带的OCR工具。要注意的是金属罐曲面上的印刷体字符会出现边缘高光、笔画粘连OCR前最好先做一次二值化和字符分割并把字典限制为数字和固定字母集合能大幅提升识别率。识别后再与配方中的“期望字符串”比对错字、漏字、多字都能报出来。第三种是表面污渍、拉伤、蹭花之类的不规则缺陷。这些没有固定形态最适合用分割模型或形态学差分来做。正常罐子的图像经过模板对齐后与标准模板相减得到差分图再通过连通域筛选提取面积、长宽比、灰度差等特征。这一条做得好能把很多“文字本身没问题但背景有缺陷”的异常抓出来。3.4 防误报高光掩膜与多重判据成像处理最头疼的问题是误报。金属罐反光区域在图像中表现为高亮白色块和“漏印白底”看起来非常像。如果不做任何处理一套简单的差分算法会把每个高光点都当成缺陷误报率高到无法上线。我常用的防误报手段有三个。第一是建立高光掩膜在正常罐上把超过某个灰度阈值的像素标记为“高光禁止区”缺陷判定时跳过这些区域前提是高光位置在每罐图像中保持稳定否则掩膜也对应不上。第二是多重判据联合判定不单看差分面积还要看差分区域的灰度均值与原模板差异、区域是否覆盖字符骨架、边缘轮廓是否异常等只有多个条件同时满足才报警。第三是时间维度复核在节拍允许时对可疑罐做隔几个工位的二次拍照两次结果一致才踢罐这个招对偶发反光干扰特别有效。这里还要提醒一句深度学习不是万能药。在缺陷样本极难收集的生产现场数据量不够时训练出的模型很容易把反光当缺陷。我的做法是先用传统算子搭一套稳定基线再考虑用模型去解决传统方法漏检的那一小部分困难样本模型跑在“高光掩膜之后”而不是最前面。4. 现场部署常见问题与排查技巧4.1 光源调好后仍有反光多半不是硬件本身的问题有一次现场穹顶光源、偏振都上了图像依然在罐体肩部有一条亮线。排查了半天才发现是罐体在检测工位上的前后位置偏离了标定位置罐肩的最高点刚好移动到了光源反射最强的角度。位置一偏高光就跑到了文字区域。所以遇到“还有反光”的情况我的排查顺序是先看罐体定位是否稳定比如罐子是否被限位装置固定有没有随传送带抖动再看偏振角度是否被震动改偏偏振片支架一定要锁死然后看光源内壁是否积灰、发黄穹顶光源用久了内壁反射率会下降均匀性变差最后才考虑光源本身位置是否合理。一味加光源强度通常只会让反光更严重。4.2 旋转罐体拍照模糊曝光时间与频闪是关键罐体旋转过程中拍照最容易出现运动模糊。假设罐身线速度是1米/秒曝光时间如果是1毫秒图像上的运动位移就是1毫米相当于好几个字符笔画宽度画面早就糊了。要保证运动模糊小于0.5个像素必须算一下最大允许曝光时间。比如相机分辨率下每个像素对应0.1mm那么线速度1米/秒时允许曝光时间约为0.5×0.1/1000秒也就是50微秒。这么短的曝光时间普通常亮光源根本不够必须用激光光源或者大功率频闪LED在触发瞬间发出极短脉冲把运动“冻结”住。同时要保证相机和光源的触发信号严格同步用编码器或者高速PLC的输出延时控制都行。4.3 误报率高到没法用从死抓参数转向分析样本误报高是算法调优里最磨人的环节。我的建议是别急着调阈值先花半天时间把误报图像全部保存下来分类统计。最常见的误报原因是罐体旋转角度偏差导致字符位置差几个像素差分时字符边缘被算成缺陷。这种情况要先解决机械定位或者模板匹配精度。其次是因为字符印刷本身就有正常公差比如油墨薄厚、边缘发毛不同批次罐子的模板图像差异很大。应对办法是采集多个批次、多个罐子的正常图像作为模板库取平均值或做最大允许偏差映射。还有一种情况是OCR识别把糊字报成错字但实际印刷内容本身是对的这种需要调OCR阈值而不是调检测灵敏度。4.4 环境光变化导致灰度漂移固定相机参数并物理遮光产线的环境光是最容易被忽视的干扰源。工厂的顶灯、窗户透进来的自然光经过金属罐反射后会在图像上形成缓缓移动的光斑。很多人发现上午运行正常的检测系统到了下午误报率突然升高很可能就是这个原因。对策有两层。物理层在检测工位加遮光罩把相机、光源和罐体罩在一个相对封闭的空间里同时尽量选择红光或蓝光等窄带滤光片配合对应颜色的光源让环境光的光谱成分进不了相机。算法层把相机的自动曝光、自动增益、自动白平衡全部关掉固定为标定值并在软件里做灰度归一化用图像中的空白金属区域参考值校准整幅图亮度。只要物理和算法都做到位灰度漂移基本可以压到很小。4.5 从项目复盘里留下的几个小技巧最后分享几个我用真金白银换来的小技巧。第一打光实验阶段一定要把光源支架的调节自由度留足上下、左右、角度都要能调最好连光源的安装孔位都做成腰形槽现场调试时能省一半时间。第二给每个罐型建立独立的检测配方包括光源亮度、曝光时间、ROI位置、模板、判定阈值换产时一键切换不要把所有规格塞到一个参数组里。第三在软件里做详细的报警图像存储普通检测只输出NG/OK不够要能把触发前几帧和缺陷截图一起存档后续复盘才有依据。金属罐曲面包装文字的反光检测说到底是一次成像系统、光学原理和现场工程配合的综合问题。先解决“怎么能拍清晰”再谈“怎么判断缺陷”先把传统光学和图像处理方法走通再考虑用模型提升复杂场景。只要这条主线不偏现场出现的多数反光问题都能找到对应的解法。
返回列表