不同图像尺寸的OpenCV立体标定

5

我有两个不同分辨率的相机,但是stereoCalibrate函数只有一个图片尺寸的选项。

如果我理解正确,stereoCalibrate函数会从相机1到相机2计算刚体变换矩阵。如果是这样的话,那么我应该将哪个相机的尺寸作为输入参数传递给stereoCalibrate函数呢?

1个回答

4

imageSize参数仅用于初始化内部摄像机矩阵。

我建议使用cv::calibrateCamera()分别对每个相机进行独立校准,以获取每个相机的摄像机矩阵和畸变系数。然后使用带有标志CV_CALIB_FIX_INTRINSICcv::stereoCalibrate()(带有预估的相机矩阵和畸变系数)来估计相机坐标系之间的转换(旋转R和平移t)。

这样,imageSize参数就不再重要了。


谢谢,我已经做了同样的事情,但是由cv::stereoCalibrate()函数报告的RMS误差很高(0.57),所以我想知道这是否由于图像大小造成。相机1和相机2的重投影误差分别为0.26和0.22。我尝试了Matlab的立体标定,那里报告的RMS误差为0.23。任何想法为什么OpenCV的RMS误差很高或者您有任何其他提高准确性的建议。我使用7x19不对称模式粘贴在平板玻璃上。 - madhurayavarapu
1
我认为你的最终重投影误差已经足够低了(0.57像素可以认为是亚像素精度)。顺便说一下,你可以尝试调整参数“term_crit”,或尝试使用另一种(例如棋盘)模式。 - Kornel

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