基于HALCON和VC_混合编程的视觉测量系统设计

合集下载

小杨说事-基于halcon的多相机坐标系统一原理个人理解

小杨说事-基于halcon的多相机坐标系统一原理个人理解

小杨说事-基于halcon的多相机坐标系统一原理个人理解
首先,多相机坐标系统是指使用多个相机来进行三维空间的测量和定位,以实现对目标物体在三维空间中的位置和姿态的准确识别和定位。

在基于Halcon的多相机坐标系统中,首先需要将多个相机通
过标定来获取相机内外参数,包括相机的焦距、畸变系数等内参数,以及相机之间的相对位置和姿态(外参数)。

标定过程一般会使用标定板或者特定的物体进行拍摄,通过计算和估计的方法来求解相机的参数。

然后,在实际运行时,通过多个相机同时拍摄目标物体,在图像中利用特征点或者标志物来进行匹配和定位。

通过相机的内外参数,可以将图像中的像素点转换为世界坐标系中的三维点。

在进行多相机的坐标转换时,需首先建立一个参考相机,将参考相机的坐标系定义为世界坐标系。

接下来,通过计算和测量,可以计算出每个相机的相对位置和姿态,以及相机光学中心与世界坐标系之间的变换矩阵。

根据变换矩阵和相机的内外参数,可以将每个相机的图像像素点转换为世界坐标系中的三维点。

最后,通过三维坐标点的计算和处理,可以实现目标物体的定位和姿态的准确识别和追踪。

总的来说,基于Halcon的多相机坐标系统利用多个相机来进
行三维空间的测量和定位,通过标定获取相机参数,利用特征匹配和计算来实现对目标物体位置和姿态的准确识别和定位。

系统具有较高的精度和稳定性,可以广泛应用于机器视觉领域中的三维重建、定位和追踪等应用。

基于HALCON的双目立体视觉系统实现

基于HALCON的双目立体视觉系统实现

基于HALCON的双目立体视觉系统实现双目立体视觉系统是一种模拟人眼观察物体的视觉系统,通过两个摄像机模拟人眼的双眼观察物体的方式,获取物体的三维信息。

HALCON是一种广泛应用于机器视觉领域的开发工具,可以用于开发和实现双目立体视觉系统。

双目立体视觉系统通过两个距离较短的摄像机成像同一个场景,利用两个图像的差异来计算场景中物体的深度信息。

在HALCON中,实现双目立体视觉系统的关键步骤包括相机校准、图像获取、图像匹配以及深度计算。

首先,进行相机校准。

双目相机系统的校准是获取准确三维信息的基础,HALCON提供了相机标定工具来获取相机的内参和畸变参数。

通过使用标定板或者特定的标定物体拍摄一组图像,可以通过HALCON的相机标定工具获取相机的校准参数。

接下来,进行图像获取。

使用两个相机同时拍摄同一个场景的图像,获取左右两个相机的图像。

HALCON提供了图像处理的函数和工具,可以方便地读取和处理图像。

然后,进行图像匹配。

通过对左右两个相机的图像进行匹配,找到对应的视差点对。

HALCON提供了多种图像匹配算法,可以根据具体的应用需求选择合适的算法,例如基于相似度的匹配算法、基于特征点的匹配算法等。

最后,进行深度计算。

根据图像匹配得到的视差点对,可以通过三角测量方法计算物体的深度信息。

HALCON提供了三角测量的函数和工具,可以根据视差和相机间的基线距离计算出物体的深度。

除了基本的双目立体视觉系统实现,HALCON还提供了丰富的图像处理和计算机视觉函数,可以进行目标检测、目标跟踪、图像分割等进一步的应用开发。

双目立体视觉系统在智能制造、机器人导航、自动驾驶等领域具有广泛应用。

通过HALCON的支持,可以方便地实现双目立体视觉系统,并为各种应用场景提供高效可靠的解决方案。

总结来说,基于HALCON的双目立体视觉系统实现,需要进行相机校准、图像获取、图像匹配和深度计算等步骤。

