1、概述
如今的数码摄相机包含了很多的功能,而不仅仅是采集图像。对于机器视觉相机来说,处理图像并把结果附加到图像数据流上,控制附加的硬件,代替应用程序作实时的处理等都是很平常的事情。这也导致了相机的编程接口变得越来越复杂。
GenICam 的目标是为所有类型的相机提供一个统一的编程接口。无论相机使用的是哪种传输协议或者实现了哪些功能,编程接口(API)都是一样的。见下图 。
GenICam 标准包含多个模块(module),按照主要功能分为如下部分:GenApi、GenTL、SFNC、CLProtocol、GenCP。
GenApi
用于对相机进行配置的应用程序编程接口(API)。GenApi 定义了用于通过设备中的自描述 XML 文件提供通用 API 的机制。以 GenICam 为名称的一系列的参考实现,包括各个主要操作系统,但是没有源码,以库文件的形式提供。并定义了 XML 文件格式。
GenTL
支持抓取图像的传输层(transport layer, TL)API 。GenTL 使传输层编程接口标准化。它是一种低级 API,为设备提供标准接口,而不考虑传输层(带或不带图像采集器)。它允许枚举设备、访问设备寄存器、流数据和传递异步事件。GenTL 也有自己的 SFNC 和一套 GenTL 生产者实现架构。
SFNC(标准特征命名约定)
标准特性的命名约定。 这是大多数用户看到的 GenICam 的一部分。它标准化了设备功能的名称、类型、含义和使用,因此来自不同供应商的设备总是使用相同的名称来实现相同的功能。这些特性通常显示在树状视图中,或者可以由应用程序直接控制。一个相关的标准是 PFNC(像素格式命名约定),它定义了如何一致地命名像素格式并列出了正在使用的格式。SFNC 的另一个扩展是 OOCI(开放光学相机接口),它为相机的光学组件或附加的光学组件提供了一个标准接口,无论相机是基于什么线接口技术构建的。
CLProtocol
用于将 Camera Link 相机转接到 GenAPI 的 API 。
GenCP
通用控制协议
各个模块可以独立于其他模块进行发布。