2. 农产品表面缺陷类型与检测需求分析

要设计一套真正可用的农产品表面缺陷视觉检测系统,第一步不是选相机、也不是搭模型,而是把“缺陷”这件事本身说清楚。同一颗苹果上的一个黑点,可能是虫眼、可能是霉变初期、也可能只是果锈或药斑;同一道划痕,在分级标准里可能被判为机械伤,也可能因深度不足而不计入缺陷。缺陷类型定义不清,后续的光源方案、成像分辨率、算法阈值和判定规则都会失去依据。本节围绕常见缺陷的形态特征、行业标准中的分级口径,以及由此反推的检测精度要求展开。

一、常见缺陷的形态学定义

农产品表面缺陷通常按成因分为生物性、生理性和机械性三类,视觉检测中最常处理的是以下五类:

  • 虫眼:害虫蛀食形成的孔洞或隧道入口,多呈圆形或不规则小孔,直径常在0.5~3 mm,孔口周围常有褐色坏死环或虫粪。关键特征是“有深度的小孔”,与表面黑斑的区别在于孔内阴影和边缘塌陷。
  • 霉变:病原菌侵染导致的组织腐败,早期为水浸状暗斑,中后期出现白色、青色或黑色霉层,边界模糊且向外扩散。霉变的核心难点是早期病斑与正常色差极小,且形态不规则。
  • 裂口:生长或采收过程中果皮、果肉开裂,呈线状或网状,有深度,裂口内易藏污纳垢并继发霉变。裂口的方向性明显,常沿果形纵向或放射状分布。
  • 机械伤:碰撞、挤压、摩擦、刺伤造成的擦痕、压痕、刺孔和破损。擦痕多为浅表条状,压痕表现为局部凹陷与色泽变暗,刺孔则接近虫眼但无坏死环。
  • 色泽异常:包括日灼、冻伤、着色不良、药害斑等,表现为区域性颜色偏移,通常没有明显的几何边界,需要以颜色空间统计量而非边缘特征来描述。

这五类缺陷在视觉上并非彼此独立:虫眼与刺孔、霉变早期与水浸伤、裂口与深擦痕都存在混淆风险。因此在定义阶段就应明确“判据组合”,例如虫眼要求“孔洞+坏死环+深度阴影”三者同时满足,而刺孔只要求孔洞与深度。判据越具体,后续算法越容易落地。

二、行业标准中的分级口径

国内农产品分级多依据国家标准或行业标准,如鲜苹果、柑橘、番茄等均有对应的等级规格。标准通常把产品分为特级、一级、二级,缺陷以“允许的最大面积占比”“单个缺陷最大尺寸”“缺陷数量上限”三种方式限定。以鲜苹果为例,特级果通常要求果面缺陷总面积不超过果面的1%~2%,且不允许有虫眼、裂口和霉变;一级果允许轻微机械伤和色泽差异,但单个缺陷面积受限;二级果容忍度进一步放宽。

需要特别注意的是,标准中的“面积占比”是二维投影面积,而视觉系统采集的是二维图像,两者在果形弯曲表面上并不等价。工程上通常用“缺陷像素数/果实投影像素数”近似,但必须通过标定把像素面积换算为物理面积(mm²),否则不同分辨率、不同拍摄距离下的判定结果无法复现。此外,标准里的“不允许有虫眼”是零容忍项,这类硬性条款应作为独立判定分支,不能混入面积加权评分。

标准文本给出的是判定边界,不是检测方法。把“面积不超过1%”翻译成系统需求时,还要确定测量不确定度:若系统自身测量误差达到±0.3%,那么对处在0.9%~1.1%区间的样品就必须设置复核机制,而不是简单二值判定。

三、从标准反推检测精度要求

检测精度不能凭经验拍定,应由“最小可判缺陷尺寸”和“面积测量误差”两个约束共同推导。设最小需检出的缺陷等效直径为 d(mm),要求该缺陷在图像中至少占据 N 个像素才能被稳定分割,则所需空间分辨率 R(mm/像素)满足:

