fixing intrinsics during stereoCalibration (during R,T refinment)

조회 수: 12 (최근 30일)
Ilya K
Ilya K 2022년 5월 3일
답변: Birju Patel 2022년 5월 5일
Hi.
So relating to the case in which I want to do Stereo Calibration, in the documentation of the function:
estimateCameraParameters
it said that it has an argument of initial intrinsic matrix (3 x 3 dimnesions).
I don't clearly understand why is there only one, if for exmaple I wish to initialize both initial intrisics of both CameraParameteres.
The more important question for me is:
Can I fix the intrinsics after they calculated by calibrateOneCamera , as it is done in OpenCV with flags like: CALIB_FIX_INTRINSIC and CALIB_USE_INTRINSIC_GUESS.
That way for exmaple I can calibrate each of my two cameras (for better results, especially if they are different) alone and then try to find only R and T without refining the intrinsics. But it will be also sufficient to calibrate them together and speaking openCV language using only the flag CALIB_FIX_INTRINSIC.
In my case I see that without the refinment the intrinsics look better for me ( relying on the scale of the numbers and the real intrinsics of one of the cameras which I know before the callibration).
What I'm asking actually, should I just turn off (comment) the refinment and may I rely on the estimateInitialTranslationAndRotation
in the following matlab peace of code in estimateCameraParameters or can the refinment (refine function below) be done (i.e code modificated somehow) to refine the R and T with fixation of the intrinsics calculated before in the code by calibrateOneCamera:
calibrationParams.shouldComputeErrors = false;
[cameraParameters1, imagesUsed1] = calibrateOneCamera(imagePoints1, ...
worldPoints, imageSize, cameraModel, worldUnits, calibrationParams);
progressBar.update();
[cameraParameters2, imagesUsed2] = calibrateOneCamera(imagePoints2, ...
worldPoints, imageSize, cameraModel, worldUnits, calibrationParams);
progressBar.update();
% Compute the initial estimate of translation and rotation of camera 2
[R, t] = vision.internal.calibration.estimateInitialTranslationAndRotation(...
cameraParameters1, cameraParameters2);
stereoParams = stereoParameters(cameraParameters1, cameraParameters2, R, t);
errors = refine(stereoParams, imagePoints1(:, :, pairsUsed), ...
imagePoints2(:, :, pairsUsed), shouldComputeErrors);
Thank you in advance.

답변 (1개)

Birju Patel
Birju Patel 2022년 5월 5일
You can use the estimateStereoBaseline function to estimate the translation and rotation between two cameras given fixed intrinsics:

카테고리

Help CenterFile Exchange에서 Camera Calibration에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by