The new GenICam standard has recently been ratified and released, and is designed to provide a common platform for a wide variety of cameras, irrespective of their connection type.
GenICam is designed for cameras that use GigE, Cameralink, Firewire and other digital connections, and provides a common interface for developers and users. GenICam will provide cross-compatibility between different camera manufacturers and enable a common programming interface. In short, the GenICam standard is going to provide a generic programming interface for all kinds of cameras; no matter what interface technology it uses.
Genicam has been developed by a committee of the European Machine Vision Association and leading vision product manufacturers. They include Dalsa/Coreco, Allied Vision Technologies and JAI, to name but a few.
In today's machine vision and image analysis environment, it is recognised that customers want the choice to use any image processing library, any camera, and any smart feature the camera can provide. Camera vendors want to be able to provide its customers with the right camera for their environment, no matter what interface it uses. Software library vendors have to support all cameras and support all smart features, which at present with all the different interfaces available, can be exhaustive and highly time consuming.
GenICam supports four main uses:
Configuring the camera
Providing a user interface
Transmitting extra image data
Configuring the camera:
In the configuring a camera use case, the transport layer is responsible for providing access to the registers in a camera. That is, the transport layer must provide the ReadRegister and WriteRegister functions. GenICam in turn is responsible for translating this feature to call a set of ReadRegister / WriteRegister function calls to the camera.
It is possible to use GenICam solely for the purpose of configuring a camera and use whatever grab interface is appropriate. However, GenICam also provides a standard way to acquire image data. The idea is to standardise an abstract interface and control flow for the typical grab sequence.
Graphical User Interface
The GenICam API provides all of the means necessary to implement a sophisticated, but nevertheless generic, graphical user interface, such as:
A list of features structured by categories
All necessary data to feed graphical controls, for example, sliders, drop down boxes, check boxes, push buttons, etc.
Access mode information such as whether a feature is currently read/write, read only, currently not available, or not implemented at all.
The ability to register a callback for each feature that will fire, if the feature might have changed and needs repainting. The callback capability makes building GUIs easy.
Transmitting extra image data
Cameras may send not only image data, but also have additional information attached to the image. Examples would be a frame counter, a trigger time stamp, the current AOI, or even a histogram of the image. In order to pack this additional data along with the image information, the Genicam standard defines a chunk stream format.
Key benefits for the user:
User can easily integrate new cameras and access new camera features with favourite image processing library.
User can use multiple interface technologies and cameras from different vendors in parallel.
User can mix and match cameras from different manufacturers, without altering software.