0

I want to transform 3D points to 2D points in the image space. According to hartley and zisserman book Multiview Geometry, we only need 6 points to calculate the camera projective matrix with DLT and i did it. With the matrix i am able to reproject the points accurately.

Although the projection matrix is working properly but the intrinsic parameters extract from it are not and it's off by few mm everytime.

Below is the example of Intrinsic Parameter i able to extract

10502.9 , -257.128 , 1831.12 

0      ,  10425.8  ,  -390.996

0      ,   0     , 1        

The sensor size/pixel of my camera is 1.85um, so my focal length calculated with the intrinsic param is about 19mm but according to the vendor specification it is around 16mm.

I would like to clear some doubt about

  1. Is the calculation on my focal length correct and why are some value in the intrinsic parameters are negative.

  2. Is 6 points really sufficient to create the camera model? Even though my camera projection matrix is working, why is the intrinsic parameters extracted is still incorrect.

Thank you.

ChiHong
  • 7
  • 4

1 Answers1

0

Your calculation of the focal length is a first-order approximation, since it neglects the non-linear distortion. Also your result have a quite large off-diagonal value (-257.1, or ~ 2.5% of the focal length), which looks suspicious.

Six points are just the minimum. You normally follow a calibration procedure that automatically detects and matches a much larger number of points in the image on a calibration target (a.k.a. "rig") of known geometry, for example a planar checkerboard. Doing so has the effect of "averaging away" errors in the least squares sense. The calibration optimizer will also normally use a robustifier to (attempt to) remove or downweight erroneous point detection/matches ("outliers"). The procedure fits a lens model that normally includes nonlinear distortion terms.

You may want to check this other answer for more details on an appropriate procedure.

Francesco Callari
  • 11,300
  • 2
  • 25
  • 40
  • May i ask how to interpret the skew value -257.1 and is it normal to have some negative value in the parameter obtained? – ChiHong Nov 11 '19 at 01:31
  • It depends on how orthogonal the image axes are w.r.t. each other and the focal axis. Zero for perfectly orthogonal axis. Physically, nonzero skew is caused by the sensor plane not being perfectly normal to the focal axis. This can happen because the sensor is intentionally tilted (e.g. in some type of cameras designed for architectural photography), or because the lens mount sags. In some cheap lenses focusing slants the lens because of backlash in the gears. – Francesco Callari Nov 11 '19 at 02:48
  • We applied Scheimpflug in our camera system. Will this affect the parameters calculated? – ChiHong Nov 11 '19 at 03:13