12-09-2009 09:22 AM
I am using the NI-IMAQdx driver to controll a gigE interface camera (Prosilica GE-4900C).Camera's reselustion is 4872 x 3248 pixels
When acquiring a raw data of a picture using : IMAQdxStartAcquisition function follows with IMAQdxGetImageData function – I am getting full resolution raw data of the picture (4872 x 3248 pixels).My question is:Can I sample a define section of a picture?
For example – only half of a picture defining start and end section of acquiring? In that case I'll get only half of the original raw data.
It takes time to acquire full picture data while using only small part of the picture for analysis.
regards,
Yaniv Sisma
Elbit Systems Ltd.
12-09-2009 10:48 AM
Yaniv,
You can adjust the Width and Height of the image that the camera acquires. This will (usually) change how much data is is physically read from the sensor and might allow you to get higher frame rates as well.
To change this you can either adjust them in MAX under the Width and Height parameters and then click "Save" to save those settings as the new defaults for any NI software opening the camera, or you can use property nodes in LabVIEW to set this dynamically.
Eric
12-09-2009 10:52 AM
Hi ERIC
thank you for your reply
12-09-2009 10:59 AM - edited 12-09-2009 11:03 AM
For cameras using CCD sensors, only Height reductions lead to speed gains by reducing data volumes. CMOS-sensor cameras, due to different sensor readout, enjoy speed gains for either/both Height and Width reductions. (these are general characteristics of CCD and CMOS sensor technology - not vendor-specific)
... the GE 4900 camera in question happens to be a CCD-sensor camera. In general for Allied (& now Prosilica) cameras please refer to datasheet at http://www.alliedvisiontec.com/us/products/cameras.html to determine sensor type. To determine speed gains through AOI (Area of Interest - sometimes called ROI - Region of Interest) please see camera technical manual at http://www.alliedvisiontec.com/us/support/downloads/product-literature.html.
Scott
06-03-2013 10:57 AM
I've written a GStreamer plugin for NI-IMAQdx, but one problem I have is that IMAQdxGetImageData appears to get me the completely raw frame, ignoring any ROI that may have been set (e.g., via MAX), however the width and height attributes give the ROI width and height, not the full frame width and height. I can't find anyway to retrieve the full-frame width and height, so that when I copy data over I only copy the ROI. Alternatively, is there a hidden attribute where I can set the width and height of the buffer returned by IMAQdxGetImageData?
06-03-2013 11:03 AM
IMAQdxGetImageData returns the raw payload buffer with no decoding done on the image. Usually in IMAQdx the ROI is only applied on-camera, with the exception of FireWire for legacy compatibility reasons. In all other cases, setting the ROI should affect the raw data as well. In general, you probably would want to get the image decoded by IMAQdx and then translate it to an array with ImageToArray. This was you always get consistent decoding regardless of camera type. Otherwise your code needs to know how to decode varias multi-byte formats, endiannesses, etc.
Eric
06-03-2013 12:33 PM
I usually want to capture RAW because I don't want any conversion or processing done on the data without my knowledge. The problem I'm having is with a Firewire camera, so it sounds like I've hit a limitation of the API (not being able to get both the raw and ROI size). I'm using the C interface, so I suppose I'd need to use imaqImageToArray. Thanks.
06-03-2013 02:55 PM
If you are using Format 7 video on your Firewire camera, the ROI setting should generally apply to the camera (the driver will just cut out the ROI if the granularity of the camera is not fine enough).
Eric