第一章 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,以较多的时间来求得最准 确结果。
HALCON 可处理彩色及多频道影像 可用于计算的影像数据,包含二值化影像,单色,彩色,或是多频影像,在使用上并无差别。(多频道影像是以多镜头系统取得的影像数据)。
HALCON 提供了快速有效率的 region 处理计算
除了使计算更容易外,region 尺寸无限制,甚至于可以重迭,而 region 数据经过最佳的编码
1
处理,在内存中所占的资源极少。
HALCON 可做 ROI 的计算
每个影像中的物体都可由用户自行定义其 region,接着再由运算符进行计算时就可以只针 对定义区域作处理,因此可以集中运算资源和速度,达到最好的效率。
HALCON 提供了快速的 pattern 匹配计算
pattern 匹配在许多应用上是很有用的,但是却很花时间,HALCON 有许多不同的 pattern 演 算法,可以让您自行决定何时使用。
HALCON 提供了形状导向(shape-based)的匹配计算,使得物体有重迭或是旋转杂置的状况 下仍可计算。除了 pattern 匹配外,形状导向的运算符可以在物体有缩放,照明改变,旋转 或重迭等等情况下仍旧能辨认出物体。从 6.1 版开始,还有一个辅助工具 HMatchIt,透过简 易的设定即可用来测试匹配执行的效率,藉由参数的调整让您找出最佳的设定值,达到最快 的计算速度。
HALCON 提供了方便有效的 tuple 功能
tuples 是一种很有用的功能,使您处理影像,区域,参数等等数据集合时更为便利。HALCON 的 tuples 可以将相关数据整合成一个对象,用户可以针对单一或多个 tuples 作处理,您就 不必为一个 tuple 中有多少元素要处理而烦恼,只要将指定的 tuple 丢给运算符,HALCON 就会处理 tuple 中所有要计算的元素。
HALCON 在影像和数据管理上效率卓著
HALCON 有个快速有效率的内存管理核心,这个机制提供了数据的读写,还有溢位的检 查。为了提高效率,共享的影像数据不会在内存中重复。
HALCON 支持 C,C++以及 COM 的程序设计
您可以在自己撰写的 C,C++和 COM 程序中使用 HALCON 运算符,完成一个独立的程序。
HALCON 的 HDevelop 工具帮助您发展影像分析程序
撰写影像分析程序通常是旷日费时,为了帮助设计人员找出合适的运算符及参数,HALCON 发展出一套工具程序 HDevelop。它如帮助您呢? 首先 HDevelop 有一个图形接口,要使用 的运算符和要分析的影像一目了然,运算符可以自行组合,计算成果实时显示在影像中,可
2
以帮助使用者了解不同运算符和参数对计算的影响。同时它也会提出一些运算符或参数的建 议,在线辅助除了解释运算符如何工作外,还有范例的说明。当您觉得计算成果满意了,可以把设计好的成果存成 HDevelop 的专用档案,下次可再叫用,或者是将其输出成 C,C++或 COM 的程序代码,可供其他程序套用,就像自行撰写的程序一样。
HALCON 可连接 40 余种影像撷取设备
目前支持的设备列表在 http://www.mvtec.com/halcon/,要连接取像设备,只要用运算符 open_framegrabber,给予格式或撷取模式等参数,再来用运算符 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,也就是不同的 线程可以同时呼叫同一个运算符,可使用的操作系统包含 NT/2000/XP,Linux,Solaris。
除了平行运算外,Parallel HALCON 在多处理器的系统上,会自动将运算符作平行化,旧的 HALCON 也有此功能,像是 HDevelop 这个接口,所以您开发的 C++,C,不必再做更动。
平行化的机制是将要处理的数据,例如影像,由不同的处理器上执行不同的线程(所谓的 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,是以工业视觉应用的观点来写的, 主要是说明一些计算方式的关键以及使用时的注意事项以及要诀等等。例如以型状导向匹配 来寻找物体等等。
在 MVTec 的网站上所有的参考手册都有 PDF 檔及 HTML 文件可以下载,网址为 http://www.mvtec.com/halcon
5