鱼眼摄像机校准

时间:2016-12-12 08:00:42

标签: opencv camera-calibration fisheye

我正在研究鱼眼摄像机校准,我没有得到预期的结果,我不知道我哪里错了。我是这个相机校准的新手。

我的校准参数

Focal Length:          fc = [ 410.7476   408.0925 ]
Principal point:       cc = [ 369.3690   299.0193 ]
Skew:             alpha_c = [ 0.8336 ] 
Fisheye Distortion:    kc = [ -0.3726   0.0931   0.0107   0.0000 ]

我的代码是unistort:

fisheye::estimateNewCameraMatrixForUndistortRectify(intrinsic, distCoeffs, input.size(), Matx33d::eye(), newK, 1);
fisheye::undistortImage(input, output, intrinsic, distCoeffs, newK, input.size());//Size(640,360));

这是我的输入图片:

这是我得到的输出:

2 个答案:

答案 0 :(得分:0)

我不认为你的结果是来自错误使用未失真的功能。我认为,校准中的Camera Matrix是错误的。你应该再试一次。并且不要忘记,您必须使用相机拍摄~20张图像,您还应该确保使用不同的视口来拍摄棋盘或圆弧的图像。之后,取消图像并查看结果。

我的相机校准有时会出现不好的结果,但经过成功的校准和良好的Camera Matrix后,一切都很好。

即使在他提到的Tutorial中,校准也会给你带来不好的结果。

答案 1 :(得分:0)

可以在不使用鱼眼图像的情况下获得良好的鱼眼图像效果:: estimateNewCameraMatrixForUndistortRectify和fisheye :: undistortImage。 通过fisheye :: calibrate获得K(相机矩阵)和D(畸变系数)后,您可以将它们直接放到initUndistortRectifyMap中。这将通过cv :: remap

生成未失真图像生成的地图