Halcon机器视觉实验指导书

  • 格式:doc
  • 大小:11.96 MB
  • 文档页数:105

下载文档原格式

  / 105
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

机器视觉软件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: Mi c he l图表的部分页.

如果直接使用属性清单而非编程,任务会变得很简单。可惜由于语言的含糊,这是不可能的。所以你需要建构具有精确的语法和语义的语言,尽可能接近非正式的描述。使用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) fi l l_u p

(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选择区域面积(属性:'面积')在指定区间内。

sm allestrec tangle1计算每个区域的坐标(连续/栏)的包围矩形。

一旦用户熟悉了承操作符和语法、转换就变得很容易。特别需要指出,对于程序来说,图像或者加工区是否被处理并不重要,你可以使用相同的方法处理他们。. 由于中间数据结构的内存管理对用户来说是透明的,你可以不必理会它,你可以集中解决图像分析任务。

图5.2邮票分割处理的结果

2毛细血管

文件名: ve ss el. dev

这个例子的任务是分割毛细血管。尤其,你要把图5.3(图像左)的细胞区域的上、下部分从图像的中央区域区分开。区界线很模糊,甚至以人的来认识他们都是困难的。乍看之下,似乎很难找到一个分割准则: 在这两幅图的灰度值既无明显清晰的边界也无明显的不同。所以用限定操作或边界操作并不是很有用。解决这一问题的一个方法是利用区域的不同质地:细胞比有血液供应得部分的更有角质化。强调这种差异,你可以用纹理变换。变换是线性纹理过滤加大对某些频率所要求的典型纹理。HALCON的相应操作叫做纹理法则。你必须指明大小和过滤式。双方属性确定的频

率的性能。在这个程序里过滤器”el”使用 5 ×5的大小。在垂直方向和水平方向,它表现了一个平滑推导。因此在垂直方向是加大结构。你不可以直接使用计算机的处理结果(图5.3 右),因为他有太多的斑点。因此,你可以通过一个主要的过滤器产生纹理图像。通过这你可以的得到所谓的纹理能量(图5.4左)。

图5.4: 毛细血管纹理能源(左)和分割(右)。

选择的过滤面罩在这个计划是非常大的。面具大小在水平方向和垂直方向为211和61。采用不对称方式,因为在水平方向上血管是堵塞的。因此你得到一个图像上下部分比中间部分明亮。

read_image (Image, ’vessel’)

texture_laws (Image, Texture, ’el’, 5,5)

mean_image (Texture, Energy, 211, 61)

bin_threshold (Energy, Vessel)

区分这些区域你只要找到合适的门槛。在这种情况下,我们有两种不同的纹理—门限可以自动发现。这是有操作符b i n th r e s h o l d完成的,这也同样门限的结果和这样的血管。图5.4(右)显示了分割的结果。

3 颗粒

文件名: p a r t i c l e .dev

这个程序示例处理的图像是来自于一个医学程序的处理结果。它显示载体上的微小颗粒(图 5.5左)。