Matlab 使用 Camera Calibrator工具箱------相机标定

  • 首先说明一下使用Matlab2019a自带的Camera Calibrator工具箱完成单目相机的内参标定,在搜集资料过程中,发现利用Camera Calibrator工具箱也可以对双目相机进行标定,并且发现还有个Calibration Toolbox工具箱同样可以完成单、双目相机标定,只不过过程繁琐一点,本文仅仅是利用Camera Calibrator工具箱完成单目相机标定!

  • 首先需要打印一张标定板图像,将它贴在一个平面上,作为标定物,或者直接购买一个标定板。
    推荐一个生成相机标定板文件(pdf)的网站:标定文件生成网站
    可选择多种标定板样式(可选择多种标定板样式)

  • 通过调整标定板或摄像机的方向,为标定物拍摄一组不同方向的照片,最好大于10张图片
    本文所使用的图片文件:Matlab 标定图片

  • 打开Matlab,在Matlab中找到APP,点击进入,找到Camera Calibrator工具箱
    在这里插入图片描述进入工具箱,点击Add Images
    在这里插入图片描述将所有图片添加进去
    在这里插入图片描述(这里的25是指棋盘中正方形的边长大小)
    在这里插入图片描述出现这个画面,表示有3张图片不可用
    在这里插入图片描述然后点击Calibrate按钮,即完成标定
    在这里插入图片描述点击 Export Camera Parameters,可在matlab工作空间里可以看到相机参数的属性
    在这里插入图片描述查看相机内参可以直接在命令行窗口输入:
    cameraParams.IntrinsicMatrix
    同理可以查看其它参数

  • 下面是对相机参数的介绍:

中文名英文名
内参矩阵Intrinsic Matrix
焦距Focal Length
主点Principal Point
径向畸变Radial Distortion
切向畸变Tangential Distortion
旋转矩阵Rotation Matrices
平移向量Translation Vectors
平均重投影误差Mean Reprojection Error
重投影误差Reprojection Errors
重投影点Reprojected Points
### MATLAB 相机标定 GP400-30 12x9 棋盘格教程 #### 准备工作 为了进行相机标定,需准备一系列不同角度拍摄的棋盘格图像。对于GP400-30型号相机和12x9尺寸的棋盘格图案,建议至少采集20张以上的图片以确保足够的数据量来获得精确的结果。 #### 加载所需工具箱 MATLAB提供了Camera Calibrator应用程序以及相应的函数库来进行此操作。加载必要的工具箱: ```matlab % 确认安装并加载计算机视觉工具箱 if ~license('test', 'Computer_Vision_Toolbox') error('需要安装 Computer Vision Toolbox'); end ``` #### 创建棋盘格对象 定义用于检测角点的标准棋盘格参数: ```matlab squareSize = 27; % 单位:毫米, 基于实际测量得到的方块边长 boardSize = [12 9]; % 行列数对应棋盘格内部交差点数量 checkerBoard = checkerboard(boardSize(1)-1, boardSize(2)-1); ``` #### 自动化处理多幅图像 编写脚本批量读取文件夹内的所有JPEG/PNG格式照片,并尝试从中提取特征点位置信息: ```matlab imageFolder = fullfile(matlabroot,'toolbox','vision','visiondata',... 'calibrationPattern'); % 替换为自己的路径 images = imageDatastore(imageFolder); [imagePoints, boardPoints] = detectCheckerboardPoints(images.Files); worldUnits = 'mm'; squareSizeInWorldUnits = squareSize; for i=1:length(boardPoints) boardPoints{i} = (0:(numel(boardPoints{i},2)-1))' * ... repmat([squareSizeInWorldUnits,-squareSizeInWorldUnits],... numel(boardPoints{i}),1); end ``` #### 执行校准过程 利用上述收集到的数据集调用`estimateCameraParameters`函数完成最终计算: ```matlab [params,reprojectionErrors] = estimateCameraParameters(imagePoints,... boardPoints,... 'InitialEstimate',... params,... 'RadialDistortion',... [-0.3 0]); disp(['平均重投影误差(MSE): ', num2str(mean(reprojectionErrors.^2))]); % 显示均方差[MSE][^1] ``` 注意这里显示的是均方差(MSE),而并非根号下的标准偏差形式即RMSE。 #### 可视化结果 最后可以绘制一些图表帮助理解所得模型的质量如何: ```matlab showExtrinsics(params); figure; showReprojectionErrors(params); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值