在制药行业的自动化生产线上,药片分拣一直是个具有挑战性的环节。传统机械定位方式受限于药片形状相似、表面反光、堆叠遮挡等问题,误抓率和漏抓率居高不下。Halcon作为工业视觉领域的标杆工具,其基于相关性的模板匹配算法为这一难题提供了创新解法。
我去年参与过一条泡腾片包装线的视觉改造项目,当时面临的主要痛点包括:
通过Halcon的NCC(归一化互相关)算法,我们最终将抓取成功率提升到99.7%。下面分享具体实现方案中的关键技术细节。
Halcon提供三种核心匹配算法:
药片识别场景的特殊性在于:
实测数据对比:
| 算法类型 | 旋转容忍度 | 光照鲁棒性 | 执行速度(ms) |
|---|---|---|---|
| NCC | ±15° | 高 | 23 |
| Shape-Based | ±30° | 中 | 45 |
| Descriptor-Based | 全向 | 低 | 120 |
最终选择NCC算法因其在光照变化下的稳定性,虽然旋转适应性稍弱,但药片在传送带上姿态基本固定,这个缺点可以接受。
halcon复制* 标准模板创建代码示例
read_image (ModelImage, 'template.png')
get_image_size (ModelImage, Width, Height)
* 重要参数设置
create_ncc_model (ModelImage, 'auto', rad(15), rad(0.1), 'use_polarity', ModelID)
参数优化要点:
实践发现:模板图像采集时应在药片表面打漫反射光,避免镜面高光区域影响特征提取
典型处理流程(以泡腾片为例):
dyn_threshold消除光照不均opening_circle去除细小噪点connection分离粘连药片select_shape按面积/圆度过滤halcon复制* 预处理代码片段
decompose3 (Image, ImageR, ImageG, ImageB)
trans_from_rgb (ImageR, ImageG, ImageB, ImageY, ImageI, ImageQ, 'yiq')
* 使用Y通道进行后续处理
dyn_threshold (ImageY, ImageY, Region, 15, 'dark')
获取匹配结果后需要:
halcon复制* 坐标转换示例
affine_trans_point_2d (HomMat2D, Row, Column, Qx, Qy)
set_tposition (RobotHandle, Qx, Qy, 0)
在600fps的高速相机下,我们采用以下优化手段:
set_ncc_model_param(ModelID, 'level_num', 4)实测效果对比:
| 优化措施 | 单帧处理时间(ms) | CPU占用率 |
|---|---|---|
| 基线方案 | 45 | 78% |
| 金字塔优化 | 32 | 65% |
| ROI+金字塔 | 18 | 42% |
| 全优化方案 | 12 | 30% |
药片堆叠情况:
异形药片处理:
采用Modbus TCP协议实现:
通信报文结构:
| 偏移量 | 长度 | 含义 | 示例值 |
|---|---|---|---|
| 0 | 2 | 药片数量 | 0x0003 |
| 2 | 4 | 首片X坐标(mm) | 0x0000012A |
| 6 | 4 | 首片Y坐标(mm) | 0x000000C8 |
| 10 | 2 | 首片旋转角(0.1°) | 0x001E |
设计双闭环校准系统:
校准误差补偿公式:
code复制Δx = k1 * T + k2 * V + k3 * (X - X0)
Δy = m1 * T + m2 * V + m3 * (Y - Y0)
其中T为温度,V为振动传感器读数,(X0,Y0)为理论坐标
在某制药企业的压片包装线上,系统连续运行数据:
与传统方案对比优势明显:
| 指标 | 机械定位方案 | 视觉方案 |
|---|---|---|
| 更换模具时间 | 45分钟 | 无需更换 |
| 混片率 | 0.3% | 0.01% |
| 适用规格 | 固定尺寸 | 3-15mm |
这个项目给我的深刻启示是:工业视觉系统的成功不仅取决于算法精度,更需要考虑产线环境适配、机械协同、运维便利等系统工程因素。最近我们还尝试将匹配结果反馈到压片机控制端,实现了更精准的重量控制——这或许就是工业4.0所说的闭环优化吧。