GigE Cameras for Machine Vision
TL;DR GigE Vision cameras provide functionality and flexibility in a simple ethernet based interface. RidgeRun specializes in developing GStreamer plug-ins to capture from GigE cameras , optimizing the streaming pipeline and even converting embedded platforms into GigE Vision compliant cameras.
Among the wide range of machine vision options, GigE Cameras are very popular. As its name may imply, these cameras deliver their video content through a regular Gigabit Ethernet (GigE) interface and that is precisely what makes them so appealing. On the one hand, no special frame grabber hardware is needed. On the other hand, the interface is capable of transmitting up to 1Gb/s through cables up to 100 meters long. Newer versions of the standard even allows for image compression and bandwidths up to 10Gb/s using the 10GigE interface! If you consider that they may be powered through Power-over-Ethernet (PoE), you get these benefits in a single-cable configuration. As you can see, it is a great tradeoff of high speed and low complexity.
Don't mistake the simple hardware setup with limited operation. GigE cameras can deliver content from a wide range of sensors such as Bayer, RGB/YUV, infrared or depth. A single camera can even deliver multiple of these streams simultaneously through independent channels, including channels for events and control back-channels for the computer. Multiple ethernet links may be aggregated to increase the available bandwidth. Multiple cameras may capture synchronically via PTP. Cameras may capture continuously or by software trigger. GigE cameras hide a great deal of functionality in their seemingly simple connection.
GigE Vision and GenICam
The operation of the GigE cameras is defined in the GigE Vision standard. The details, while out of the scope of this post, propose a common programming interface. This enables end-user ease of use in the sense that a single capture client should, in theory, work with every GigE Vision compliant camera. Furthermore, the standard defines a generic interface to expose and configure features in the camera. This again favors universality since GUIs are not hardcoded to a specific camera, but dynamically populate configuration fields by querying the camera.
GigE Vision relies on GenICam to expose the generic configuration interfaces described above. GenICam (Generic Interface for Cameras) is another standard that defines generic mechanisms to capture and configure cameras. Unlike GigE Vision, GenICam defines these APIs for any physical interface (USB, GigE, Camera Link, etc…). The following figure summarizes the different modules proposed by GenICam:
Briefly, the ones that GigE Vision leverages are:
SFNC: The Standard Feature Naming Convention defines the name, type, access mode, visibility, etc… of the different features that cameras should expose.
PFNC: The Pixel Format Naming Convention defines the name and memory layout of the different pixels used by the cameras.
GenAPI: Defines a generic programming interface to query and configure camera features. The camera provides an XML file describing features as camera registers and the software application uses GenAPI to traverse, read and configure them.
GenTL: Defines a generic Transport Layer abstraction to access the physical camera. The camera manufacturer provides a Transport Layer Producer driver and the software application implements a Transport Layer Consumer to interact with it. The idea of GenTL is to hide interface details such as GigE, USB, Camera Link, etc…
How can RidgeRun help?
GigE Cameras are widely used in machine vision applications. RidgeRun may help you integrate them into your product in a variety of ways:
Implement custom GigE camera consumers on different multimedia frameworks, such as GStreamer.
Synchronize camera capture on devices from different vendors.
Receive multiple simultaneous streams from a single camera.
Convert your embedded device into a GigE Vision compliant device.
Contact us for more information!