calibrationMatrixValues: consider principalPoint in FOV computation
The FOV depends on the principal point location. Use formula of viz::Camera.
This commit is contained in:
parent
86959310f9
commit
8ed1945ccd
@ -3356,8 +3356,10 @@ void cv::calibrationMatrixValues( InputArray _cameraMatrix, Size imageSize,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Calculate fovx and fovy. */
|
/* Calculate fovx and fovy. */
|
||||||
fovx = 2 * atan(imageSize.width / (2 * K(0, 0))) * 180.0 / CV_PI;
|
fovx = atan2(K(0, 2), K(0, 0)) + atan2(imageSize.width - K(0, 2), K(0, 0));
|
||||||
fovy = 2 * atan(imageSize.height / (2 * K(1, 1))) * 180.0 / CV_PI;
|
fovy = atan2(K(1, 2), K(1, 1)) + atan2(imageSize.height - K(1, 2), K(1, 1));
|
||||||
|
fovx *= 180.0 / CV_PI;
|
||||||
|
fovy *= 180.0 / CV_PI;
|
||||||
|
|
||||||
/* Calculate focal length. */
|
/* Calculate focal length. */
|
||||||
focalLength = K(0, 0) / mx;
|
focalLength = K(0, 0) / mx;
|
||||||
|
@ -875,8 +875,8 @@ void CV_CalibrationMatrixValuesTest::run(int)
|
|||||||
ny = goodAspectRatio;
|
ny = goodAspectRatio;
|
||||||
}
|
}
|
||||||
|
|
||||||
goodFovx = 2 * atan( imageSize.width / (2 * fx)) * 180.0 / CV_PI;
|
goodFovx = (atan2(cx, fx) + atan2(imageSize.width - cx, fx)) * 180.0 / CV_PI;
|
||||||
goodFovy = 2 * atan( imageSize.height / (2 * fy)) * 180.0 / CV_PI;
|
goodFovy = (atan2(cy, fy) + atan2(imageSize.height - cy, fy)) * 180.0 / CV_PI;
|
||||||
|
|
||||||
goodFocalLength = fx / nx;
|
goodFocalLength = fx / nx;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user