R ≤ d / sqrt(N)
例如:最小虫眼 d = 0.8 mm,要求至少 5×5 像素覆盖
R ≤ 0.8 / 5 = 0.16 mm/像素
若单幅图像覆盖 120 mm × 90 mm 的果面区域
则图像分辨率至少为 120/0.16 = 750 像素(宽)

这只是几何分辨率的下限。实际选型还要叠加面积测量精度:若要求面积误差不超过±5%,则缺陷边界的分割误差应控制在约1个像素以内,对应需要更高的对比度和更均匀的照明。经验上,工业检测常把理论分辨率再缩小30%~50%作为设计余量,即上例宜取0.10~0.12 mm/像素。

除空间分辨率外,还有三项常被忽略的精度指标:最小对比度分辨率,决定早期霉变能否被发现,通常要求系统能分辨ΔE约2~3的色差;深度分辨能力,决定虫眼、刺孔与表面污斑的区分,可通过多角度照明产生的阴影差异间接获得;重复性精度,即同一缺陷多次测量的面积波动,应优于判定阈值的1/3,否则临界样品判定会抖动。

缺陷类型 → 判据组合 → 精度需求 → 判定分支 虫眼 孔洞+坏死环+深度 霉变 色差+扩散边界 裂口 线状+有深度 机械伤 擦痕/压痕/刺孔 色泽异常 区域色偏无硬边界 检测精度需求 空间分辨率 R ≤ d / √N(mm/像素) 对比度分辨率 可辨 ΔE ≈ 2~3 深度分辨能力 多角度阴影差异 重复性精度 优于阈值 1/3 零容忍分支 虫眼、霉变、裂口 → 直接判不合格 要求:不漏检,最小尺寸稳定检出 策略:高分辨率 + 多光谱/多角度 误检可通过复核放宽,漏检不可接受 面积加权分支 机械伤、色泽异常 → 按面积占比分级 要求:面积测量误差 ≤ ±5% 策略:像素→mm²标定 + 边界精分割 临界样品(阈值±0.3%)进入人工复核 判定输出:等级 + 缺陷清单 + 置信度 低置信度样品转人工复核

四、需求分析中的工程权衡

把上述精度指标落到系统设计上,会立刻遇到几组矛盾。第一组是分辨率与视场的矛盾:提高分辨率意味着缩小单幅视场,果实曲面又要求多视角覆盖,于是相机数量或拍摄工位数上升,节拍压力增大。第二组是灵敏度与误检率的矛盾:为检出早期霉变而提高对比度灵敏度,会把果锈、药斑、正常色差一并放大,误检率上升。第三组是零容忍项与面积项的判定口径矛盾:前者追求召回率,后者追求测量准确度,两者对同一套成像参数的偏好并不一致。

合理的做法是分层设定需求:对虫眼、霉变、裂口等零容忍缺陷,以“最小可检尺寸”和“漏检率”为核心指标,允许一定误检并由复核环节兜底;对机械伤、色泽异常等面积加权缺陷,以“面积测量误差”和“重复性”为核心指标,强调测量一致性而非极限灵敏度。这样,同一套系统可以用两组参数分别验收,而不是用单一指标笼统评价。

最后需要强调,缺陷定义与精度要求必须形成可追溯的对应关系。建议在需求文档中为每类缺陷记录:形态判据、标准条款、最小可检尺寸、对应分辨率、判定分支、复核规则。这份对应关系既是算法开发的输入,也是系统验收时的测试用例来源——验收样本应覆盖每类缺陷的临界尺寸和临界面积,而不是只挑典型大缺陷演示。

常见误区:直接照搬“某分辨率相机+某深度学习模型”作为需求,而跳过缺陷定义与标准口径。结果是模型在演示集上表现良好,却在临界样品和标准复核中频繁失分。需求分析的产出应是可测量的指标,而不是设备清单。