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.
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.
A ring acquisition is similar to a grab, but with two major differences:
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:
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.
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.
Factors to Consider when Triggering
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.