鱼眼摄像机校准

问题描述 投票:1回答:2

我正在研究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 ]

我的代码是不失真的:

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

这是我的输入图片:

这是我得到的输出:

opencv camera-calibration fisheye
2个回答
0
投票

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

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

甚至在他提到的这个Tutorial中,校准可能会给你带来不好的结果。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.