matlab鱼眼镜头矫正
用的是棋盘格标定的方法,先上结果:
- 首先用相机拍摄棋盘格,最好照片多一些,后面要删除效果不好的图片。把棋盘格全部都拍到,不同角度变换一下
- 打开matlab标定工具箱,导入之前拍摄的图片
选择棋盘格的格子大小,我的是15mm
等待导入完成…不用管是否有无效照片,直接确定就行
- 开始标定,我的是鱼眼镜头,所以要选择鱼眼模型,如果是普通相机就选标准模型就行
标定结果:
将右上角误差超过0.5的都删除
- 然后导出参数表
此处可以查看棋盘格标定后的图片
- 利用参数处理其他图片
回到matlab,新建脚本,添加代码如下:
img = imread("C:\Users\10858\Desktop\6.jpg");% 使用相机参数进行矫正
intrinsics =cameraParams.Intrinsics;
% intrinsics = cameraIntrinsics(cameraParams.Intrinsics);
%intrinsics = calibrationSession.CameraParameters.Intrinsics;
%result = undistortFisheyeImage(img, intrinsics);
result = undistortFisheyeImage(img, intrinsics, 'OutputView', 'same');% 显示结果
subplot(1,2,1); imshow(img); title('原始图像')
subplot(1,2,2); imshow(result); title('校正图像') % 更改显示比例
set(gcf,'Visible','off')
set(gcf,'units','normalized','outerposition',[0 0 1 1]);
set(gcf,'Visible','on')
运行脚本即可得到矫正后的图片: