Je suis dans la situation où je dois trouver la position relative de la caméra entre deux caméras ou plus en fonction des correspondances d'images (donc les caméras ne sont pas au même point). Pour résoudre ce problème, j'ai essayé la même approche que celle décrite here (code ci-dessous).Trouver des extrinsèques entre les caméras
cv::Mat calibration_1 = ...;
cv::Mat calibration_2 = ...;
cv::Mat calibration_target = calibration_1;
calibration_target.at<float>(0, 2) = 0.5f * frame_width; // principal point
calibration_target.at<float>(1, 2) = 0.5f * frame_height; // principal point
auto fundamental_matrix = cv::findFundamentalMat(left_matches, right_matches, CV_RANSAC);
fundamental_matrix.convertTo(fundamental_matrix, CV_32F);
cv::Mat essential_matrix = calibration_2.t() * fundamental_matrix * calibration_1;
cv::SVD svd(essential_matrix);
cv::Matx33f w(0,-1,0,
1,0,0,
0,0,1);
cv::Matx33f w_inv(0,1,0,
-1,0,0,
0,0,1);
cv::Mat rotation_between_cameras = svd.u * cv::Mat(w) * svd.vt; //HZ 9.19
Mais dans la plupart de mes cas, je reçois des résultats extrêmement étranges. Donc, ma prochaine pensée était d'utiliser un ajusteur de bundle à part entière (qui devrait faire ce que je cherche?!). Actuellement, ma seule grande dépendance est OpenCV et ils n'ont qu'une implémentation d'ajustement de paquet non documentée.
La question est:
- Y at-il un dispositif de réglage du faisceau qui n'a pas de dépendances et utilise une licence qui permet l'utilisation du commerce?
- Existe-t-il un autre moyen facile de trouver les extrinsèques?
- Les objets ayant des distances très différentes par rapport aux caméras sont-ils un problème? (Lourd parallaxe)
Merci à l'avance
Pouvez-vous fournir plus de détails? Est-ce que, les deux caméras ont un champ de vision commun (FOV)? –
Les caméras sont du même modèle - mais pas identiques - donc les intrinsèques peuvent être légèrement différents. Idéalement, les paramètres intrinsèques sont ajustés aussi, mais ce n'est actuellement pas ma priorité. – Daniel
Ma question était de savoir si les deux caméras ont une zone commune qui peut être imagée. Si oui, vous pouvez placer un échiquier dans cette zone commune et trouver la pose relative entre les caméras. –