| Customize Help

Grabbing large images



In some cases, you might need to grab an image whose size is in the order of gigabytes. Ideally, you would use a digitizer whose DCF specifies an appropriate frame size. In practice, this is not always possible because the on-board frame size is restricted by the memory space on board. If you try to set a larger frame size using Matrox Intellicam, you will obtain an error when you call MdigAlloc() due to insufficient memory space for the temporary on-board buffers required for the large frame.

A solution to the above problem is to do the following:

  1. Allocate a large buffer on the Host using MbufAlloc...() with M_GRAB.

  2. Allocate child buffers in the large parent buffer using MbufChild...(). The size of each child buffer will have to be equal to or smaller than the supported frame size specified by the DCF settings.

  3. Put each child buffer into an array for easy access later.

  4. Grab sectional frames of the large image into each child buffer in the array.

As mentioned in the Multiple buffering subsection of the Grabbing and processing section earlier in this chapter, to ensure that no frames are missed during a grab, you can use MdigProcess(). MdigProcess() grabs a sequence of images into an array of image buffers and can cause a user-defined function to be called after an image has been grabbed into any of these buffers.