Machine Vision

cancel
Showing results for 
Search instead for 
Did you mean: 

How can I speed up image acquisition and analysis in LabWindows/CVI

I am using LabWindows/CVI with IMAQ Vision in an automated particle analysis application. I am using a Kodak 6.3i/AB Megpixel camera with a PCI-1422 framegrabber. I'm currently performing a step of the translation stages, snapping an image with IMAQSnap, and then doing some image analysis. The process takes over 1 second per step. The analysis takes around 400 msec and the stage motion takes another 200 msec. The camera manual tells me that the frame transfer rate for my exposure time is 1.2 frames/sec, so I believe that the frame transfer time is a significant part of the time budget. I'm new to image acquisition and motion control and am trying to understand what I need to do to speed up the whole proc
ess.

First, the camera is a 3072x2048 pixel sensor, however we are only interested in the center 1200 x 1200 pixels. Is there a way to transfer only those pixels and speed up the transfer rate? I am currently using imgSetAttribute to set the acquisition window top, left, width, and height and then passing IMAQSnap IMAQ_NO_RECT. Would there be any performance difference to setting the acquisition window to full size and defining an ROI?

Second, would a ring acquisition speed up the process? How would I integrate the stage motion so that the I know the image acquired after the stage motion is completed (my motion controller is a Value Motion board type 13).
0 Kudos
Message 1 of 2
(3,100 Views)
Since your camera is acquiring at the rate of 1.2 frames/sec, that means a frame is ready every 833 ms. This is a function of your camera and may or may not be variable. This is the fastest possible loop rate you can achieve. With that in mind, if your image analysis takes 400ms and the motor 200ms, you still have about 233ms of time left to wait for the next image to be ready.

Yes, by reducing the acquisition window size, you reduce the amount of data moved across the PCI bus to system memory, but the camera control how quickly frames are being sent so this will not speed up your acquistion. It will, however, decrease your processing time since you are processing fewer pixels.

Also, a ring acquisition would be the best acquisition mode to implement since you w
on't need to setup a new IMAQ session each time. If you are worried about not finishing a move before the next image is acquired, you can just use the Wait for Move Complete function in ValueMotion and then continue with the image acquisition.

Jack Arnold
Application Engineer
National Instruments
0 Kudos
Message 2 of 2
(3,100 Views)