Concept Question - IMAQ Vision

Hi everyone,
Before I start cranking away at code and seeing if I can do this, I just kinda want to see if anyone has done anything similiar or just knows if it IS possible to do with IMAQ Vision. 
So what I want to do is take the output of a ccd camera which is recording a flat target plate, but from an angle, and make it appear as if it's head-on onscreen.  Ie; the camera is viewing a flat plate from a 45 degree angle below the plate so the resulting image is skew like so /_\ but i would like to make it square again |_|.  It will be a video feed from a ccd, as near live as possible.
                         /-----------------\                                          |---------------------------|
                        /                        \                                        |                                  |
                       /                          \                      =               |                                  |                          ????         
                      /                            \                                      |                                  |
                     /                              \                                     |                                  |
                    /________________\                                    |_________________|
Like my ansi art?

Can do it but CPU intensive.  Look at image calibration functions in IMAQ.  You basically shot a picture of a calibrated image then let IMAQ figure out how to make it square again.  We tied it, it worked nice, but cost too much CPU for our application.  We used it to take the bend out of a wide angle lens.  You are better off shooting it straight on if possible.
http://digital.ni.com/public.nsf/allkb/5FC615E2B4CFE8FA86256AC4007C9A42
Matthew Fitzsimons
Certified LabVIEW Architect
LabVIEW 6.1 ... 2013, LVOOP, GOOP, TestStand, DAQ, and Vison