HALCON提供了丰富的函数和工具,可以方便地实现这些步骤,并为双目立体视觉系统的应用提供强大的支持。

基于HALCON的双目立体视觉系统实现

基于HALCON的双目立体视觉系统实现

因此,只要能够找到空间中某点在左右两个摄像机像面上的相应点,并且通过摄像机标定获得图5 校正后的双目立体视觉系统1.3 双目立体视觉系统标定摄像机内参数的标定和单目视觉系统标定一致,双目立体视觉系统的标定主要是指摄像机的内部参数标定后确定视觉系统的结构参数R和T(即两个摄像机之间的位置关系,R和T分别为旋转矩阵和平移向量)。

一般方法是采用标准的2D或3D精密靶标,通过摄像机图像坐标与三维世界坐标的对应关系求得这些参数。

具体的标定过程如下:1、将标定板放置在一个适当的位置,使它能够在两个摄像机中均可以完全成像。

通过标定确定两个摄像机的内部参数以及他们的外部参数(R1、T1与R2、T2),则R1、T1表示左摄像机与世界坐标系的相对位置,R2、T2表示右摄像机与世界坐标系的相对位置。

2、假定空间中任意一点在世界坐标系、左摄像机坐标系和右摄像机坐标系下的非齐次坐标分别为xw、x1、x2,则:消去xw,得到: 两个摄像机之间的位置关系R、T可以用以下关系式表示:1.4 双目立体视觉中的对应点匹配由双目立体视觉系统原理可以看出双目立体视觉是建立在对应点的视差基础之上,因此左右图像中各点的匹配关系成为双目立体视觉技术的一个极其重要的问题。

然而,对于实际的立体图像对,求解对应问题极富挑战性,可以说是双目立体视觉中最困难的一步。

为了能够增加匹配结果的准确性以及匹配算法的速度,在匹配过程中通常会加入下列几种约束:(1)极线约束。

在此约束下,匹配点已经位于两副图像中相应的极线上。

(2)唯一性约束。

两副图像中的对应的匹配点应该有且仅有一个。

(3)视差连续性约束。

除了遮挡区域和视差不连续区域外,视差的变化都是平滑的。

(4)顺序一致性约束。

位于一副图像极线上的系列点,在另一幅图像中极线上有相同的顺序。

图像匹配的方法有基于图像灰度(区域)的匹配、基于图像特征的匹配和基于解释的匹配或者多种方法结合的匹配。

二.使用HALCON进行双目立体视觉测量本节以电路板高度测量为例,讲述在HALCON中如何方便快捷地实现高效双目立体视觉测量(图像为640*480)。

基于HALCON的机器视觉系统的研究与实现

基于HALCON的机器视觉系统的研究与实现

基于HALCON的机器视觉系统的研究与实现一、引言机器视觉是一种将图像处理和分析技术与计算机视觉相结合的技术,用于使计算机具备对物体进行辨识、判别、分析和认知的能力。

HALCON (High-Level-Application-Programming-Interface-C-Library-Object-Navigator)是一种功能强大的机器视觉库,广泛应用于工业自动化、智能交通、智能仓储等领域。

本文将基于HALCON进行机器视觉系统的研究与实现。

二、研究内容1.系统需求分析根据实际应用需求,对机器视觉系统的功能进行分析和定义,包括物体识别、定位、测量等功能。

同时,对系统的性能要求进行明确,例如识别准确率、速度要求等。

2.图像采集与预处理设计合适的图像采集系统,选择合适的相机设备,并进行图像采集与预处理。

预处理包括图像去噪、灰度化、滤波等操作,以提高后续处理的准确性和可靠性。

3.物体识别与定位算法4.系统性能测试与优化对已实现的机器视觉系统进行性能测试,包括准确性、速度、稳定性等指标进行评估。

根据测试结果,对系统进行优化与调整,提高系统的整体性能。

5.系统集成与应用将机器视觉系统与实际应用场景进行集成,根据系统需求进行相应的界面设计,方便用户对系统的操作与使用。

并根据实际应用需求,进行系统的功能扩展与升级。

三、实验与结果在本文的研究中,我们选择了一个工业自动化的应用场景,以汽车零件尺寸的测量为例,进行了机器视觉系统的研究与实现。

经过系统设计与实现,我们成功地实现了对汽车零件进行测量的功能。

系统在准确性、速度和稳定性等方面均达到了实际需求,并得到了应用方的认可与好评。

四、结论本文基于HALCON进行了机器视觉系统的研究与实现,实现了对汽车零件尺寸的测量功能。

通过实践应用,验证了HALCON的强大功能和可靠性。

在实际生产中,机器视觉系统具有广泛的应用前景,可以大大提高生产效率和产品质量。

同时,我们也意识到系统的改进与优化是一个持续的过程,需要不断地进行迭代和创新。

halcon与C#混合编程(三)数字识别

halcon与C#混合编程(三)数字识别

示例:数字识别要识别的图片:1: *读取图片2: read」mage(lmage, 'D:/MyFile/halco n/数字识别/l.jpg')3:4: *图像处理5: decompose3(lmage, ImageR, ImageG, ImageB)6: threshold (ImageG, Regio ns, 0, 183)7: conn ecti on (Regi ons, Conn ecti on)8:9: select_shape (Connection, SelectedRegions, 'area' , 'and' 7500)10:11: read_ocr_class_mlp( 'Document_0-9.omc' ,OCRHandle)halcon 源码:1987.72,12: do_ocr_multi_class_mlp(SelectedRegio ns,lmageG,OCRHa ndle. Class, Con fide nee)halc on1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:导出的C#代码://// File gen erated by HDevelop for HALCON/DOTNET (C#) Versio n 10.0//// This file is in ten ded to be used with the HDevelopTemplate or// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c#using System;using Halc on DotNet;publicpartialclass HDevelopExport{public HTuple hv_ExpDefaultWinHandle;// Mai n procedureprivatevoid acti on(){// Local iconic variablesHObject ho_lmage, ho_ImageR, ho_ImageG, ho_lmageB;HObject ho_Regions, ho_Connection, ho_SelectedRegions;// Local con trol variablesHTuple hv_OCRHa ndle, hv_Class, hv_Confidence;//Initialize local and output iconic variablesHOperatorSet.GenEmptyObj( HOperatorSet.GenEmptyObj( HOperatorSet.GenEmptyObj( HOperatorSet.GenEmptyObj( HOperatorSet.GenEmptyObj( HOperatorSet.GenEmptyObj( HOperatorSet.Gout ho_lmage);out ho_ImageR);out ho_ImageG);out ho_ImageB);out ho_Regi on s);out ho_C onn ecti on);out ho_SelectedRegi ons);//读取图片ho_Image.Dispose();39: HOperatorSet.Readlmage( out ho_lmage, 识别/l.jpg");40:41: 42: 43: 44: 45: // 图像处理ho_ImageR.Dispose();ho_ImageG.Dispose();ho_ImageB.Dispose();HOperatorSet.Decompose3(ho_lmage, outII D:/MyFile/halco n/数字ho_lmageR, outho_ImageG, out ho_ImageB4647484950515253);ho_Regi on s.Dispose();HOperatorSet.Threshold(ho_lmageG,ho_C onn ectio n.Dispose();HOperatorSet.C onnection( ho_Regions,out ho_Regio ns, 0,183);out ho_C onnection);ho_SelectedRegio ns.Dispose();HOperatorSet.SelectShape(ho_C onn ection,"area" , "and",outho_SelectedRegio ns,54: 1987.72, 7500);55:56: HOperatorSet.ReadOcrClassMlp( "Document_0-9.omc", out hv_OCRHa ndle);57: HOperatorSet.DoOcrMultiClassMlp(ho_SelectedRegio ns, ho_ImageG, hv_OCRHa ndle,5859606162636465666768697071727374757677 out hv_Class, out hv_C on fide nee);ho_lmage.Dispose();ho_lmageR.Dispose();ho_lmageG.Dispose();ho_lmageB.Dispose(); ho_Region s.Dispose(); ho_C onn ection.Dispose(); ho_SelectedRegion s.Dispose();publicvoid In itHalc on(){// Default sett ings used in HDevelopHOperatorSet.SetSystem( "do_low_error" , "false"); } 一一publicvoid Ru nH alco n(HTuple Window)78: hv_ExpDefaultWi nHan die = Win dow;79: actio n();80: }81:82: }83:C#工程:1: using System;2: using System.Collectio ns.Ge neric;3: using p onen tModel;4: using System.Data;5: using System.Drawi ng;6: using Syste m丄inq;7: using System.Text;8: using System.Wi ndows.Forms;9:10: using HalconDotNet;11:12:13: namespaceNumericalRecognition14: {15: publicpartialclass FormMain : Form16: {17: //增加代码:18: HDevelopExport HD = n ewHDevelopExport();19: string ImagePath;20:21: public FormMain()22: {23: In itializeComp onen t();24: btnRecognitionNumber.Enabled = false ;25: }26:27: privatevoid btnOpenlmage_Click( object sender, EventArgs e)28: {29: ope nFileDialog1.Filter = "JPEG 文件|*jpg*|BMP 文件|*.bmp*|TIFF 文件|*.tiff*" ;30:31: ope nF ileDialog1.RestoreDirectory = true ;32:33: ope nF ileDialog1.Filterl ndex34:btnRecognitionNumber.Enabled =true ;} }privatevoid btnRecognitionNumber_Click( object sender, EventArgs e) { _HD.NumberRecog nitio n();labNumber.Text = HD.hv_Class.ToStri ng(); btnRecognitionNumber.Enabled = false ;} }//halcon 导出的类publicpartialclass HDevelopExport {public HTuple hv_ExpDefaultWinHandle;HObject ho_Image, ho_ImageR, ho_ImageG, ho_ImageB; HObject ho_Regi ons, ho_C onnection, ho_SelectedRegi ons;// Local con trol variablesHTuple hv_OCRHa ndle, hv_C on fide nee; public HTuple hv_Class; publicvoid In itHalc on(){// Default sett ings used in HDevelopHOperatorSet.SetSystem( "do_low_error" , "false");} 一 一publicvoid ReadImage(HTuple Window, string ImagePath){42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77if 35 36 37 38 39 40 41 ImagePath); (ope nF ileDialog1.ShowDialog() == DialogResult.OK) ImagePath = ope nF ileDialog1.FileName; HD.Readlmage(hWi ndowC on trol1.Halco nWin dow.hv_ExpDefaultWi nHan die = Win dow; //In itialize local and output ico nic variablesHOperatorSet.Ge nEmptyObj( out ho_lmage); //读取图片 ho_lmage.Dispose(); HOperatorSet.Readlmage( out ho_lmage, ImagePath); HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWi nHan dle); 87: } 88:89: publicvoid NumberRecognition() 90: { 91: HOperatorSet.Ge nEmptyObj( 92: HOperatorSet.Ge nEmptyObj( 93: HOperatorSet.Ge nEmptyObj( 94: HOperatorSet.Ge nEmptyObj( 95: HOperatorSet.Ge nEmptyObj( 96: HOperatorSet.Ge nEmptyObj( 97: //图像处理98: ho_ImageR.Dispose(); 99: ho_ImageG.Dispose(); 100: ho_ImageB.Dispose();107:108: ho_SelectedRegio ns.Dispose();109:HOperatorSet.SelectShape(ho_C onn ecti on, out 112 out hv_OCRHa ndle); 113: HOperatorSet.DoOcrMultiClassMlp(ho_SelectedRegio ns,102: );103: ho_Regi on s.Dispose();104:HOperatorSet.Threshold(ho_lmageG, out ho_Regions, 0183);105:ho_C onn ectio n.Dispose();106: HOperatorSet.C onnection( ho_Regi ons, out101: HOperatorSet.Decompose3(ho_lmage, out ho_ImageR, outho_ImageG, out ho_ImageB ho_C onn ectio n); 787980 818283 84 85 86 out ho_ImageR); out ho_ImageG); out ho_ImageB); out ho_Regi on s); out ho_C onnection); out ho_SelectedRegio ns); 110: 111:1987.72, 7500);"Document_0-9.omc", ho_SelectedRegions, "area" , "and", HOperatorSet.ReadOcrClassMlp(ho_ImageG, hv_OCRHa ndle,114: out hv Class, out hv Con fide nee);115:116:117: ho_lmage.Dispose();118: ho_lmageR.Dispose();119: ho_lmageG.Dispose();120: ho_lmageB.Dispose();121: ho_Regio ns.Dispose();122: ho_C onn ecti on .Dispose。

基于halcon机器视觉的齿轮参数测量系统

基于halcon机器视觉的齿轮参数测量系统
自动化程度高、成本低、速度快、无损伤等特点,
在齿轮测量方面具有一定的可行性和实用性。

引言:齿轮是一种可连续啮合,并能传递定比运动和动力的机械零件。由于齿轮的

形状复杂,参数众多,需要检测的项目也较多,导致对齿轮精度检测设备的要求也不断
提高。传统齿轮测量技术多采用接触式测量,测量精度高但效率低,容易因测量人员
图像的获取及图像处理、参数测量等工作。硬件平台部分由工作台、工业相机、工业镜 头、面光源、玻璃载物台、计算机及输出设备构成,图1为系统硬件平台示意图。为了获 取高质量的齿轮图像,系统采用彩色面阵CCD工业相机和光学分辨率较大的镜头。为了获 取到齿轮的准确轮廓图,系统采用背光源照明,降低了目标表面形成亮点的概率,使获
图像处理是将采集到的齿轮图像经过灰度化、平滑滤 波、阈值分割、边缘识别等步骤获取图像中齿轮边缘信息 的过程。彩色图像变成灰度图像可用rgb3_to_gray算子将 彩色图像三个颜色分开成三个图像输入得到灰度图像,图 像滤波可先用info_smooth算子设置平滑滤波器信息,然后 用smooth_image算子对灰度图像进行滤波去噪。threshold 算子可快速实现对图像阈值分割得到边缘信息,然后用 connection算子分离区域中相连接的部分把区域整体变成独 立部分,再用fill_up填充区域中的孔或缝隙形成新的完整 区域,最后根据区域致密度形状系数compactness来选择齿 轮轮廓区域,去除其他干扰区域。区域分割轮廓识别结果如 图5所示。
图5 轮廓识别
• 24 •
图3 齿轮图像
图4 Halcon标定板
3 齿轮参数测量 齿轮的主要几何参数包括齿顶圆直径、齿根圆直
径、分度圆直径以及齿数、模数、齿距等。在图像处理 中得到了齿轮的轮廓区域,在Halcon中可以很方便的用 smallest_circle来提取齿轮区域的最小内切圆即齿顶 圆,可得到齿轮中心位置及齿顶圆直径。用inner_circle 算子可提取齿轮区域内部最大外切圆即齿根圆,可得到齿

基于halcon的机器视觉试验平台的设计与研究

基于halcon的机器视觉试验平台的设计与研究

基于HALCON的机器视觉系统的研究和实现摘要近年来,机器视觉系统以其高效率、高可靠、低成本的特点在国外取得了广泛的使用。

机器视觉系统适用于众多领域,例如工业自动化、医药业、制造业、农业等,弥补了人类视觉的很多不足。

本文采用德国MVTec公司的专业机器视觉软件HALCON来开发机器视觉系统,提出了相关机器视觉实现方法,并且在机器视觉实验平台上完成了一个弹簧片检测任务。

目前关注较多的是机器视觉系统的硬件部分,而机器视觉软件部分关注较少,一个先进的机器视觉系统除了具有高性能的硬件外,还需要有高性能的软件,虽然说许多常见的开发软件例如Mircosoft的Visual Studio、NI的LabWindows\CVI 等等都可以开发机器视觉系统,但是开发周期比较长,针对性较弱,程序的复杂程度较高。

而采用HALCON作为机器视觉和图像处理核心软件,不仅大大缩短了开发周期,降低了开发难度,而且可以参考HALCON提供的众多机器视觉和图像处理例程来针对具体的任务做具体开发。

文章的第一章研究了机器视觉系统的组成、使用现状和发展,并且对机器视觉软件HALCON做了概述。

