吊牌照片总有反光拍不清?试试偏振镜加图像融合
做服装吊牌检测最让人头疼的不是内容印错了而是相机根本拍不清楚。覆膜吊牌反光、烫金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%人工干预次数基本归零。需要注意的是也有不少意外情况的发生比如吊牌材质问题如果遇到“彩虹膜”材质的吊牌在不同角度光线下呈现不同颜色结果三次曝光融合后出现了“混色”现象。后来增加了颜色一致性校验异常时自动切换到纯漫射光模式才算彻底覆盖。聊完成像下一个问题自然就来了——图像拍清楚了但速度还是跟不上怎么办产线一秒要处理几十张图模型推理怎么优化才能不堵线下一期我们来聊聊吊牌检测的速度优化从裁剪、批处理到分布式推理把每一毫秒都榨干。