2016-03-14 5 views
1

Nous vous remercions d'avance de votre attention.comment obtenir la matrice de projection de caméra en utilisant le matlab?

Récemment, je suis en train d'utiliser le programme Matlab fourni par Andrea Fusiello1, Emanuele Trucco2, Alessandro Verri3 dans le Un algorithme compact pour la rectification de paires stéréo pour corriger les images par les deux caméras dans mon projet de recherche portant sur stéréo étalonnage.

Bien que le code Matlab ne soit pas complexe, comment obtenir les matrices de projection des deux caméras me confondait encore. J'ai utilisé le code Matlab suivant pour obtenir la matrice interne et R et T de chaque caméra. Et je pense que je peux obtenir la matrice de projection en utilisant la formule: P = A1 * [R | T]. Cependant, comme vous pouvez le voir sur la photo, la conséquence est étrange.

Donc je pense qu'il y a quelque chose qui ne va pas avec les matrices de projection que j'ai. Quelqu'un pourrait-il me dire comment obtenir les matrices de projection correctement?

Code matlab:

numImages = 9; 
files = cell(1, numImages); 
for i = 1:numImages 

files{i} = fullfile(matlabroot, 'toolbox', 'vision', 'visiondata', ... 
    'calibration', 'left', sprintf('left%d.bmp', i)); 
end 
[imagePoints, boardSize] = detectCheckerboardPoints(files); 
squareSize = 120; 
worldPoints = generateCheckerboardPoints(boardSize, squareSize); 
cameraParams = estimateCameraParameters(imagePoints, worldPoints); 
imOrig = imread(fullfile(matlabroot, 'toolbox', 'vision', 'visiondata', ... 
    'calibration', 'left', 'left9.bmp')); 
[imagePoints, boardSize] = detectCheckerboardPoints(imOrig); 
[R, t] = extrinsics(imagePoints, worldPoints, cameraParams); 

La conséquence:

enter image description here

Répondre

2

Il est construit en fonction cameraMatrix dans la boîte à outils système de vision par ordinateur pour calculer la matrice de projection de la caméra. Toutefois, si vous essayez d'effectuer une correction stéréo, vous devez étalonner une paire de caméras stéréo en utilisant Stereo Camera Calibrator app, puis utiliser la fonction rectifyStereoImage. Voir this example. La chose à garder à l'esprit est que les fonctions dans Computer Vision System Toolbox utilisent la convention post-multiplication, c'est-à-dire le vecteur de ligne multiplié par la matrice. Pour cette raison, les matrices de rotation et la matrice de projection de la caméra sont transposées de leurs parties communes dans Trucco et Veri, et dans les autres manuels. Donc, la formule utilisée par cameraMatrix est

P = [R;t] * K 

Ainsi P finit par être de 4 par 3, et non pas 3-en-4. Cela peut expliquer pourquoi vous obtenez des résultats bizarres.

+0

Nous vous remercions de votre aide! –