OpenCV校准参数和立体相机的3d点转换

时间:2012-01-13 21:12:44

标签: opencv camera transformation coordinate-systems extrinsic-parameters

我有4个ps3eye相机。我使用OpenCV库的cvStereoCalibrate()函数校准了camera1和camera2 通过查找角落并将其3d坐标传递到此函数中来使用棋盘图案。

此外,我还使用camera2和camera3查看的另一组棋盘图像校准了camera2和camera3。

使用相同的方法我校准了camera3和camera4。

所以现在我有了camera1和camera2的外在和内在参数,             camera2和camera3的外在和内在参数,        摄像头3和摄像头4的外在和内在参数。

其中外部参数是旋转和平移矩阵,而内在函数是焦距和原理点的矩阵。

现在假设有一个3d点(世界坐标)(我知道如何从立体相机中找到3d坐标),由camera3和camera4查看,而camera1和camera2没有查看。

我的问题是:你如何拍摄由camera3和camera4观看的这个3d世界坐标点,并将其转换为camera1和camera2的 世界坐标系使用旋转,平移,聚焦和原理点参数?

1 个答案:

答案 0 :(得分:2)

OpenCV的立体声校准仅为您提供两个摄像机之间的相对外部矩阵。

根据其文档,您不会在世界坐标中获得变换(即与校准模式相关)。它建议在其中一个图像上运行常规相机校准,至少知道它的变换。 cv::stereoCalibrate

如果校准完美,您可以使用菊花链设置来推导任何相机的世界转换。

据我所知,这不是很稳定,因为在运行校准时应考虑使用多台摄像机。

多相机校准不是最微不足道的问题。看看:

我也正在寻找解决方案,所以如果您对OpenCV有更多了解,请告诉我。