Get Undistorted Camera Matrix
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have calibrated a Camera using the Camera Calibrator App which producted a CameraParameters data structure. I can use that datastruct and the :
undistortImage()
Fucnction to generate a new undistorted image. I would like to get the new Camera Matrix from this undistortion method similar to opencv getOptimalNewCameraMatrix method but dont see a way to do this short of doing the math myself. How can I get the new camera matrix for the undistorted image?
0 commentaires
Réponses (1)
Giridharan Kumaravelu
le 18 Août 2023
The answer to this question depends on undistortImage function's Name-Value argument OutputView. If it is not used and left to use its default value of OutputView="same", then the new camera matrix will be the same as the original camera matrix in the exported cameraParameters.
If the OutputView is set to "full" or "valid", then the principal point of the original camera matrix must be translated to form the new camera matrix. In short, you could do the following to account for all these 3 cases:
% Undistort the image specifying the desired OutputView.
[J, newOrigin] = undistortImage(I, cameraParams, OutputView=view)
% Translate the principal point. newOrigin is zero if OutputView="same"
newPrincipalPoint = cameraParams.PrincipalPoint - newOrigin;
newImageSize = size(J,1:2);
% Create a new cameraIntrinsics object which contains the new camera matrix.
newIntrinsics = cameraIntrinsics(cameraParams.FocalLength, newPrincipalPoint, ...
newImageSize, Skew=cameraParams.Skew);
0 commentaires
Voir également
Catégories
En savoir plus sur MATLAB Support Package for USB Webcams dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!