04-06-2026 12:49 PM
I have a vi I am working with to try to calibrate my vision camera. I have the pictures and the dot matrix. When I go through the calibration process I am getting Insufficient Data = true when I am done. Am I doing something wrong?
Solved! Go to Solution.
04-06-2026 04:33 PM
Hi aeastet,
Following example <LabVIEW>\examples\Vision\Stereo Vision\Compute Depth Image\Compute Depth Image.vi
I could make it return some internal parameter values with "Insufficient Data" = false.
I think you were overwriting the previous calibration at each iteration instead of combining all the calibration images in a single template image.
See the modified version attached.
Regards,
Raphaël.
04-06-2026 05:44 PM
@raphschru wrote:
Hi aeastet,
Following example <LabVIEW>\examples\Vision\Stereo Vision\Compute Depth Image\Compute Depth Image.vi
I could make it return some internal parameter values with "Insufficient Data" = false.
I think you were overwriting the previous calibration at each iteration instead of combining all the calibration images in a single template image.
See the modified version attached.
Regards,
Raphaël.
That worked great. I am still trying to get my head around what vision is looking for even though I have been doing this on and off again for years. Vision or IMAQ never seems to work the way I am expecting.
Thanks again.
04-07-2026 01:55 AM
Vision is a complex topic in itself and IMAQ makes it not always easier.
First what we do intuitively with our eyes and brain can be rather complicated to replicate with computers. Transforming our intuitive process to an algorithmic implementation is prone to many problems.
The other thing you need to remember is that an IMAQ resource very much behaves like a LabVIEW refnum. Unlike the other LabVIEW datatypes that are value based, IMAQ refnums are reference based. That can be very confusing for normal LabVIEW users. If you branch a string off and change its value in one branch you now have two different strings in memory. If you branch an IMAQ resource off and change the image content in one, your other branched off IMAQ resource will also contain the new image, since the IMAQ resource is only a reference to the actual image data.
Since images are often huge memory lumps, not treating an IMAQ resource as reference would more often than not create an out of memory error dialog, since every wire branch would create a new copy of the whole image. The IMAQ developers had the choice to try to educate the users to never branch off IMAQ wires unnecessarily or to implement an IMAQ resource as a reference, somewhat breaking the usual by value paradigm of LabVIEW wires. Guess which one felt easier to do 😀.
04-08-2026 08:03 AM - edited 04-08-2026 08:06 AM
@rolfk wrote:
Vision is a complex topic in itself and IMAQ makes it not always easier.
First what we do intuitively with our eyes and brain can be rather complicated to replicate with computers. Transforming our intuitive process to an algorithmic implementation is prone to many problems.
The other thing you need to remember is that an IMAQ resource very much behaves like a LabVIEW refnum. Unlike the other LabVIEW datatypes that are value based, IMAQ refnums are reference based. That can be very confusing for normal LabVIEW users. If you branch a string off and change its value in one branch you now have two different strings in memory. If you branch an IMAQ resource off and change the image content in one, your other branched off IMAQ resource will also contain the new image, since the IMAQ resource is only a reference to the actual image data.
Since images are often huge memory lumps, not treating an IMAQ resource as reference would more often than not create an out of memory error dialog, since every wire branch would create a new copy of the whole image. The IMAQ developers had the choice to try to educate the users to never branch off IMAQ wires unnecessarily or to implement an IMAQ resource as a reference, somewhat breaking the usual by value paradigm of LabVIEW wires. Guess which one felt easier to do 😀.
Thanks for the input rolfk,
I have been using LabVIEW for almost 30 years now. I have been using IMAQ and vision for many of those years. Vision seems like they had ten groups developing it and no one was talking to each other. I have a vi where I get info but the set info has a completely different input cluster. A vi only takes this type but not that type and there is no fast way to convert it. The examples really suck. I have been able to work my way through things over the years.
It took me a few years to realize that I need to make a copy of the image to do anything to it if I do not what to have it effect the original image. I also need to make a copy if I am doing multi operations on the same image. How the image reference work is not the same as it is in LabVIEW. Like I said I have been doing this for a while and it still seems like vision is much harder than it need sot be. It seems easy when I finally get the solution working. Ai is useful in point out a few things now. It also takes you down rabbit holes that you spend hours on only to find out the solution was very simple.
I would love to see support for vision come back. I would love to be much better at it. I have no real need for it at work. I am working on a vision processing software package for finding apriltags for FIRST robotics. That is a high school robotics program that teaches students how to design and program a robot and compete. LabVIEW used to dominate in this program. Now it is a joke. I created this software to show the students that LabVIEW can do complicated stuff too. I wanted to give them exposure to LabVIEW since we no longer use LabVIEW to program the robot. I still get to feel useful while I am learning Java.
04-08-2026 12:35 PM
rolfk,
I do have one more question if you will indulge me. I have the calibration from the vi from above. I saved the calibrated image so I can use that to fix the images coming from the camera. What is the proper way to add the calibration to the raw image? I was told that this was all I need to do. Is this correct?