Machine Vision

cancel
Showing results for 
Search instead for 
Did you mean: 

Max number of frames on IMAQ 1409 onboard buffer

What is the Max number of frames that I can configure with the IMAQ 1409 onboard buffer? I was able to configure an onboard buffer with 25-27 frames. Can this number be increased?
0 Kudos
Message 1 of 6
(3,625 Views)
The 1409 has 16MB of onboard memory. A typical 640x480 monochrome image requires a little more than 300kB if acquired in 8-bit mode and twice that amount in 10-bit mode (10-bit pixels are stored as 2 bytes). I'm guessing you're using a standard RS-170 camera and acquiring in the default 10-bit mode.

16,777,216 Bytes / (640 x 480 x 2 Bytes) = 27.3 frames

Drop the pixel depth to 8-bit and you should get roughly twice the number of frames. There is also a limit set in MAX (Tools >> IMAQ) on the number of simultaneously open IMAQ buffers. The default limit is 50, but this can be increased. You will need to reboot each time you change this limit. Is there a reason you need more than 25 or so buffers onboard?

Regards,

Brent R.
Applications Engineer
Natio
nal Instruments
Message 2 of 6
(3,625 Views)
Yes, I have a following reason why I want more than 25 buffers onboard from my understanding. There may be some ways around this that I'm unaware of.

When I configure a buffer using system memory, I am using the IMAQ Copy VI to "extract" images from the buffer. On doing this at 30 fps, I noticed that the buffer would sometimes skip a frame. If I acquire every other buffer image (15 fps), then I get every other image without skipping.

I tried the same thing by configuring a buffer using the onboard memory. However when I used the IMAQ Copy VI, I get all images sequentially without skipping but the rate at which the images become available slows down to an equivalent of about 6 fps.

If I don't use the IMAQ Copy VI until the onboard buffer is full, the
n the images are stored on the onboard memory at a very regular 30 fps. So if I want to maximize the frame rate, I am using the onboard memory but can only acquire 25-27 images at a time. Copying those images to the system memory takes about 4 seconds before I can use the onboard memory again.

This is why I was wondering if I could increase the onboard buffer size. Is there some other way around this?

Thanks for your help.

Carlos
0 Kudos
Message 3 of 6
(3,625 Views)
Carlos,

If you set up a sequence acquisition using regular memory, every frame is acquired (no skipping, unless you ask for it).

By digging into the low level code, you can do some neat things. I frequently set up a large (300 - 500 image) buffer and use it as a continuous loop. You can find out which image was most recently acquired and display it for live video. You can also stop the acquisition and retain the entire set of the most recent images. I have never had any problems with skipped images.

Bruce
Bruce Ammons
Ammons Engineering
0 Kudos
Message 4 of 6
(3,625 Views)
Bruce,
Can you give details on how to set up a large buffer? I am assuming an assembler is required.
Dewey
0 Kudos
Message 5 of 6
(3,625 Views)
You just need to use the lower level LabVIEW calls. Take a look at the diagram for the Acquire Sequence. It uses a buffer to acquire the images. The only real change I make is to make it continuous instead of one time through. After starting the acquisition, you can monitor what frame it is on by using IMAQ Status.

Bruce
Bruce Ammons
Ammons Engineering
0 Kudos
Message 6 of 6
(3,625 Views)