当前位置:
文档之家› 基于HALCON和VC_混合编程的视觉测量系统设计
基于HALCON和VC_混合编程的视觉测量系统设计
为了提高电子元件尺寸测量的精度和效率,借 鉴机器视觉的技术方法,本文提出并设计了电子元 件视觉测量系统,在研究了 HALCON 和 VC++混合 编程方法之后,采用该方法编程实现了视觉测量系 统的相关核心算法,开发完成的软件工具实现了视
觉测量功能,在构建完成的试验硬件平台上,通过试 验实现系统的可靠性和稳定性验证。
文献标识码: A
文章编号:1672-2914(2011)06-0020-05
Vision Measurement System Design Based on HALCON and VC++ Mixed Programming
JI Jun1,YAN Li-fu2,ZHANG Hui1,LI Yan-hong1
Step 3 配置 HALCON 和 VC++混合编程的程序 开发环境;
混合编程环境配置
Start
HDevelop 环境下开发 视觉测算法 否
程序功能验证 是
HDevelop 输出程序 C++代码
VC++环境下封装 C++代码
修改、调试 C++代码
否 程序功能验证
是 编译、链接,产生应用程序
End
图 1 HALCON 和 VC++混合编程的设计流程
第6期
吉 军,等:基于 HALCON 和 VC++混合编程的视觉测量系统设计
· 21 ·
量系统通过图像摄取装置将被摄取目标转换成图像 信号,传送给专用图像处理系统进行各种运算来抽 取目标特征,进而根据判别的结果来控制现场的设 备动作[7]。
视觉测量系统通常由硬件和软件两部分组成, 硬件主要包括工业数字摄像机、工业镜头、光源、工 业 PC 机、图像采集卡、监视器和通讯/输入输出单元 等;软件则是根据具体的测量内容和精度要求由设 计人员自行开发。 1.2 HALCON 及 HALCON/C++
HALCON 是一款由德国著名的机器视觉软件开 发公司 MVTec Software GmbH 研发的一款全功能机 器视觉软件包,提供了原型化的集成开发环境 HDevelop,用户可以灵活地搭建自己的机器视觉系统。 HALCON 是世界上最全面的机器视觉处理软件,为 低、中、高阶图像处理提供超过 1 480 个算子和 900 多 个例程,可以应用到视觉测量的整个过程,如图像采 集与显示、图像分割、特征提取、模板创建以及图像匹 配等。作为目前业内功能最完善、效率最高的软件之 一,已被广泛应用于视觉检测、机器人导航等领域[8]。
2 HALCON 和 VC++混合编程方法
2.1 HALCON 和 VC++混合编程的设计流程 HALCON 和 VC++混合编程是将 VC++作为整
个视觉测量系统应用程序开发环境,通过函数调用 方式使用 HALCON 的图像处理库函数实现视觉测 量系统核心处理功能,从而开发完成视觉测量软件 工具。该方法的程序设计流程如图 1 所示。
HALCON 还提供了开放的结构形式,利用自有 的 HDevelop 编 程 工 具 ,可 以 轻 松 地 实 现 代 码 从 HALCON 算子到 C、C+ + 、C# 等程序语言的转化, 为测量软件的开发提供了良好的编程环境。HALCON/C++是 HALCON 图像处理系统和 C++编程语 言的接口。使用 HALCON 的函数库,能够在 C++中 很方便的完成 HALCON 中所实现的功能。
1 视觉测量系统与 HALCON 软件
1.1 视觉测量系统及其构成 视觉测量是机器视觉在工业检测领域的重要应
用。视觉测量用机器代替人眼来完成观测和判断, 常用于大批量生产过程中的产品质量检测,可以大 大提高检测精度和速度,从而提高生产效率,并且可 以避免人眼视觉检测所带来的偏差和误差。视觉测
收稿日期:2011-10-16 基金项目:陕西省教育厅科研基金项目(09JK799,2010JK892);咸阳师范学院科研基金项目(07SYK274)。 作者简介:吉 军(1982-),男,陕西旬阳县人,咸阳师范学院物理与电子工程学院讲师,西北工业大学现代设计与集成制 造技术教育部重点实验室博士研究生,研究方向为计算机集成制造技术、CAD/CAE/CAM。
3.1 系统组成结构 电子元件视觉测量系统主要采用工业摄像机采
集电子元件图像,通过 HALCON 和 VC++混合编程 开发的专用测量软件系统对图像进行处理,得出测 量数据结果后,进行产品质量判断。系统主要由图 像采集、测量图像处理和测量结果判定与显示三部 分组成。其中图像采集部分包括工业摄像机、工业
Key words: HALCON, VC++; mixed programming; vision inspection system
机器视觉是通过光学装置和非接触传感器自动 地接收和处理一个真实物体的图像,以获得所需信 息或用于控制机器人运动的装置,已广泛应用于在 产品质量检测[1-2]、工厂自动化[3-4]、机器人[5-6]等领域。
Step 3 在 project→settings 的 Link 属 性 页 input 下 拉 菜 单 中 添 加 路 径 $(HALCONROOT)\lib\i586-nt4 或者是$[HALCONROO T]/lib/ $[HALCONARCH]。 2.3 混合编程 HALCON 库函数的调用方法
(1. 咸阳师范学院 物理与电子工程学院,陕西 咸阳 712000;
2. 兰州理工大学 计算机与通信学院,甘肃 兰州 730050)
摘 要:视觉测量是采用机器视觉精确测量和定位空间几何尺寸的技术,能够有效提高工业
检测的精度和效率。运用基于 HALCON 和 VC++混合编程方法开发了电子元件视觉测量软件工
镜头、环形光源、光源控制器等;测量图像处理和测 量结果判定部分主要是基于 HALCON 和 VC++混合 编程开发而成的软件工具,包括图像采集、图像显 示、相机标定、元件测量与结果显示等模块。系统构 成如图 2 所示。
工业 摄像机
镜头 环形光源
元件
视觉测量计算机
测量图像采集与显示
视
觉
工业相机标定
测
量
11, 11)。 面向对象调用法就是通过一系列的类来调用
HALCON 算子。上述示例代码可以转化为: HImageoriginal_image(“monkey)”,smoothed
_image; amoothed image=original image.MeanImage(11,
11)。 两种不同的调用方式产生出截然不同的程序代
具,实现了测量图像采集与显示、视觉测量等核心算法及其功能;设计并构建了由工业数字摄像
机、工业镜头、光源等仪器组成的电子元件视觉测量硬件平台,并依此对软件工具的可靠性和稳定
性进行试验验证,结果表明系统检测速度快、检测精度达到预期技术指标。
关键词:HALCON;VC++;混合编程;视觉测量系统
中图分类号:TP391.7
2011 年 11 月 第 26 卷 第 6 期
咸阳师范学院学报 Journal of Xianyang Normal University
[理论物理学与应用物理学研究]
Nov.2011 Vol.26 No.6
基于 HALCON 和 VC++混合编程的视觉测量系统设计
吉 军 1,严立甫 2,张 辉 1,李艳红 1
HA#43;中调用 HALCON 库函数:子程序调用法和面向
·22·
咸阳师范学院学报
第 26 卷
对象调用法[9]。 子程序调用法就是在 VC++或者 HDevelop 环境
下直接调用 HALCON 算子。示例代码如下: Hobject original_image, smoothed_image; read_image(&original_image,“monkey”); mean_image(original_image, &smoothed_image,
Step 4 在 VC++环境中通过程序语言的功能来 建构程序界面,开发整个视觉测量程序,并完成程序 功能验证;
Step 5 编译、链接,生成应用程序,并将自行开发 的程序和HALCON library一起装入视觉测量系统。 2.2 混合编程的环境配置
要在 V C++中开发图像处理应用程序,并且调 用 HALCON 的库函数,首要工作是在 V C++中配置 相应的交互编程环境,主要包括头文件路径和链接 文件及路径的设置,具体步骤如下:
由图 1 可知,以 HALCON 为核心编写视觉测量 系统应用程序的步骤如下:
Step 1 利用 HDevelop 环境检查分析图像,建立 视觉测量计算模型,开发视觉测量的核心算法代码, 并进行程序功能验证;
Step 2 由 HDevelop 导出视觉测量程序代码,生 成 C 代码或者 C++代码透过指令加入程序中;
Step 1 在 project→settings 的 Link 属性页中添加 halconcpp.lib;
Step 2 在 project→settings 的 C/C++属性页 Preprocessor 中 添 加 目 录 $(HALCONROOT)\include, $(HALCONROOT)\include\cpp;
码,除了不同的算子名称外,算子调用参数的数量和 类型也有所不同。
通常倾向于使用面向对象的方式来调用,但是 需要注意的是,使用 HDevelop 导出的 C++代码都是 通过子程序方式来调用的,如果要使用面向对象方 式必须手动更改代码,而且,现有的部分 HALCON 库函数只对子程序调用方式有效。