视觉算法与成像

多型号换型的配方化管理

型号一多,视觉软件的主要矛盾就从算法转到管理上:谁在什么时候改了哪个参数、换型有没有换对配方、上一个型号的阈值有没有被带过来。这些问题靠自觉解决不了,要靠机制。

配方化是什么,用在哪些工况

配方化指把一个型号所需的 全套视觉参数打成一个可命名、可版本管理、可整体切换的集合, 换型时按型号一次性载入,而不是让操作员逐项去改。这看着是软件问题,实际是质量控制问题。

典型工况:几十个 SKU 的电子装配线、同平台多规格汽车零部件、 多配置家电,共同特点是换型频繁, 每次都涉及 ROI、检测项、阈值甚至打光参数的整体变化。 敏洽 机器视觉检测软件 在这件事上有结构性优势: C++ 算法侧只输出原始算法数据、不做 OK/NG 判定, 判定逻辑与阈值都在 C# 侧,配方改动绝大部分不触及算法层。

实际会遇到的几个坑

1. 配方漏了成像参数

很多第一版实现只把 ROI 和阈值做进配方, 把曝光时间、增益、光源亮度与通道留在全局设置里。 从浅色型号切到深色型号,阈值换了曝光没换,图偏暗或过曝,检测项全部失效。 判断标准很直接:凡是换型号要变的东西,一律进配方。

2. ROI 用绝对坐标,换型就要重画

ROI 手画绝对坐标,换新型号就要重画所有检测框,工件位置一浮动就框错。 更好的做法是先定位再取 ROI: 用 Mark 点定位、模板匹配、特征点或几何基准算子先算出工件实际位置, 四类算子统一输出 Offset_X / Offset_Y / Angle_θ, 检测区按这组偏移做仿射跟随。配方里存相对基准的坐标, 同系列型号之间还能互相复制修改。

3. 人工选型号,选错了才发现

换型阶段最常见的批量事故是配方选错:A 型号的产品用 B 型号的配方检, 要么全部误判停线,要么更糟——全部判 OK 流出去。 对策按优先级:能从上层系统或 PLC 拿型号就不要让人选; 只能人工选就加两道拦:界面常显当前配方名与型号,切换后强制过首件并确认。 另一个便宜有效的办法是扫码校验。

4. 参数改动没有留痕

「谁把阈值调宽了」是不良流出后最难答的问题。必需的机制有三条: 权限分级(操作员只能看与切换、工程师才能改)、 变更记录(改了哪一项、原值、新值、操作人、时间)、 版本与回滚(每次保存产生新版本,可对比差异并回退)。

5. 型号一多,配方之间开始互相污染

型号到几十个之后会出现命名不规范、同一型号有多个来源不明的副本。 做法是把配方分层: 公共部分(硬件配置、通讯设置、留存策略)与型号部分分开, 型号配方只存差异项;命名用规范型号码;提供导入导出与对比功能。

6. 新型号导入的时间没人算

报价时经常只算已知的几个型号,忽略后续新增型号的配置工作。 每个新型号都要:拿样品试拍、画或复制 ROI、调算法参数、 跑 OK 与 NG 样品定阈值、做首件验证;用到 AI 还要标注、训练、验证。 所以要在方案阶段说清新型号导入由谁做—— 敏洽每次派人,还是把配置能力交给客户工程师(配套培训与手册)。 AI 训练平台在客户本地运行,图片不出厂,模型导出为加密 .aim 包。

配方内容与硬件条件

配方分层包含内容
硬件层(公共)相机型号与连接参数、工位分配、触发方式、通讯设置、留存策略
成像层(按型号)曝光、增益、光源亮度与通道、触发延时、白平衡、预处理参数
定位层(按型号)定位方式(Mark 点 / 模板匹配 / 特征点 / 几何基准)、模板图、基准点
检测层(按型号)检测项清单与启停、相对基准的 ROI、各算法参数
判定层(按型号)各项阈值与上下限、结果组合逻辑、复检规则
元信息型号码、版本号、修改人与时间、变更说明
AI 模型(如有)该型号绑定的 .aim 模型文件与推理参数
项目要求与说明
型号下发通讯软触发携带型号号、PLC 的 IO 编码、扫码自动切换或界面手选
触发方式硬件 IO、编码器、通讯软触发、连续采集四种,按工位分别配置
工位并发单机 4 工位并发,每工位可独立配方
权限操作员(查看与切换)/ 工程师(改参数)/ 管理员(改硬件与权限)
留痕配方版本、参数变更记录、换型首件的图片与结果留存
调试手段Mock 虚拟相机可加载历史图片集回放,新型号配置不占产线
运行环境Qt 6.9.2 + C++17 + OpenCV 4.x + ONNX Runtime;Windows 10/11 x64 与 Ubuntu 22.04 x64
客户准备规范的型号编码体系、各型号 OK 与 NG 样品、型号下发的通讯或 IO 接口定义

Mock 虚拟相机在多型号项目里价值很高: 把现场采到的图片按型号存成图片集,在办公室回放调参数,改完再把配方导到现场。

相关交付情况

多型号项目的交付重点不在单个算法,而在 配方结构的设计与配置能力的移交: 先与客户确定配方分层与型号编码规则, 再实现配方管理、权限与变更记录,然后把已知型号配好并做首件验证, 最后做配置培训并交付操作手册。

交付内容包括成像方案、硬件选型建议清单、检测软件与配方管理、结果与图片留存、 接口文档(触发方式、IO 定义、通讯点表、型号下发格式、结果格式)。 算法按模块授权;已有上位机框架的客户可以只用跨语言 SDK (mqvision.dll / libmqvision.so, 支持 C、C++、C#、Java JNI、Python,另有 Qt-free 版本)嵌入算法能力。

是走定制还是用标准软件,可以参考 定制还是买标准品; 更多算法说明见 内置算法库。

常见问题

一个完整配方至少包含五类:一是检测项清单与启停状态(这个型号检哪些项);二是每个检测项的 ROI 位置与算法参数;三是成像参数(曝光、增益、光源亮度与通道、触发延时);四是判定阈值与上下限;五是定位模板与基准。此外还要有型号标识、版本号、修改人与时间。凡是「换型号需要变」的参数都必须进配方,不能留在全局设置里。
常见三种:上位机或 MES 通过通讯(TCP、串口、共享内存)下发型号号;PLC 用几位 IO 编码型号;操作员在界面上手选。前两种优先,因为人为选错型号是换型阶段最常见的批量事故。如果只能人工选,就要加确认机制——比如切换后强制过一件首件并显示所用配方名,操作员确认后才允许连续生产。
因为改动无法追溯,也无法复现。典型场景是夜班为了让一批边界料通过把阈值放宽了,第二天没人知道、也没改回去,后面流出的不良就查不清原因。规范做法是:参数修改必须在配方层面进行,带权限控制、带修改记录(改了什么、原值、新值、谁改的、什么时候)、可回滚到上一版本。生产模式下界面只能看不能改。
至少三件事。一是确认当前生效的配方名与型号一致,并在界面上显著显示;二是过首件——用已知的 OK 件和已知的 NG 件各过一次,OK 件必须判 OK、NG 件必须判 NG,两个方向都验;三是检查定位是否正常(Mark 点或基准找到了没有、偏移量在合理范围内)。这三步做完再放连续生产。有的客户还要求把首件验证的图片与结果留存作为换型记录。

有具体设备清单或工件样品,可以直接给判断

提供设备型号、PLC 品牌与需要采集的数据项,或提供被检工件照片与精度要求,敏洽可先给出可行性判断与硬件前置条件,再谈软件工作量与报价。