Similar Messages

  • Certified LabVIEW Assosiate Developer worked with DIAdem in Aerospace domain using technologies FBG, SHM. Also knows vision concepts & IMAQ vision.

    Hello,
    I'm in aerospace domain from past 1.3 years. I have 2 years of LabVIEW experience & 1 year of DIAdem experience.
    Measurement of strain, load & other flight parameters are being done in my Structural Health Monitoring Lab using Fiber Bragg Grating (FBG) sensor.
    Working in IMAQ vision & Image processing fields from 3 months.
    Looking for a challenging technical opening.!
    Attachments:
    amith_vasista.doc ‏55 KB

  • How can I in IMAQ Vision know to which blob a pixel belongs to?

    Hi,
    How can I in IMAQ Vision know to which blob (particle) a pixel belongs to?
    I use IMAQ Complexmeasure and Complexparticle to get data about every particle in the image and then use this data (position, length and direction) to see if two particles "belong to each other". I want to start from one particle and from the data (position, length and direction) find a search area and in that area look for pixels (binary image), if I find one I want to know to which blob that pixel belongs to. (Programmatically) How can I do that?
    Deeper explanation: The image I send is just a small part of a bigger image. As you can see there are a lot of streaks on the image, they are generated by small particle
    s moving in the air. I use a long exposure time and have a chopper in front of the camera that will generate a short streak, a middle long streak and a long streak. By doing this I can see how the air is moving around in a room. As you can see I must know which streaks are generated by the same particle. As I said earlier I use IMAQ Complexmeasure and Complexparticle to get data about every blob (streak in this case) in the image and then use this data (position, length and direction) to see if two streaks "belong to each other". I start from one streak and from that streaks data (position, length and direction) I can find a search area and in that area look for pixels ( hopefully belonging to a streak generated by the same particle ), if I find a pixel I want to know to which streak (blob) that pixel belongs to so I can look at this new streaks data (length, direction) to verify if these two streaks are generated by the same particle. So my questions are:
    How can I see to which strea
    k (blob) an individual pixel belongs to? (programmatically)
    What is the best way to create a search area, ROI? (programmatically)
    What is the best way to look for a pixel in the search area, IMAQ GetPixelValue? (programmatically)
    Thanks
    Pelle
    Attachments:
    streak.jpg ‏6 KB
    scan0001.PNG ‏66 KB

    Pelle,
    This is an interesting project. It will be difficult to use blob processing, because there are a large number of intersecting paths.
    A few ideas to start with:
    For each particle, the path is essentially the same brightness. I would start with white and gradually decrease the threshold level to locate the different blobs.
    Also, for each particle, the alignment is roughly the same. I would only consider blobs that have about the same orientation of the long axis. They don't seem to make sudden right angle turns.
    I would search by doing a particle analysis, select a particle and search for related particles by comparing the centroid of nearby particles to see if they fall in the area +/- 15 degrees from the long axis orientation of the
    particle. You should be able to locate a best choice at each end of the particle.
    Bruce
    Bruce Ammons
    Ammons Engineering

  • I don't have IMAQ vision, where can I get some super basic easy VI's for IMAQ?

    Hello,
    I don't have IMAQ vision, where can I get some super basic easy VI's to get images from my IMAQ PCI-1424 board, without Vision?? is there some kind of tutorial that will help me get started from the ground up in designing VI's? Also I am trying to run the HL Snap in picture control.vi and I keep getting an error that says:
    -1074397150 occured at IMAQ snap.vi
    Possible reasons,
    NI-IMAQ (Hex 0xBFF6022) wait timed out; aquisition not complete.
    Why am I getting this??? it is driving me nuts, I don't know how to get a image on my computer from the IMAQ board. I can get one in MAX. Also in MAX I try to change the camera driver to Kodak because that is the boar
    d that I have KLI-2113, but when I try to change anything under properties like the window size and then apply it, it says error removing old camera. why does that do that? Some of the other drivers sort of work and let me change the settings. I don't know if they work right though. I can get atleast some response to light from the CCD chip.
    Anyways, thanks,
    Brian

    Brian;
    There is an example on how to display images in LabVIEW without having the full IMAQ application.
    You can always convert the images to bitmaps (flattening) and display them in a picture indicator. If you are going to do some image processing within LabVIEW, this may be the way to go.
    About the error you are getting, hopefully the above example will help you in resolving the issue. If the problem persist, it will be more beneficial if you can post the code. Also, you may get better answers if you post your question in the Vision forum.
    Regards;
    Enrique
    www.vartortech.com

  • Speeding up LabVIEW scripts generated by IMAQ Vision Builder

    Hi,
    I am an experienced c++ software developer, I have mainly used Microsoft's Visual Studio for development. Now, I am developing a real time application using LabView and IMAQ Vision Builder. The LabView application I developed calls a script that was generated by IMAQ vision builder...the application works, but it is too slow for the processing I need to do. In C++ I wouldn't have any trouble speeding the application up, but I am still learning how labview handles threads etc. Does anyone have any ideas?

    Your question is very difficult to answer. Without knowing anything about the processing you are doing, I can't suggest anything to increase the speed.
    Vision Builder does not produce the most efficient code possible. It is likely that the algorithm could be improved, but this really depends on what you are doing. It is also possible that your acquisition could be what is slowing you down, especially if you are using Snap.
    Perhaps if you post the code generated by Vision Builder it will be possible to help you more.
    Bruce
    Bruce Ammons
    Ammons Engineering

  • Functions in IMAQ Vision for Labview same as those in Vision Builder?

    Hi all...
    i just have a simple question..Does IMAQ Vision for Labview has the same functions of Vision Builder?
    I know that with Vision Builder you can develop an application interactively...but does it has more functions than IMAQ Vision?
    So if i buy IMAQ Vision can i develop the same kind of applications that i would make with Vision Builder?
    I´m specially interested in color matching and color analisys functions.
    Thanks

    IMAQ Vision has much more than Vision Builder. Basically, VB was created using Vision and they implemented a good number of the functions in a menu driven format. However, there are many more functions available that were not integrated into VB.
    Vision does have some good color matching and analysis tools.
    Bruce
    Bruce Ammons
    Ammons Engineering

  • Imaq vision function reference

    Hello All,
    I am new to Lab Windows/CVI and am using the imaq vision library.
    Could anyone tell me where I can find the IMAQ Vision function reference? I have found a function reference manual at Start--> National Instruments --> Vision--> Documentation. But, all the functions described in this document are starting with img******(). I was looking for functions beginning with imaq****().
    I am sorry as it might be a stupid question but any help would be appreciated.
    Cheers, 
    Solved!
    Go to Solution.

    Hello Harmonium,
    i think what you search is under Start --> National Instruments --> Vision --> Documentation --> NI-IMAQ IO
    In this directory you found the documentation for the imaq**** functions.
    C:\Programme\National Instruments\NI-IMAQ IO\Docs 
    There are three librarys the NI-IMAQ I/O, NI-IMAQ Librarys and the NI-IMAQdx. If you can please use the NI-IMAQdx library,
    because its the newest for doing aquisition. The documentation can be found here
    C:\Programme\National Instruments\NI-IMAQdx\Docs
    best regards
    Alexander Glasner
    AE NIE

  • Writing a Compressed AVI File in NI LabWindows/CVI with the IMAQ Vision Acquisition

    I'm still facing some problems when I try to save pictures from a GigE Vision camera into a compressed avi-file in a LabWindows/CVI application on Windows7.
    The task is to grab images from the camera with 30 fps to monitor a process, evaluate the grabbed pictures to find certain characteristics of the monitored process and save them in an avi-file to have the possibility to load and evaluate them once again Offline if necessary.
    My questions: which compression filters can I get with the NI-Imaq Vision Acquisition and Vision Development Runtime 2012 SP1? Is a mpeg4 codec available to compress quickly and effective? Can I use a third party codec or only the ones delivered with NI-Vision?
    I posted the problem two times already, but there is little response up to now. Thanks

    The encoding algorithm, or codec, that's used for compression needs to present on your system. When I had done some research on this sometime back, I found that if your custom codec could align with the DirectShow architecture, then your codec would work with IMAQ AVI functions.The codecs that are available may vary from system to system, depending on what software is currently installed. Be sure to check out this article:
    Writing a Compressed AVI File with the IMAQ Vision Acquisition Software
    Adnan Zafar
    Certified LabVIEW Architect
    Coleman Technologies

  • Where can I get ComponentW​orks IMAQ Vision reference?

    I have setup LabVIEW2012 on my pC. The cwimaq.ocx and cwimagview.ocx were also registered. Now I want to building componentWorks IMAQ Vision Applications with Visual C++6.0.
    I use the Visual C++ MFC AppWizard created a skeleton project and program. After insert the Activex Control in the program, the corresponded wrapper classes were created. But I don't know how to use these classes. For example ,how to display two dimensional array as image.The manual of "Getting Results with ComponentWorks™ IMAQ Vision" says that ComponentWorks online reference (If you have ComponentWorks installed on your computer, you can access the online reference by selecting Start»Programs»NationalInstruments>>ComponentWorks​»ComponentWorks Reference).
    But I only registered the Activex control. How can I get the ComponentWorks setup program and the detailed reference? Many thanks.

    Brian;
    There is an example on how to display images in LabVIEW without having the full IMAQ application.
    You can always convert the images to bitmaps (flattening) and display them in a picture indicator. If you are going to do some image processing within LabVIEW, this may be the way to go.
    About the error you are getting, hopefully the above example will help you in resolving the issue. If the problem persist, it will be more beneficial if you can post the code. Also, you may get better answers if you post your question in the Vision forum.
    Regards;
    Enrique
    www.vartortech.com

  • Multi-camera acq w/IMAQ-Vision processing; how to translate buffers?

    I have a multi-camera system using genlocked cameras and a PCI-1408. I'm developing my application using LabWindows/CVI. I can acquire from each camera in turn using NI-IMAQ low-level functions (ref.: scan 1408 channels.c), but I want to process the images using high-level IMAQ-Vision functions. How do I translate an image captured into a low-level buffer (imgCreateBuffer) into an Image buffer (imaqCreateImage)? Are the buffer structures from imgCreateBuffer the same as imaqCreateImage, so that I can simply cast the void* returned from imgCreateBuffer to an Image* parameter in an imaq_xxx function? If not, how do I move an image from one buffer type to the other?
    Thanks!
    Jesse

    Well, I'm answering my own question!
    Turns out that the image buffer from imgCreateBuffer is an integer array. To get this into an Image structure from imaqCreateImage, use imaqArrayToImage.
    Hope this helps the next person.
    Jesse

  • Image processing with imaq vision with 2 webcams on the same computer

    Hi,
    I'm currently trying to set up 2 usb webcams (logitech quickcam for notebooks pro). I want to be able to have them both run simultaneously and do some image processing with the images that I get from both cameras with labview and imaq vision.
    As of right now, I'm having trouble getting both cameras to run at the same time. Any help would be gladly appreciated. Thanks.

    The USB IMAQ driver will not support running 2 USB cameras at a time (I believe it is a limitation of the DirectShow interface). You could open one camera, acuqire an image, close the reference to that camera and then do the same for the second camera.
    If you need simultaneous acquisition, look at possibly moving to 1394 cameras or analog cameras.

  • 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

  • Setting maximum number of image buffers in MAX in IMAQ vision builder

    To aquire large number of images using duncan Technologies Camera (7f/s) on IMAQ PCI 1424 i'm supposed to set the maximum number of buffer images in MAX(Measurement and Automation)in IMAQ vision builder. But i do not see the option for specifying the maximum number of image buffers under the properties of PCI 1424. Please advise.
    Thanks in advance.

    The setting is somewhat difficult to locate.
    In MAX, select "Tools" on the main menu bar. Under that, select "IMAQ". The only option that comes up is "Max number of buffers".
    Bruce
    Bruce Ammons
    Ammons Engineering

  • Why I can't subtract two images in imaq vision builder?

    Hi,
    I have many times tried but failed to get the objects in a image by subtraction with another image which is background, in imaq vision builder(ver. 6.0). I totally can't use the "operators" command under "greyscale" to subtract the two images becauee all commands under the "greyscale" are always unactivated after two images have been stored in 2 idfferent buffers. I really don't know why and this vision builder is so difficult to use, unbelievable! I followed the instructions in its Help and it's quite simple but I totally failed to make this operation!
    Two samples of images have been attached and maybe it's very ease for you to filter out objects(fibers) by subtraction each other. Show me your scrip
    t if you can. It's urgent to me.
    Or the idea of the way I thought for filtering the objects is wrong? Point out please if you know.
    Thanks and Merry Christmas and Happy New year!!
    Swedlin
    Attachments:
    10Img0.jpg ‏27 KB
    123Img0.jpg ‏25 KB

    Okay, this is not quite as straightforward as it could be, but you can do image subtraction in Vision Builder. The basic idea is as follows:
    - select first object image and copy it to buffer 1
    - select "image >> get new image" and load your background image from a file.
    - put this in buffer 2
    - retrieve object image from buffer 1
    - perform subtraction. Even though these images appear to be greyscale, they are actually saved as 24-bit RGB images, so you need to use the color operators instead. Vision Builder will only allow you to select steps that are valid for the image you have loaded. You could extract the luminance plane from all of your images to work with 8-bit images if you like.
    I have attached below a background image, several object i
    mages, my script, and the results of batch processing. You will need to edit the "get new image" step with the correct path to the background image on your machine.
    Bruce is right though. This is a bit easier in LabVIEW.
    Regards,
    Brent R.
    Applications Engineer
    National Instruments

  • Concept Question about EDI and Error Processing

    Hello All,
    This is a concept question, I was wondering how others would approach this scenario.
    Let's take this scenario. In EDI often the transmission for a purchase order comes in with an invalid material number. Normal error processing is for the EDI team to research the issue (find the correct matnr), edit the idoc and reprocess the Idoc.  I would like to move that type of error processing out of the hands of the EDI folks and into the hands of the business users.
    How would they correct the material number? It has to be more intuitive than editing an IDoc, it has to be an easy and intuitive user interface. This process has to also work for many types of EDI transmissions both inbound and outbound.
    There would be many ways to handle this: create a report with an editable grid that would change the idoc during input and create the order with the corrections, convert the idoc to xml and use simple transformations, use an xsl report...etc.  You get the point. 
    How would you approach this?  Before I start the design I want to make sure I've given all the options due consideration...all options, webdynpro, transformations, regex, you name it...all is available, except there is no XI. 
    Personally I'm leaning towards an editable grid and processing buttons that would post the idoc in background...but I do that type of thing all the time and I may be in a rut and neglecting better design options.
    Thanks for your input,
    Greg

    <b>Paul:</b> So it runs the transaction silently in BDC format, until the error occurs, then opens up in dialogue to allow the user to change the invalid material, and then continue on with processing.
    This works when the processing function module uses BDC. But even then I think this is possibly nice from user perspective, but a nightmare from auditing perspective. I.e. correct me if I'm wrong, but I'm pretty sure there's no log indicating that the user changed the material number. Thus for anybody comparing the IDoc contents against the posted document (including change history) there's no trail that shows this change. Of course you can assume that this is what must have happened, but I personally prefer if I can track in the system what happened and have proof for that.
    <b>Reddy:</b>
    <ol>
    <li>it can be run daily basis, which should select all idocs which are in status 51 with message number (..related to wrong material number). report output should inlcude :idoc number-wrong mat no- space for new material to be entered by business against wrong 1. And there should be one button for RUN.</li>
    <li>After RUN, the material number should be changed to new 1 in segments and idocs should be reprocessed.</li>
    <li>repeat the run until business enter right mat num.</li>
    </ol>
    Design seems to limited to me (takes care only of one error message). Might work if that's the main pain point and this is the only one the user is dealing with. Otherwise I'd expect pretty soon they start complaining about having to use different tools for the possible errors. I'd keep the report more general, but allow this special form of processing only for a given error message (otherwise it's a normal re-process as triggered for example via BD87).
    Also, I assume that when you talk of changing the IDoc you mean that you actually keep an original copy around (like SAP does when you edit an IDoc). Often this is required from an auditing perspective. I'm not sure why you wouldn't want to check the material number <em>before</em> trying to process the IDoc to avoid wasting system resources (but maybe I misunderstood the step).
    Anyhow, in theory you could also achieve all of this via workflow. You can add custom columns to the work item overview in the inbox, only issue here is that it doesn't scale well (so issues with larger volumes).

Maybe you are looking for