我正在使用 OpenCV 校准使用带有鱼眼镜头的相机拍摄的图像。
我正在使用的功能是:
findChessboardCorners(...);
找到校准图案的角落。cornerSubPix(...);
细化找到的角落。fisheye::calibrate(...);
校准相机矩阵和畸变系数。fisheye::undistortImage(...);
使用从校准中获得的相机信息使图像不失真。
虽然生成的图像看起来确实不错(直线等),但我的问题是该函数切除了太多图像。
这是一个真正的问题,因为我使用了四个摄像头,它们之间呈 90 度角,当这么多边被切掉时,它们之间没有重叠区域,因为我要缝合图像。
我研究过使用fisheye::estimateNewCameraMatrixForUndistortRectify(...)
,但我无法得到好的结果,因为我不知道我应该输入什么作为R
输入,因为旋转矢量输出fisheye::calibrate
是 3xN(其中 N 是校准图像的数量)并且fisheye::estimateNewCameraMatrixForUndistortRectify
需要1x3 或 3x3。
下面的图像显示了我的不失真结果的图像,以及我理想中想要的那种结果的示例。
不失真:
想要的结果示例: