




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.11.2机器视觉HALCON介绍 HALCON编程基础与工程应用第1章 机器视觉和HALCON机器视觉软件1.1 机器视觉 1.1.1 机器视觉简介HALCON编程基础与工程应用 机器视觉(Machine vision)是一项综合技术,包括图像处理、机械工程技术、电气控制技术、光源照明、光学成像、传感器、模拟与数字视频技术、计算机软硬件技术(图像增强和分析算法、图像采集卡、I/O卡等)。一个典型的机器视觉应用系统包括图像捕捉、光源系统、图像数字化模块、数字图像处理模块、智能判断决策模块和机械控制执行模块。1.1 机器视觉 1.1.1 机器视觉简介HALCON编程基础与工程应用1.1 机器视
2、觉 1.1.1 机器视觉简介HALCON编程基础与工程应用1.1.2 机器视觉关键技术与发展HALCON编程基础与工程应用1.1 机器视觉1.机器视觉系统基本构成 一个典型的工业机器视觉系统包括:光源、镜头(定焦镜头、变倍镜头、远心镜头、显微镜头)、相机(包括CCD相机或COMS相机)、图像处理单元(或图像采集卡)、图像处理软件、监视器、通讯单元及输入输出单元等。1.1.2 机器视觉关键技术与发展HALCON编程基础与工程应用1.1 机器视觉2.机器视觉主要关键技术 机器视觉技术,是一门涉及人工智能、神经生物学、心理物理学、计算机科学、图像处理、模式识别等诸多领域的交叉学科。机器视觉主要用计算
3、机来模拟人的视觉功能,从客观事物的图像中提取信息,进行处理并加以理解,最终用于实际检测、测量和控制。机器视觉技术最大的特点是速度快、信息量大、功能多。1.1.2 机器视觉关键技术与发展HALCON编程基础与工程应用1.1 机器视觉3.机器视觉的发展 机器视觉技术是计算机学科的一个重要分支,自起步发展至今,其功能以及应用范围随着工业自动化的发展逐渐完善和推广。 20世纪50年代开始研究二维图像的统计模式识别。 60年代Roberts开始进行三维机器视觉的研究。 70年代中,MIT人工智能实验室正式开设“机器视觉”的课程。 80年代开始,开始了全球性的研究热潮,机器视觉获得了蓬勃发展,新概念、新理
4、论不断涌现。1.2.1 HDevelop介绍HALCON编程基础与工程应用1.2 HALCON介绍1.集成开发环境-HDevelop HALCON提供交互式的编程环境HDevelop,可在Windows,Linux,Unix下使用,使用HDevelop可使用户快速有效的解决图像处理问题。1.2.1 HDevelop介绍HALCON编程基础与工程应用1.2 HALCON介绍1.2.1 HDevelop介绍HALCON编程基础与工程应用1.2 HALCON介绍 HDevelop能直接连接采集卡和相机,从采集卡、相机或者文件中载入图像,检查图像数据,进而开发一个视觉检测方案,并能测试不同算子或者参数
5、值的计算效果,保存后的视觉检测程序,可以导出以C+、C#、C、Visual Basic,或者VB.NET支持的程序,进行混合编程。 HDevelop编程方式具有的优点是:(1)很好的支持所有HALCON 算子;(2)方便检查可视数据;(3)方便选择、调试和编辑参数;(4)方便技术支持。2.标准的开发流程HALCON编程基础与工程应用1.2 HALCON介绍3.交互式并行编程环境HALCON编程基础与工程应用1.2 HALCON介绍 HALCON提供支持多CPU处理器的交互式并行编程环境Paralell Develop, 其继承了单处理器版HDevelop的所有特点,在多处理器计算机上会自动将数
6、据(比如图像)分配给多个线程,每一个线程对应一个处理器,用户无需改动已有的HALCON程序,就立即获得显著的速度提升。 并行HALCON不仅是线程安全的,而且可以多次调用,因此,多个线程可在同一时刻同时调用HALCON操作。此特性使得机器视觉应用软件可以将一个任务分解,在不同的处理器上并行处理,并行HALCON可以使用户使用最新的超级线程技术。1.2.2 HALCON功能及应用简介HALCON编程基础与工程应用1.2 HALCON介绍1BLOB分析 BLOB包括标准阈值分割,动态分割以及其他附加的图像分割算子,HALCON可以快速实现BLOB分析。2形态学 HALCON可以基于任意结构元素针对
7、Region和image的腐蚀、膨胀、开/闭运算。3图像特征转换为Region/XLD特性 HALCON独特的数据结构Region/XLD可以保证图像处理的快速准确。4图像的运算 HALCON为了实现图像处理的各种目的可以进行图像的代数运算,逻辑运算,几何运算。1.2.2 HALCON功能及应用简介HALCON编程基础与工程应用1.2 HALCON介绍5傅立叶变换实现图像的空间域和频域之间的变换。6标定利用HALCON本身的标定板,通过几个内外摄像头参数实现快速标定。7匹配基于相关性匹配,基于形状匹配,基于灰度值匹配等等;即使目标发生旋转、放缩、局部变形、部分遮挡或者光照有非线性变化,HALC
8、ON利用XLD匹配技术可实时地有效、准确地找到目标。8测量HALCON提供有1D测量、2D测量、3D测量,HALCON边缘提取输出正像素轮廓,达到最高精度,保证了测量的精准性。第2章 HALCON编程基础HALCON软件的编程环境Hdevelop是交互式的,它的操作窗口和编程界面简洁、易操作。本章主要介绍Hdevelop的使用,并介绍HALCON的控制语句,以及编程环境下图像的读取、显示和转换。 HALCON编程基础与工程应用2.4HDevelop应用界面介绍HALCON控制语句 HALCON算子 HALCON图像读取、显示和转换Blob分析第2章 HALCON编程基础HAL
9、CON编程基础与工程应用2.1 HDevelop应用界面介绍 HDevelop图形组件是开始视觉处理算法的一个很好的工具,其类似于VC、VB、Delphi等编译环境,它有自己的交互式界面,可以编译和测试视觉处理算法,可以方便查看处理结果,也可以导出算法代码。HALCON编程基础与工程应用1. HDevelop预览HALCON安装完成后,点击图标运行HALCON软件,下面介绍其主要的界面。1.主界面整个界面分为标题栏、菜单栏、工具栏、状态栏和四个活动界面窗口,四个活动界面窗口分别是图像变量窗口、算子窗口、变量窗口和程序窗口,如图2-1所示。如果窗口排列不整齐,可以选择菜单栏窗口排列窗口,重新排列
10、窗口。图 2-1 HALCON主界面HALCON编程基础与工程应用1. HDevelop预览2.菜单栏菜单栏包含所有HDevelop的功能命令,单击打开后有下拉菜单,如图2-2所示。图2-2 菜单栏4.状态栏状态栏显示程序的执行情况,如图2-4所示。图2-3 工具栏3.工具栏工具栏包含了一系列常用功能的快捷方式,如图2-3所示。图2-4 状态栏HALCON编程基础与工程应用1. HDevelop预览5.打开一个例程HALCON提供了大量基于应用的示例程序,下面打开一个HALCON自带例程,简单了解一下HALCON程序的结构。从菜单栏文件浏览程序打开一个例程,比如打开ball.hdev,如图2-
11、5,2-6所示。点击工具栏“运行”工具图标,运行程序,结果如图2-7所示。图2-5 浏览例程HALCON编程基础与工程应用1. HDevelop预览图2-7 例程运行结果图2-6 打开例程HALCON编程基础与工程应用 2. HDevelop窗口介绍1.HDevelop算子窗口算子窗口显示的是算子的重要数据,包含了所有的参数,各个变量的型态,以及参数数值,如图2-8所示。这里会显示参数的默认值,以及可以选用的数值。每一个算子都有联机帮助。另一个常用的是算子名称的查询显示功能,在一个combo box里,只要键入部分字符串甚至开头的字母,即可显示所有符合名称的算子供选用,如图2-9所示。图2-8
12、 算子窗口HALCON编程基础与工程应用2. HDevelop窗口介绍2.HDevelop程序窗口 程序窗口是用来显示一个HDevelop程序。它可以显示整个程序或是某个运算符。窗口左侧是一些控制程序执行的指示符号。HDevelop刚启动时,可以看到一个绿色箭头的程序计数器(program counter,简称 PC),一个插入符号,还可以设一个断点(breaking point),窗口右侧显示程序代码,如图2-10所示。图2-9 算子查询HALCON编程基础与工程应用2. HDevelop窗口介绍在程序编辑窗口点击右键,在下拉菜单显示程序运行调试中的一些设置,如图2-11所示。图2-10 程
13、序窗口图2-11 程序调试设置HALCON编程基础与工程应用2. HDevelop窗口介绍HDevelop启动以后,就可以开始从程序窗口输入,逐步建立一个HDevelop 程序。要在程序中新增一行,比如加一个算子,有以下两个步骤。(1)首先要将光标放在新增的地方,用键盘的Shift键加上的鼠标左 键,点在要加入的地方,然后从算子菜单中选择,或是由算子窗口来选用想要加入的数据。(2)新的算子会出现在算子窗口中,包含它的参数等数据,此时按 下“输入”,就会将它加入程序代码中,成为新增的一行;如果按下“确定”,除了程序代码会新增以外,同时也会执行程序。如果按的是“应用”,算子不会新增到程序中,但是会
14、被执行,这样就可以方便又有效的测试修改参数的结果。如果只要执行某一行,可以将程序计数器(PC)置于要执行的那行前,再用鼠标左键在该行前单击,然后按HDevelop工具栏的“单步跳过函数”,如果单击“运行”,则程序代码都会执行,直到一个断点或是按“停止”将其中止。HALCON编程基础与工程应用2. HDevelop窗口介绍3. HDevelop变量窗口变量窗口显示了程序在执行时产生的各种变量,包括图像变量和控制变量,如图2-12所示。在变量上用鼠标双击,即可显示变量值,如图2-13所示。如果变量值是图像变量,鼠标双击,会显示在图形窗口里。图2-12 变量窗口图2-13 变量值HALCON编程基础
15、与工程应用2. HDevelop窗口介绍 4.HDevelop图形窗口图形窗口用来显示图像化变量数据,如图2-14所示。 图2-14 图形窗口图2-15 可视化菜单(1)图形窗口可视化图形窗口可视化的方式可以依据需要来调整,相关功能位于“可视化”菜单下,如图2-15所示。可以开启数个图形窗口,并且自行选用要用的窗口。HALCON编程基础与工程应用2. HDevelop窗口介绍图2-16 图形窗口的3D模式(2)图形窗口的3D模式点击图2-14图形窗口右上角“3D点图模式”,可以将图形窗口变为3D模式,如图2-16所示。HALCON编程基础与工程应用2. HDevelop窗口介绍 图2-17 灰
16、度直方图(3)HDevelop灰度直方图从菜单栏可视化菜单灰度直方图,打开灰度直方图功能窗口,进行设置,如图2-17所示。HALCON编程基础与工程应用2. HDevelop窗口介绍 图2-18 特征直方图(4)HDevelop特征直方图从菜单栏可视化菜单特征直方图,打开特征直方图功能窗口,进行设置和编辑,并可根据编辑的直观结果,插入程序代码。如图2-18所示。HALCON编程基础与工程应用3. HDevelop菜单介绍 图2-19 编辑菜单1.编辑菜单编辑菜单用于HDevelop编程时的编辑使用,如图2-19所示。HALCON编程基础与工程应用3. HDevelop菜单介绍 图2-20 执行
17、菜单2.执行菜单执行菜单用于程序调试时的设置及运行,如图2-20所示。HALCON编程基础与工程应用3. HDevelop菜单介绍 图2-21 过程菜单3.过程菜单过程菜单用于HDevelop中创建一个过程或者开发新的算子,如图2-21所示。HALCON编程基础与工程应用3. HDevelop菜单介绍 图2-22 助手菜单4.助手菜单打开菜单栏助手,助手菜单是特有的快速原型化工具,具有直观可视的特点,可以进行数据分析和特征检测,包括图像获取助手、匹配助手、摄像机标定助手和测量助手。如图2-22所示。HALCON编程基础与工程应用2.2 HALCON控制语句 HALCON提供的控制流与C/C+的
18、用法类似。一般成对存在,一个是开始的标志,一个是结束的标志。也就是说有if就有endif,有while就有end while。控制语句类型主要由以下几种组成:(1)if条件语句 ;(2)switch多分支条件语句 ;(3)while循环语句;(4)for循环语句;(5)中断语句。HALCON编程基础与工程应用1. 条件语句1if条件语句If条件语句有三种常用的表达形式,下面一一列出。(1)if(表达式) 语句组1 endif语义为:判断表达式的值,如果表达式的值非零则执行语句组1,否则直接转到endif。【例2-1】if条件语句实例1*赋值cont:=2 *判断变量cont的值是否大于等于1,
19、大于等于1就执行语句cont:=cont-1if(cont=1)cont:=cont-1HALCON编程基础与工程应用1. 条件语句*if条件语句结束标志endif(2)if (表达式) 语句组1 else 语句组2 endif语义为:判断表达式的值,如果表达式的值非零则执行语句组1,否则执行语句组2。【例2-2】if条件语句实例2cont:=2 *判断变量cont的值是否大于等于1,大于等于1就执行语句cont:=cont-1HALCON编程基础与工程应用1. 条件语句if(cont=1)cont:=cont-1*cont的值小于1就执行语句cont:=cont+1elsecont:=con
20、t+1*if条件语句结束标志endif(3)if (表达式1) 语句组1 elseif (表达式2) 语句组2 else 语句组3 endif HALCON编程基础与工程应用1. 条件语句语义为:判断表达式的值,表达式1的值非零则执行语句组1。表达式1的值为零而表达式2的值非零则执行语句组2,两个表达式的值都为零则执行语句组3。【例2-3】if条件语句实例3cont:=2 *判断变量cont是否大于等于1,大于等于1就执行语句cont:=cont-1if(cont=1)cont:=cont-1*判断变量cont是否小于等于-1,小于等于-1就执行语句cont:=cont+1elseif(con
21、t=-1)cont:=cont+1*如果cont大于-1小于1执行语句 cont:=cont+2HALCON编程基础与工程应用1. 条件语句else cont:=cont+2*if条件语句结束标志endif 2switch多分支条件语句当if.else条件语句使用多层嵌套可以用switch多分支条件语句代替。格式:switch(条件) case 常量表达式1: 语句1 break . HALCON编程基础与工程应用1. 条件语句 case 常量表达式n: 语句n break default : 语句n+1 endswitch语义为:将条件值与其后的常量表达式的值逐个比较,当条件的值与其后的某个
22、常量表达式的值相等时就执行常量表达式后面的所有语句。每个case语句只是一个入口标号,所以不能确定执行的终止点,如果只想执行一条case语句,则应该在case语句的最后使用break语句结束switch条件语句。如果条件值与所有的常量表达式的值均不相等则执行default后面的语句。switch语句中所有常量表达式的值应该是不重复的常量。因为switch语句无法处理浮点数所以条件值必须是整数。如果条件选项涉及取值范围、浮点数或两个变量的比较则应该使用if.else条件语句。 HALCON编程基础与工程应用1. 条件语句 【例2-4】switch条件语句实例I:=5*I的值与其后的常量表达式的值
23、逐个比较switch(I)case 1:I:=I-3*中断语句,跳出switch语句break*I的值与常量表达式的值相等,执行后面的语句case 5:I:=I+5break*I的值与其后所有常量表达式的值都不相等则执行default语句default:I:=2*IHALCON编程基础与工程应用1. 条件语句*switch语句结束标志endswitchHALCON编程基础与工程应用2. 循环控制语句1while循环语句格式:while (条件) 循环体语句 endwhile语义为:首先对条件值进行判断,若条件值非零则重复执行循环语句,直到条件值为零时退出while循环。若条件值始终不为零,则w
24、hile循环容易成为死循环,这时候需要使用break语句跳出循环。【例2-5】while循环语句实例In:=1 In_Sum:=0*判断In是否小于等于100,小于等于100则执行循环体while(In=100)HALCON编程基础与工程应用2. 循环控制语句*求和In_Sum:=In_Sum+In*自加10In:=In+10*while语句结束标志 endwhile2for循环语句格式:for (Index := start to end by step) 循环体 endforFor循环语句是HALCON最重要的循环结构,通过控制变量的开始值至结束值来进行循环,start为Index变量的开
25、始值,end为结束值,step为步长值。首先判断Index变量的开始值是否小于结束值,如果小于则执行循环体,否则循环结束。执行完循环体以后把Index的值加步长值HALCON编程基础与工程应用2. 循环控制语句作为Index的新值,判断Index的新值是否小于结束值。如果小于则继续执行循环体,否则循环结束,依次执行直到Index的新值大于结束值则循环结束。【例2-6】for循环语句实例I:=0*循环变量I从1到10,每次增加1for J:=1 to 10 by 1*每次循环判断J是否小于5,小于5则跳过这次循环if(J5)breakendif*如果J=3跳过此次循环HALCON编程基础与工程应
26、用3. 中断语句if(J=3)continue*if语句结束标志endif*求和I:=I+J*for语句结束标志endforHALCON编程基础与工程应用2.3 HALCON算子1 .HALCON算子及算子编辑窗口HALCON算子的基本结构为:算子(图像输入:图像输出:控制输入:控制输出:)HALCON算子中的四种参数被三个冒号依次隔开,分别是:图像输入参数,图像输出参数,控制输入参数,控制输出参数。一个算子中可能这四种参数不会都存在,但是参数的次序不会变化。HALCON中的输入参数不会被算子更改,只被算子使用,算子只能更改输出参数。算子举例:threshold(Image:Region:Mi
27、nGray,MaxGray: )Threshold算子里面Image为图像输入参数;Region为图像输出参数;MinGray和MaxGray为控制输入参数。由此看出调用这个算子必须输入一个图像参数和两个控制参数才能输出一个图像参数。下面介绍一下HALCON算子的编辑窗口,编辑窗口如图2-23和图2-24所示。HALCON编程基础与工程应用1 .HALCON算子及算子编辑窗口图2-23 算子编辑窗口1HALCON编程基础与工程应用1 .HALCON算子及算子编辑窗口图2-24 算子编辑窗口2HALCON编程基础与工程应用1 .HALCON算子及算子编辑窗口通过算子编辑窗口我们看到每条算子都有特
28、定的颜色,我们可以通过打开参数用户窗口看到编辑窗口中各算子对应的颜色如图2-25所示。通过菜单栏编辑参数选择程序窗口打开程序窗口。一般情况下,语句的颜色分类: 1)褐色:控制和开发算子;2)蓝色:图像获取和处理算子;3)浅蓝色:外部函数;4)绿色:注释。HALCON编程基础与工程应用1 .HALCON算子及算子编辑窗口在参数用户窗口可以通过对话框修改编辑窗口算子显示的颜色、字体、HDevelop系统语言、布局。布局主要是指四个活动界面窗口排列的位置,布局说明如图2-26所示。图2-25 程序窗口参数HALCON编程基础与工程应用1 .HALCON算子及算子编辑窗口图2-26 布局说明HALCO
29、N编程基础与工程应用2. 算子查询2算子查询 算子的帮助窗口包含了所有HALCON算子的详细说明,可以通过按F1快捷键打开HALCON算子的帮助窗口,也可以通过下面的步骤打开帮助窗口:菜单栏帮助帮助。算子名称具有查询显示作用,通过算子查找对话框键入全部或部分算子名称,在弹出的列表里点击想查找的算子,帮助窗口右侧会显示算子的具体说明,如图2-27所示。具体说明包括:算子名称:算子的英文名称以及大致功能;算子签名:带有算子参数、分隔符的算子签名;算子描述:描述算子功能和各参数意义;算子参数:讲解各参数类型和属性;HDevelop例程:用到此算子的例程,点击可查看例程。HALCON编程基础与工程应用
30、2. 算子查询图2-27 帮助窗口HALCON编程基础与工程应用3. 算子编辑3. 算子编辑 算子编辑过程常使用算子窗口来建立HDevelop程序,算子窗口包含了各算子的参数及参数取值。使用算子窗口能够直接对算子参数的取值进行合理选择。 下面以新建threshold程序为例,说明如何使用算子窗口建立某一行 HDevelop 程序。 使用算子窗口建立某一行 HDevelop 程序的步骤为:单击鼠标使光标定位到要创建程序的位置,通过菜单栏算子窗口输入算子和函数对话框中键入全部或部分算子名称,找到需要编辑的算子回车确认打开算子窗口选择合适的算子参数点击确定。输入算子和函数对话框如图2-28所示。HA
31、LCON编程基础与工程应用3. 算子编辑图2-28 输入算子和函数对话框 一般来说打开算子窗口以后需要对算子的四个参数(图像输入参数,图像输出参数,控制输入参数,控制输出参数)进行选择。此处threshold算子只需要对前3个参数进行选择,各参数的描述如图2-29所示。HALCON编程基础与工程应用3. 算子编辑图2-29 算子窗口参数描述 使用下拉列表直接选择threshold算子的图像输入参数与图像输出参数名称,通过下拉列表对输入参数的数值进行选择,如图2-30所示。HALCON编程基础与工程应用3. 算子编辑图2-30 控制输入参数数值选择 算子编辑有关的快捷键:F3为激活所选程序行,F
32、4为注销所选程序行。HALCON编程基础与工程应用4. 算子更改4算子更改HDevelop程序编写过程中可以利用算子窗口对某一行的算子进行更改。算子更改步骤为:双击算子名称选中需要更改的算子右键打开算子窗口,在弹出的算子窗口中修改参数,算子更改如图2-31所示。图2-31 算子更改HALCON编程基础与工程应用5. 算子运行5 .算子运行执行程序时如果只要执行某一行需要选中执行行的前一行,右键选择程序计数器,将执行标示定位到要执行的前一行,通过菜单栏执行单步跳过程序执行某一行。多行的执行可以通过菜单栏执行运行执行接下来的所有程序代码,直到遇到断点或是遇到Stop算子才会中止程序。算子运行有关的
33、快捷键:F2为重置程序执行,F5为程序运行,F6为单步跳过函数,F7为单步跳入函数,F8为单步跳出函数。HALCON编程基础与工程应用2.4 HALCON图像读取、显示和转换1. HALCON图像读取下面介绍图像读取的三种方式。1利用read_image算子读取图像算子read_image(:Image:FileName:)中Image为读取的图像变量名称,FileName为图像文件所在的路径,HALCON支持多种图像格式。利用read_image算子读取图像有下面三种方式:(1)利用快捷键调用read_image算子读取图像,读取图像的步骤为:按CTRL+R快捷键打开读取图像对话框选择文件名
34、称所在的路径及变量名称选择语句插入位置点击确定,快捷键读取图像如图2-32所示。HALCON编程基础与工程应用1. HALCON图像读取图2-32 快捷键读取图像HALCON编程基础与工程应用1. HALCON图像读取图2-33 算子窗口读取图像(2)使用算子窗口调用read_image算子,选择文件名称所在的路径及变量名称,算子窗口读取图像如图2-33所示。HALCON编程基础与工程应用1. HALCON图像读取(3)利用for循环读取同一路径下的多张图。首先声明一个Tuple数组保存文件名及路径,然后利用for循环依次读取Tuple数组保存路径下的图像。【例2-8】for循环读取图像实例*
35、声明数组ImagePath:= *将文件名及路径保存到数组ImagePath0:=fin1.png ImagePath1:=fin1.png ImagePath2:=fin1.png *循环读取图像for i:=0 to 2 by 1 read_image(Image,ImagePathi) *for循环结束标志endforHALCON编程基础与工程应用1. HALCON图像读取2利用采集助手批量读取文件夹下所有图像利用采集助手批量读取文件夹下所有图像的步骤为: 菜单栏助手打开新的Image Acquisition资源图像文件选择路径代码生成插入代码,选择文件夹路径如图2-34,生成批量读取图
36、像的代码如图2-35所示。图2-34 选择文件夹路径HALCON编程基础与工程应用1. HALCON图像读取图2-35 生成批量读取图像的代码HALCON编程基础与工程应用1. HALCON图像读取【例2-9】利用采集助手读取图像实例 *遍历文件夹 list_files (C:/Users/Public/Documents/MVTec/HALCON-13.0/examples/images/bicycle, files,follow_links, ImageFiles) *筛选指定格式的图像tuple_regexp_select (ImageFiles, .(tif|tiff|gif|bmp|
37、jpg|jpeg|jp2|png)$,ignore_case, ImageFiles)* 依次读取图像for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFilesIndex)*显示图像dev_display(Image)endforHALCON编程基础与工程应用1. HALCON图像读取算子讲解:(1)list_image_files (:ImageDirectory,Extensions,Options: ImageFiles)作用:遍历文件夹;ImageDirectory: 文件夹路径;Extensions:文件扩
38、展名,如tif|tiff|gif|bmp|jpg|jpeg|jp2|png等;Options:搜索选项,如表2-1所示。 表2-1 搜索选项files指定搜索的格式为文件directories指定搜索格式为文件夹recursive指定可以遍历文件夹下的文件max_depth 5指定遍历的深度max_files 1000指定遍历的最大文件数目表2-1 搜索选项ImageFiles: 文件名数组。HALCON编程基础与工程应用1. HALCON图像读取(2)tuple_regexp_select(:Data,Expression:Selection)作用:筛选指定格式的图像;Data: 输入的文件
39、名数组;Expression: 文件筛选规则表达式;Selection: 筛选出的文件名数组。HALCON编程基础与工程应用2. HALCON图像显示1图形窗口默认的图形窗口尺寸为512*512,因此当图像尺寸不同时显示在图像窗口上会变形,要看到无变形的图像的步骤为:菜单栏可视化图像尺寸适应窗口,即可自动调整窗口。通常使用HDevelop算子dev_open_window(:Row,Column,Width,Height,Background:WindowHandle)来新增一个图形窗口。算子参数Row、Column为窗口起始坐标(默认值都为零),参数Width、Height是指窗口的宽度和高
40、度(默认值都为512),Background为窗口的背景颜色(默认为“black”),WindowHandle是指窗口句柄。新建窗口时如果不知道窗口的确定尺寸,可将窗口的高度和宽度都设置为-,设置为-表示窗口大小等于最近打开的图像大小,具体算子为:dev_open_window( 0,0,-1,-1,black,WindowHandle)。HALCON编程基础与工程应用2. HALCON图像显示打开HDevelop的变量窗口,双击图像变量目录下已存在的图像,图像就会显示在图形窗口。图形窗口显示的图像可以进行缩放,直接把鼠标放到要进行缩放的区域,滑动鼠标中间滚轮进行缩放操作,要恢复原有尺寸只需要
41、在图形窗口点击“适应窗口”。我们也可以通过菜单栏可视化设置参数缩放,对显示的图像进行缩放,在想要放大的区域点击放大或者缩小按钮,要回复原有尺寸直接点击“重置”按钮。2图像显示HDevelop中显示图像通常使用dis_display算子,格式为:dev_display(Object:)。运行模式下运行算子时图形窗口会实时更新,如果只想通过图像显示算子在图形窗口显示某些图像(image,region或xld)就可以关闭窗口的更新。我们可以通过调用dev_update_window(off)语句关闭窗口的更新。也可以HALCON编程基础与工程应用2. HALCON图像显示通过菜单栏可视化更新窗口单步
42、模式清空并显示命令,关闭窗口的更新。如果关闭了窗口的更新,则只能手动调用dev_display()操作来显示图像。3显示文字显示文字常用的disp_message算子与write_string 算子。(1)disp_message为外部算子,算子格式为:disp_message(:WindowHandle,String,CoordSystem,Row,Column,Color, Box:)。算子作用:在窗口中显示字符串。WindowHandle为窗口句柄;String为要显示的字符;CoordSystem为当前的操作系统;Row、Column为窗口中显示的起始坐标;HALCON编程基础与工程应
43、用2. HALCON图像显示Color为字体颜色;Box为是否显示白色的底纹。(2)write_string算子格式为:write_string(:WindowHandle,String:)算子作用:在窗口已设定的光标位置显示字符串。write_string一般与set_tposition配合使用,先使用set_tposition算子设置光标位置,然后使用write_string在光标位置处输出字符串。显示文字必须适合右侧窗口边界(字符串的宽度可由get_string_extents算子查询)。HALCON编程基础与工程应用2. HALCON图像显示【例2-10】图像显示实例*关闭窗口dev_
44、close_window ()*打开新窗口dev_open_window (0, 0, 400, 400, white, WindowID)*设置颜色dev_set_color (red)*画箭头disp_arrow (WindowID, 255 - 20, 255 - 20, 255, 255, 1) *在窗口中显示字符串disp_message (WindowID, 显示文字1, window, 20, 20, black, true)dev_set_color (blue)*设置光标位置HALCON编程基础与工程应用2. HALCON图像显示set_tposition (WindowID
45、, 40, 40)*在窗口已设定光标位置显示字符串write_string (WindowID, 显示文字2)* 设置光标位置 set_tposition (WindowID, 255, 255) *读取字符串 read_string (WindowID, Default, 32, OutString) 程序执行,结果如图2-36所示。图2-36 显示文字处理结果HALCON编程基础与工程应用3. HALCON图像转换1RGB图像转换成灰度图RGB图像转换成灰度图可以使用rgb1_to_gray算子,其格式为:rgb1_to_gray(RGBImage:GrayImage:)很明显,RGBIm
46、age与GrayImage分别是输入、输出图像参数。如果输入图像是三通道图像,RGB图像的三个通道可以根据以下公式转化成灰度图。灰色值=0.299*红色值+0.587*绿色值+0.114*蓝色值如果RGBImage中输入图像是单通道图像,GrayImage灰度图将直接复制RGBImage进行输出。【例2-11】RGB图转灰度图实例*读取图像read_image (Earth, earth.png)*RGB图像转换成灰度图像rgb1_to_gray (Earth, GrayImage)程序执行,图像变量如图2-37所示。HALCON编程基础与工程应用3. HALCON图像转换图2-37 RGB图
47、像转换成灰度图HALCON编程基础与工程应用3. HALCON图像转换2区域与图像的平均灰度值求区域与图像的平均灰度值可以使用算子region_to_mean,其格式为:region_to_mean(Regions,Image:ImageMean:)通过此算子绘制ImageMean图像,将其灰度值设置为Regions和Image的平均灰度值。【例2-12】求区域与图像平均灰度值实例*读取图像read_image(Image,fabrik)*区域生长regiongrowing(Image,Regions,3,3,6,100)*得到区域与图像的平均灰度值region_to_mean(Regions
48、,Image,Disp)dev_open_window (0, 0, 400, 400, black, WindowHandle)*显示图像dev_display (Disp)程序执行,结果如图2-38所示。3. HALCON图像转换图2-38 图像与区域平均灰度图HALCON编程基础与工程应用3. HALCON图像转换3将区域转换为二进制图像或label图像(1)将区域转换为二进制图像 使用region_to_bin算子能够将区域转换为二进制图像,格式为:region_to_bin(Region:BinImage:ForegroundGray,BackgroundGray,Width, He
49、ight:)使用算子将区域转换为“byte”图像,如果输入区域大于生成的图像就会在图像边界处进行剪切。 (2)将区域转换为Label图像 使用算子region_to_label能够 将区域转换为Label图像,格式为:region_to_label(Region:ImageLabel:Type,Width,Height:)算子可以根据索引(1.n)将输入区域转换为标签图像,即第一区域被绘制为灰度值1,第二区域被绘制为灰度值2等。对于比生成的图像灰度值大的区域将会被适当地剪切。HALCON编程基础与工程应用3. HALCON图像转换【例2-13】区域转换为二进制图或label图实例*读取图像re
50、ad_image (Image, a01.png)*复制图像copy_image (Image, DupImage)*区域生长regiongrowing (DupImage, Regions, 3, 3, 1, 100)*将区域转化成二进制图像region_to_bin (Regions, BinImage, 255, 0, 512, 512)*将区域转化成label图像region_to_label (Regions, ImageLabel, int4, 512, 512)程序执行,图像变量如图2-39所示。HALCON编程基础与工程应用3. HALCON图像转换图2-39 区域转换的图像变
51、量HALCON编程基础与工程应用本章小结本章首先介绍了HALCON软件交互式的编程环境Hdevelop及其界面和窗口,然后对HALCON的控制语句进行介绍,主要介绍了HALCON算子的基本操作,HALCON所有算子(函数)的参数均以相同的方式来排列:输入图像,输出图像,输入控制,输出控制。最后在HALCON编程环境下进行了图像读取,图像显示,图像转换的实例分析。HALCON编程基础与工程应用3.4HALCON Image图像 HALCON Region区域 HALCON XLD轮廓 Handle句柄第3章HALCON数据结构HALCON编程基础与工程应用3.1HALCON I
52、mage图像3.1.1 Image的分类 根据每个像素信息不同,通常将图像分为:二值图像,灰度图像,RGB图像。这部分已经在2.2节进行了详细地介绍。3.1.2 Image的通道(1)append_channel(MultiChannelImage,Image:ImageExtended:)作用:将Image图像的通道与MultiChannelImage图像的通道叠加得到新图像。MultiChannelImage:多通道图像;Image:要叠加的图像;ImageExtended:叠加后得到的图像。HALCON编程基础与工程应用 (2)decompose3(MultiChannelImage:I
53、mage1,Image2,Image3:)作用:转换三通道彩色图像为三个单通道灰度图像;MultiChannelImage:要进行转换的三通道彩色图像;Image1:转换得到第一个通道的灰度图像,对应Red通道;Image2:转换得到第二个通道的灰度图像,对应Green通道;Image3:转换得到第三个通道的灰度图像,对应Blue通道。读取一幅红色的三通道彩色图像后利用decompose3算子分解成三个单通道图像,其中得到的红色通道是一幅白色图像,得到的绿色和蓝色通道是黑色图像。所以我们能够知道红色在R通道中比较明显,同理绿色和蓝色分别在G和B通道中比较明显。3.1HALCON Image图像
54、HALCON编程基础与工程应用3.2HALCON Region区域 Region的特征可以使用特征检测对话框查看region的特征。通过工具栏特征检测弹出的对话框选择region,可以看到Region的不同特征属性及相对应的数值,如图所示。Region特征主要有以下三个部分:(1)基础特征:region的面积、中心、宽高、左上角与右下角坐标、长半轴、短半轴、椭圆方向、粗糙度、连通数、最大半径、方向等;(2)形状特征:外接圆半径、内接圆半径、圆度、紧密度、矩形度、凸性、偏心率、外接矩形的方向等;(3)几何矩特征:二阶矩、三阶矩、主惯性轴等。HALCON编程基础与工程应用3.2HALCON Reg
55、ion区域 HALCON编程基础与工程应用Region的点线1生成点线区域图像最基本的构成元素是像素点,在HALCON里面点可以用坐标(Row,Column)表示,图像窗口左上角为坐标原点,向下为行(Row)增加,向右为列(Column)增加。首先生成一个点区域,生成点区域的算子为:gen_region_points(:Region:Rows,Columns:)3.2HALCON Region区域 2区域的方向方向是区域的基本特征,下面几个算子与区域方向有关。 (1)line_orientation(:RowBegin,ColBegin,RowEnd,ColEnd:Phi)(2)orienta
56、tion_region(Regions:Phi)HALCON编程基础与工程应用(3)angle_ll(:RowA1,ColumnA1,RowA2,ColumnA2,RowB1,ColumnB1,RowB2,ColumnB2:Angle)(4)line_position(:RowBegin,ColBegin,RowEnd,ColEnd:RowCenter,ColCenter,Length,Phi)作用:计算线段的中心、长度、方向。3.2HALCON Region区域 Region的行程1区域行程的理论基础行程编码(又称游程编码)是相对简单的编码技术。行程编码的主要思路是将一个相同值的连续串用一个
57、代表值和串长来代替。例如,有一个字符串“aaabccddddd”,行程编码可以用“3a1b2c5d”来表示。图4-19是区域,表4-2是根据图4-19的区域得到的行程编码表。HALCON编程基础与工程应用3.2HALCON Region区域 3.2.4 Region的区域特征1区域的面积与中心特征1)区域的面积2)区域的中心区域的中心坐标是计算区域内所有像素点坐标的平均值。中心点行坐标等于区域内所有像素点行坐标相加的和除以面积,中心点列坐标等于区域内所有像素点列坐标相加的和除以面积。2区域特征距特征矩特征主要表征图像区域的几何特征,又称为几何距。由于其具有旋转、平移、尺度等不变特征又称为不变距
58、。在图像处理中不变距可以作为一个重要的特征来表示区域。HALCON编程基础与工程应用3.2HALCON Region区域 3区域等效椭圆特征 二阶中心距的一个重要应用就是可以定义一个区域的方向与范围,而区域的方向和范围可以用等效椭圆来表示。4区域凸性特征区域内任意两点进行连线,连线上的所有点都在区域内就称这个区域为凸集。凸包则是包含区域内所有点构成的最小凸集。5区域轮廓长度特征区域轮廓长度是区域的另一个特征,区域轮廓是跟踪区域边界获得一个轮廓,然后将区域边界上的全部点连接到一起。轮廓长度是欧几里德长度,平行于坐标轴与垂直坐标轴的两个相邻轮廓点之间的距离为1。HALCON编程基础与工程应用3.3
59、HALCON XLD轮廓 3.3.1 XLD的初步介绍1XLD定义图像中Image和区域Region这些数据结构是像素精度的,在实际工业应用中,需要比图像像素分辨率更高的精度,这时就需要提取亚像素精度数据,亚像素精度数据可以通过亚像素阈值分割或者亚像素边缘提取来获得。3.3.2 XLD的数据结构分析1XLD数据结构介绍XLD轮廓的很多属性存储在XLD的数据结构中,为了描述不同的边缘轮廓,HALCON规定了几种不同的XLD数据结构,对于不同的数据结构一般是通过不同的算子获得的。区域或多边形转换成亚像素轮廓的算子(1)gen_contour_region_xld(Regions:Contours:
60、Mode:)HALCON编程基础与工程应用3.3HALCON XLD轮廓 (3)gen_contour_polygon_xld(:Contour:Row,Col:)(2)get_contour_xld(Contour:Row,Col)(4)gen_polygons_xld(Contours:Polygons:Type,Alpha:)(5)gen_ellipse_contour_xld(:ContEllipse:Row,Column,Phi,Radius1,Radius2,StartPhi,EndPhi,PointOrder,Resolution:)(6)gen_circle_contour_x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园禁止卖酒管理制度
- 校园进入校门管理制度
- 校园防疫静态管理制度
- 智能医疗器械研发合作合同
- 校园安全设施检查表
- 员工在职期间综合表现证明(7篇)
- 运动专业测试题及答案
- 电建财务面试题及答案
- 医学面膜测试题及答案
- 机床培训考试题及答案
- 汽车保险与理赔课件 8.2汽车水灾事故的预防与施救
- 手术室护理不良事件的管理
- DB11T 581-2021 轨道交通工程防水技术规程
- 专题6.6射影定理专项提升训练(重难点培优)-2022-2023学年九年级数学下册尖子生培优题典(原卷版)
- 2024年冬季N0M世界青少年数学思维研学活动模拟题4年级
- 石材营销渠道的数字化转型
- 驾驶员雇佣协议书
- GB/T 44192-2024政务服务便民热线数据应用指南
- 安徽省池州市贵池区2023-2024学年七年级下学期末历史试卷
- (高清版)JTG 3810-2017 公路工程建设项目造价文件管理导则
- 一人出资一人出力合伙协议范本完整版
评论
0/150
提交评论