Further frame grabber based acquisition interfaces such as CameraLink HS and CoaXPress have also been released to provide solutions for the ever increasing data rates of new, high-end cameras. However, existing interfaces, especially CameraLink, are still commonly specified in new applications. As acquisition relates closely with camera technology this section should be read in conjunction with the camera technology section.
All acquisition signal types transmit image data from the camera to the host system. Each technology has its own strengths and weaknesses and not all mechanisms are suitable for every application. Ensuring data integrity, especially in industrial applications, is important, and some of the newer interface standards include this, ensuring that if anything does go wrong with an acquisition, the application is notified and appropriate measures can be taken without system crashes. This section discusses various mechanisms used in acquisition systems and can help when choosing the right interface technology and the correct product and supplier.
The simplest method of transferring image data from a camera into a PC is to use a direct transfer method using one of the generic interfaces found on most computers. The most common types of direct transfer are USB, IEEE 1394 (FireWire) and Gigabit Ethernet. The simplest direct transfer method is to send the data directly to PC's memory. The chipsets used for direct transfer have small memory FIFOs (First In, First Out memory buffer) to buffer the data in case of latency on the PC bus.
These FIFOs are often limited to a few image lines and therefore, if bus or processor contention occurs, data can be lost. To ensure this does not happen, some implementations have detection mechanisms, using checksum and packet counting. Direct transfer implies that the technology used provides a guaranteed bandwidth so that there is no need for either side to buffer data. The arrival of PCI Express has made PC bus contention much less of an issue since it provides a point-to-point connection. For systems with higher data throughput rates, direct transfer can be problematic and a robust image acquisition framework should be used.
Most direct transfer technologies deploy DMA (Direct Memory Access) engines which empty the FIFOs as they fill. This means that each DMA burst has a limited size before the next bus arbitration is required and the physical data locations are requested. This can lead to FIFO overflow as data rates increase and can lead to data loss.
The frame grabber
The image acquisition board or frame grabber is the physical or functional connection for transfer of image data between camera or sensor and the host PC. In the early days of machine vision it had the task of digitising analogue images for use in the PC, however, with the adoption of digital cameras it is the functional unit for data conversion in so-called generic interface cameras.
The classical frame grabber is still necessary for many applications requiring time critical control or high data rates or for interface technologies used which are not native to the motherboards available. For example many motherboards have Gigabit Ethernet and USB interfaces built-in, however, if you want to interface a CoaXPress, CameraLink or Cameralink HS camera, you need a frame grabber. Frame grabbers do also exist for generic Gigabit Ethernet for applications that require FPGA processing on no CPU overhead, but there it is not compulsory.
The frame grabber has the task of buffering and preprocessing image data and transferring over the PC bus to store them in the PC's memory or on hard disk. Image preprocessing functions are used for image enhancement such as correction of defective pixels, or for correcting situational problems such as uneven illumination. Other functions calculate colour values from raw grey values on cameras that use a colour filter (Bayer conversion), convert colour spaces, or compress images. Further preprocessing functions include analysing functions.
Frame grabbers are delivered with comprehensive SDKs/APIs (Software Development Kits/Application Programming Interfaces). These libraries enable the configuration of the frame grabber hardware and the acquisition of image data. Depending on the frame grabber technology they also allow to change the camera's parameter. Recent developments in camera interfacing also enable power delivery to the camera via the frame grabber (Power over CameraLink, Power over Ethernet, Power over CoaXPress).
In addition to pure image acquisition, some boards include programmable processing. These intelligent frame grabbers use their onboard processors or FPGA (Field Programmable Gate Array) to handle application specific image processing. Due to the wide range of image data formats, resolution and sensor speeds, configuring an optimised hardware image processor can be very complex. With extremely fast data rates these boards offload the host CPU, allowing it to focus on the back end image analysis. Mostly, preprocessing uses FPGA-processors built into the frame grabber, however, GPU and DSPs are also used. Depending on the task, the frame grabber can form an autonomous image processing system that executes the complete image analysis and controls external devices in real-time.
For more demanding applications, a large amount of onboard memory can offer significant advantages. Onboard memory was firstly used on frame grabbers to remove issues related to contention bottlenecks on the PCI bus. With onboard frame memory a single DMA-transfer for complete images is possible, increasing data transfer rates and reducing the host CPU's overhead. With the steady increase of data transfer speeds on interface chips and with the introduction of PCI Express, this issue is reduced, but there are other advantages to be gained from having more memory capacity in the acquisition process.
The addition of memory allows extra features to be added such as data reformatting on multi-tap cameras, preprocessing techniques such as flat-field correction and deferred image readout. These methods allow a more efficient use of the interface bandwidth and offload the host system and are now common in good quality machine vision cameras and frame grabbers.
Including preprocessing in the acquisition path can reduce the load on the host PC and can sometimes preselect data for transfer. Preprocessing can reside either on the camera, the PC interface card or even both. It is mainly performed using FPGAs (Field Programmable Gate Arrays), but can sometimes use embedded processors (CPU / DSP).
Common preprocessing functions include
- Flat-field correction
- Colour space conversion
- Data compression
- Image arithmetic
- Bayer conversion
- Correction of sensor artefacts
The real-time functionality of acquisition units consisting of an FPGA is also often used. For additional functionality the FPGA code can be changed to make an application-specific solution using VHDL tools or a graphical FPGA design platform, thus reducing the detailed VHDL knowledge previously required. The image shows Visual Applets from Silicon Software - as an example for a graphical FPGA programming suite.