做服装吊牌检测,最让人头疼的不是内容印错了,而是相机根本拍不清楚。覆膜吊牌反光、烫金Logo反光、塑封袋反光,相机一拍,反光区域一片惨白,底下的文字全部消失。质检员只能把吊牌翻来覆去找角度,一条线一天拍几千张吊牌,每一张都要跟反光较劲,效率全耗在这里了。
如何在不增加人工干预的前提下稳定成像,同时单张处理不超过0.3秒,是我们首先要解决的问题。
决策一:偏振镜的直接应用与局限
最初的想法很简单:偏振镜能消除反光,那就加上偏振镜。我们花了不到500块买了两片偏振片,一片装在镜头上,一片装在光源前,互相垂直。一开机,反光确实消失了,但同时也带来了新问题:加了偏振镜后进光量直接损失了60%,画面变暗了。为了补光把光源亮度提高,结果又产生了新的热辐射,吊牌纸张开始卷曲。而且偏振镜对金属质感(烫金字、银卡纸)的消除效果非常差,烫金Logo反光根本压不住。尝试了三天,发现纯靠偏振镜这条路走不通。
决策二:不同角度多光源融合
既然单光源不行,我们换成了多角度光源方案——在检测区四周布置了8个不同角度的LED光源,每次拍照时依次点亮不同方向的光源,拍8张照片。8张照片中,每个角度总有一些区域是反光的、也有一些区域是清晰的。然后通过图像融合算法,把8张照片中清晰的部分拼成一张完整图像。但这个方案的缺陷也很明显:8次拍照需要8倍的曝光时间,单张吊牌的成像时间从0.1秒增加到了0.8秒,产线节拍完全跟不上。而且8个光源的硬件成本也直接翻了好几倍,性价比太低。
决策三:偏振镜+3次曝光融合
最终的方案回到了偏振镜,但没有放弃它,而是在它基础上做了一个优化:3次不同角度的偏振光拍照。具体做法是,在光源前加一个可旋转的偏振片,相机镜头上装一个固定的偏振分析器。每次拍照时,偏振片自动旋转到三个不同角度(0°、45°、90°),各拍一张。这三张照片中,反光出现的区域和强度是不同的。第一张反光在左边,第二张跑到中间,第三张跑到右边。然后用融合算法将三张照片中各自最清晰的部分提取出来拼成一张完整图像。这个方案只用3次曝光,成像时间控制在0.3秒以内,硬件成本只增加了一个可旋转偏振镜模组,比8光源方案便宜得多。关键是,3次曝光的图像融合对于烫金、覆膜、塑封等各种类型吊牌的反光消除效果都很好,覆盖率很高。
决策四:融合算法选哪个
图像融合算法有很多种,我们评估了三种方案:多尺度融合算法、加权平均法和像素级最大值法。多尺度融合的效果最好,但计算量大,在边缘设备上跑不动。加权平均法速度最快,但融合后图像对比度偏低,OCR识别准确率会下降1-2%。像素级最大值法,对每个像素位置取三张照片中亮度值最大的那个。因为反光区域的亮度值最高,取最大值反而不对。所以我们反其道而行之——先检测亮度异常高的区域,然后在这些区域取另外两张照片的对应像素值。这个逻辑简单粗暴,但对吊牌反光来说足够有效。在Jetson上实测,融合一张三通道图像耗时约15ms,完全可以接受。
决策五:反射光还是漫反射光
还有一个关键细节:偏振镜消除的是“镜面反射光”,而不是“漫反射光”。吊牌表面的信息(文字、图案)主要靠漫反射光来成像,而反光是镜面反射造成的。偏振镜的作用是滤掉镜面反射光,保留漫反射光。理解了这一点,就能解释为什么单偏振镜效果不佳——因为光源发出的光本身就是部分偏振光,不同角度光源的偏振方向不同,单一方向偏振片只能消除特定方向的镜面反射,其他方向的镜面反射仍然存在。3次曝光、3个偏振方向,覆盖了大部分镜面反射方向,效果自然就好了。
有什么效果?
这套方案上线后,吊牌成像的稳定性大幅提升,反光导致的信息丢失率从8-12%降到了0.3%,人工干预次数基本归零。需要注意的是也有不少意外情况的发生,比如吊牌材质问题,如果遇到“彩虹膜”材质的吊牌,在不同角度光线下呈现不同颜色,结果三次曝光融合后出现了“混色”现象。后来增加了颜色一致性校验,异常时自动切换到纯漫射光模式,才算彻底覆盖。
聊完成像,下一个问题自然就来了——图像拍清楚了,但速度还是跟不上怎么办?产线一秒要处理几十张图,模型推理怎么优化才能不堵线?下一期我们来聊聊吊牌检测的速度优化,从裁剪、批处理到分布式推理,把每一毫秒都榨干。