MATLAB Answers

Increase frame grabbing speed with a Matrox Grabber Card

6 views (last 30 days)
Till
Till on 3 Dec 2014
Commented: Till on 29 Jul 2015
I use a Vieworks VC-2MC-M340E0 high-speed camera attached via CameraLink to a Matrox Solios eV-CL frame grabber and want to continuously acquire video frames in Matlab.
The matrox IntelliCam software can acquire pictures from this camera with approx. 600 to 700 fps. In Matlab I use matroxcam() to create an object from which I then read frames using snapshot(). This works fine, in principle; the framerate, however, is much lower than in IntelliCam, around 60 to 70 fps, which is insufficient for my purpose. Unfortunately, the Matrox frame grabber does not allow the use of videoinput(). I have used videoinput() in the past with other cameras and it allows setting the FramesAcquiredFcn for the video input object, which is much faster than acquiring each individual frame with a call to snapshot() (or getsnapshot(), in that case).
At the moment snapshot() seems to be the only way to acquire video frames from Matrox frame grabbers. Is there a way that I am not aware of or is there another approach to increase the grabbing speed in my setup somehow?

  0 Comments

Sign in to comment.

Accepted Answer

Anchit Dhar
Anchit Dhar on 4 Dec 2014
Edited: Anchit Dhar on 4 Dec 2014
Hello,
You can still use videoinput function to acquire from MATLAB alongside matroxcam. For this, you will need to install Matrox Imaging Library (MIL) v9.
For the lower framerate issue, can you please open a support ticket with Mathworks. You can send an email to support@mathworks.com or visit http://www.mathworks.com/support/contact_us/ to open a service request.
Thanks.

  4 Comments

Show 1 older comment
Till
Till on 22 Dec 2014
Hi Anchit,
we found out that currently there is indeed no support in MATLAB 2014b for videoinput when MIL 10 is used. We were, however, able to get MIL v9 and now it works. Thanks again for your help.
Ian Nauhaus
Ian Nauhaus on 23 Jul 2015
Has the issue of low frame rates been resolved? I'm using Mil 9 and videoinput with a Matrox card. I'm having trouble getting reliable hardware triggers (see my other post for details), so I'm considering Mil 10 and the matroxcam. However, I need high frame rates (>100 Hz), so I don't know if this is worthwhile.
Till
Till on 29 Jul 2015
Hi Ian, we currently use Matlab 2014b in conjunction with MIL9. With this configuration we can use videoinput() and an appropriate DCF file to access a Vieworks camera. Defining a framesacquired function for the videoinput object and hardware triggering via a function generator we are able to consistently grab frames with several hundred FPS at relatively high resolution (currently we use a ROI of 2000x500). We use a ring buffer in RAM to store those frames, though. I am not sure whether we could get these frame rates when we write directly to disk; a fast SSD would be needed probably.
We have not tried out hardware triggering in combination with matroxcam(). For that you still would have to define a framesacquired function which is, if I remember correctly, not possible (yet). I don't know whether this has been resolved in Matlab releases after 2014b.
Please let me know if this helps.
Till

Sign in to comment.

More Answers (1)

Ian Nauhaus
Ian Nauhaus on 24 Jul 2015
See the response to my question via e-mail. Perhaps some of this overlaps with the (sparse) on-line documentation of matroxcam, but definitely some additional information that I found helpful:
"matroxcam does not have functionality to set the number of frames per trigger. matroxcam is a much simpler interface than "videoinput"(using 'matrox' adaptor) and it only acquires a single image at a time by using the "snapshot" function. Currently, to acquire multiple frames, multiple "snapshot" commands are required. Because of this, frames-per-second performance is dictated by the general MATLAB code execution speed and what else is executed in the MATLAB code while acquisition is taking place (for example data processing or saving an image to a file).
For comparison, "videoinput" uses an image acquisition engine with buffered acquisition that runs concurrently with the execution of MATLAB code, and would be better suited for acquiring an image stream.
matroxcam does not currently providing a programmatic way of configuring hardware triggering, but it might be possible to achieve hardware-triggered acquisition if this is configured in the specified camera file."

  0 Comments

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!