GenICam:相机控制的通用标准
工业相机提供多种可配置的设置,包括曝光时间、增益、帧率、触发模式和像素格式。在 GenICam 出现之前,相机制造商往往以不同方式实现并命名这些参数,并提供专有的软件库来访问它们。
因此,集成来自不同供应商的相机经常需要针对特定应用的 SDK 和额外的软件开发工作。将某个制造商的相机替换为另一制造商的型号,可能需要对采集软件或控制逻辑进行大量修改。
GenICam 由欧洲机器视觉协会(EMVA)开发并维护,它对机器视觉软件如何发现、描述和访问相机功能进行了标准化。该标准与接口无关,可支持 GigE Vision、USB3 Vision、CoaXPress 和 Camera Link 等多种技术下的兼容相机。
因此,基于 GenICam 兼容接口编写的软件能够通过统一的功能模型与不同制造商的相机进行通信,从而降低集成复杂度并提升互操作性。
GenICam 的工作原理
GenICam 并非单一协议,而是由多个相辅相成的标准组成的框架,这些标准定义了机器视觉软件如何发现、访问和控制相机功能。
GenApi
GenApi 是 GenICam 框架的核心组件。每台兼容 GenICam 的相机都包含一个存储在设备本身上的 XML 描述文件。该文件描述了相机可用的功能,包括参数类型、有效范围、访问权限以及设置之间的依赖关系。
GenApi 既定义了此描述文件的结构,也定义了用于访问相机参数的编程接口。视觉应用程序可以读取该 XML 描述,确定相机支持哪些功能,并通过标准化的软件接口配置设备。
SFNC(标准功能命名规范)
SFNC 对常见相机功能的命名和行为进行了标准化。例如,曝光时间、增益和采集帧率等参数在兼容设备之间使用一致的命名规范。
这种一致性有助于减少厂商专有的软件差异,并提升不同制造商相机之间的互操作性。
GenTL(通用传输层)
GenTL 将机器视觉软件与底层硬件传输接口分离开来。它定义了一套标准化的传输 API,图像数据通过该 API 从相机传输到主机应用程序,无论连接使用的是 GigE Vision、USB3 Vision、CoaXPress 还是 Camera Link。
因此,图像采集软件通常能够通过统一的传输架构支持多种接口技术。
这些模块共同构成了完整的 GenICam 技术栈:
|
模块 |
它标准化了什么 |
为何重要 |
|
GenApi |
通过基于 XML 的设备描述实现相机功能描述与参数访问 |
软件应用程序可以通过标准化接口发现并配置兼容相机的功能 |
|
SFNC |
通用的功能名称与行为规范(曝光、增益、触发设置等) |
减少厂商专有的命名差异,并提升兼容相机之间的软件可移植性 |
|
GenTL |
跨不同物理接口的图像传输 API |
采集软件可通过统一的传输架构支持 GigE Vision、USB3 Vision、CoaXPress 和 Camera Link |
GenICam 与传输接口标准
GenICam 常与 GigE Vision 和 USB3 Vision 一同讨论,但区分这些标准之间的关系十分重要。GigE Vision 和 USB3 Vision 定义图像数据如何通过以太网或 USB 传输层进行传输。GenICam 则对软件如何发现、描述和控制相机功能进行标准化。
这些标准的设计旨在协同工作。GigE Vision 和 USB3 Vision 均依赖 GenApi、SFNC 和 GenTL 等 GenICam 组件来提供标准化的设备控制与传输集成。
因此,许多机器视觉应用程序能够支持跨不同传输接口的相机,同时为参数访问和图像采集保持一致的软件架构。无论相机是通过以太网还是 USB 进行通信,都使用相同的 GenApi 功能模型和 SFNC 命名规范。
GenICam 的实际应用
对于系统集成商和软件开发者而言,GenICam 兼容性有助于标准化工业相机在不同设备和制造商之间被发现、配置和控制的方式。
当连接一台兼容相机时,主机软件可以读取相机机载的 XML 描述文件。该文件描述了相机可用的功能,包括支持的参数、访问权限和功能依赖关系。随后,软件可以基于此设备描述动态生成或配置其控制接口,从而减少对特定型号软件实现的需求。
这对工业视觉系统的集成与维护具有重要的实际意义:
-
使用某一制造商相机的生产系统,只要设备遵循相同的 GenICam 标准,便有可能以较少的软件修改工作量集成另一制造商的相机
-
IC Imaging Control、HALCON、MATLAB 和 OpenCV 等视觉软件可以通过标准化的 API 或传输层访问兼容 GenICam 的相机
-
组合了不同相机型号或接口技术的多相机系统,通常可以在统一的软件架构内进行管理
常见问题
不是。GigE Vision 是一种硬件与网络协议标准,定义图像数据如何通过千兆以太网传输。GenICam 则是一种软件标准,定义相机参数如何被描述和控制。GigE Vision 相机必须实现 GenICam 以提供参数访问,但 GenICam 同样适用于 USB3 Vision、CoaXPress、Camera Link 及其他传输标准。GenICam 与传输方式无关,而 GigE Vision 则不然。
来自成熟制造商的大多数现代工业相机都支持 GenICam,尤其是通过 GigE Vision 或 USB3 Vision 认证的相机。其兼容性通过 EMVA 认证流程进行验证。专为嵌入式应用设计、采用 MIPI CSI-2 的相机在硬件层面并不原生实现 GenICam,但在受支持的平台上,软件层可以将 MIPI 相机的控制映射为与 GenICam 兼容的 API。
主要好处是减少了集成工作量。开发者无需为每款相机型号学习专有的 SDK,而是使用 GenApi 接口和 SFNC 参数名称。当系统中接入新相机时,软件会读取其 XML 并自动适配。功能发现已内置于该标准之中,无需依赖针对文档的特定实现。
它是一个存储在相机固件中的结构化描述文件,列出了每个可控参数、其数据类型、允许的取值范围、与其他参数的依赖关系以及访问权限。该格式由 GenApi 模块定义。当视觉软件连接到相机时,会首先读取此文件,并据此为该特定相机型号构建完整的控制接口。该 XML 是相机的自我描述:正是它让即插即用的相机集成成为可能。
术语表
- 返回总览