1. 工业读码任务全景

工业读码并不是“把相机对准码、调用一个算子”这么简单。产线上真正决定成败的,往往是任务本身的约束:码的类型、尺寸、位置是否固定、运动速度、允许的漏读率、节拍时间、安装空间、光照条件,以及后端系统需要什么格式的数据。HALCON 提供的是一套可组合的视觉算子库,而工程能力体现在把这些算子组织成一条与产线需求精确对应的处理链。理解“需求—约束—方案”的映射关系,是后续所有章节的基础。

一、两类核心任务:字符识别与条码/二维码读取

工业读码通常分为两大族。第一族是字符识别(OCR/OCV),对象是喷码、激光打标、钢印、印刷字符,例如生产日期、批号、序列号、VIN 码、药品监管码中的文本段。它的难点在于字符可能低对比度、倾斜、变形、断裂、点阵化,且往往需要“识别 + 校验”双重目标:既要读出内容,又要判断它是否符合规则(OCV)。第二族是条码/二维码读取,对象是 Code 128、Code 39、EAN-13、Data Matrix、QR Code 等标准符号。它的难点在于模块尺寸小、对比度低、码面反光、部分遮挡、DPM(直接部件标记)点阵质量差,以及高速运动带来的运动模糊。

两类任务的输出也不同:OCR 输出的是字符串及其置信度,条码输出的是解码数据、符号类型和质量等级。这决定了后续与 PLC、MES、数据库对接时的数据格式与判定逻辑。

二、从产线需求到性能指标

产线需求必须被翻译成可测量的视觉指标,否则方案无法验收。常见的映射关系如下:

  • 节拍要求 → 单帧处理时间上限。例如产线 60 件/分钟,则单件可用时间约 1000 ms,扣除通信与执行机构后,视觉处理预算可能只有 300~500 ms。
  • 漏读率要求 → 读取率与误读率指标。工业场景通常要求读取率 ≥ 99.5%,误读率接近 0;OCR 还要求字符错误率(CER)足够低。
  • 码/字符尺寸 → 分辨率与镜头选型。经验上,条码最窄模块或字符笔画至少占 3~5 个像素,DPM 点阵建议 5 像素以上。
  • 运动速度 → 曝光时间与频闪控制。速度 v、曝光 t 产生的运动模糊约为 v·t,需控制在 1 个像素以内。
  • 安装空间 → 工作距离、视场与景深。视场必须覆盖码所在区域并留出定位余量。
  • 环境光 → 光源方案。反光金属件常用低角度暗场或同轴光,塑料包装常用漫射穹顶光。
把需求写成“指标表”而不是“功能描述”,是读码项目少走弯路的关键。例如不要写“要能读二维码”,而应写“Data Matrix,模块 0.2 mm,读取率 ≥ 99.5%,单帧 ≤ 200 ms,工作距离 150±20 mm”。

三、HALCON 解决方案的映射结构

HALCON 的方案不是单一算子,而是一条从图像到结果的链路:采集 → 预处理 → 定位/校正 → 码或字符分割 → 识别/解码 → 校验与输出。不同任务在这条链上的重点不同。条码读取常用 create_bar_code_model、find_bar_code,二维码常用 create_data_code_2d_model、find_data_code_2d;OCR 则常用 create_text_model_reader、find_text,或传统分割加 read_ocr 的方式。定位环节常用形状匹配 find_shape_model 或 find_scaled_shape_model,把 ROI 对齐到码的实际位置,从而让识别参数稳定。

下面这张图给出本节的核心映射关系:左侧是产线需求与约束,中间是它们对应的视觉指标与 HALCON 处理环节,右侧是最终输出与判定。它强调的不是“步骤顺序”,而是“需求如何决定方案结构”。

产线需求 → 视觉指标 → HALCON 处理链 → 输出判定 产线需求与约束 码/字符类型与尺寸 Code128 / DM / OCR 节拍与运动速度 件/分钟、mm/s 读取率与误读率 ≥99.5% / ≈0 安装空间与工作距离 WD、FOV、景深 光照与表面特性 反光、DPM、低对比 后端数据格式 PLC / MES / 数据库 视觉指标与 HALCON 处理链 分辨率 / 镜头 / 工作距离选型 模块或笔画 ≥ 3~5 px 曝光 / 频闪 / 运动模糊控制 v·t ≤ 1 px 采集与预处理 灰度化、增强、ROI 定位与校正 find_shape_model / 透视校正 识别 / 解码 find_bar_code / find_data_code_2d / find_text 校验与质量评估 置信度、规则校验、等级 参数闭环:读取率不足 → 回溯光源/曝光/参数 输出与判定 解码字符串 / 字符内容 含符号类型、置信度 OK / NG 判定 规则匹配、格式校验 通信输出 PLC / MES / 数据库 图像与日志留存 追溯、复判、调参依据 验收指标 读取率、误读率、节拍

四、工程约束如何反向影响方案

约束不是背景信息,而是会直接改变处理链的“设计输入”。举几个典型例子。若码位于高速传送带上,曝光时间必须压到几十微秒,此时光源亮度与频闪同步成为关键,HALCON 侧则要接受一定噪声并选择鲁棒的预处理。若码面是反光金属,普通环形光会造成局部过曝,暗场低角度光能把刻痕或点阵“打亮”,HALCON 侧可配合局部阈值与形态学增强。若码的位置在视野内漂移,就必须先做形状匹配定位,再在局部 ROI 内解码,否则全局搜索会拖慢节拍并降低稳定性。

另一个常被忽视的约束是误读的代价。在医药、汽车安全件等场景,误读比漏读更危险,因此需要启用校验位、格式规则、字符集限制,甚至多帧一致性确认。HALCON 的条码模型可以设置校验与候选数量,OCR 可以设置字符集与最小置信度,这些参数本质上是在“读取率”和“误读率”之间做权衡。

五、一个可参考的映射示例

假设某汽车零部件产线需要在金属表面读取 Data Matrix,模块尺寸约 0.25 mm,工件随夹具运动,速度约 200 mm/s,节拍要求单件视觉处理 ≤ 250 ms,读取率 ≥ 99.5%。可以这样映射:

需求项指标/约束方案要点
码类型Data Matrix,0.25 mm 模块使用 create_data_code_2d_model 指定 ECC200
分辨率模块 ≥ 4 px视场约 40 mm 时,相机水平分辨率约 640 px 以上
运动模糊≤ 1 px曝光 ≤ 5 μs 量级,配合频闪
定位位置有 ±5 mm 漂移先 find_shape_model 定位,再局部解码
光照金属反光、DPM 点阵低角度暗场光,必要时多角度合成
输出字符串 + OK/NG解码后做格式与校验位判断,结果发 PLC

这个示例中的参数属于教学假设,实际项目必须通过打光测试、分辨率核算和节拍实测来确定。重要的是理解映射逻辑:每一个产线约束都能找到对应的视觉指标,每一个视觉指标又能落到具体的 HALCON 算子与参数上。后续章节将沿着这条链路,分别展开采集、定位、条码读取、二维码读取、OCR/OCV、参数调优与系统集成等具体技术。

读码方案的本质,是把“产线语言”翻译成“视觉语言”,再用 HALCON 的算子把视觉语言实现为稳定、可验收的处理链。先想清楚约束,再选算子,远比先写代码再调参高效。