OpenCV标定参数和立体相机中的三维点转换

4
我有4个PS3 Eye相机。我使用OpenCV库的cvStereoCalibrate()函数校准了相机1和相机2,通过寻找棋盘角并将它们的三维坐标传递到此函数中。同样,我使用另一组由相机2和相机3拍摄的棋盘图像来校准相机2和相机3;使用相同的方法,我校准了相机3和相机4。现在,我有相机1和相机2的内外参数、相机2和相机3的内外参数、以及相机3和相机4的内外参数。其中,外参数是旋转和平移的矩阵,内参数是焦距和主点的矩阵。假设有一个3D点(世界坐标)被相机3和相机4看到,而相机1和相机2没有看到。我的问题是:如何使用旋转、平移、焦距和主点参数将被相机3和相机4看到的这个3D世界坐标点相对于相机1和相机2的世界坐标系进行转换?
1个回答

1

OpenCV的立体标定只提供两个相机之间的相对外参矩阵。

根据其文档,您无法获得世界坐标系中的变换(即与标定图案相关的变换)。不过,它建议在其中一个图像上运行常规相机标定,并至少了解其变换。cv::stereoCalibrate

如果标定完美,则可以使用您的串联设置来推导任何相机的世界变换。

据我所知,这并不是非常稳定的,因为在运行标定时应考虑到您有多个相机的事实。

多相机标定并不是最简单的问题。请查看:

我也在寻找这个问题的解决方案,如果你对此和OpenCV有更多了解,请告诉我。

谢谢Alex。我会查看这些链接的。 - user991511

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接