-
第一章
HALCON
恭喜诸位。
您采用了这套在产品研发
,研究以及教育方面都有顶尖表现的影
像分析软件。
HALCON
可在
UNIX
,
NT/2000/xp
等等平台下作业,它独特的
Library
提供了千余个为影像
分析作业,数据可视化,除错等等功能所设计的运算符,用户可以利用它的功能以
C
及
C++
等程序语言自行撰写图像处理程序。
此外,
HALCON
亦支持
Windows
NT/2000/XP
下的
COM
接口,所以您也可以透过
Visual
Basic
使用它,使得系统的整合更为容易。
HALCON
的设计使得影像区域,边缘,以及等值线的处理
上更方便,优化的算法让这套
软
件在
一般的硬件上也有很好的指令周期。
HALCON
包含了名为
HDevelop
的程序设计界面,减少了设计软件所花的时间,还有一个好
用的联机帮助,您可以查到关于
HALCON
运算符间功能相近的替代者,可能的变化,以及
交互的参考。
HALCON
从
6.0
版开始提供两个版本,除了标准版外,还有支持平行运算的
parallel
HALCON
,可使用多
CPU
的机器,提高指令周期。
以下是
HALCON
特点的说明
1.1
HALCON
强化的
opreator library
提供有效率又有弹性的图像处理功能,简化了影像程序
的设计
HALCON operator library
有千余个运算符。所有的
HALCON
应用程序
(
像是
HDevelop
和
HALCON C++
程序
)
皆是利用这个
library
来工作。
这些运算符功能广泛,包含了简单的读
取影像,到复杂的像是
Kalman
滤波等。基本上这些
运算符各有其单
一功能,而非包含了
各种运算,因此一个影像分析功能是由好几个运算符组
成的,所以其弹性远大于由少数而
复杂的运算符组
成的分析程序。特化而复杂的运算符往往
只适用于某些工作甚
至于影像,
应用范围狭窄。相对于这种窘境,
HALCON
运算符却能任
意组合来完成工作。
众多的运
算符中,有些是以不同的算法来达到相同的功能,例如只需要粗略定位时,可用
fast_match
来作最快的运算,需要精确定位时,用
best_match
,以较多的时间来求得最准
确结果。
1
HALCON
可处理彩色及多频道影像
可用于计算
的影像数据,包含二值化影像,单色,彩色,
或是多频影像,在使用上并无差别。
(
多频道影像是以多镜头系统取得的影像数
据
)
。
HALCON
提供了快速有效率的
region
处理计算
除了使计算更容易外,
region
尺寸无限制,甚至于可以重迭,而
region
数据经过最佳的编码
处理,在内存中所占的资源极少。
HALCON
可做
ROI
的计算
每个影像中的物体都可由用户自行定义其
region
,接着再由运算符进行计算时就可以只针
<
/p>
对定义区域作处理,因此可以集中运算资源和速度,达到最好的效率。
HALCON
提供了快速的
pattern
匹配计算
pattern
匹配在许多应用上是很有用的,但是却很花时间,
HALCON
有许多不同的
pattern
演
算法,可以让您自行决定何时使用。
HALCON
提供了形状导向
(shape-
based)
的匹配计算,使得物体有重迭或是旋转杂置的状况
下仍可计算。除了
pattern
匹配外,形状导向的运算符可以在物体有缩放,照明改变,旋转
或重迭等等情况下仍旧能辨认出物体。从
6.1
版开始,还有一个辅助工具
HMatchIt
,透过简
易的设定即可用来测试匹配执行的效率,藉由参数的调整让您找出最佳的设定值,达到最快
的计算速度。
HALCON
提供了方便有效的
tuple
功能
tuples
是一种很有用的功能
,
使您处理影像
< br>,
区域
,
参数等等数据集合时更
为便利
。
HALCON
的
tuples
可以将相关数据整合成一个对象,用户可以针对单一或多个
tuples
作处理,您就
不必为一个
tuple
中有多少元素要处理而烦恼,只要将指定的
tuple
丢给运算符,
HALCON
就会处理
tuple
中所有要计算的元素。
HALCON
在影像和数据管理上效率卓著
HALCON
有个快速有效率的内存管理核心,这个机制提供
了数据的读写,还有溢位的检
查。为了提高效率,共享的影像数据不会在内存中重复。
HALCON
支持
C
,<
/p>
C++
以及
COM
的程序设计
您可以在自己撰写的
C
,
C++
和
COM
程序中使用
HALCON
运算符,
完成一个独立的程序。
HALCON
的
HDevelop
工具帮助您发展影像分析程序
撰写影
像分析程序通常是旷日费时,
为了帮助设计人员找出合适的运算符及参数,
HALCON
发展出一套工具程序
HDevelop
。它
如帮助您呢
< br>?
首先
HDevelop
有一个图形接口,要使用
的运算符和
要分析的影像一目了
然,运算符可以自行组合,计算成果实时显示在影像中,可
2
以帮助使用者
了解不同运算符和参数对计算的影响。同时它也会提出一些运算符或参数的建
议,在线辅助除了解释运算符如何工作外,还有范例的说明。
当您觉得计算成果满意了
,
可
以把设计好的成果存成
HDevelop <
/p>
的专用档案
,
下次可再叫用,
或者是将其输出成
C
,
C++
或
COM
的程序代码,可供其他程序套用,就像自行撰写的程序一
样。
HALCON
可连接
40
余种影像撷取设备
目前支持的设备列表在
/halco
n/
,要连接取像设备,只要用运算符
open_framegrabber
,给予格式或撷取模式等参数,再来用运算符<
/p>
grab_image
即可取得影
像。
HALCON
可以让您自行新增取像设备
如果您用的取像设备
HALCON
尚未支持,您可以利用专用接口连接。
HALCON
有个开放的
接口,配合一些程序代码,就可以和
HALCON
连接,相关的说明请参考
Frame
Grabber
Integration Programmer's
Manual
。
1.2
可执行
HALCON
的操作系统
下表说明了可执行
HALCON
的操作系统
Operating System
Windows NT 4.0 /2000 /XP
Linux 2.2/2.4
Solaris 7
IRIX
6.5
Tru64 UNIX
5.1
Processor
compatible to Intel Pentium
compatible to Intel Pentium
SPARC
MIPS
Alpha
Compiler
MS
Visual Studio
3
gcc 2.95
CC
5.2
CC
cxx
可执行
HALCON
的操作系统一览表
请注意
,
在
Linux
下需要
libc6(glibc-2.1.x)
,
这是在大部
分的
Linux
系统像是
RedHat
或
SuSe
下需要的,请参考相关文件。
HALCON
也可以在
Philips TriMedia DSP
上执行,主计算机需安装
NT/2000/XP
,这部分
请参考
HALCON/C
之
User's
Manual
。
3
1.3 Parallel
HALCON
简介
简单的说,标准版的
HALCON
是在单处理器的计算机上执行单线程计算,在
NT/2000/XP
,
Linux
,
Solaris
,
HALCON
是
thread-
safe
,也就是可以做多绪执行,不过所有的运算符执行
时都是独一的,所以线程间必须要互相等待。
相对来说,
Parallel
HALCON
支持平行运算,是
thread-safe
以及
reentrant
,也就是不同的
线程可以同时呼叫同一个运算符,可使用的操作系统包含
p>
NT/2000/XP
,
Linux
,
Solaris
。
除了平行运算外,
Parallel HALCON
在多处理器的系统上,会自动将运算符作平行化,旧的
HALCON
也有此功能,像是
HDevelop
这个接口,所以您开发的
C++
p>
,
C
,不必再做更动。
平行化的机制是将要处理的
数据,例如影像,由不同的处理器上执行不同的线程
(
所谓的<
/p>
data parallelism)
,例如一张影像的滤波运算,在一个四处理器的计算机上执行时,计算工作
会
被分成四份,由四个线程负责,每个线程都是做相同的滤波计算。由于待
处理的影像在
系统中不必复制,因此
HALCON
的这种设计构想可以达到最好的效率。
至于平行化或数据分配的的程度可
以实时掌控,以免造成反效果,例如一张很小的影像,又
要将
数据分散处理反而会浪费时间,此外,不是所有的运算符做平行化都能提高效率。
此外,
parallel
HALCON
是用于内存共享的系统中,像是典型的多
CPU
主板,这样不同
的
线程才能共享一个
HALCON
数据库,同时也不必再复制影像而造成占用内存。这样
一来
有些系统是不适合执行
HALCON
的,像是
cluster
式的工作站或是一些不提供共享记忆
体
的系统。
Parallel HALCON
也不提供
COM
接口,包含平行化机制和
reentrant
,这是因为撰写
COM
的主要工具,
Microsoft
的
Visual Basic
,尚未有效支持多绪执行之故。
4
1.4
其他数据
下列的手册提供了各种参考数据
HDevelop User's
Manual
介绍与
HALCON
核心功能链接的图形用户接口
HDevelop
。
HALCON/C++
User's Manual
如何在您写的
C++
程序中使用
HALCON library
。
HALCON/C User's
Manual
如何在您写的
C
程序中使用
HALCON library
。
HALCON/COM
User's Manual
如何在您写的
COM
程序中使用
HALCON
library
,例如使用
Visual Basic
。
Extension
Package Programmer's Manual
如何自己设计一个运算符,并将其整合到
HALCON
中。
Frame Grabber
Integration Programmer's
Manual
。
如何将一个新的取像设备加入
HALCON
的系统中。
(
更
新到
8.0
后这个手
册就没有了,改为
image acquire)
HALCON/HDevelop,HALCON/C++,
HALCON/C,HALCON/COM
所有
HALCON
运算符的参考手册。
Application
Guide
这是几份各自独立的文件,即所谓的
Application
Note
,是以工业视觉应用的观点来写的,
主要是说明一些计算方式的关键以及使用时的注意事项以及要诀等等。例如以型状导向匹配
来寻找物体等等。
在
MVT
ec
的网站上所有的参考手册都有
PDF
檔及
HTML
文件可以下载,网址为
/halcon
5
第二章
安装,授权以及设定
在未说明安装及设定方法前,先来看看不同版本及授权的相关
说明
HALCON
有三种版本
版,含
HDEvelop
以及完整的图像处理功能,但是有一些限制,例如不能连接取像
设备,也少了程序设计界面,这个版本可让您测试
HALCON
运算符的所有功能而无时间限
制。
2.
完整版,让您可以用
HALCON
的功能发展程序。除了
HDevelop
外,还包含了所有取像功
能,
C
,
C++
,
COM
之接口,还有
Extension package Interface
,
让您可以整合自定义的运
算
子或是新的取像设备。
3.
如果您用
HALCON
的功能写好程序,您可以得到一个
runtime version
,包含了程序中
需要的功能,这个版本就不包含
HDevelop
。
使用完整版或
runtime
版,需要不同的授权码,而
demo
版可以不用户许可证码。授权使用
方
式说明如下
1.
Nodelocked license
用于固定地址的计算机或机
器
2.
完整版上也可以使用所谓的
floating
license
,
在局域网络中特定地址的机器可以使用,一
个
license server
会检查执行的
HALCON
程序数量。
至于作为
license
server
的机器并非要真如一般的
server
般庞大,或是一定要是某种
server
系统,像是
Windows NT
server
,它可以是一台
Linux
或是
Solaris
工作站,然后在其他的电
脑安装
Windows
NT/2000/XP
等以执行
H
ALCON
,
只要在
HALCON
执行时能和这个
server
连接就可以了。
如果是为了估价的目的,您可以用一个免费的
temporary
license
。
2.1
安装
以下说明如何由
CD
安装
HALCON
< br>,由网络安装的方法在网址
/halcon/download
有说明。名为
release_
的档案有
HALCON
的最新消息。
除了
UNIX
的系统外,档案路径和环境变量是以
Windows
式的写法表示,例如
6
%HALCONROOT%ex
amplesextension_packagehalconuser
请参考
2.4
节的说明
若是在
UNIX
系统下,写法就变成
$$HALCONROOT/examples/extension_package/halcon
user
注意
如果要安装大改版的新版
HALCON
,例如
6.0
或
6.1
版等等,就必须先将旧版卸载,这
在
Windows
下尤其重要,因为必须要清除旧版在
registry
的纪录。移除方法请看
2.2
节。
有
个例外是
ActiveVisionT
ools 1.0
到
1.3
版想安装
HALCON6.1
版,这时就要保留旧版的
HALCON 6.0.x
。
如果只是小改版的更新,像是
6.0.1
升级成
6.0.2
版,有个特别的更新方法,在
2.1.3
节有说
明。
2.1.1
在
Windows
NT/2000/XP
下的安装
将
CD
置入机器,就会启动一个安装程序,若没有自动执行,可在一个叫
nt-x86
的目录下,
执行一个名为
的程序,当然,您必须要有
Administrator
的权限。
首先,程序会
先检查系统资源是否足够安装,再来会检查是否已安装了
HALCON
,如果已安
装了相同的
版本,程序会检查已安装的部分,再让您安装新增加的东西。若
是已安装了不同
版本的
HALCON
,会问您要不要保留,至于如何在不同版本间切换,在
2.1.5
节有说明。
安装程序
同时也会检查是否有安装
<
/p>
ActiveVisionT
ools
,
还有它的版本是否和目前要安装的
HALCON
兼容。
(
请参考
2.1.5
节
)
这些检查都结束后,安装精灵会要您选择安装版本如下
(Compact
,
Custom
,
Typic
al)Full HALCON version
(Runtime)runtime
version
(Demo)demo
版的
hdevelop_
一些额外的东西可以日后再安装,一样将
CD
置入执行,再选择您要的部分即可。
再来
,如
果您要用
< br>dongle
,安装程序会问您是否安装驱动程序,
2.
3.5
节有驱动程序的说明,
以及如何自行安装而不透过
HALCON
的安装程序。接着,程序会问您这台计算机是不
是要
当
成
floating
license
server
,
这样会安装名为
license
manager
d
aemon
,来管理
您的
floating
license
。
floating
license
的用户只要在一台计算机上安装这个程序即可当作
license
server
。
请参考
2.3.4
节。
7
2.1.2
在
UNIX
下的安装
您要先
mount
CD
,例如
/
cdrom
,通常您要有
root
的权限才能作这个动作,而在大部分
的系统下,
CD
会被
mount
成
/etc/fstab
,不能在此执行程序,所以要改成
mount
/dev/cdrom /cdrom
要安装时,启动
CD
主目录下的
shell
script
,会问您
HALCON
要装在哪,接着
环境变量
HALCONROOT <
/p>
也要设成安装的目录
(
参考
2.4.2
节
)
,再来会问您
HALCON
的附
加部分要装在何处。
由于在
CD
上是只读的,如果您是以一般使用者来安装,在权限改变时会出现警告讯息,而
某些系统上会出现文件名长度超过
32
字符的讯息。
接着,会检查您的系统是否足够安装。
安装完成后有几个环境变量要设定,
p>
HALCON
才能工
作。
(
请参考
2.4.2
节
)
2.1.3
更新
HALCON
小改版的更新有一个特别的方法
,
例如从
6.0
或
6.0.1
更新到
6.0.2
< br>,
更新方法请参
考
MVT
ec's
的下载区
/halcon/download
关于
HALCON 6.0.2
版的特别说明
从
6.0.2
版开始,
HALCON
要用新的
dongle
驱动程序
(
来自
GLOBEtrotter)
,但是更新方法
中并无解除旧版的驱动程序以及新版的安装,所以
HALCON
会出现
或类
似的错误讯息,因此您要用
2.3.5.1
节的方法自行将旧的驱动程序移除。
2.1.4 HALCON
系统里的各种档案以及目录
以下说明
了安装目录
%HALCONROOT%
下的
各种子目录以及档案内容,不过随着安装选项
的不同,有些目录不会出现。
FLEXlm
包含检查
license
的程序
bin
HALCON
的主程序,像是
HDevelop
,或是
DLL
檔,
frame
grabber
的
libraries
等等。
docpdf
PDF
说明文件
examples
其中的子目录包含各类范例,例如
a
pplication_guide
,配合
< br>C
,
C++
,
< br>delphi
之程序设计,
fg_integrati
on(
影像撷取
接口
)
,
extension_package
,
hdevelop
之使用,
< br>MFC
,
VB
等等之范例。
注意,最好不要
直接使用这些范例,因为在大部分的作业平台下,只有安装者可以修改或储
存这些范例,
也不是所有用户都可以在范例的目录下新增
储存东西。所以最好是自行复制
一份到自己的
工作目录下。
8
images
各种工作所用的影像
include
给
C/C++
程序使用的
header
lib
HALCON
的
libraries
,包含和各种取像设备相连接的驱动程序。
(
在
p>
Windows
下扩展名
为
.lib
,
UNIX
下则为
.so)
license
授权数据文件要放在这
里
2.1.5
不同
HALCON
版本间的切换
您可以同时安装不同版本的
HALCON
在同一台计算机上。
在
W
indows
NT/2000/X
P
,
安装时
要修改相关的环境变量,像是
%PATH%
,
< br>%HALCONROOT%
,
%HALCONIMAGE
S%
,以
及自设的像是
%HALCONEXTENSIONS%
,这部分请参考
2.4.1
节。
如果您使用
HALCON
的
COM
接口
,
就要对专用的
DLL
檔
做
re-register
。
例如
,
开一个
DOS
shell
,然后进到
bini586-nt4
目录下
(<
/p>
您的旧版
HALCON)
,先做
unregister
,就
是在命令提示符号下键入
regsvr32 /u
然后到您的新版
HALCON
相对应的目录下,将
做
register
regsvr32
在
UNIX
下
,
要转换不同的
HALCON
版本
,
则要修改相关环境变量
,
像是
$$HALCONROOT
,
< br>
$$HALCONIMAGES
,
$$PATH
,
$$LD_LIBRARY_PATH
等等。
2.1.6
给
ActivVisionTools
用户的信息
ActiveVisionT
ools1.0
到
2.0
版是以
HALCON6.0
版
(
或
6.0.1)
为基础的,所以要是装了
HALCON
6.1
版,将会使得
ActivVisionT
ools
无法使用,所以
HALCON
6.1
的安装程序会
检查是否在计算机上已有安装
Act
ivVisionT
ools
,如果侦测到安装了
ActivVisionT
ools2.0
版,
它会提供一个新的,和
HALCON
6.1
版相容的
OCX Acti
vVT
。一般来说这是
您该做
的选择,您也可以事后手动修正如下,开一个
DOS shell
,到您安装
ActivVisionT
ools
目录下
的
bini586-nt4
目录下,对旧的
ocx
做
unregist
,键入
regsvr32 /u
ActivVT
9
然后将其删除,或是改名,换成新的
ocx
,这在
CD
中的
misci586-nt4avt20.
下可以找到,
然后键入
regsvr32 ActivVT
即完成更新
注意,和
ActivVisionT
ools2.0
不同的,
1.0
到
1.3
版不能和
HALCON6.1
p>
版一起使用
(
因为没
有兼容的
ocx)
,如果
HALCON6.1
版的安装程序发现计算机上安装了
A
ctivVisionT
ools
,像
是
1.3
版,它会警告您继续安装会使得现存的
ActivVisionT
ools
无法使用,若您还想使用,您就
得保留旧有的
HALCON6.0.
x
,
同时用
2.1.5
节的方法来转换版本
,<
/p>
如果只是要评估试用新版
,
建议您安装试用版,这样就不必再
register
COM
接口的
library
。
2.2
卸载
2.2.1 Windows
NT/2000/XP
在
Windows
下有几种卸载的方式
(
不过某些旧版的
HALCON
不一定适用
)
1
.
p>
在控制台下,选择
新增/移除
程序。
2
.
若您用的是
HALCON 5.1
以后的版本,从
开始
>
程序集
>MVT
ec
HALCON>Uninstall
HALCON
来卸载。
3
.
从
5.2
版起,安装程序会检查机器上是否已有安装旧版,然后
您可以利用安装程序来解除
旧版的安装。
这是比较好的方法,这样可以避免路径的变量发生问题。
以上是标准的卸载法,如果遇到问题,请参考
6.5.2
节。
< br>注意,卸载会真的删除安装的档
案,不过不会删除用户设定的数据,也就是
registry
中,像是和
HDevelop
有关的一些自定数据不会被删除,保留在
HKEY_CURRENT_USER>Software>MVT
ev>Halc
on
下。这里可以自行手动删除,不会出
问题。
卸载也不会移除
dongle
的驱动程序,要移除的话请参考
2.3.5
节的说明。
10
关于
6.0.2
版的特别说明
从这个版本开始需要一个新的
dongle
驱动程序
,
由于卸载不会移除旧有的驱动程序
,
所
以无
法安装
6.0.2
版所需的新的驱动程序,
所以在用程序进行卸载旧版的
HALCON
前,
要先以
手动移除其驱动程序,请参考
2.3.5.1
节。
2.2.2
在
UNIX
下卸载
只要将
HALCON
所在的安装目录移除即可
rm -rf $$HALCONROOT
再来
,<
/p>
移除子目录
.hevelop
,
这是位在环境变量
HOME
所定义的目录之下
(
参考
2.4.2
节
)
,
HDevelop
是以这个目录来储存窗口位置,选项数据等。
卸载不会删除任何用户自定数据,
因此环境变量也不会改变,要删除或修改时就
要自
行手动处理。
如果您呼叫了
Parallel
HALCON 6.0 beta
的
operator check_par_hw_potential
来做初始化动
作,取得的资料会存在一
.halcon_par_info
文件中,置于环境变量
HOME
所指定的目录
下。
2.3
授权
HALCON
透过
FLEXlm license manager
来确认用户的授权数据,以下说明取得授权码
及其安装方式。
要取得授权前,先要取得欲安装
HALCON
计算机之辨识数据,送至代理商
(
新亚洲仪器公
司
)
,
若使用的是
runtime license
,则请告知欲安装的模块。<
/p>
(
请参考
2.3.2)
在您收到
license file
之后,请参考
2.3.2
节的方法来安装。
floating license
的使用者请参考
2.3.4
节来安装。
2.3.4
取得辨识资料
取得辨识数据是由您计算机上安装的网络卡,若您的操作系统为
NT/2000/XP
,处理器为
Pentium
III
,
则能取得所谓的
CPU
ID
。
在
Windows NT/2000/XP
下
< br>,
也可以用一个
dongle
,
只要有
dongle
,就可以在其他计算机上执行,这样就不必限定在某台计算机上使用,而且适
用
于
nodelocked
或是
floating
license
之使用者。详细说明请参考
2.3.5
节。
2.3.1.1
用
HDevelop
取得辨识资料
用
demo
版的
HDevelop
来取得辨识数据是最简单的方法。
在主选单
p>
Help>About
,
会出现如
下的一个窗口
,
最底
下的数据就是关于您这部计算机的数据
,
像是网络卡卡号
,
CPU
ID
,
dongle
号码等。
11
如果发
生问题,既有的设备数据找不到,例如有网络卡而侦测不到,请参考
6.5.3
来排除问
题。
2.3.1.2
用
lmhostid
来取得资料
lmhostid
是随着
FLEXlm
的软件,在
Windows
操作系统下,由
DOS
下执行,在
UNIX
系统
中,则要切换目录,到
$$HALCONROOT/FLEXlm
下,再到对应您的硬设备的目录下
(
例
如
i586-Linux2.2)
执
行之。
要辨认
一台计
算机
的网络
卡号,
键入
lmhostid
-
ether
Windows
系统下的输出画面例子如下
>
lmhostid -ether
lmhostid - Copyright
(C) 1989-2000 Globetrotter Software, Inc.
The FLEXlm host ID of this machine is
请将
ID
,
就是上面例中的
以及计算机的
hostname
一起送给代理
商。
如果
lmhostid
回传
”fffffff
f
”
,请依照
6.5.3.1
节的方法来处理。
要辨认
CPU ID
,键入
lmhostid
–
cpu64
> lmhostid -cpu64
lmhostid -
Copyright (C) 1989-2000 Globetrotter Software,
Inc.
The FLEXlm host ID of this machine
is
如果
lmhostid
p>
回传
,则可能是因为在
BIOS
中
CPU ID
的选项关了,可在重新启动时将其
开启。
12
要检查
dongle ID(
限于
Windows
NT/2000/XP)
,则键入
lmhostid -flexid
会得到如下例之输出
> lmhostid -flexid
lmhostid - Copyright (C) 1989-2000
Globetrotter Software, Inc.
The FLEXlm
host ID of this machine is
注意,此时序号会写入
dongle
中
2.3.2 Runtime license
和
HALCON
的模块
HALCON
之运算符可分类成不同的模块
< br>,
像是
,
或是
management
,用于所有
HALCON
之功能,特别的像是
,
Code
Reader
之类的,只用于特定的程序。使用
runtime
版时可以只包含您需要的模块。
您的程序中用到了那些模块,有两种方式来检查。
在
HDevelop
下执行的程序,可由选单下,
File>Moduals
,然后会出现一个如下图的窗口,
其中就有使用到的模块
名称,然后按
,即可将这些纪录存成
.mod
文件,放在目前的
工
作目录下。
由
C
,
p>
C++
,
COM
所写成的应用程序,则需在程序结尾加入运算符
get_moduals
。
然后将确定需要的模块名称送到代理商。
图例
您使用到的模块
13
2.3.3
安装
license
file
要使用
HALCON
就要安装
license file
,这个档案必须放在
%HALCONROOT%license
下,
档名需为
,如果是用
floatong
license,
您必须将这个档案复制到所有已安装
HALCON
的计算机上,包括作为
license verver
的计算机。
以下例子是一个
nodelocked license file
的内容。
############################
# MVTec (ID: 0080c77161e2) #
############################
FEATURE MVTec_Halcon mvtecd 6.1
permanent 0 FC17B37961F326F957A8
VENDOR_STRING=65535 HOSTID=0080c77161e2
ck=23
FEATURE MVTec_HDevelop mvtecd 6.1
permanent 0 CC279389F3566E1D6363
VENDOR_STRING=65535 HOSTID=0080c77161e2
ck=32
图例
nodelocked
license
,限用于某台计算机
您可以
看到,档案中
接着
HALCON
的版本名称,而
license
是向下兼容的,举
例来说,
6.1
版的
license
亦可以用于
6.0
版。同时,向上亦可用于小改版的升级,例如
6.1
版的
license
可用于
6.1.x
版。
#################################
#
MVTec (ID: FLEXID=7-b285ff7f) #
#################################
FEATURE MVTec_Halcon mvtecd 6.1
permanent 0 3C574319AF86C4A5DE4A
VENDOR_STRING=65535
HOSTID=FLEXID=7-b285ff7f ck=35
FEATURE
MVTec_HDevelop mvtecd 6.1 permanent 0
7C772379E2D066930D10
VENDOR_STRING=65535
HOSTID=FLEXID=7-b285ff7f ck=245
图例
nodelocked
development license
,限用于特定
dongle
#################################
# MVTec (ID: FLEXID=7-b285ff7f) #
#################################
FEATURE MVTec_Halcon mvtecd 6.1
permanent 0 3C574319AF86C4A5DE4A
VENDOR_STRING=65535
HOSTID=FLEXID=7-b285ff7f ck=35
图例
nodelocked
runtime license
,限用于特定
dongle
14
2.3.4
floating license
之使用
在之前的介绍中已有概略的介
绍,首先,要有一台计算机
当成
license
verver
,安装一个名为
license
manager
daemon
的程序来检查网络中执行
HALCON
之计算机之数目,再来,
license file
要
copy
到所有安装
HALCON
之计算
机
,
而且也要<
/p>
copy
到作为
license
verver
的
计算机上
(
参
考
2.3.4.3)
。
接着来看看一个典型的
floating license
。
告诉
FLEXlm
当作
license server
计算机
的
名称,这个例子里,就是
number(27000)
。
############################
p>
halconserver
。还有网络卡号,以及
< br>
port
# MVTec (ID:
0080c77161e2) #
############################
SERVER halconserver 0080c77161e2 27000
DAEMON mvtecd
C:Progra~1MVTecHalconFLEXlmi586-nt4mvtecd
FEATURE MVTec_Halcon mvtecd 6.1
permanent 2 4C72DB2EC0F315624FAE
VENDOR_STRING=16383 ck=97
图例
floating
runtime license
的内容
(
< br>限用于某台计算机
)
某些情况下您可会想改变计算机的
hostname
,例如您用的是
dongle-bound
license
,基于某
些
需要想把
dongle
换到网络中另一台计算机上,或是您用限用于某网络卡的
p>
license
,而
您想把
网络卡移到另一台计算机上。
您也可能会需要更改使用的
port
,例如默认的
port
已被网络中某软件占用,但是要注意的,
大部分的计算机中,
port
number
小于1024的,只有特定权限的使用者能更改。
当您
在网络中任一台计算机执行
HALCON
时,
license
file
中的
后接着的数据,诸如<
/p>
host name
和
port number
等等,是用于让程序寻找联系
license
server
,而在作为
license
server
的计算机上,
port name
是作为启动
license
manager daemon
的依据,所以在计算机
中,
所有复制的档案内容必须相同。
在您做为
license
server
的计算机上,可能会需要修改
daemon
的目录
mvtecd
,这目录通常
如
下
%HALCONROOT%FLEXlm%ARCHITECTURE%mvtecd
(
关于环境变量
ARCHITECTURE
请看
2.4
节
)
由于
license file <
/p>
中没有环境变量数据,所以这个目录要自己新增。由于目录字符串中含有空
白
字符时会造成
HALCON
的问题,所以当您将
HALCON
装在像是
c:program
FilesMVT
ecHalcon
下时,路径字符串应改为
c:pro
gra~1MVT
ecHalcon
。
最后一点,
license manager daemon
必须在开机时启动。
2.3.4.1
在
Windows
NT/2000/XP
下安装
license manager daemon
在
Windows
下,可以由安装程序来安装,然后他就会在重新启动以后自动启动,当然您也
可以自行手动安装,这要在
DOS
下键入
(
这是一整串指令
)
15
-c
-l
-e
%HALCONROOT%
即是安装的目录
,
在
Windows
下
,
安装好后必须重开机
。
如果安装成功
< br>,
一个称为
HALCON
的
service
会出现在控制面板下的系统管理工具的
服务
中出现。
要移除
liscense manager
daemon
,键入如下之指令
2.3.4.2
在
UNIX
下安装
license
manager daemon
在
UNIX
下,这个程序
lmgrd
必须放在适当的启动档中,像是
/etc/init.d/
或
/sbin/init.d/
p>
,诸如此类。这部分请参考您使用的操作系统手册。
在这个档案中加入下面一整行
(
要有
lmgrd
的目录
)
/etc/lmgrd -c
$$HALCONROOT/license/ > $$HALCONROOT/license/
2>&1 &
注意,
lmgrd
要由
root
启动,否则不能正常的作业。
2.3.4.3
重新启动
license
manager daemon
如果您换了一个
floating
license
,就要将
daemon
重新启动。方法之一是重新启动计算机,
如
果您有管理者的权限,也可以用手动方式新启动。在
Windiows
下,您只要在系统管理工
具
下的
服务
中,将
这个服务重新启动即可。
在
UNIX
下,您可以终止
lmgrd
这个
process
,然后再重新启动,启动的指令就是
2.3.4.2
节
中,加入启动档的那一行。
2.3.5
使用
dongle
dongle
只有在
windows
下才能使用,从
6.0.2
版起,还提供了连接
USB
的
dongle
。连接印
表机埠的
dongle
,其
ID
是以
或
开始,而
USB dongle
的
ID
是以
起。
16
2.3.5.1
连接并行端口的
dongle
就像
2.1.1
节所叙述的,您可以让
HALCON
安装驱动程序,要检查安装是否成功,可由装置
管理员来检视是否有一个叫
sentinel
的设备。
HALCON
也有一个辅助程序让您可以自行安装,设定,或
是移除驱动程序。进到
DOS
下,
切换到
%HALCONROOT%FLEXlmi568-nt4flexid6-7win_nt
目录下,执行
。
要安装驱动程序,在主选单下选
Fu
nctions>install
,然后重新启动计算机。然后用上述的检
查
方法应该可以看到该项设备。
< br>要注意的是,
您必须要有
Administrator
的权限才能安装驱动
程
式。如果您没有权限,程序会也安装,并告诉您安装完成,而实际上无法作用。
要是计算机上有多个
parallel
port
,则还要再调整驱动程序。
HALCON
的卸载程序并不会移除这个驱动程序
(
因为其他程序有可能用到
)
,但是却会把
这
个安装程序移除
,所以如果您要移除这个
dongle
驱动程序,就要在您将
HALCON
解除安
装之前完成。这个安装程序是在
CD
的
FLEXlmi586-nt4f
lexid6-7win_nt
,有需要时可再叫
用。
关于
6.0.2
版的特别消息
如同在
2.1.3
以及
2.2.1
< br>节所叙述的注意事项
,
为避免出问题
,
建议以如下之程序进行安装。
手动方式解除旧的驱动程序。
用到的程序是
,位于
%HALCONROOT%FLEXlmi586-nt4dongle
下。
再来就有两个方式可以安装
HALCON 6.0.2
。
用
2.2.1
节的方法来移除旧版的
HALCON
,然后将
6.0.2
版和新的驱动程序一起安装。
用
2.1.3
节的更新方法,也就是手动更新,用到的程序
位在
%H
ALCONROOT%FLEXlmi568-nt4flexid6-7win_nt
下。
如果您在移除旧版的驱动程序前先移除了旧版的
HALCON
,
这个
也会被删除
,
但是它是位在
CD
中
FLEXlmi586-nt4dongle
下,若您没有
CD
,建议您重新安装旧版的
HALCON
。
2.3.5.2 USB dongle
如同
2.1.1
节,所需要的驱动程序可在
HALCON
安装时一起安装,安装是否成功,可由装置
管理员中查看是否有新增以下两项装置
Hardlock
以及
HASP
。
随者操作系统的不同,您
也可以用一个
HALCON
随附的辅助程序来修改,设定,移除驱动
程序。切换到
DOS
下,
切换到目录
%HALCONROOT%FLEX
lmi586-nt4flexid9
,有个程序
,有下列
指令可供显示,安装,移除
等等。
17
hinstall
hinstall -info
显示如何使用
hinstall
显使驱动程序的状态
hinstall -install
安装驱动程序
hinstall
-remove
移除驱动程序
当然,必须要有
Administrator
的权限才能安装。
由于
HALCON
的卸载程序不会移除
dongle
的驱动程序
,
但是会将安装程序
移
除,所以若是要移除这个驱动程序,就要在卸载
HALCON
前进行。原始的程序在
CD
中的位
置位于
FLEXlmi586-nt4flexid9
。
2.4
设定
HALCON
需要设定的东西大部分都是环境变量,例如放置影像,放置
extension package
的
目
录
p>
等
等。要
使
用
p>
Parallel
HALCON
p>
时,每
一
台
分
p>
担
计
算
的
计
算
机
上
都
要
做
初
< br>始
化
(initialize)
,
这部分会在
5.1.1
说明。
2.4.1
Windows NT/2000/XP
下的设定。
安装程序
执行时会自动设定这些环境变量,像是
%HALCONROOT%
等,要查看
变量的内容,可用控制面板下的
系统
中查看,或是修改,新增
变量内容。若是变量内容含
有
不只一
个项目,例如
%PATH%
可能含有数个目录,此时各个目录间
就要以分号
;
区隔
之。
此外,要在安装时同时修改建立这些变量,必须要有
Administrator
的权限。
HALCONROOT
这是最重要的环境变量,指出了
HALCON
安装的目录。典型的变量内容内容像是
C:Program FilesMVT
ecHalcon
p>
。根据这个变量,
HALCON
得以到以下的子目录中寻找资
料。
%HALCONROOT%help
运算符的数据库位于此处。由
HALCON
来存取有关运算符的资料。
%HALCONROOT%dochtmlreferenc
ehdevelop
在线辅助说明,只要有一个浏览器就可以阅读其内容。
18
%HALCONROOT%lut
使用者自定义之
look-up
table
。
%HALCONROOT%ocr
存放了
trained
fonts
。
%HALCONROOT%license
license KEY
置于此,也就是
檔。
%HALCONROOT%images
系统中没有
HALCONIMAGES
这个变数时,
HALCON
会到这个目录找寻影像。
HALCONIMAGES
这是告诉系统影像数据存放的地方,其中可以包含数个目录,但是要记得用分号区隔之。
ARCHITECTURE
HALCON
用这个变量来区别操作系统,在
Windows
下,
%ARCHIT
ECTURE%
即是设成
i586-nt4
。
这个变量同时会在好几个地方出现
,
像是
HALCON
的程序
,
,
等等,
是置于
%HALCONROOT%bini586-nt4
下,要
link
程序用的
library
像是
,位在
%HALCONROOT%libi586-nt4
下。
HALCONEXTENSIONS
这个变量含的目录,是用户自定义的运算符所在位置
(
所谓的<
/p>
extension
packages)
,每个
package
中含有数个运算符,
linked
到一个共享的
library
。还有一些说明文件,像是运算符
的
help
,以及
HTML
檔。安装
extension package
请看
2.5
节的安装方法。
HALCONSPY
如果在启动
HALCON
前,系统中已有
HALCONSPY
这个变数,那么在
HALCON
启动时,
一个工具程序
HALCON Spy
也会启动。由运算符
set_spy
也可以将其启动
(
参数为
,
,两种启动方法的差异在于,有了
<
/p>
%HALCONSPY%
这个变量,
就可
以监看一个
linked
好的
HALCON
程序
,
而不必再去修改。
相关设定请参考
6.4
节。
PA
TH
安
装时
,
%HALCONROOT%bini586-nt4
和
%HALCONROOT%FLEXlmi586-nt4
会被加到
PATH
中。
19
2.4.2 UNIX
下的设定
在
UNIX
下,
不同的
shells
设定环境变量的指令各不相同
< br>,
例如
setenv
,
export
,
这部分请参考您的操作系统说明
。
如果变量内容不只一个项目,
请用冒号区隔。
下表列出了
HALCON library
和
HDevelop
要用到的环境变量列表。最好把这些指令加在一
个
login script
或是
shell resource
script
中,例如
.cshrc
或是
.profile
里。
HALCONROOT
这是最重要的环境变量,指出了
HALCON
安装的目录。典型的变量内容内容像是
/usr/local/halcon
或
/usr/halcon
。
根据这个变量
< br>,
HALCON
得以到以下的子目录中寻找数据。
$$HALCONROOThelp
运算符的数据库位于此处。由
HALCON
来存取有关运算符的资料。
$$HAL
CONROOTdochtmlreferencehdevelop
在线辅助说明,只要有一个浏览器就可以阅读其内容。
$$HALCONROOTlut
使用者自定义之
look-up
table
。
$$HALCONROOTocr
存放了
trained
fonts
。
$$HALCONROOTlicense
license KEY
置于此,也就是
檔。
$$HALCONROOTimages
系统中没有
HALCONIMAGES
这个变数时,
HALCON
会到这个目录找寻影像。
HALCONIMAGES
这是告诉系统影像数据存放的地方
,其中可以包含数个目录,但是要记
得
UNIX
下要用冒号
区隔之。
ARCHITECTURE
这个变量以一个简写表示了所用的处理器以及操作系统版本。例如
i586-linux2.2
,或是
sparc-sun-
solaris7
。
ARCHITECTURE
会出现在好几个地方,像是程序
hdevelop
位在
$$HALCONROOT/bin/$$ARCHITECTURE
。把
p>
$$HALCONROOT/bin/$$ARCHITECTURE
加到
20
PATH
变量中,在使用
shell script
时很好用。
Shared library
位于
$$HALCONROOT/lib/$$ARCHITECTURE
下。下表为目前支持的作业平台以及对应的
ARCHITECTURE
内容。
ARCHITECTURE
i586-linux2.2
sparc-sun-
solaris7
mips-sgi-irix6.5
alpha-compaq-osf5.1
Operating System (Platform)
Linux 2.2/2.4 on Intel Pentium (or
compatible)
Solaris 7 on
Sparc Workstations
IRIX 6.5
on SGI Workstations (Mips processors)
Tru64 UNIX 5.1
5
on Alpha processors
PA
TH
如果想要在任一个目录都可以启动
HDevelop
,就必须将
HALCON
的目录
$$HALCONROOT/bin/$$ARCHITECTURE
加进环境变量
PATH
中。
LD_LIBRARY_PA
TH
请将
HALCON library
的目录
$$HALCONROOT/lib/$$ARCHITEC
TURE
加到
LD_LIBRARY_PATH
这个环境变量之中。
设好以后,
HDevelop
和开发的独立的程序才能使用。
HALCONEXTENSIONS
包含一些使用者自定义的运算符
(
所谓的
package)
所在的目录,每个
package
中含有数个运
算
子,
linked
到一个共享的
library
。还有一些说明文件,像是运算符的
help
,以及
HTML
檔。
安装
extension
package
请看
2.5
节的安装方法。详细方法请参考
Extension package
Programmer's
Manual
。
HALCONSPY
如果在启动
HALCON
前,系统中已有
HALCONSPY
这个变数,那么在
HALCON
启动时,
一个工具程序
HALCON Spy
也会启动。由运算符
set_spy
也可以将其启动
(
参数为
,
,两种启动方法的差异在于,有了
$$HALCONSPY
这个变量,就可以监看一个
linked
好
的
HALCON
程序,而不必再去修改。相关设定请参考
6.4
节
DISPLA
Y
系统以这个变量来显示窗口,和其他的
X
窗口程序一样。
HOME
在
Parallel HALCON
6.0 beta
中,做初始化的运算符
check_par_hw_potential
会将取得的
主机数据存于
$$_par_info
。
21
2.5
整合
HALCON Extension Package
HALCON
的
Extension Package Interface
可以让您将自行开发的计算法和
HALCON
整合
在一起,成为所谓的
extension
packages
。目前可以使用的
package
项目可由
HDevelop
之
选单
Help>HALCON
News(WWW)
,连结到
MVT
ec
的网站来取得资料。
2.5.1
安装
Extension
package
先将这些
package
移到
%HALCON
ROT%
目录下,解压缩,再来,将完整的目录
%HALCONROOT%packageshalconuser
加到环境变量
HALCONEXTENSONS
中。
注意,
package
的名称,以及其中所含的
library
或
Dll
档的名称都不可以更改。否则会无法
用使用。
如果
package
中含有影像,例如说含有一些范例影像您要使用,可以将其影像所在的目录加
入环境变量之中
(HALCONIMAGES)
,要使用这些影像时就不必再输入完整的路径。
2.5.2
在
HDevelop
中使用
Extension
Package
在
HDevelop
下要使用新的
package
时,只要将程序重新启动,就会自动整合位于
HALCONEXTENSIONS
所载目录中的
packages
p>
。各种新增的运算符在使用上和
HALCON
原有者并无二致。
在
Linux
下
,
必须在您启动
HDevelop
前
,
将
package library
所在的子目录
lib/i586-linux2.2
加入环境变量
LD_LIBRARY_PATH
中。
2.5.3
在一个独立的程序中使用
Extension Package
您必须在程序代码中将这些
package
library(
像是
Windows
下的
Dll
,
UNIX
下的
shared
library)link
进来。
2.5.3.1
在
Windows NT/2000/XP
中使用
Extension
Package
如果要用
C
或
C+
+
写新的程序
,要将
或
连到您的
obj
檔
,当然
基本的
library
,像是
或是
也要
link
进来。
要能
link
这些
Dll
,系统的环境变量
PATH
就要含有完整的路径像是
%HALCONROOT%pac
kageshalconuserbini586-nt4
此外,不要把这些
Dll
文件复制到
Windows
的系统目录下,否则执行时会被重复加载。
22
2.5.3.2
在
Linux
中使用
Extension
Package
如果要用
C
或
C++
写新的程序,要将
或
或
等档案
link
起来,
当然基本的
< br>library
,
像是
或是
,
等等也要
link
进来。
要能使用这些
LIBRARY
,系统的环境变量
LD_LIBRARY_PATH
就要含有完整的路径像是
lib/i586-Linux2.2
2.5.3.3
在
Solaris
中使用
Extension
Package
如果要用
C
或
C++
写新的程序,要将
或
或
等档案
link
起来,
当然基本的
< br>library
,
像是
或是
,
等等也要
link
进来。
要能使用这些
LIBRARY
,系统的环境变量
LD_LIBRARY_PATH
就要含有完整的路径像是
lib/sparc-sun-solaris7
2.5.3.4
在
IRIX
中使用
Extension
Package
如果要用
C
或
C++
写新的程序,要将
或
等档案
link
起来,当
然基本的
library
,
像是
或是
,
等等也要
link
进来。
要能使用这些
LIBRARY
,系统的环境变量
LD_LIBRARY_PATH
就要含有完整的路径像是
lib/mips-sgi-irix6.5
2.5.3.5
在
Tru64
UNIX(DIGITAL UNIX)
中使用
Extension Package
如果要用
C
或
C++
写新的程序,要将
或
等档案
link
起来,当
然基本的
library
,
像是
或是
,
等等也要
link
进来。
要能使用这些
LIBRARY
,系统的环境变量
LD_LIBRARY_PATH
就要含有完整的路径像是
lib/alpha-compaq-osf5.1
23
第三章
对
HDevelop
的初步认识
本章是入门使用者必须熟悉的章节,将介绍如何从头开始处理
一个影像分析问题,在范例中
会介绍
HDevelop
重要的功能,让您逐渐习惯它的使用接口以
及掌握有效的使用方法。
这
个范例是
属于品管领域的,目的是检查工件上的
bonding
balls
,范例位于
HALCON
package
的子目录下
%HALCONROOT%
范例中会介绍
如何用
HALCON operator
建立一个
HDevelop
程序。
如何找到合适的
operator
以及其参数。
如何使用图像
及控制变量。
如何使用图形窗口。
如何产生
ROI
。
如
何利
用型态学的方法来解决范例中的问题。
如何
使用
pattern
匹配。
如何使用
control
struct
。
仔细的读完这一章,您会熟悉
HDevelop
的各种交互式接口,让您能够自行开发自己专用的
影像分析程序。
图例
要分析的影像:工件上的
bonding balls
24
3.1
HDevelop
的用户图形接口
GUI
。
在
Windows
下,由
开始
程序集
>MVT
ec HALCON>HDevelop
启动,在
UNIX
下则是由
shell
中启动
hdevelop
。程序启动后可以看到一个主画面,其中包含了四个窗口,
Program
,
运算符
,
变量
,
影像等
。
以下是简单的介绍
,
至于详细的内容
请参考
HDevelop User's
Manual
。
3.1.1
主画面
如下图所示
,
它整合了程序发展以及作
业管理功能
(
像是
< br>loading
,
saving)
,
选单以及工具栏。
图例
主画面
主选单
主选单中包含了所有
HDevelop
的功能,如下表所列。
25
File
Edit
Excute
加载以及储存
HDevelop
的程序,或是结束
HDevelop
之作业。
编辑
HDevelop
的程序。
执行
HDevelop
的程序。
Visualization
自定义影像窗口外观。
operators
子目录中含有程序结构
< br>,
HDevelop
之运算符
,
以及所有的
HALCON
运算符。
Suggestions
提供选用运算符的建议。
Windows
Help
各个窗口的管理
< br>(
重迭,排列,切换等
)
开启说明档。
工具栏
工具栏含有一系列常用功能的快捷方式,同时掌控了
HDevelop
程序的执
行。
New
Open
Save
删除
program
windows
中目前的程序。
开一个新的
HDevelop
程序。
储存
HDevelop
程序。
删
除
程
序
中
选
起
来
< br>的
程
序
代
Cut
码。
Copy
复
制
程
序
中
选
起
来
的
程
序
p>
代
码。
paste
贴
上
程
序
中
选
起
来
的
程
序<
/p>
代
码。
Run
Step
Stop
执行
HDevelop
程序。
执行
HDevelop
中下一个程序指令。
终止程序的执行。
Avtivate
使程序中选取的部分指令可被执行。
Deactivate
使程序中选取的部分指令被忽略。
Reset
重新启动程序并重设所有变量。
显示
visualization
参数的窗口。
set parameters
Pixel info
Zooming
显示
pixel info
窗口。
显示实时缩放窗口。
gray
histogram info
显示频谱数据。
Region info
显示
ROI
中的各种资料。
26
3.1.2 program
窗口
这个窗口是用来显示一个
HDevelop
program
。它可以显示整个程序或是某个运算符。窗口
左侧是一些控制程序执行的指示符号。
HDevelop
刚启动时,可以看到一个绿色箭头的
program
counter(
简称
PC)
,一个插入符号,还可以设一个断点
(breaking
point)
,窗口右
侧显示程序代码。
3.1.3
运算符窗口
您所选择的运算符的重要
数据会显示在这里。包含了所有的参数,各个变
量的型态,以及参
数数值。这里会显示参数的默认值,以及您可以选用的数值。每一个运
算符都有联机帮助。
另一个常用的的是变量名称的查询显示功能,在一个
combo box
里,
只要键入部分字符串甚
至开头的字母,即可显示所有符合名称的运算符供选用。
3.1.4
变量窗口
这个窗口显示了程序在执行时产生的各种变量。在变量上用鼠标双击之,
即可
显示变量值。
如果变量值包含了影像数据或
ROI
,所谓的图像化变量,会显示在图形
窗口里。
< br>
3.1.5
图形窗口
用来显示图像化变量数据,
可视化的方式可以依据您的需要来调
整,相关功能位于
Visualization
选单下。您可以开启数个
graphic
窗口,并且自行
选用要用的窗口。
3.2
编辑
HDevelop
程序
HDevelop
启动以后
,
就可以开始从
program
窗口输入
,
逐步建立您自己的
HDevelop
程序。
要在程序中新增一行,像是加一个运算符,有两个步骤。
首先要将光标放在您要新增的地方
,
用键盘的
Shift
键加上的鼠标左键
,
p>
点在您要加入的地方
(
< br>插入符号位于窗口左侧
)
。
接下来从
Operator
选单中选择,或是由运算符窗口来选用想要加入的数据。
新的
(<
/p>
选好的
)
运算符会出现在
运算符
窗口中,包含它的参数等等数据,此时按下
Enter
,就
会将它加入程序代码中,成为新增的一行。如果您按的是
p>
OK
,除了程序代码会新增以外,
同时
p>
也会执行程序。如果您按的是
Apply
,运算符不会新增到程序中,但是会被执行,这样
就可
以方便又有效的测试修改参数的结果。
如果只要执行某一行,可以将
PC(Program
counter)
置于要执行的那行前,再用鼠标左键在
该行前单击,然后按
HDevelop
工具栏的
Step
。如果您按了
Run
,接下来的程序代码都会执
27
行
,
直到一个断点或是按
Stop
p>
将其中止
。
在程序代码中点一下
,
就是选择了这一行
,
双
击,
会将该行数据显示在
运算符
窗口中。
程序完成后,可以将其储存供日后叫用,或是输出成
C
,
C++
,
COM
的程序代码,产生一个
独
立的程序,在选单中
File>Save as
即可储存。
以上叙述的这些基本操作
在范例程序中会
经常用到,您将有许多机会熟悉这些操作,接下来
将叙述如何加载影像。
3.3
加载影像
开始作业时,必须新增一个
HALCON object
来放置您的影像。取得影像的方法有数种。
< br>利用取像设备取得实时的影像
(
由选单
< br>
Operators>Image>FrameGrabber)
。
由现存图像
文件读取<
/p>
(
由选单
File>Image
以及
File>Read Image)
。
自行产生一个新影像
(
由选单
Operators>Image>Creation)
。
图例
赋值运算符
read_image
之参数
上例中用到
运算符
read_image
,可以从主选单
Operators>File>Images
选择,或是在运
算子
window
中的
文字输入栏手动键入,再按
Enter
。此时这个运算符应该会如上
< br>
图般出现,第一个字段是要新增的
image object
名称,现在自行把它改成
,用鼠标左键
28
在字段中单击,就可以输入。第二个字段是图像文件档名
,将其改成
read_image(Die
,<
/p>
这个运算符有两个参数,都指定好以后按
OK
,系统就会将其加进
program window
中并且
执行,到此您已完成第一行程序。变量
,包含了一个
image
object
,会显示在变量视
窗中
,同时在这个例子里,运算符的运算结果会显示在图形窗口中。如果加载影像时发生错
误,请检查环境变量是否设对。如果系统中环境变量
HALCONIMAGES
没设,影像数据就
要放在
%HALCONROOT%images
指定的目录下。
3.4
修改图形窗口
由于默认的图形窗口尺寸为512*512,因此您的影像尺寸不同时,显示在屏幕上就会
< br>
变形,虽然可以用鼠标拉动窗口四周来调整尺寸,但是要看到无变形的影像,最
快的方法是
由选单
Visualization>Size Window>Original
,即可自动调整窗口。由于以后的例子中要用到
window
的
ID
,所以现在要用
HDevelop
的运算符来新增一个图形窗口,其中参数
Width
和
Height
是窗口的大小,如果不知道确实的尺寸,就给他
-1
,即是最
新开启的影像大小。
dev_open_window(0
,
0
,
-1
,
-1
,
black
,
Wi
ndowID)
,
按下
OK
,就会产生一个新的图形窗口,同时尺寸和您的影像相符。不过这个窗口目前是黑
的,现在它已是
,
您输入的数据就会显示在上面。此时,在变量窗口中双击图像变量
,就会显示影像。
< br>默认的影像检视方式是显示像素的数组,当然也可以用其他方式来
观察,例如从<
/p>
Visualiation>Set
Parameters>Paint
,选
3D-plot
,再来按
Update
,就可以
看到以
3D
显示
的
image
。其他各种显示方式在
HDevelop Users Manual
有详细说明。在
这个范例中,别忘
<
/p>
记将显示方式转回默认方式。所有的显示模式都可以由程控切换,例如
显示频谱可由
dev_set_paint('3D-p
lot')
行之。
您也可以缩放影像。由选单中
Visualization>Set
Parameter
,选
zoom
项,按上面的
键,就可以用鼠标选择要放大的区域,用鼠标左键按住拉动,从放大区的左上角
p>
到右下角,放开,然后右键单击。要回复原有尺寸,在刚才的画面中按
键即可。
29
3.5
产生
ROI
在待处理的影像中指定一个
ROI
是非常有用的,由于只要计算指定区域内的影像,因此可以
大幅提升效率。
图例
矩形和任意形状的
ROI
产生
ROI
有几种方式
矩形的
ROI
由选单中
Operators>Graphics>Drawing
选择
draw_rectangle1
这个运算符
,
不要修改任何
参数,执行之,在程序窗口中就会新增一行,然后
HDevelop
就会等您把区域画上去,画的
方法和
zoom
< br>的方法相同
。
画好之后变量窗口中会出现四个变量
,
Row1
,
Col
umn1
,
Row2
,
Column2
,请看下图,接着要产生
ROI
做为
HALCON
的
object
,由选单中
Operator>Regions>Creation
选用
运算符
gen_rectangle1
,此时使用的参数就是从
Row1
到
Column2
等等,输出对象的名称可以自定义为
。
两个运算符使用的参数
draw_rectangle1
(W
indowID, Row1, Column1, Row2,
Column2)
gen_rectangle1 (ROI, Row1,
Column1, Row2, Column2)
执行这个运算符,您就产生了另一个
HALCON object
,也就是
region(
请看
4.2.3
节
)
。
30
图例
变量窗口
预设的
region
表示法就是用特定颜色在图形窗口中画出
region
的形状。您也可以自行修改
输出方式
,
像是颜色
,
线条粗细等等
。
从选单
Visualization
或是用
dev_*.
等运算符来作业,
例如由
Visualization>Color
来选颜色,
Visualization>Line>Width
来改变线宽,
Visualization>Draw
来指定画区域外围或
是填满颜色。改变图形输出方法以后图形窗口都会
更新,要显示变量窗口中某个图像化变量,在上面点两下即可。
任意形状的
ROI
HALCON
可使用任意形状做为
ROI
区域。用选单
Operators>Graphics>Drawing
之
Draw_region
,而不是用之前的画矩型的方法。
draw_region(ROI
,
windowID)
为了要让程序正确运作,请把其中
d
raw_rectangle1(
在程序窗口中单击这一行就可以选
取
)
用
Edit>Deactivate
使其不执行,同样的,
gen_rectangle1
也让它不执行。
计算适合的
ROI
用计算来找出
ROI
是利用影像分析的中间结果,这是最有挑战性,变化弹性最大的部分。在
3.8
节的例子中会介绍如何找出工件上的球型物。
31