Delay Using IMAQ Image

Hi
I am using ProGres Speed XT Core 5 camera and its library. I would like to make some image processing with labview therefore I visualize the images by IMQ Image instrument. Unfortunately I have small delay of image transfer. Could you please see my code here.
Best regards
Attachments:
CameraControlIMAQImage.vi ‏129 KB

Hi,
You can use the information from this community page that explains how to benchmark a simple code
https://decibel.ni.com/content/docs/DOC-12892
Basically you have to isolate your image processing which are two VIs inside the sequence structure and measure how long it takes.
Also, where can I find the driver you are using it? It will help me understanding what exactly you are trying to do and I can come with suggestions for improving it.
Regards,
IR

Similar Messages

  • Using IMAQ Image Display control vs IMAQ WindDraw for large image files

    Hello All;
    I am designing an application that is currently using IMAQ Image Display control to view large images (5K x 3K and larger).  My problem is that these images take 10-20 seconds to load and display, whereas if I use IMAQ WindDraw to display my image in a separate window, it only takes a couple of seconds.  My application is designed such that I am making use of the Subpanels in LabVIEW 8.0, and to make it pleasant for the user, the interface is such that my line profile, histograph and image viewer displays are contained within the same GUI (panel).
    I read the National Instruments application note regarding displaying of large images, and it did not seem to make a difference.  For example, I switched the 'modern' IMAQ Image Display control with the classic Image Display control, since the 'classic' does not contain any of the 3D rendering tools which might slow the process down.
    Why is there such a huge difference in loading times if I am trying to do exactly the same thing with both methods?  How can I bring the IMAQ Image Display control up to the same speed as the IMAQ WindDraw tool?
    I am currently using LabVIEW 8.0 with the latest IMAQ/NI Vision package from NI (IMAQ v7.1?).  Thanks.
    DJH

    Use a property node and select 16 bit image mapping. You can create a control for this or whatever you need. If you select the individual elements, you can get enumerated controls.
    Bruce
    Bruce Ammons
    Ammons Engineering

  • Using IMAQ Image controls in LabVIEW steps

    Hi guys
    So far, I was using TestStand 4.0 together with LabVIEW 8.5 and Vision Development Module 8.5 with no problems. Recently, I've updated to LV 8.6 and VDM 8.6. I've started to experience weird problems when using LabVIEW steps with inputs/outputs containing IMAQ Image controls. When I try to click on such a step in seq editor, or try to insert a new step into the sequence, the step initialization takes a very long time (tens of seconds) or freezes completely. I've also tried to upgrade TS to version 4.1, but no difference. Also, my colleague experiences very similar symptoms on the same software setup. The only difference is that on his machine, it takes only a few seconds when you click on the vision step. However, the steps not containing an IMAQ Image control behave normally, i.e. you can't experience any "initialization time" when clicking on them in the sequence.
    To illustrate, I'm attaching a simple VI containing nothing more that a single IMAQ Image control. If you don't link it to the connector pane, the VI works fine when inserted as a TS step. If the IMAQ Image control is linked to the connector pane, TS freezes when inserting such a step.
    Vladimir
    Solved!
    Go to Solution.
    Attachments:
    ft5.vi ‏5 KB

    Hello Vladimir,
    Thank you for posting on the NI Discussion Forums. This was reported to R&D (#123249) for further investigation. The only workaround I can offer for now is to work with the VIs from version 8.5 of LabVIEW if they have vision controls linked to the connector pane. Thanks for the feedback!
    Chris_G
    Sr Test Engineer
    Medtronic, Inc.

  • "IMAQ image to string" difference in 8.2 and 8.5

    My basic aim is to capture image from one computer and then send to another in LAN using TCP/IP. I have LabVIEW 8.5 and LabVIEW vision 8.5 in one and LabVIEW 8.2 and LabVIEW vision 8.2 in another. I capture an image in the computer whear I have installed 8.2 version of both and then flattened using " IMAQ image to string" and then sent it to computer using TCP/IP to computer with 8.5 version but the image is not displayed whearas when i do send that from 8.5 to 8.2 ( Capture the image in the computer with 8.2 and then flatten it to string and send it to the computer with 8.5 and display) , it works. Is it beacuse of different version of LabVIEW vision?

    Hi aman_bajra,
    You should be able to pass the image from one computer to another using TCP/IP, even if the computers have different versions of the Vision Development Module installed.  I tested this here and I had no difficulty sending the image from a computer running Vision 8.5 in LabVIEW 8.5 to a computer running Vision 8.2 in LabVIEW 8.2, or vice versa.  FYI, I used the normal Flatten to String node, not the IMAQ Image to String VI.  I have included the VIs I used to do this below.  Please give these a try and reply back if you are still unable to send your image properly.  Thanks.
    Rishee B.
    Applications Engineer
    National Instruments
    Message Edited by risheeb on 03-12-2008 12:24 PM
    Attachments:
    TCPIP Receive Image3.vi ‏45 KB
    TCPIP Send Image1.vi ‏74 KB

  • IMAQ image to array vi not working with images extracted from avi file

    Hi,
      I downloaded some avi's and uncompressed them so that I can analyze them within labview. I am trying to convert images I am reading from the avi file to an array. When I use "IMAQ image to array" I get the following error " IMAQ Image To Array  Invalid image type" -1074396080.
       I am able to display each read image and save them to the hard drive, but I am unable to convert the vision image to array. I verified that the image extracted from avi is the same as the image type I created in memory to hold the image.
      Please see the attached vi I created.
    thank you
    Ruz
    Attachments:
    example2.vi ‏62 KB

    Hi all, this thread was useful for me...but i have another doubt... when I try to extract a single plane (Luminance, Saturation, R,G,B...anyone) and try to save it in jpg as gray image, it saves an image with blue tones. I have examinated it using Matlab and checked that Red plane has low values (but not zero), the same for G plane and high values for B plane. An image of the VI is attached.
    Thanks in advance
    Attachments:
    planes.png ‏28 KB

  • How can I use or convert a imaq image to plot images back on waveform graph

    Hi
    I am currently opening and manipulating (rotate and resize) a PNG image using IMAQ Vision in LabView 8.2.1 This works well and I can display the Image on the front panel using a IMAQ Image Control.
    In addition to this I would now like to display the image as a background on waveformgraph. I can do this with the original PNG file by reading it and then flatten it to a pixmap ie make it a Picture but this is of little use as I need to use the manipulated IMAQ image.
    Therefor I would like to know how to convert the manipulted IMAQ Image to right Picture Format (without resaving) in order to use it on the PlotImages.Back property node of a wavefrom graph.
    I very much welcome your suggestions as I feel it should be easy yet can not seem to solve it. Thank you for your time!!!

    Hi Randall
    Apologies for replying somewhat late but I have been out of the office for a few days.
    Your suggestions and code helped me greatly and led to solving my query so thank you for that.
    There is one more thing (well many many more but I will place new posts for those  however that you might be able to answer for me.
    Following your suggestion to use the image to array function I searched through more examples and found the code that did exactly what I wanted to do. Please see attached.
    In this code a For loop is used to add 65793 to the color table. It works very well but I do not know why it is used exactly. Can you exlplain? I also realize I never made it clear that I use grayscale PNG files rather then color images.
    Thanks again for your excellent help, it is much appreciated.
    Attachments:
    IMAQ_8-bit_to_picture v1.vi ‏15 KB
    Test Image.png ‏42 KB

  • Problem using IMAQ Array to Color Image vi

    I am doing some pixel manipulation & while going from an image to an Image Pixels (U64) array using IMAQ Color Image to Array VI I cannot see the image once it is modified.
    I am...
    1) converting the image to the 64 bit pixel data using IMAQ ColorImage to Array.vi
    2) doing the manipulation
    3) converting back to an image using the IMAQ Array to ColorImage.vi using the 64 bit input.
    What I get is...
    1) a black image with data behind it... meaning... if I take the magnifier tool and go to the approximate locations of my image where I expect to find the manipulated data, it is there.
    2) cast that image to a 32 bit image & still get a black image for the output.  The data however is no longer there and appears to have been stripped.  
    3) no error's out of any VI's...
    TIA  

    With Vision 2009 situation is not better.
    It happened because U64 image displayed in full scale. So, if you have full range of intensities (from 0 to 65535), then you can see something. But if your intensities in small range, for example, 0...255 in all channels, then you will see black image.
    Feel differences:
    It should be possible to map U16 values into U8 display range  with given range (like IMAQ WindDisplay Mapping does), but right now this feature available for I16 images only, not for U64. What you can do is following - map each channel to U8 (with linear LUT, for example), put channels together, then display 32 bit RGB instead of U64.
    Andrey.

  • Using IMAQ Cast Image to convert 16 bit to 8 bit image.

    I am trying to convert a 16 bit image to a bit image, and I am using IMAQ Cast Image. I am wondering what I am supposed to wire into the # of shifts? When I use NI Vision Assistant it asks I can convert by the adjust dynamic method. Does anyone know how to do this with IMAQ Cast Image? Thank you in advance.

    The number of shifts is the number of bits that will be chopped (in the dark regions) from the initial image to fit into 8 bits.
    For instance, if you have a 10 bit image, compressing into an 8 bit image will obviously introduce some losses. You can decide to loose information either in the "whithe" parts or in the "black" parts of the image.
    With #shifts = 0, the two most significant bits will be lost, so the whitest parts of the image will be uniformely white, but the darl grey levels will be preserved.
    With #shifts = 2, the two least significant bits will be lost, preversing the whitest parts grey variations, but losing the subtilities in the darkest parts.
    With #shifts = 1, a single bit is lost on either sides...
    Chilly Charly    (aka CC)
             E-List Master - Kudos glutton - Press the yellow button on the left...        

  • Using IMAQ create, set-up, acquire and windraw to save image without color map

    Hi,
    Attached is my VI (using labview 8.5) and am not sure where it is getting the color info from, but it saves the image as jpeg/bmp/tiff with colormap (confirmed by imread in matlab). Can someone help me save these images without colormap info.
    Thanks
    Attachments:
    HL Grab with two boards and SONY XC55_Images.vi ‏166 KB

    Hi Maverick269,
    I noticed that you posted this question over on the Machine Vision forums as well. That will definitely be a better place to get this question answered, so let's work on the issue over there :
    http://forums.ni.com/t5/Machine-Vision/Using-IMAQ-create-set-up-acquire-and-windraw-to-save-image/m-...
    In the future it helps us stay organized if we limit each issue to a single thread.
    Cheers,
    Andy C.
    Applications Engineer
    National Instruments 

  • How to reverse an image acquired using IMAQ APIs in vc++

    how to reverse an image acquired using IMAQ APIs in vc++

    When using imaqFlip, may the source and destination be the same Image* ?
    TIA!
    Jesse

  • What datatype should i use to store imaq image in sql database?

    Hi there i am thinking of saving the imaq image into database for retrieval in my website so that it's like a stream but i don't like what datatype does labview store the image as.

    You have two options for storing images in a relational database:
    A.  Don't put it in a database.  Store it as a file, and store the pointer int he DB (as mentioned above).
    B.  Store it as a blob datatype.  See here for more info.

  • IMAQ Image to LabView Picture

    Hello,
    I am using XY Graph to display GPS data, XY graph also displays a map that is being preprocessed using vision functions to display correct part of image data, fit the scale etc.
    Everything works fine, but the standard conversion way
    takes long (25 ms). It becomes user unfriendly, when every scale / move of the XY graph introduces a delay.
    The IMAQ vision preprocessing takes about 25ms too, together with some other calculations, the user response is about 60ms and it is just so - so to use.
    I am hoping, to cut some processing time over here, becouse it it just flattening of an array.
    I started making my own IMAQImage2LVPic function, but little success, since I do not understand the Image format of the LVPicture, I keep getting deformed images, memory violations and it becomes frustrating.
    The memory structure of the LVPicture would be great to know. Please help.
    Solved!
    Go to Solution.

    The most likely reason that it is taking so long is that memory resources are redundant several times for this operation. The image data type defies the usual LabVIEW paradigm, as it is essentially a pointer to an array of pixel data rather than the actual data itself. This makes sense because images are fairly large memory chunks, and if you can operate on them and then stick them back in the same place you found them, you really won't cost yourself much RAM. That is how image manipulation generally works.
    However, this changes when you want to bring the actual array data into LabVIEW. When you convert the image to an array, you are reallocating the image. It now exists in the location pointed to by the image wire, and it exists in LabVIEW RAM "on the wire." It is reallocated again when put into the cluster, then reallocated a few more times when calling the Draw Flattened Pixmap VI. At the end, it is flattened to string, which is another allocation, and then concatenated with header data and so forth, which is yet another memory allocation. (By the way, the picture data type is essentially a string full of flattened data). By the end of the whole deal, you have half a dozen or more copies of your image in RAM. That is costly and time consuming, however, when dealing with arrays directly, which is what this method is doing, it is difficult to avoid this because any time you change the size or change the datatype, you are reallocating all of that data again.
    I would suggest going the other way, and trying to use the image data type and use IMAQ and Vision functions. The benefit is that these are designed specifically to handle large arrays of deep data and perform multiple operations on them with minimal memory reallocation. That is why the data type itself is a pointer rather than actual data.
    Wes P
    Certified LabVIEW Developer

  • How to use IMAQ extract color panel in a LabView file?

    I want to change a color image into a greyscale image. Therefore I want to use the function IMAQ extract color panels but I don't know how to insert it in my LabView application.
    Please, can anyone give me some advice ?!!!
    Thx, Birgit

    Birgit,
    If you want all of the color planes, you can use IMAQ ExtractColorPlanes. Allocate an 8-bit image for each of the color planes. Wire the original color image and each of the 8-bit images for the color planes on the left and bottom of the vi. The outputs on the right side will be the same images, and they will each contain the desired color plane. The input at the top of the vi controls which color planes are extracted (RGB, HSI, etc.) Grayscale will probably be the I plane in HSI.
    If you just want a grayscale image, use IMAQ ExtractSingleColorPlane instead. Wire the color image to Image Src, and wire an 8-bit image to Image Dest. Select the color plane using the top input, and it will come out on the right side.
    Bruce
    Bruce Ammons
    Ammons Engineering

  • Why does moving the mouse over an IMAQ image display slow the GUI down so much?

    I have a large application with several vi's running simultaneously under labview 8.6.1.  When I mouse over an image display control in one of the vi's, everything slows down a shocking amount in all the other vi's.  The windows task manager does not show a large increase in CPU use.  My pc is has a quad cpu with 4GB of RAM, and the CPU and memory loads do not appear to be terribly taxing to the system.  However, many of my vi's apparently come almost to a standstill if I just move the mouse in a circle around my image control.
    This looks like it is largely a GUI display issue.  If I make a new vi and put a while loop in it that only displays the iteration loop number to an indicator, I can see the iterating occurring, then stopping totally when I mouse inside the image display control.  When I stop moving the mouse inside the control, or when I move it outside the control, the interation loop number jumps up, as if it had been incrementing behind the scenes the whole time.  So only display of the interating was halted.
    This problem occurs even if the vi with the image control is not executing.  If the vi with the image control is open but not running, and I mouse over the image on it, the other guis all come to a screeching halt.
    Does mousing in the image display control really utterly crush all other guis in all other labview windows?  Is this an issue inherent to the image display control?  If so, is there anything I can do about this? 
    Also, this issue is not entirely limited to display.  I started looking at it in greater detail because this issue also exposed what I think is a race condition in my code.  I have a vi that acquires an image from a ccd and puts it into an IMAQ image.ctl.  This image then gets passed up to a vi up the call chain, and is put on a queue and sent over to be de-queued by a vi that has the image display control.  Here's the kicker:  when I mouse over the image display control, the image successfully gets acquired inside the subvi, and if I probe the wire leading to the output IMAQ image display.ctl, I see the image.  If I simultaneously probe the wire coming out of the subvi one level up the call chain, the image gets lost about half the time.  This only happens if I am mousing in the image display control IN A TOTALLY DIFFERENT AND SEPARATE VI.  If I bump up the priority of the ccd image acquisition vi to 'highest priority', the problem only happens about 1% of the time, and I really have to mouse around to make it happen.  Still, it's disturbing that mousing in the GUI in one window results in a failure of a separate subvi to simply pass an image up the call chain.  I understand that IMAQ images are referenced rather than passed by value, but I don't see why there should be a failure to pass the image up the call chain.  I've looked for a race condition, but can't find one.
    Eric

    I have finally been able to replicate the behavior that you are seeing on another computer once the image was large enough.  Here are a few notes about this behavior:
    First. The UI only slows down when the images are large, 16 bit images.  The reason why this is unique to 16 bit images is that they can only be displayed on the front panel as 8 bit images.  The workaround that Weiyuan suggested to change the 16 bit display mapping hints towards the root of the problem...that any time a mouse runs over the indicator, Windows asks the entire image to re-draw (having a separate indicator overlapping the image will create the same behavior).  With a 16 bit image, not only does the image have to re-draw on the screen but the 16 bit pixels need to be mapped to 8 bits.  When setting the 16 bit display mapping to Full Dynamic, this requires mor computation/pixel than 90% dynamic or one of the other mapping schemes.
    This is expected behavior if your program is running and you're trying to display a large 16 bit image.  To fix this behavior there are a couple options:
    Change the 16 bit display mapping to something other than full dynamic.  You can choose which 8 bits to display or if you want to map the bits. 
    Resize the image just for viewing purposes on your front panel (since you aren't going to view every single pixel of you image on the screen). You can use the IMAQ Resample.vi to do this.  This will allow you to take your 1500x1500 pixel image and only display a 500x500 pixel version.
    If you are interested in viewing small details of the large image, consider just displaying a smaller region of interest at a time.
    Let me know if any of these solutions work for you.  Good luck on your application.
    Zach C.
    Field Engineer
    Greater Los Angeles

  • How do I convert an IMAQ image buffer into an IMAQ Vision 'Image'?

    Using NI IMAQ and IMAQ Vision with LabWindows/CVI 6.0...
    I have some acquisition code that uses IMAQ img functions to set up a
    triggered image acquisition and stores the image into an 1D unsigned char
    array buffer.
    I would now like to add code that uses the IMAQ Vision functions. The IMAQ
    Vision function use an Image data type, which from what I can glean from the
    ..h files, is a structure.
    Is it possible to convert the 1D unsigned char array image buffer to an
    Image? How would I do this?
    An inefficiant brute-force way would be to write the image to a BMP file
    from IMAQ using imgSessionSaveBufferEx, then read the same file back in
    using IMAQ Vision imaqReadVisionFile. I am hoping there is a more elegant
    way to perform the conversion in memory without needing to write disk files.
    Thank you,
    Robert Rafuse
    Etec, Inc.
    tel: (978)531-5025
    e-mail: [email protected]
    web: http://www.etec-inc.com

    Bob Rafuse wrote:
    > Is it possible to convert the 1D unsigned char array image buffer to
    > an Image? How would I do this?
    Never mind. I found:
    http://sine.ni.com/apps/we/niepd_web_display.DISPLAY_EPD4?p_guid=B45EACE3F11556A4E034080020E74861&p_node=DZ52490&p_submitted=N&p_rank=&p_answer=&p_source=External
    which indicates that the img functions actually return a 2D array, so I can
    use imaqArraytoImage after all.
    My bad.
    Bob

Maybe you are looking for

  • Error while Adding values in ComboBox

    Hi All.. Valid Value- Value already Exists I'm getting this error while trying to add values in combo from database... Thanks...

  • Windows Vista to 7 iTunes

    I cleanly installed Windows 7 from Vista, and now have a Windows.old folder. How do I get my iPhone and iPod Nano data back into iTunes? I re-downloaded itunes and it is currently blank.

  • User Library

    I successfully added my own library but now can't get back into it to edit (the button is grayed out). My new library doesn't show up in the list boxes, either. Help.

  • Is tech support kept in the dark?

    I have had occasion to contact tech support several times in the last few months because my broadband connection kept dropping out. Invariably there is a line test and I am told there is no fault and it must be something in my wiring or setup. On one

  • Error: org.richfaces.renderkit.html.PanelMenuGroupRenderer (menu richface)

    good morning, I am implementing a PanelMenu with richfaces but I have an error in Binding the html menu to the BAcking Bean As follow My Bean Object: @Stateful @Name("userMenu") public class UserMenuBean implements UserMenuLocal {     private HtmlPan