ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

农产品质检视觉方案实战:从工业相机选型到算法部署关键经验

农产品质检视觉方案实战:从工业相机选型到算法部署关键经验 做农产品质检的视觉方案我踩过的坑比想象中多。前阵子给一条果蔬分选产线配视觉检测系统核心相机用的是中达瑞和MAX-G800从选型、打光、标定到算法部署整个流程走下来有一些经验值得记下来。这篇就围绕这套方案把相机选型背后的逻辑、硬件参数怎么定、标定和算法怎么落地、以及产线上最容易出问题的几个环节一次讲清楚。适合正在做工业视觉或者准备给农产品产线上视觉检测的朋友参考。1. 农产品品质检测的整体方案与相机选型逻辑1.1 为什么农产品质检必须上工业相机农产品分选这件事过去靠人工现在越来越多的产线在换视觉检测。原因很直接人工分选的主观性太强同样一筐苹果上午和下午的标准可能都不一样而且连续盯几个小时漏检率会明显上升。视觉检测的好处是标准统一、速度稳定、数据可追溯还能把大小、颜色、瑕疵这些指标量化下来跟后续的分级定价打通。但农产品检测和电子元器件检测完全不是一回事。苹果表面有果斑、土豆带泥、大米里混着异色粒这些目标形状不规则、颜色差异大、表面状态千变万化对相机和光源的要求非常高。普通监控摄像头或者手机摄像头根本干不了这活原因后面细说。工业相机在这里的核心价值是图像质量稳定可靠能保证同一个缺陷在不同光照、不同速度下都被稳定拍到这才有后续算法分析的基础。一个完整的农产品视觉检测系统通常由四部分组成工业相机负责采集图像、工业镜头负责成像、光源负责营造稳定的光照环境、算法负责从图像里提取特征并做出判断。MAX-G800在这里扮演的是整个系统的眼睛其他部分都是围绕它来配套的。很多项目失败不是算法不行而是前面这三样没搭配好拍出来的图压根没法用。1.2 MAX-G800相机的选型依据与实际配置当时选MAX-G800不是拍脑袋定的是拿几款相机在产线上实测之后做的决定。先看场景需求苹果分选线果径大约60到100毫米输送带速度大约每秒0.5米需要检测果面的碰压伤、腐烂斑、颜色成熟度。这些特征里碰压伤和腐烂斑属于低对比度缺陷颜色差异小、边缘模糊对相机的分辨率和动态范围要求很苛刻。MAX-G800属于高分辨率CMOS工业相机采用GigE Vision接口这在实际部署里非常省事。GigE接口用普通网线就能传输线缆长度可以做到几十米不需要额外配图像采集卡直接连交换机就能跟工控机通信。相比之下Camera Link接口虽然带宽高但必须配专用采集卡线缆又粗又贵在农产品产线这种环境里并不划算。实际用下来的参数配置大概是这样的项目配置传感器类型CMOS 全局快门分辨率约1200万像素接口GigE Vision触发方式硬件外触发镜头接口C接口工作模式连续采集 外触发采集这里重点说两个参数为什么重要。第一个是全局快门农产品的输送带是一直在动的如果用卷帘快门的相机目标一运动拍出来的图像就会产生果冻效应物体边缘是斜的后续做边缘检测和尺寸测量必出问题。全局快门是所有像素同时曝光运动目标也能拍出清晰的冻结效果。第二个是硬件外触发产线上需要跟光电传感器联动——苹果到了拍摄位置光电开关给一个信号相机才拍一张这样既能保证抓拍位置一致又能避免无效图像占用存储和带宽。分辨率方面1200万像素在这个场景里属于够用且有余量。具体怎么算的下一节详细说。这里先给个结论农产品的缺陷检测分辨率太低拍不清小瑕疵太高则数据量太大处理速度跟不上产线节拍1200万像素是一个比较均衡的选择。注意选相机不能只盯着分辨率。传感器的靶面尺寸、像素尺寸、动态范围、信噪比这些参数往往比分辨率更影响实际效果。低照度环境下像素尺寸大的传感器噪点更少图像更干净。2. 核心参数拆解从成像原理到检测精度计算2.1 检测精度与分辨率的关系怎么算农产品检测要用多少分辨率的相机很多人是拍脑袋选的其实可以算出来。以苹果检测为例一条输送线上视野范围FOV要覆盖一个苹果加上周围的间隙我们按150mm×150mm来设计。需要检出的最小缺陷是0.5mm的碰压伤斑点。根据经验一个缺陷至少要占3×3个像素算法才能稳定识别出来否则就是看不出是缺陷还是噪点。计算方式是最小缺陷尺寸0.5mm对应像素数至少3个像素那么单像素对应的实际尺寸0.5mm ÷ 3 ≈ 0.167mm视野150mm除以单像素对应尺寸0.167mm得到900像素。也就是说理论上一个900×900分辨率的相机就够了。但实际情况没这么简单因为光照不均匀、镜头边缘画质下降、输送带抖动等因素实际可用分辨率要打折扣通常按理论值的两倍左右留余量。所以选1200万像素约4000×3000在150mm×150mm视野下单像素对应尺寸大约0.0375mm远高于需求既保证了小缺陷的识别能力又给算法留了充分的处理空间。分辨率也不是越高越好。分辨率翻一倍图像数据量翻四倍网络传输、图像处理、存储的压力都会成倍增加。如果产线节拍是每秒5个苹果1200万像素的图像一秒钟传5张对千兆网的带宽压力已经不小了。所以选型的原则是满足检测需求的前提下尽量选低分辨率而不是盲目追求高像素。2.2 曝光时间与运动模糊的平衡工业检测里有个公式要牢记运动模糊量 物体运动速度 × 曝光时间。如果苹果在视野内移动了大于一个像素的距离图像就会模糊。以我们的产线为例输送带速度大约是0.5m/s即500mm/s。在150mm的视野内对应4000个像素那么单像素实际尺寸是0.0375mm。要保证运动模糊不超过一个像素曝光时间要小于0.0375mm ÷ 500mm/s 0.000075秒也就是75微秒。这个曝光时间非常短意味着进光量很少画面会偏暗。所以一般需要补充足够强的光源或者适当提高增益。实际调试时我们采用的曝光时间在50到100微秒之间配合高亮度的LED光源和光圈调节找到了一个比较理想的平衡点。如果光源不够亮可以适当调大光圈、提高增益但增益太高噪点会明显增多。这里有个调试技巧先固定曝光时间再调光圈和光源亮度最后才动增益。顺序反了容易陷入增益太高噪点多、降增益又太暗的死循环。调参的时候每次只改一个变量记录下图像效果这样出了问题也容易回退。2.3 镜头选型焦距、靶面、畸变镜头是很多视觉项目最容易忽视的环节。相机选得再好镜头配错了图像照样一塌糊涂。MAX-G800这类相机的C接口需要搭配对应的C口工业镜头。镜头选型主要看三个东西焦距、光圈、光学畸变。焦距决定视野大小和工作距离的关系。我们当时的工作距离镜头前端到苹果表面的距离大约是400mm视野要覆盖150mm×150mm。根据相似三角形原理焦距的计算方式是视野宽度150mm对应传感器宽度。MAX-G800的传感器靶面是1/1.7英寸宽度大约7.4mm。焦距 工作距离 × 靶面宽度 ÷ 视野宽度 400 × 7.4 ÷ 150 ≈ 19.7mm。所以选了一款16mm到25mm之间可调的变焦镜头实际调到20mm左右固定下来。焦距太短视野大但物体在图像里占的比例小小缺陷难分辨焦距太长视野变窄苹果稍微偏离位置就出画面了。光圈方面农产品检测通常建议用中等光圈比如F4到F8。光圈开太大比如F1.4景深很浅苹果表面高低不平中间清楚了边缘就虚了光圈收太小进光量不足曝光时间拉长又会出现运动模糊。畸变是另一个坑。普通镜头在画面的边缘会有明显的桶形畸变直线变弯直接影响尺寸测量精度。做品质检测一定要选低畸变或远心镜头。固定视野、固定工作距离的场景畸变可以通过标定来校正但如果畸变量本身太大标定校正后的边缘精度还是会受影响。选镜头的时候直接看畸变参数控制在0.1%以内比较稳妥。3. 农产品视觉检测的实操流程光源、采集与标定3.1 光源方案农产品检测的半条命做视觉的人常说一句话光源打得好算法少烦恼。这句话在农产品检测上体现得淋漓尽致。农产品表面不是平整的镜面苹果有蜡质反光、土豆有泥土、大米是半透明的颗粒不同物性需要的光源角度和类型完全不同。我们主要试了三类光源方案环形光源从四周打光适合表面缺陷检测苹果的碰压伤在这种光下会呈现明暗差异。但缺点是容易产生反光苹果表皮的高光区会过曝。低角度条形光源光线从侧面很低的角度照射可以让苹果表面的凹凸缺陷产生明显的阴影碰压伤、腐烂斑在这种光下对比度很高。这是苹果表面检测最推荐的方式。同轴光源光线垂直照射适合检测反光强烈的表面比如大米这类颗粒可以避免颗粒之间的阴影干扰。实际方案用了低角度条形光源加漫射板光源以约15度的角度斜照苹果表面利用阴影增强缺陷对比度。漫射板的作用是把点光源变成面光源减少高光点让整体亮度更均匀。这个组合实测下来碰压伤的明显程度比环形光提升了不止一个档次。光源的颜色也值得说。不同颜色的光对不同颜色的物体有不同的响应。检测苹果的红色成熟度用白光最合适因为需要还原真实的颜色信息而检测绿色表面的缺陷有时候用红色光源可以让绿色背景变暗、缺陷更突出。这个要根据检测目标来选择不能一概而论。注意光源的亮度一定要可调。产线环境光会变化白天有阳光、晚上有灯光光源亮度固定的话相机拍到的画面亮度会波动直接影响后续的算法稳定性。建议光源控制器选带外部触发的型号配合相机曝光同步频闪既能保证亮度稳定又能降低光源发热。3.2 相机参数配置与图像采集设置MAX-G800连接工控机的过程不算复杂装好厂商SDK之后通过GigE Vision协议就能识别到设备。但有几个参数必须认真设置曝光时间按前面计算的设置在50到100微秒。增益尽量压低建议不超过12dB。增益上去之后噪点明显增加尤其是暗部区域会直接影响缺陷检测的准确性。白平衡检测颜色相关的项目白平衡要做校准。用一个白色的标准板放在视野里执行白平衡确保拍出来的白色是RGB三个通道等值的。伽马Gamma一般设置成1保持线性响应这样后续算法做颜色特征计算时不用做复杂的非线性还原。ROI感兴趣区域视野里只有一部分是有效的检测区域设置ROI可以只传输和处理有效的图像区域减小数据量提升帧率。触发方式用的是硬件外触发光电传感器连接到相机的GPIO接口。苹果经过时光电信号触发相机采集一帧。这里有一个容易忽略的细节触发信号有一个脉宽要求太窄的脉冲相机可能识别不到。光电传感器的输出脉宽一般都能满足要求但如果遇到丢帧问题先用示波器测一下触发信号这一条经验帮我排查过好几次问题。图像采集到工控机之后建议立刻保存一批原始图像不要在采集端做任何图像增强处理。原因很简单原始图像才能真实反映硬件和光源的状态做算法开发时需要用原始图来调参如果采集端就做了处理后面想排查问题会非常困难。3.3 相机标定从像素坐标到真实尺寸标定这个环节很多人不重视但它直接决定尺寸检测的准确性。农产品的分级往往涉及大小分级比如苹果按果径分等级尺寸量不准分级就会出问题。相机标定分两部分内参标定和像素当量标定。内参标定解决的是镜头畸变和相机内部参数的问题。做法很简单打印一张棋盘格标定板在不同角度、不同位置拍十几张照片用OpenCV的cv2.calibrateCamera()就能算出相机的内参矩阵和畸变系数。这一步做完可以校正图像消除镜头畸变带来的尺寸误差。像素当量标定解决的是一个像素等于多少毫米的问题。在视野里放一个已知尺寸的标准件比如直径80mm的校准环拍一张图在图像上测出它占了多少像素然后相除得到像素当量。比如标准件直径在图像上占了2100像素那么像素当量就是80mm ÷ 2100 ≈ 0.0381mm/像素。这里要特别注意像素当量跟工作距离有关工作距离一变数值就变了。所以标定之后镜头和工作距离要保持不变否则需要重新标定。产线调试阶段建议每天开工前用标准件快速验证一下像素当量如果偏差超过1%检查一下是不是镜头松了或者相机位置动了。如果项目用了双相机比如为了做大果径的检测一个相机视野不够还需做双目标定计算两个相机坐标系之间的旋转和平移关系。MAX-G800支持多相机同步采集通过把两个相机的触发信号接到同一个触发器上可以保证同一时刻曝光这样两个相机拍到的是同一物体在同一时刻的图像后续做图像拼接或立体测量才有意义。4. 检测算法落地从图像预处理到分级判断4.1 图像预处理先做减法再做加法拿到MAX-G800采集的图像第一步不是急着检测缺陷而是做预处理。农产品图像有一个特点背景复杂、光照不均、目标表面纹理多变。预处理的目的是把干扰信息尽量去掉只留下跟检测目标相关的特征。预处理流程一般包括三个步骤灰度化把RGB三通道图像转成灰度图用于表面缺陷检测。但注意颜色相关的检测比如苹果的成熟度不能灰度化必须在RGB或HSV颜色空间里做。滤波去噪用高斯滤波或中值滤波去除传感器噪点和环境干扰。注意滤波核不能太大否则会把小缺陷也滤掉了。一般用3×3或5×5的核就够了。光照校正如果图像亮度不均匀可以用背景估计法做校正。拍一张没有物体的空背景图然后用待检测图除以背景图就能得到相对均匀的图像。这个技巧在农产品检测里很实用因为苹果是球形的自然光照下中间亮边缘暗不做校正的话边缘的暗部很容易被误判成缺陷。4.2 特征提取颜色、纹理、形状三件套农产品品质检测的特征主要分三类颜色特征、纹理特征、形状特征。颜色特征用于判断成熟度和色选。苹果的红色成熟度可以直接在HSV空间里提取H通道统计红色像素的比例。大米的异色粒检测则是设定一个颜色阈值把灰白色的正常米粒和黄色的异色粒分开。这里有个经验HSV空间比RGB空间对光照变化更鲁棒调色选阈值的时候优先用H和S通道。纹理特征用于检测表面瑕疵。碰压伤区域跟正常果皮的纹理不一样可以用局部二值模式LBP或者灰度共生矩阵GLCM来量化。不过实际项目中最简单的办法是用频域滤波——缺陷区域的边缘往往带有特定的频率特征用高斯差分DoG可以增强这些区域。形状特征用于大小和形状分级。在图像上分割出苹果的轮廓计算轮廓的外接圆直径或者等效椭圆的长轴就是果径。这里要提醒一点相机拍到的苹果是侧面的二维投影如果苹果摆放位置有倾斜投影直径会偏小。所以产线上最好让苹果以固定姿态经过相机或者在算法上做多角度补偿。4.3 分级判定与产线集成检测算法跑完之后输出的是每个苹果的检测结果果径、颜色等级、缺陷类型和位置。接下来就是分级逻辑。以苹果分级为例可以建立一个简单的决策表等级果径颜色缺陷一级≥80mm红色占比≥70%无缺陷二级70-80mm红色占比40%-70%允许轻微瑕疵三级70mm红色占比40%允许少量缺陷这些判定结果会通过SDK接口输出给PLCPLC根据结果控制分拣机构的电磁阀把不同等级的苹果推进不同的料道。这里有一个实战经验算法判定到PLC执行之间有一个时间延迟苹果已经往前走了。所以需要在相机安装位置和分拣机构之间留出固定的距离根据输送带速度计算出延时时间在PLC里做延时输出。计算方式延时时间 相机到分拣机构的距离 ÷ 输送带速度。比如距离是1.5米速度是0.5m/s那么延时就是3秒。这个看着简单但实际调试时经常因为延迟时间配错导致分拣错乱先把这个算清楚再调算法会省很多事。5. 常见问题与排查技巧实录5.1 图像整体偏暗或局部过曝农产品检测常见的第一个问题是图像亮度异常。整体偏暗优先检查光源和曝光时间局部过曝特别是苹果表面的高光区域大概率是光源角度的问题。排查步骤是先用相机自带的直方图功能看图像灰度分布。正常的农产品图像灰度直方图应该集中在中间区域没有大片纯黑或纯白的区域。如果直方图右边堆满灰度值接近255说明过曝了降低光源亮度或者缩小光圈如果直方图左边堆满灰度值接近0说明太暗加大光源亮度或拉长曝光时间。5.2 运动模糊导致边缘检测不准产线上跑起来之后检测准确率突然下降先检查是不是运动模糊。方法很简单拍一张静止的苹果图再拍一张运动状态下的图对比边缘轮廓。运动模糊的典型特征是目标物边缘有拖影轮廓宽度比静止时明显变大。运动模糊的来源一般是两个曝光时间太长或者输送带在拍摄位置有抖动。曝光时间我们前面讲过公式按计算结果来设置。如果曝光时间已经很短了还是有拖影检查一下输送带结构的减震相机支架的固定是否牢固。工业相机的支架必须用刚性结构不能有弹性变形。5.3 误检率居高不下的排查思路算法误检是最磨人的问题。苹果表面一点点果锈被识别成碰压伤、大米里正常的胚芽被当成异色粒这些都属于误检。排查误检我的经验是先回到图像本身。把误检的样本图导出来跟正常样本放在一起对比看两类图像在颜色、纹理、形状上有哪些差异然后再调整特征阈值。很多时候误检是因为样本太少算法没有见过足够多的情况导致特征阈值定得不合理。解决方法是扩大样本集尽量覆盖产线上不同批次的农产品再重新训练或调整参数。5.4 多相机系统的带宽与掉帧问题如果一条产线用了两台甚至更多MAX-G800相机GigE带宽会成为瓶颈。千兆网的口子就那么大一台1200万像素相机跑满帧率已经占了大部分带宽。我们当时两条产线各配一台相机直接走千兆交换机实测很稳但如果未来扩展到四条产线就需要考虑用万兆网卡或者分成独立的网段来分流。掉帧的另一个常见原因是没有开巨型帧Jumbo Frame。千兆网默认MTU是1500字节一帧1200万像素的图数据量很大会被拆成很多个小包传输效率低。在网络适配器的设置里开启MTU 9000的巨型帧可以有效降低CPU占用和传输延迟。这个设置不起眼但对高分辨率工业相机影响很大。问题典型原因排查方向图像偏暗光源亮度不足、曝光过短检查直方图、加大光源强度局部过曝光源角度不对、目标反光调整光源角度、加漫射板边缘拖影曝光过长、输送带抖动缩短曝光、加固支架误检率高样本不足、阈值不当扩充样本集、对比图像差异偶尔掉帧带宽不足、网卡配置问题开巨型帧、独立网段6. 个人实操体会与项目经验总结这套系统从前期的选型测试到产线调试完成前后花了大概四周时间。个人最大的体会是农产品视觉检测真正的难点不在算法而在于把相机、光源、机械结构这三样东西配合到位。MAX-G800给我的整体感受是稳定可靠GigE接口部署起来省心硬件外触发响应很准图像质量在低照度环境下也没有明显的噪点问题。但再好的相机也需要正确的使用方式。回看整个项目有几个决定成败的细节值得再强调一遍光学系统的调试顺序是光源→镜头→相机参数每一步都要固化下来不要随意改动标定不是一次性的工作产线运行中要定期验证螺丝松动、相机位移都会导致精度漂移原始图像一定要留档这不仅是算法调优的基础也是出了问题之后追溯原因的关键。因为我们保存了完整的调试记录后来客户反馈某批苹果的碰压伤检出率波动翻出当时的图像一对比发现是那批苹果表面有较多果锈跟碰压伤灰度值相近导致误判调整阈值后问题就解决了。最后再分享一个小技巧农民朋友送来的农产品批次不同表面状态差异很大。建议在算法系统里加一个批次校准的功能每换一个批次用抽样的方式拍几张图自动调整灰度阈值的基准。这个功能看着不起眼却能大幅减少产线换批时的调试时间。农产品不像工业件那么规整做这套东西灵活适应比精确建模更重要。
返回列表