第二章根据相关要求,选择合适的硬件单元,设计和搭建了VS-ZM1200机器视觉实验平台。

第三章研究了机器视觉中常用的一些图像处理技术,重点讨论了在弹簧片检测任务中所采用的图像处理技术和算法,如图像的增强,分割,边缘检测等。

第四章研究了机器视觉软件,重点研究了HALCON,并且对在Visual C++开发环境下如何使用HALCON编写的程序做了讨论。

第五章介绍了在VS-ZM1200机器视觉实验平台上,使用HALCON和Visual C++开发的一套弹簧片检测系统,该系统完成关于弹簧片的尺寸参数测量和外观参数判别的任务。

第一章:绪论1.1机器视觉概述人类在征服自然、改造自然和推动社会进步的过程中,为了克服自身能力、能量的局限性,发明和创造了许多机器来辅助或代替人类完成任务。

基于芯片视觉检测的测量系统控制系统研究

基于芯片视觉检测的测量系统控制系统研究

基于芯片视觉检测的测量系统控制系统研究摘要:人工智能带动了机器视觉和自然语言处理的发展,工业自动化的健全更是带动了电子零部件及其检测技术的发展。

本设计将基于机器视觉技术主要运用Halcon算法和C#语言,设计出一款基于芯片视觉检测的测量系统。

本文主要研究内容为控制系统设计部分,主要涵括了硬件设备的选型、调试;基于MVS客户端对于工业相机的拍图测试;相机触发方式的考虑;基于Arduino使用UNO 板通过驱动器对于步进电机的控制最终得以显示出各引脚间及主体的相对距离, 以及相对芯片的合格率。

关键字:机器视觉;C#;芯片测量1引言随着经济的全球化发展和现今时代的技术革命,特别是计算机和信息技术的发展和革命创新,现代制造业及相关企业的进步日益显著。

现代制造业重中之重的标志是精度优、速度快、自动化程度高、批量大和标准性强。

在生产线上,还有精密部件的检查和测量,这正是确保产出的质量的最重要步骤。

工业自动化的发展目前伴随着信息时代的发展。

为适应电子信息产业的蓬勃发展,有关电力电子行业的元件的封装的方法和技术现在正朝着高速、微观和高性能的水平趋近。

表面贴装技术是现今世界范围内使用量最多使用范围最广的密封操作。

这种现今最普遍的的封装方法造就了一种非常重要的产品,也就是芯片。

在芯片的日常制造的途中,针对芯片的尺寸测量和缺陷等问题的检测正成为一个越来越重要的步骤。

芯片测量技术在整个芯片制造过程中发挥出的作用愈发显著。

现今,这主要是通过人工用眼睛进行视觉测量和激光回波测量出结果。

这两种测量方法都是非物质的,导致测量误差较大,而长时间单调重复工作会引起工人的视觉疲劳,进而导致新的不稳定性因素;此外,恶劣的工作环境会对雇员的健康形成不同程度的损害。

通过这点可得,上述方式造成的危害不可逆,并且也已经不能符合现今制造企业发展的需要。

本设计的构想为了引入机器视觉的可视化测量,灵活、实时、精度高、无接触。

为此,基于自身知识储备及研究方向的探索,设计出一款智能设备及控制系统,针对芯片表面非接触使用,且减轻人工负担,来进行芯片主体及引脚相对长度的测量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为了提高电子元件尺寸测量的精度和效率,借 鉴机器视觉的技术方法,本文提出并设计了电子元 件视觉测量系统,在研究了 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 库函数只对子程序调用方式有效。
相关文档
最新文档