pub fn init_undistort_rectify_map(
camera_matrix: &impl ToInputArray,
dist_coeffs: &impl ToInputArray,
r: &impl ToInputArray,
new_camera_matrix: &impl ToInputArray,
size: Size,
m1type: i32,
map1: &mut impl ToOutputArray,
map2: &mut impl ToOutputArray,
) -> Result<()>Expand description
Computes the undistortion and rectification transformation map.
The function computes the joint undistortion and rectification transformation and represents the result in the form of maps for #remap. The undistorted image looks like original, as if it is captured with a camera using the camera matrix =newCameraMatrix and zero distortion. In case of a monocular camera, newCameraMatrix is usually equal to cameraMatrix, or it can be computed by get_optimal_new_camera_matrix for a better control over scaling. In case of a stereo camera, newCameraMatrix is normally set to P1 or P2 computed by stereo_rectify .
Also, this new camera is oriented differently in the coordinate space, according to R. That, for example, helps to align two heads of a stereo camera so that the epipolar lines on both images become horizontal and have the same y- coordinate (in case of a horizontally aligned stereo camera).
The function actually builds the maps for the inverse mapping algorithm that is used by #remap. That
is, for each pixel in the destination (corrected and rectified) image, the function
computes the corresponding coordinates in the source image (that is, in the original image from
camera). The following process is applied:
where
are the distortion coefficients.
In case of a stereo camera, this function is called twice: once for each camera head, after
#stereoRectify, which in its turn is called after #stereoCalibrate. But if the stereo camera
was not calibrated, it is still possible to compute the rectification transformations directly from
the fundamental matrix using #stereoRectifyUncalibrated. For each camera, the function computes
homography H as the rectification transformation in a pixel domain, not a rotation matrix R in 3D
space. R can be computed from H as
where cameraMatrix can be chosen arbitrarily.
ยงParameters
- cameraMatrix: Input camera matrix
.
- distCoeffs: Input vector of distortion coefficients
of 4, 5, 8, 12 or 14 elements. If the vector is NULL/empty, the zero distortion coefficients are assumed.
- R: Optional rectification transformation in the object space (3x3 matrix). R1 or R2 , computed by stereo_rectify can be passed here. If the matrix is empty, the identity transformation is assumed. In init_undistort_rectify_map R assumed to be an identity matrix.
- newCameraMatrix: New camera matrix
.
- size: Undistorted image size.
- m1type: Type of the first output map that can be CV_32FC1, CV_32FC2 or CV_16SC2, see [convert_maps]
- map1: The first output map.
- map2: The second output map.