Calculate X Y in mm with known Z

meoDz
Wed, 20 Oct 2021 09:54:33 +0000
C++

Hi all,

I am using the fisheye camera to measure X, Y dimensions with the known Z as can be demonstrated in the image.

The fisheye camera is calibrated by putting the checkboard on the table. After calibration, I have camera matrix, distortion, rotation vector, and translation vector. Z dimension is took from translation vector [ a,b, Z].
Note: the checkboard is 6 x 8 and for each square: 20mm x 20mm

Now, I would like to measure the X ,Y dimension in the mm unit of Point A but I have wrong result.
I used undisortPoint() with the input is: uncalibrated image point(u,v) from fisheyecamera. Then, I used this equation to calculate X ,Y dimension in the mm unit

u = f_{x} * X / Z

v = f_{y} * Y / Z

However, the result of Point A(X, Y) is wrong.

My question is:

1. undisortPoint() returns the point in optical Point coordinate or image coordinate?

2. Is there any problem with my process that affects my X Y result?

Thank you very much.
I really apologize for my terrible English. Please forgive me.

3 posts - 2 participants