详细的原理可以看这篇 计算机视觉-相机标定,写的很赞
Step1. 准备
首先准备打印好的黑白棋盘格图片,并且保证表面的平整,例如35*35的棋盘格,贴在亚克力板上。
Step2. 拍摄
用相机拍摄棋盘格分别在取景框左上角、右上角、左下角、右下角和中间的照片(也可以多拍一些在其他位置的)。
照片没有存下来qwq之后再更新
Step3. 标定
Matlab有现成的相机标定功能:
选择Camera Calibrator,加入拍摄好的照片,界面如下:
例如本文使用的棋盘格树35*35的,参数就要改成对应的35mm,图像畸变属于轻微程度。确认后,matlab将自动识别标定图像方格。
需要注意的是,我们要手动检查图像数据集中是否有明显标错的,或者xy轴方向和其他图像不一致的情况,并删除异常图片。
之后的步骤因为莫得图像不能进行qwq有图了更新
在Options中选择Radio Distortion: 3 coefficients(3阶切向畸变)和Compute:空
选择Calibrate,开始计算:
平均重投影误差需要在0.5以下,该图明显低于0.5,所以所有图片均可用。
完成筛选后,确定并关闭Camera Calibrator界面。
Step4. 导出
matlab代码:
format long
cameraParams.IntrinsicMatrix
cameraParams.RadialDistortion
cameraParams.TangentialDistortion
导出相机内参和外参矩阵。