Mon appareil stéréo a différentes résolutions 1280x480, 640x240 et 320x120. (La caméra diffuse une paire synchronisée d'images 640X480 collées horizontalement, c'est pourquoi 1280x480).En étalonnage stéréo, comment la matrice extrinsèque change si je change la résolution de la caméra stéréo
J'ai utilisé l'algorithme de calibrage stéréo Opencv3 dans le link suivant pour calibrer la caméra stéréo avec la résolution de 1280 * 480.
stereoRectify(M1, D1, M2, D2, img_size, R, T, R1, R2, P1, P2, Q, CALIB_ZERO_DISPARITY, -1, img_size, &roi1, &roi2);
Mat map11, map12, map21, map22;
initUndistortRectifyMap(M1, D1, R1, P1, img_size, CV_16SC2, map11, map12);
initUndistortRectifyMap(M2, D2, R2, P2, img_size, CV_16SC2, map21, map22);
Mat img1r, img2r;
remap(img1, img1r, map11, map12, INTER_LINEAR);
remap(img2, img2r, map21, map22, INTER_LINEAR);
Le stereoRectify calcule la matrice de rotation R, la matrice T translation entre la caméra gauche et à droite. Et aussi, il calcule deux matrices de rotation R1, R2 et deux matrices de projection P1 P2. J'ai utilisé la sortie de stereoRectify comme l'entrée de initUndistortRectifyMap, puis remappez pour appliquer la projection.
Voici une réponse stackoverflow pour expliquer comment le faire.
Maintenant, j'ai les deux matrices de la carte de rectification de gauche map11, map12 et carte de droite map21, map22. Mais maintenant je veux utiliser ces matrices de caméras M1 et M2, les matrices de distorsion D1 et D2, et les matrices extrinsèques R, T, R1, R2, P1 et P2 pour rectifier les images de la caméra dans une résolution inférieure (320x120) chacune . PS Je n'ai pas calibré l'appareil photo avec la résolution de 320 * 120 directement parce que l'image est trop petite et l'algorithme d'Opencv ne trouve pas les coins de l'échiquier pour effectuer le calibrage. Je sais que "Les coefficients de distorsion ne dépendent pas de la scène vue, ils appartiennent aussi aux paramètres intrinsèques de la caméra et ils restent les mêmes quelle que soit la résolution de l'image capturée. calibrés sur des images de résolution 320 x 240, les mêmes coefficients de distorsion peuvent être utilisés pour les images 640 x 480 de la même caméra, alors que f_x, f_y, c_x et c_y doivent être mis à l'échelle de manière appropriée. " selon the documentation of opencv. (J'ai testé et ça marche)
Je veux savoir: comment dois-je modifier les matrices de R, T, R1, R2, P1, P2 pour faire le remappage dans une résolution inférieure de 1280x480 à 320x120 ?.