QImaging optiMOS Fast Imaging

This document describes the IGOR Pro sample QImagingOptiMOSFast.ipf, which shows how to perform fast image acquisition using the QImaging OptiMOS.

Function CameraSetUp

The function CameraSetUp sets up the parameters for fast acquisition. The specific parameters are listed below.


The camera sensor region of interest (ROI) is set to (0, 0, 511, 511), a 512x512 region. The readout time for the full sensor is approximately 10ms, this ROI limits the readout to 512 rows, which decreases the readout time to approximately 5ms.

The QImaging documentation for the optiMOS lists the maximum image frame rate as a function of the ROI.


In this sample, the camera continously acquires images as fast as possible (free run).

ExposeOut setting

SIDXDeviceExtraGetByName obtains the handle for the 'ExposeOut' setting. SIDXDeviceExtraListSet sets the value to use for the 'ExposeOut' setting.

This sample sets the hardware 'expose' output signal to 'first row', that is, the signal is asserted while the first sensor row is exposed. The other 'ExposeOut' settings result in a slower image frame rate.

Function CameraAcquire


The function loops, polling the acquisition status (SIDXAcquireGetStatus) and polling the acquisition for new images (SIDXAcquireImageGetCount). The variable sidx_new_image_count is the number of new images available during this loop iteration.


SIDXAcquireRead reads the next image or images in sequence into an IGOR Pro wave. In this sample, the call to SIDXAcquireReadSetPosition updates the current image acquisition read position to the most recent image, so SIDXAcquireRead reads only the most recent image.

Suppose, for example, images are acquired in the sequence 0, 1, 2, ..., N-1, where N is the number of images acquired. If the previous call to SIDXAcquireRead read image 0, the next image to read is image 1. If SIDXAcquireImageGetCount returns the value 20, then SIDX has acquired the images 0 to 19. An IGOR Pro script could issue an SIDXAcquireRead to read the 19 images 1 through 19, but this IGOR Pro script calls SIDXAcquireReadSetPosition to move to image 19, then calls SIDXAcquireRead to read image 19, then displays the image. This approach ignores images if the IGOR Pro script does not keep up with camera acquisition.


Each time through the loop, the script 'sleeps' for 1ms. This allows other threads to run in the processor core. For low-latency response to a fast camera, sleep time of 1ms may be needed. For most cameras, a sleep time of 10ms is acceptable.