使用MATLAB进行相机内参数、畸变参数的标定

一、打开matlab程序

二、点击顶部APP选项中,找到“图像处理与计算机软件”的第一个图标“Camera Calibrator",点击打开。

三、打开后,点击Add Images,添加图片,弹出窗口选择棋盘格尺寸

四、点击Options,勾选3Coefficients、Skew、Tangential Distortion。

五、然后点击Calibrate

六、删除误差较大的图片、右键选择图片。移除图片

七、点击Export camera parameters,弹出窗口,点击确定

八、回到matlab主页,输入一下代码,回车得到相机的参数

format long
cameraParams.IntrinsicMatrix    
cameraParams.RadialDistortion
cameraParams.TangentialDistortion

十、内参乘以1000倍,就是最终结果

### 使用Matlab进行相机内参标定 #### 准备工作 为了成功完成相机内参标定,在开始之前需准备好棋盘格图案作为校准板,并拍摄多张不同角度的照片。这些照片用于后续处理中的角点检测,从而获取足够的数据来估计相机参数。 #### 加载图像并创建棋盘模式对象 通过`imageSet`函数加载一系列图片文件夹路径下的所有图像到MATLAB环境中;接着利用内置工具箱里的`chessboard`类定义一个标准尺寸(行列数)的国际象棋方格模型实例化对象[^1]。 ```matlab % 定义棋盘规格(行数, 列数), 单位毫米 squareSize = 29; numCornersRow = 8; numCornersCol = 6; % 创建棋盘对象 worldPoints = chessboard(numCornersRow, numCornersCol, squareSize); ``` #### 获取角点坐标 对于每一张输入图,调用`detectCheckerboardPoints`自动识别其中存在的黑白相间的交叉点位置信息,并将其转换成二维平面上对应的像素级坐标系表示形式保存起来待下一步骤使用。 ```matlab [imagePoints, boardSize] = detectCheckerboardPoints(imageFileNames); if isempty(imagePoints) warning('未能找到有效的角点'); else % 继续执行... end ``` #### 执行标定过程 当收集到了足够数量的有效样本之后就可以正式进入核心环节——即调用`estimateCameraParameters`命令来进行实际运算求解未知量了。此过程中会返回两个重要输出变量:一个是包含了所求得的各项内部属性在内的结构体数组`cameraParams`;另一个则是用来评估整体拟合优劣程度的质量指标向量`reprojectionErrors`。 ```matlab [cameraParams, reprojectionErrors] = estimateCameraParameters(worldPoints, imagePoints); disp(cameraParams.Intrinsics); % 查看内参矩阵等细节内容 ``` #### 结果分析与验证 最后一步是对得到的结果做进一步检验确认其合理性。一方面可以通过观察重投影误差分布情况判断是否存在异常值影响精度;另一方面也可以借助可视化手段直观展示原始特征点及其预测位置之间的差异状况以便更清晰地理解整个系统的性能表现特点。 ```matlab figure(); showReprojectionErrors(cameraParams, worldPoints, imagePoints); title('重投影误差统计') ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值