GenICam - 工业相机机器视觉标准
GenICam
GenICam标准由欧洲机器视觉协会(EMVA)主持制定。GenICam(相机通用接口)的目标是为各种设备(主要是相机)提供一个通用的编程接口,无论他们使用什么接口技术(GigE Vision, USB3 Vision, CoaXPress, Camera Link HS, Camera Link等,无论采用何种接口技术,应用程序编程接口(API)都是相同的。
GenICam的核心是在XML描述符文件中对相机属性的描述。使用这个文件,从XML到c++的转换器直接生成一个应用程序编程接口,称为GenAPI,或者图形用户界面(GUI)的元素。这样,用户就可以轻松地访问相机的特性,例如增益、曝光时间等,以及相机上可用的功能
GigE Vision和USB3 Vision标准要求带有GigE或USB 3.0接口的相机提供XML描述符文件。 而Camera Link接口相机则是由GenICam标准的所谓CLProtocol模块对相机配置进行了描述,为GenAPI提供API。
GenICam 模块组成:
GenApi
GenApi定义了用于通过设备中的自描述XML文件提供通用API的机制。以GenICam为名称的一系列的参考实现,包括各个主要操作系统,但是没有源码,以库文件的形式提供。并定义了XML文件格式。
SFNC(标准特征命名约定)
这是大多数用户看到的GenICam的一部分。它标准化了设备功能的名称、类型、含义和使用,因此来自不同供应商的设备总是使用相同的名称来实现相同的功能。这些特性通常显示在树状视图中,或者可以由应用程序直接控制。一个相关的标准是PFNC(像素格式命名约定),它定义了如何一致地命名像素格式并列出了正在使用的格式。SFNC的另一个扩展是OOCI(开放光学相机接口),它为相机的光学组件或附加的光学组件提供了一个标准接口,无论相机是基于什么线接口技术构建的。
GenTL (传输层)
GenTL使传输层编程接口标准化。它是一种低级API,为设备提供标准接口,而不考虑传输层(带或不带图像采集器)。它允许枚举设备、访问设备寄存器、流数据和传递异步事件。GenTL也有自己的SFNC和一套GenTL生产者实现架构。
GenDC
定义了一个可移植的通用数据容器(GenDC)格式。这允许设备以独立于传输层协议(TLP)的格式发送任何形式的数据(如1D、2D、3D、多光谱、元数据等)。
GenCP(控制协议)
这是一个低级标准,用于定义设备控制的数据包格式,接口标准使用它来节省为每个新标准重新发明控制协议的需要。
其他模块
- PFNC
- CLProtocol, Camera Link接口API
- FWUpdate