机器视觉系统编程与开发 课件 第5-8课时-项目2 Halcon编程基础知识_第1页
机器视觉系统编程与开发 课件 第5-8课时-项目2 Halcon编程基础知识_第2页
机器视觉系统编程与开发 课件 第5-8课时-项目2 Halcon编程基础知识_第3页
机器视觉系统编程与开发 课件 第5-8课时-项目2 Halcon编程基础知识_第4页
机器视觉系统编程与开发 课件 第5-8课时-项目2 Halcon编程基础知识_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

版本号:V1.0Halcon机器视觉编程基础项目2

Halcon编程基础知识【知识目标】1、理解数字图像的概念;2、熟悉图像数字化的过程;3、了解Halcon获取图像的方法及编程知识;1、学会使用Halcon读取图像操作;2、掌握Halcon编程的基础知识。1、养成爱岗敬业,刻苦钻研的工匠精神;2、培养良好的编程习惯。【能力目标】【素养目标】项目导读

Halcon软件是MVTec公司开发的机器视觉算法工具包,Halcon和其它编程语言一样具有自己的编程规则,封装了2100多个算子(函数)工具供开发者使用,Halcon编程主要针对数字图像进行编程,本项目要掌握数字图像的概念和Halcon的语法结构,如果有C、C++或其它编程语言基础,将更容易掌握,Halcon编程类似积木编程,算子中的变量,系统会自动命名,方便快捷,对编程水平要求降低了,难点在于各算子的选择、算子使用的先后顺序,以及算子参数的选择上。了解数字图像概念HALCON编程基础知识任务2任务1了解数字图像概念任务12课时【任务要求】

1、了解图像数字化的概念及数字图像的分类,了解像素的数字表述;2、能用多种方法使用Halcon软件获取图像;3、能使用算子将图像显示到图像窗口中。

一、数字图像基础数字图像(Digitalimage)是以像素为基本单位、可以直接用计算机或数字电路存储和处理的图像。通过工业相机、扫描仪等设备获取的图像均已是数字图像。1、图像数字化网格化也不是随意的,而是由相机的分辨率决定,如800×600,表示480000像素数字化图像是将图像网格化,每个网格为1个像素,像素是图像的最小单位,每个像素取值为(0-255)网格化的图像1、图像数字化数字化图像是将图像网格化,每个网格为1个像素,每个像素取值为(0-255)网格化的图像数字图像在计算机中的表示每幅图像都可以用一个矩阵来表示一幅的m×n数字图像可用矩阵表示为2、数字图像分类二值图像:二值图像是指图像的每个像素非黑即白,“0”代表着黑色,“1”代表着白色。数字图像根据采样数目及特性的不同可以划分为二值图像、灰度图像、彩色图像。灰度图像在二值化图像的基础上,在黑与白之间构建更多的颜色深度分级,从黑色到最亮的白色过渡,根据保存灰度数值所使用的数据类型的不同,可以有2k种,k=1时是二值图。彩色图像也叫RGB图像,是根据三基色成像原理来描述图像信息,由Red、Green、Blue三个颜色组合而成,三种颜色各有256个级别。1、二值图像

(a)1位

(b)2位

(c)3位

(d)8位2、灰度图像

图像灰度直方图

