Choosing an Acquisition Mode

Aperçu

A versatile frame grabber can acquire images in various buffered and non-buffered modes. This gives the user great flexibility in designing applications, but can also make the choice of modes a bit confusing. This document describes the various acquisition modes available and the circumstances under which each should be used.

Contents

Snap

The most simple acquisition mode is the snap, which merely acquires a single image (a "snapshot") into a memory buffer, as shown below:



Further processing can be done on the image after the acquisition is complete. The snap is useful when you only need to work with a single image. For example, if you wanted to check components on a printed circuit board, you could do a snap then perform pattern matching on the resulting image to check for each component's presence.

Another common use of the snap is to call the acquisition repeatedly in a software-timed loop. This method is inefficient and will not provide accurate timing, but can be useful when you only need to monitor a scene periodically. It is commonly used in monitoring applications, such as observing a slowly-varying temperature on an analog meter.

See Also:
Snap

Grab


In the grab acquisition mode, the frame grabber transfers each image into an acquisition buffer in system memory. It continually overwrites the same buffer with new frames as long as the acquisition is in progress. The buffers are copied as necessary to a separate processing buffer where analysis or display may take place:



The grab acquisition is the simplest method of displaying a live image in real time. It is most useful in applications where a visual display is all you need. A typical application might involve monitoring a security gate to allow a guard to recognize and grant access to visitors from a remote location.

In some cases, the single acquisition buffer used in a grab is insufficient. If you are trying to acquire and process every single image, any operating system delays could cause frames to be missed. There is also a very short time available for the image to be copied into the processing buffer before the acquisition buffer is overwritten with the next frame. With dynamic scenes, you can clearly see this effect appear as a horizontal discontinuity in the image; one portion of the image comes from the latest frame, while the rest is from the previous frame. In these cases, a ring acquisition is recommended instead.

See Also:
Grab

Ring


A ring acquisition is similar to a grab, but with two major differences:

  • multiple buffers are used to store the images acquired by the frame grabber, and
  • no copying of buffers is required; the acquisition continues into other buffers while processing is done directly in the acquisition buffer


Of course, you may still want to copy a buffer for use in later processing, but the problem of overwriting the buffer during the copy will be avoided. The choice of how many buffers to use depends on the following factors:

  • available system memory
  • maximum delay expected to be introduced by operating system interrupts
  • maximum length of time your processing will take for a single frame
  • how critical it is to capture every single frame of the acquisition
  • how much delay your application can tolerate before responding to an image event*


In practice, you can monitor the number of frames acquired versus the number of buffers processed, and increase the buffer count until no frames are lost. The ring acquisition is recommended for most high-speed applications where real-time processing is to be performed on the image. A typical application might involve monitoring a dynamic experiment and saving all the resulting images to files.

Note: Be aware that there is a trade-off when increasing the number of buffers used. As you use more buffers, the chances of missing a frame will drop, but the maximum delay between acquisition and response will rise. For example, if you allocate 30 buffers for a 30 frames/sec acquisition, you could see up to a one second response time between an action and its appearance on the display.
See Also:
Ring

Sequence

A sequence acquisition, like a ring, uses multiple buffers, but only writes to them one time. The processing and display can then take place after the acquisition is complete.



The sequence is useful when you are only interested in a single event which occurs over a relatively short period of time. Often there will be a trigger associated with the event to start the sequence acquisition. A sufficient number of buffers should be allocated to cover the duration of the event.

Typical applications for the sequence include velocity measurements. To approximate an instantaneous velocity, you would only need a short duration measurement. Follow-on processing would be used to identify the object of interest and measure its translation over the known time interval.

See Also:
Sequence
Factors to Consider when Triggering

Onboard Memory


For frame grabbers that provide onboard memory, all of the above modes may be used. The acquisition buffer(s) are just allocated in the onboard memory rather than system memory. When the buffer is needed for processing, it is copied into system memory. The links below contain more information about onboard acquisitions.