GenICam 标准 1、概述 如今的数码摄相机包含了很多的功能,而不仅仅是采集图像。对于机器视觉相机来说,处理图像并把结果附加到图像数据流上,控制附加的硬件,代替应用程序作实时的处理等都是很平常的事情。这也导致了相机的编程接口变得越来越复杂。 GenICam 的目标是为所有类型的相机提供一个统一的编程接口。无论相机使用的是哪种传输协议或者实现了哪些功能,编程接口(API)都是一样的。见图 1。 图 1 The GenICam vision GenICam 标准包含多个模块(module),按照主要功能分为如下部分: GenApi: 用于设置相机的应用程序开发接口(API) GenTL: 获取图像用的传输层(TL)协议,尚未完成 这两个模块可以相互独立地发布。 2 GenApi 模块 – 配置相机 2.1. 简介 GenApi 模块解决如何去配置相机的问题。主要的思路是,让相机生产厂商为他们的相机提供机器可以识别的产品说明。这些相机描述文 件(camera description files)包含所有需 要的信 息 ,用以自 动 地把相机的属 性 (features)和其 寄 存 器( registers )相对应。 相机的Gain 属性是一个典型的例子,假设用户想令Gain=42,利用GenICam,通用的软件可以读相机的描述文件并发现,要把Gain 属性设成42 意味着向地址为0x0815 的寄存器写入值0x2A。其他要做的工作可能是检查相机是否提供Gain 属性,并检查要写入的值是否在Gain 的允许范围内。 请注意,给相机添加新的属性仅仅意味着扩展相机的描述文件,就可以对所有符合GenICam 标准的程序立即生效。 图2 Layers for accessing a camera 2.3. 节点、接口和抽象特征 相机描述文件中的每个节点只描述一个项目。基于项目的自然性,节点有一个特定的类型(node type)和一个特定的接口(interface)。下列接口目前可用3(每个接口有一个控件用于映射到 GUI): IInteger – 映射到一个带有value、min、max 和 increment 的slider IFloat – 映射到一个带有value、min、max 和一个物理单位的 slider IString – 映射到一个显示字符串的编辑框 IEnumeration – 映射到一个下拉框 ICommand – 映射到一个命令按钮 IBoolean – 映射到一个复选框(check box) IRegister – 映射到一个显示 16 进制字符串的编辑框 ICategory – 映射到一个可以反映相机属性结构的树控件 IPort – 映射到一个相机...