华川自研视觉算法库架构与工程实践
背景
在工业自动化项目中,机器视觉已经成为质量检测、尺寸测量、视觉引导等环节不可或缺的技术手段。目前市场上主流的视觉算法方案主要有两类:一类是国际厂商的商用视觉软件包,功能全面但授权成本高,且二次开发灵活性不足;另一类是开源视觉库(如 OpenCV、Halcon 等),虽然免费但缺乏面向特定工业场景的工程化封装,使用时需要大量集成开发工作。
本文对该算法库的架构设计、核心模块及工程实践进行介绍,供同行交流参考。
2 算法库整体架构
算法库采用分层架构设计,自下而上分为四层:
| 层次 | 模块 | 说明 |
|---|---|---|
| 基础层 | 图像处理基础库 | 图像读取/转换、ROI 管理、色彩空间转换、滤波、形态学运算等基础操作 |
| 算法层 | 标定 / 测量 / 瑕疵检测 / OCR | 各业务算法的核心实现,互相独立,可单独调用 |
| 接口层 | SDK 封装 | C++ 核心 + C#/Python 绑定,对上层暴露统一 API |
| 应用层 | 上位机软件 / 批处理工具 | 检测流程调度、界面交互、配方管理、数据存储 |
这种分层设计的核心出发点是算法与应用解耦。算法层不依赖任何 UI 框架和具体硬件品牌,只接收图像数据和参数配置,输出结构化结果。这使得同一套算法既能嵌入在线检测上位机,也能用于离线批测工具或第三方系统,大大提高了复用率。
3 核心算法模块
3.1 标定与坐标统一
标定是所有视觉检测任务的基础。算法库提供完整的标定流程:
(1)像素当量标定:通过标准标定板或已知尺寸工件,计算像素到实际物理尺寸的转换系数。支持单点标定和多点标定两种模式,多点标定可同时校正镜头畸变。
(2)镜头畸变校正:采用 Brown-Conrady 畸变模型,对普通定焦镜头的径向畸变和切向畸变进行建模和校正。标定后全视场测量误差可控制在 0.01 mm 以内(配合 2500 万像素相机+远心镜头方案)。
(3)多工位坐标统一:在多工位检测系统中,各工位通过仿射变换统一到机械坐标系,保证不同工位的测量结果可直接比较。标定参数支持文件存储和配方管理,换型时一键加载。
3.2 尺寸测量算法
尺寸测量是工业视觉最基础也是最核心的应用之一。算法库的测量模块主要包含以下能力:
(1)亚像素边缘提取:先以 Sobel 梯度算子定位边缘粗位置,再沿梯度方向进行灰度矩插值,将边缘定位精度提升至 1/20 像素级别。在 2500 万像素配合远心光路下,全视场像素当量约 0.02 mm,结合亚像素插值后孔径测量重复精度(3σ)优于 0.01 mm。
(2)鲁棒几何拟合:对孔位边缘做圆拟合时采用 RANSAC 算法剔除毛刺、崩边等干扰点,避免异常点导致拟合结果虚高。直线拟合同样采用鲁棒估计,对脏污和缺陷有较好的容忍度。
(3)双阈值滞后边缘连接:针对透明材质工件边缘对比度低的问题,在背光穿透成像下采用双阈值滞后连接策略(类似 Canny 的滞后阈值思路),有效解决了弱边缘断裂问题。
(4)多类型测量支持:包括外形尺寸(长宽、角度、半径)、孔径、孔位中心距、边距、平行度、圆度等几何量,均可通过参数化配置完成测量,无需针对每种尺寸单独开发。
3.3 瑕疵检测算法
瑕疵检测是视觉检测中难度最高的环节,不同产品、不同缺陷类型的检测策略差异很大。算法库采用传统视觉与深度学习融合的两级架构:
第一级:候选区快速提取
以差分法、自适应阈值、频域纹理滤波等传统算法对整幅图像做快速筛查,提取疑似瑕疵候选区域,单帧处理时间控制在 300 ms 以内。主要策略包括:
对规则平面区域使用金模板比对,检出亮度异常和形态偏差
对纹理复杂的印刷区域使用频域滤波抑制底纹后再做差分比对
对孔位边缘使用径向扫描法检测崩边和毛刺
对曲面区域使用多角度光源图像融合后做区域分割
第二级:深度学习精判
候选区域裁剪后送入轻量化卷积网络进行分类与分割。网络结构以 MobileNetV3 为骨干网络,搭配 DeepLabV3+ 解码头,兼顾检测精度和推理速度。关键工程细节包括:
模型经产线实采样本训练,并采用缺陷仿真增强(随机叠加划痕、污渍模板)扩充小样本类别
模型经 TensorRT 半量化部署于 GPU,单次推理耗时小于 20 ms
支持模型热更新:新缺陷类型样本采集后可离线训练并更新模型,无需停机
两级架构的核心优势在于:2500 万像素整图不需要全图跑神经网络,只在候选区域做精判,既保证了 2 秒检测节拍,又显著降低了误杀率。实测在手机壳外观检测项目中,0.1 mm 级瑕疵检出率达 99.7%,误杀率仅 0.4%。
3.4 字符识别与条码读取
算法库集成了 OCR(光学字符识别)和条码/二维码读取模块,支持以下场景:
激光雕刻字符、喷码字符的识别(含点阵字体)
一维码(Code128、EAN13 等)和二维码(DataMatrix、QR Code)读取
多码同读:单帧图像中同时定位和识别多个条码/二维码
可识别区域 ROI 的自动定位:先做模板匹配定位标签区域,再执行识别,提高鲁棒性
4 SDK 封装与工程化
4.1 接口设计
核心算法封装为独立 SDK,对上层暴露统一接口,主要模块如下:
| 模块 | 主要接口 | 说明 |
|---|---|---|
| 标定模块 | calibrate / loadParam | 像素当量与畸变参数管理 |
| 测量模块 | measureDim / measureHole | 外形尺寸、孔径、孔位测量 |
| 瑕疵模块 | detectDefect / classifyDefect | 候选提取 + AI 精判 |
| 识别模块 | readOCR / readBarcode | 字符与条码识别 |
| 配置模块 | loadRecipe / saveRecipe | 产品型号配方切换 |
| 结果模块 | getResult / exportImage | 结构化结果与缺陷图输出 |
4.2 工程化考量
(1)多语言绑定:SDK 以 C++ 实现核心算法,通过 SWIG 自动生成 C# 和 Python 绑定。上层上位机软件使用 C# / .NET 开发,离线分析和模型训练使用 Python,两者调用同一套底层算法,保证结果一致性。
(2)配方管理:不同产品的检测参数、阈值、模型版本打包为配方文件,换型时一键切换。配方文件采用 JSON 格式,便于版本管理和差异对比。
(3)日志与追溯:每次检测的参数配置、算法版本、模型版本、处理时间均记录到数据库,支持单件级追溯。参数修改全部记录操作日志,满足客户质量体系审计要求。
(4)离线批测与模型回归验证:SDK 可脱离上位机独立运行批处理工具,使用历史采集图像对新版本算法进行回归验证,确保算法更新不影响已上线项目的检测结果。
5 典型应用场景
该算法库已在以下场景中落地应用:
| 应用场景 | 检测内容 | 关键技术 |
|---|---|---|
| 消费电子外观检测 | 手机壳尺寸测量与瑕疵检测 | 亚像素测量 + 两级瑕疵检测架构 |
| 汽车零部件检测 | 密封圈外观缺陷、五金件尺寸 | 多角度光源融合 + 缺陷仿真增强 |
| 注塑件质量检测 | 缩水印、飞边、缺料等注塑缺陷 | 金模板比对 + 深度学习分类 |
| 电子辅料字符识别 | 激光雕刻序列号、二维码读取 | ROI 自动定位 + OCR/条码识别 |
6 实施效果
以手机壳外观检测项目为例,系统投运后的连续运行验证数据如下:
| 指标 | 设计目标 | 实测结果 |
|---|---|---|
| 单件检测节拍 | ≤ 2 s | 1.7 ~ 1.9 s |
| 孔径测量重复精度(3σ) | ≤ 0.01 mm | 0.008 mm |
| 0.1 mm 级瑕疵检出率 | ≥ 99.5% | 99.7% |
| 误杀率 | ≤ 1% | 0.4% |
| 数据上传及时率 | ≥ 99.9% | 100%(含断点续传) |
投运后该工位由 3 名目检人员减为 1 名复检人员(处理 NG 复判),漏检投诉显著下降,单件质量数据实现 100% 留存可追溯。在后续的其他项目中,算法库的复用使新项目算法开发周期缩短约 40%,大部分工作集中在成像方案设计和参数调试,而非从零编写算法。
7 总结与展望
本文介绍了华川电气自研工业视觉算法库的架构设计与工程实践。通过分层架构、算法与应用解耦、传统视觉与深度学习融合等设计理念,算法库在多个行业的检测项目中实现了稳定运行和快速复用。
在实际项目实施中,我们体会到以下几点尤为关键:
(1)成像方案是基础:再好的算法也无法弥补糟糕的成像。光源设计、镜头选型、工件定位精度往往决定了系统的最终性能上限。
(2)算法不是越复杂越好:在节拍受限的在线检测场景中,传统视觉算法的快速筛查 + 深度学习精判的两级架构,往往比全图跑神经网络更实用。
(3)工程化能力决定落地效果:配方管理、日志追溯、离线回归验证等工程化能力,直接影响系统在客户现场的可维护性和可扩展性。
后续我们将继续在以下方向进行探索:小样本缺陷生成的数据增强技术、边缘端轻量化模型部署、以及视觉算法与运动控制的深度融合(视觉引导定位、视觉补偿加工等)。以上经验供同行参考,不足之处欢迎交流指正。
提交
手机壳外观瑕疵与尺寸检测系统设计
正运动控制卡上位机开发实战
纸箱开槽机上位机系统开发实践
中大型项目上位机:自研还是组态?


投诉建议