灰度直方图是关于灰度级分布的函数,是对图像中灰度级分布的统计。灰度直方图是将数字图像中的所有像素,按照灰度值的大小,统计其出现的频率。灰度直方图是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图像中某种灰度出现的频率。灰度直方图只能反映图像的灰度分布情况,而不能反映图像像素的位置,一幅图像各直方图数值之和就等于该图全图的灰度值数量。二、利用Halcon软件获取图像1、利用read_image算子;2、通过“文件”-”读取图像“;3、通过鼠标拖拽;4、通过“助手”-“打开新的ImageAcquisition”-“图像文件”-“选择文件”。1、利用read_image算子获取图像在程序窗口输入read_image,然后按“tab”键,直至一条语句输入完双击“read_image”在打开的“算子窗口”中点击filename.read(string)前面的文件夹按钮选择需要处理的图像,单击“打开”,读入图像系统默认的图像变量名称为Image,可以修改,命名规则与其它编程语言规则一致。2、通过“文件”-”读取图像“获取图像“文件”-“读取图像”单击“文件名称”后面的文件夹按钮选择需要处理的图像,单击确定3、通过鼠标拖拽用鼠标点住要处理的图像,拖动至Halcon软件上。4、通过“助手”菜单读取图像算子释义:read_image—Readanimagewithdifferentfileformats.格式:read_image(:

Image

:

FileName

:)参数:Image--为输出对象,是一个变量,可以直接定义使用,不需要提前声明;Filename--为输入控制文件名,用于指定读取的文件。作用:将指定路径下的图像文件读入变量Image中。【案例2-1】使用Halcon软件读取单张图像1. *获取图像earth.png,存入变量Image中2. read_image(Image,'earth.png')3. *获取图像Image的大小(像素值),Width为“列”,Height为“行”4. get_image_size(Image,Width,Height)5. *创建新窗口,(0,0)-(Width,Height),背景为“黑色”,窗口句柄为WindowHandle6. dev_open_window(0,0,Width,Height,'black',WindowHandle)7. *显示图像Image8. dev_display(Image)下一任务介绍:了解了Halcon编程的数据结构和基本语法规则。HALCON编程基础知识任务22课时【任务要求】1、熟练掌握Halcon数据结构,特别是图形参数Image、Region和XLD的概念;2、能用数组对一组图像进行存储;3、熟悉各类控制语句。HALCON数据结构类型HALCON数据结构类型主要有图形参数(Iconic)和控制参数(Control)两类。图形参数包括:图像Image、区域Region和亚像素轮廓XLD(ExtendLineDescriptions);控制参数包括字符型String、整型integer、实型real、句柄handle和Tuple数组等一、数据结构1、图像变量Image图像Image是Halcon基本的一种变量类型,用于存放图像数据,图像数据用矩阵来表示,矩阵的“行”对应图像的“高”,矩阵的“列”对应图像的“宽”,矩阵的“元素”对应图像的“像素”,矩阵“元素”的值对应“像素”颜色值。RegionXLD区域是Halcon的另一种数据类型,是图像的真子集,利用区域可以缩小图像处理范围,提高图像处理速度。XLD(eXtendedLineDescriptions)是一个轮廓函数,它不是基于像素,但比像素更精确,可以精确到像素内部的一种描述,通常称为亚像素,提取XLD并不是沿着像素与像素边界交界的地方,而是Halcon经过某种计算得出的位置。1、图像变量Image如果获取的图像为彩色图像,即RGB图像,该图像有3个颜色分量:红、绿、蓝三基色,每个像素点都可以用这3种颜色叠加而成,不是数值相加。图像的通道:是指图像中一个像素点采用多少个灰度级数值进行表示,如果图像内的像素点可以用1个灰度级数值来表示,那么图像就只有1个通道,如果可以用多个灰度级数值来表示,图像就有多个通道。如RGB色彩图像可以用红色、绿色、蓝色3个灰度级数值来表示,表示彩色图像是由红色、绿色、蓝色3个通道组成。Halcon读入图像后,将光标停放在图像变量中的图像或区域上,将会弹出小窗显示图像的类型、通道和尺寸。

2、区域region变量

是图像的真子集,利用区域可以缩小图像处理范围,提高图像处理速度一是集中形式,在图中直接裁剪出一块区域,即感兴趣区域(ROI);二是离散形式,在图像中设定某段阈值范围,利用图像分割算子将所需要的灰度值单独组成一个区域。绘制ROI单击图像窗口上的“绘制新的ROI工具”,将会弹出ROI绘制工具二、Tuple图形数组1. *对Tuple1数组赋值结果:Tuple1:=[1,0,3,4,5,6,7,8,9]2. Tuple1:=[1,0,3,4,5,6,7,8,9]3. *改变Tuple1[1]的值,结果:Tuple1[]=[1,2,3,4,5,6,7,8,9]4. Tuple1[1]:=25. *批量改变数组元素的值,结果:Tuple1[]=[1,a,3,b,5,c,7,8,9]6. Tuple1[1,3,5]:='abc'7. *对Tuple2数组赋值,其值为0到10000连续数值,结果:Tuple2[]=[0,1,2,…,9999,10000]8. Tuple2:=[0:10000]9. *批量给Tuple3数组赋值,其值为3到200连续数值,步长为2,结果:Tuple3[]=[3,5,7,…,197,199]10. Tuple3:=[3:2:200]11. *批量给Tuple4数组赋值,其值为100到-100连续数值,步长为-10,结果;Tuple4[]=[100,90,80,…,-90,-100]12. Tuple4:=[100:-10:-100](0~n-1)13. *对两个Tuple数组进行合并操作,将数组TupleInt1和TupleInt2的数据组成新的集合,排序后赋值给新的数组UnionInt,结果:UnionInt[]=[1,2,3,4,9,10]14. TupleInt1:=[3,1,2,9,1]15. TupleInt2:=[10,2,4,3,2]16. tuple_union(TupleInt1,TupleInt2,UnionInt)17. *对两个Tuple数组进行交集操作,将数组TupleInt3和TupleInt4相同的数据组成新的集合,排序后赋值给新的数组IntersectionInt,结果:IntersectionInt[]=[2,3]18. TupleInt3:=[3,1,2,9,1]19. TupleInt4:=[10,2,4,3,2]20. tuple_intersection(TupleInt3,TupleInt4,IntersectionInt)21. *对Tuple数组元素进行替换,用‘x,y’替换数组OriginalTuple中的‘0,1’,结果:OriginalTuple[]=[x,y,2,3,4,5]22. OriginalTuple:=[0,1,2,3,4,5]23. tuple_replace(OriginalTuple,[0,1],['x','y'],Replaced)24. *向Tuple数组插入数值,在数组OriginalTuple中所有的‘3’替换成‘x’,结果:OriginalTuple:=[0,1,2,x,4,5]25. OriginalTuple:=[0,1,2,3,4,5]26. tuple_insert(OriginalTuple,3,'x',InsertSingleValueA)三、程序控制语句

If语句1. if(条件表达式)2. *条件表达式成立执行的语句3.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论