Meine Stereo-Kamera hat verschiedene Auflösungen 1280x480, 640x240 und 320x120. (Die Kamera streamt ein synchronisiertes Bildpaar 640X480 horizontal eingefügt, deshalb ist 1280x480).In Stereo-Kalibrierung, wie die extrinsische Matrix ändert, wenn ich die Auflösung der Stereo-Kamera ändern
Ich habe den Algorithmus von Opencv3 Stereo Calibration im folgenden link verwendet, um die Stereokamera mit der Auflösung von 1280 * 480 zu kalibrieren.
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);
Die stereoRectify berechnet die Rotationsmatrix R, Translationsmatrix T zwischen linken und rechten Kamera. Und es berechnet auch zwei Matrizen der Rotation R1, R2 und zwei Matrizen der Projektion P1 P2. Ich habe die Ausgabe von stereoRectify als Eingabe von initUndistortRectifyMap und dann neu zuordnen, um die Projektion anzuwenden.
Hier ist eine stackoverflow Antwort zu erklären, wie es geht.
Jetzt habe ich die zwei Matrizen der Entzerrung Karte von links map11, map12 und rechte Kamera map21, map22.
Aber jetzt möchte ich diese Kameramatrizen M1 und M2, die Verzerrungsmatrizen D1 und D2 und die extrinsischen Matrizen R, T, R1, R2, P1 und P2 verwenden, um die Kamerabilder in einer niedrigeren Auflösung (320x120) zu korrigieren . PS Ich habe die Kamera nicht direkt mit der Auflösung von 320 * 120 kalibriert, da das Bild zu klein ist und der Algorithmus von Opencv die Schachbrettecken nicht finden kann, um die Kalibrierung durchzuführen.
Ich weiß, dass "die Verzerrungskoeffizienten nicht von der betrachteten Szene abhängen. Somit gehören sie auch zu den intrinsischen Kameraparametern. Und sie bleiben unabhängig von der aufgenommenen Bildauflösung gleich. Wenn zB eine Kamera hat auf Bilder mit einer Auflösung von 320 x 240 kalibriert wurden, können für 640 x 480 Bilder derselben Kamera absolut die gleichen Verzerrungskoeffizienten verwendet werden, während f_x, f_y, c_x und c_y entsprechend skaliert werden müssen. " nach the documentation of opencv. (Ich testete und es funktioniert)
Ich möchte wissen: Wie sollte ich die Matrizen von R, T, R1, R2, P1, P2 ändern, um die Remap in einer niedrigeren Auflösung von 1280x480 zu 320x120?