10-07-2008 07:40 PM
Solved! Go to Solution.
10-08-2008 01:34 PM
Dear X,
I'm not sure if this is the information that you are looking for, but take a look in the Vision Concepts Manual, page 3-10
start»programs»National Instruments»Vision»Documentation»NI Vision»Concepts_Manual.pdf
"If you specify a list of points instead of a grid for the calibration process,
the software defines a default coordinate system, as follows:
1. The origin is placed at the point in the list with the lowest x-coordinate
value and then the lowest y-coordinate value.
2. The angle is set to zero.
3. The axis direction is set to indirect."
If not, I don't know of a good way to recover the transformation between an original image and a correct image for a specific pixel. It would be one thing if it were a simple linear calibration, but we don't have access to the algorithm used to apply the nonlinear correction, which changes based on the locations of the distortion in the image.
What are you looking for in overlaying the images? Are you doing a comparison?
I don't know the constraints of your project, but one thing you could try is doing a pattern or geometric match for a unique feature in both of the corrected images that you want to overlay (one you know the location of, and that will serve to align the images properly), and then define the coordinate system based on that match.
Hope that helps!
~Nate
10-10-2008 01:22 PM
10-10-2008 01:35 PM
Hi,
I suppose you are referring to the "Convert to/from Real World" Vis. As far as I understand what these Vis do, they only refer to two "spaces". One is the original deformed image (with coordinates in pixel) and the other is the ideal "real world" space from which this image has been generated, with its coordinates expressed in whatever units you choose. I am concerned with a "third space", that is the corrected image generated by the "IMAQ Correct Calibrated Image" Vi, and I want to know where the point, which in the real world has coordinates (0, 0), is located in this image (if possible with fractional pixel coordinates, not just integer pixel coordinates).
I did not post my answer to Nate, but we basically agreed that what I was looking for was not available yet. I have some work to do to obtain this information (as I suspected). This is a shame, as the above Vi obviously knows how to compute what I am looking for, since it maps the pixel (or fractional pixel coordinate) where the origin is located in the real world, onto another (fractional) pixel coordinate in the corrected image.
This might be available in future releases, but for now, some work is needed from us...
X.
10-19-2011 12:50 AM
This is indeed an unsatisfactory state of affairs! I have reached the same inescapable conclusion.
I use a grid target to get a calibration image with a camera that is slightly off-axis to the plane. This gives me a coordinate system so that I can convert from a pixel measured in the raw image to a mm value in the real world image.
However, what I want to do is to use the calibration image to un-warp the raw image and do some processing and get some measurements. There is no way to go from a pixel position value in the un-warped image into a real world coordinate.
What the calibration package does not provide is the origin (in the un-warped image) and scale of the unwarped image. Surely this is not too much to ask?
Very frustrating.