运用matlab2017 进行摄像头获取标定参数:
本人试过两种方法,好坏各有。
①运用matlab自带标定工具箱进行标定,非常省事,说下大概步骤,(嫌麻烦不上图了)
1.在命令行输入stereoCameraCalibrator 等待弹出界面
2.然后将上面的Skew、Tangential Distortion以及3 Coefficients等选项选上,将2 Coefficients选项去掉
3.然后点击Add Images ,添加左右摄像机拍摄的保存的左右文件夹,(camer1为左摄像头图片文件夹,2为右),在输入棋盘格的大小(须为正方体 ) 然后OK PS:图片大概20~30张
4.matlab自动选择有效图片,,无效自动剔除(尽量同步拍摄)
5.然后点击Calibrate,开始标定
6.对误差较差的 可进行删除
7.最后点击Export Camera parameters,再点击OK ,在matlab中command window 便显示标定双目数据。
8.在workspace中 CameraParameters1与CameraParameters2为左右摄像头的内部参数,RotationOfCamera2与TranslationOfCamera2为两个摄像头外部参数 即旋转、平移参数。
9.点击CameraParameters1看到IntrinsicMatrix、RadialDistortion以及TangentialDistortion,
IntrinsicMatrix存放的是摄像头的内参,需要先转置,才能正确写入。 RadialDistortion为径向畸变,决定了K1,K2,K3。TangentialDistortion为切向畸变,决定了两个参数P1,P2。需要注意一下参数的排放顺序,即K1,K2,P1,P2,K3。
标定数据完成。
②官网下载matlab 标定工具箱插件,并且设置路径,这个搜索一下便有。
1.把左右相机图片放在同一个文件夹里面,在matlab中把Current Folder设置为存放图片的文件夹路径。PS:图片命名建议left n right n
2.MATLAB命令行窗口输入calib_gui,便弹出界面,选择standard
3.在选择image names ,回到matlab command windows,要求输入图片的basename,即输入 left 然后要求输入图片格式 即 jpg
然后点击标定界面上的Extract grid corners,再command windows中一直点回车键,知道第一张图片弹出来,
4.选者角点,顺逆时针均可,(四个角点),然后要求输入棋盘格的长宽(单位mm)
5.然后一直反复进行选者各图片角点,直到完成所有图片,
6.检测完成后点击标定界面Calibration进行摄像头标定,
7.即出现所需要的标定信息,标定完成。
.8.点击Save workspace,这时结果文件默认保存在之前放置标定图片的新建文件夹下面,默认文件名为Calib_Results.mat,将其改为Calib_Results_left.mat(双目标定用到)PS:右边摄像头一样方法
9.得到Calib_Results_left.mat和Calib_Results_right.mat后 ,命令行输入stereo_gui,弹出立体标定界面,选择第一个Load
10.然后一直点回车键,便可以出现双目所需要的完整标定信息。