Halcon机器视觉实验指导书.doc
文本预览下载声明
机器视觉软件HALCON
实验指导书
目录
实验1 HALCON 概述,应用范例
实验2 HDevelop介绍,操作编程范例
实验3 HALCON编程接口 ,高级语言编程
实验4 HALCON数据结构,采集硬件接口
实验5 HALCON采集硬件配置 ,图像采集
实验6 HALCON二维测量,配准测量与识别定位
实验7 HALCON一维测量,尺寸测量
实验8 HALCON三维测量,3D重建测量
实验1 HALCON 概述,应用范例
实验2 HDevelop介绍,操作编程范例
1 邮票分割
文件名: stamps.dev
?
第一个例子进行文件分析任务。图5.1展示了部分邮票目录页。它描述了两种不同的邮票:以图形描述为主和以文字描述为主。
为了使用这个例子,必须把文字描述转化为计算机所能理解的形式。你可能使用OCR编程方式,你很快发现由于邮票的图形描述会导致大多数的可使用模块产生错误。于是另一项任务必须要进行预处理:对所有的邮票进行转化 (例如,把邮票转化为灰色有价值的纸),这样就可以使用OCR处理邮票的剩余部分了。
当创造一个应用程序来解决这种问题,对要处理的对象进行特征提取是非常有帮助的。这个任务可以为新手提供解决的这类问题一些的经验。
一般而言,特征提取有如下步骤:邮票比纸要黑。
邮票包含图像的部分不重叠。
邮票具有最大最小尺寸。
邮票是长方形的。
图5.1: Michel图表的部分页.
如果直接使用属性清单而非编程,任务会变得很简单。可惜由于语言的含糊,这是不可能的。所以你需要建构具有精确的语法和语义的语言,尽可能接近非正式的描述。使用HDevelop语法,一个通常的程序看起来如下:
dev_close_window ()
read_image (Catalog, ’swiss1.tiff’)
get_image_pointer1 (Catalog, Pointer, Type, Width, Height)
dev_open_window (0, 0, Width/2, Height/2, ’black’, WindowID)
dev_set_part (0, 0, Height-1, Width-1) dev_set_draw (’fill’)
threshold (Catalog, Dark, 0, 110) dev_set_colored (6)
connection (Dark, ConnectedRegions) fill_up (ConnectedRegions, RegionFillUp) select_shape (RegionFillUp, StampCandidates, ’area’,
’and’, 10000, 200000) select_shape (StampCandidates, Stamps, ’compactness’, ’and’, 1, 1.5)
smallest_rectangle1 (Stamps, Row1, Column1, Row2, Column2)
dev_display (Catalog)
dev_set_draw (’margin’)
dev_set_line_width (3)
disp_rectangle1 (WindowID, Row1, Column1, Row2, Column2)
由于一些为止的操作符合不熟悉的语法,这个程序咋看起来会很晦涩。但如果仔细看一下这个操作符,你就会注意以下说明的直接联系。
threshold 选择全部图像像素黑暗比值。
connection 合并所有选定像素触摸相互连通区。
selectshape 选择区域面积(属性:面积)在指定区间内。
smallestrectangle1计算每个区域的坐标(连续/栏)的包围矩形。
一旦用户熟悉了承操作符和语法、转换就变得很容易。特别需要指出,对于程序来说,图像或者加工区是否被处理并不重要,你可以使用相同的方法处理他们。. 由于中间数据结构的内存管理对用户来说是透明的,你可以不必理会它,你可以集中解决图像分析任务。
图5.2邮票分割处理的结果
2毛细血管
文件名: vessel. dev
这个例子任务是分割毛细血管尤其你5.3(图像左)细胞上、下部分从区界线很模糊,甚至人认识他们困难乍看之下,似乎很难找到一个分割准则: 既无明显也所以用限定或不是很有解决这一问题的一个利用不同质地细胞血液供应强调这种差异,你可以用纹理变换变换是线性纹理过滤加大对某些频率所要求的典型纹理HALCON的相应操作叫做纹理你必须指明大小和过滤式双方属性确定的频率性能”el”使用 5
显示全部