matlab calibration toolbox -- matlab标定工具的使用方法--去畸变和双目校正

matlab calibration toolbox是相机标定以及校正用的工具箱。首先下载这个工具箱,免费下载地址:http://www.vision.caltech.edu/bouguetj/calib_doc/download/index.html。它的英文使用示例在下面这个网址上有:http://www.vision.caltech.edu/bouguetj/calib_doc/。
一、 对于单目标定。
1、 也就是单个相机的标定,首先是用一个相机拍摄标定板获得一定数量的标定板照片。或者下载的一定数量的照片。如下:
上图CMOS0是相机1拍摄的图片序列,CMOS1是相机2拍摄的图片序列。
2、将下载的toolbox文件解压到一个目录下,支持5.x--8.x版本的matlab。然后打开matlab软件:file—>SetPath出现如下界面。Add Folder添加toolbox所在的路径。
3、添加好后,就可以在MATLAB的命令栏中输入calib_gui 或者calib,回车,运行标定程序。
回车后出现如下界面:
4、选择图片进行角点检测。选择第一项“Standard(all the images are stored in memory)”,出现如下界面:
此时要保证“Current Directory”为图片所在的目录:
点击“Image Names”按钮。Command行里就会将此目录下所有的照片名字读出来,如下:
“Basename camera calibration images (without number nor suffix):”后面输入:CMOS0_。
出现如下提示:
“Image format: ([]='r'='ras', 'b'='bmp', 't'='tif', 'p'='pgm','j'='jpg', 'm'='ppm')”后面输入:b。
matlab就将加载所有符合条件的图片。
之后就是检测角点,点击第三项:“Extract grid corners ”:
回车,选择所有照片。
两次回车,选择默认窗口大小。
再回车,命令行出现如下:
同时,出现图片:
此时需要在图片上选择四个拐点,选择的方法是鼠标单击拐角位置。按照左上—右上—右下—左下的顺时针顺序围一个框:
回车,检测到角点如下图:
再回车,自动出现下一张图片,直到所有图片均被检测完毕。
此时出现这个文件:
5、标定并查看标定结果。点击“Calibration”,命令行里面就会显示标定结果包括内参和畸变系数:
Calibration parameters afterinitialization:
Focal Length: fc = [ 1086.72277 1086.72277 ]
Principal point: cc = [ 319.50000 239.50000 ]
Skew: alpha_c = [ 0.00000 ] => angle of pixel = 90.00000 degrees
Distortion: kc = [ 0.00000 0.00000 0.00000 0.00000 0.00000 ]
Main calibration optimization procedure -Number of images: 15
Gradient descent iterations:1...2...3...4...5...6...7...8...9...10...11...12...13...14...15...16...17...18...19...20...21...22...done
Estimation of uncertainties...done
Calibration results after optimization(with uncertainties):
Focal Length: fc = [ 1146.29229 1147.83468 ] ?[ 11.51067 11.19871 ]
Principal point: cc= [ 304.04991 233.16189 ] ?[8.23084 6.14044 ]
Skew: alpha_c = [ 0.00000 ] ?[0.00000 ] => angle of pixel axes = 90.00000?0.00000 degrees
Distortion: kc = [ -0.36478 1.07508 -0.00016 -0.00147 0.00000 ] ?[ 0.04196 0.67100 0.00120 0.00095 0.00000 ]
Pixel error: err = [ 0.54502 0.23183 ]
Note: The numerical errors areapproximately three times the standard deviations (for reference).
标定结果分为优化前和优化后的两个结果。
点击出现如下界面,从相机的视角(即保持相机的位置和方向不变)展示被标定图像相对于相机的位置:
点击“Save”按钮,在目录中保存标定的结果,出现如下文件:
注:Result的mat文件在双目标定中能够用到。将"Calib_Results.mat"改成"Calib_Results_left.mat "。
点击就会提示选择一张图片计算它的外参。
6、去畸变。点击就会提示选择将所有标定的图片进行去畸变,或者是选择一张新的图片进行去畸变。直接回车,就会将所有标定的图片的去畸变图片以“CMOS0__rect1.bmp”这个形式的文件名命名并保存在图片的目录下面如下图。
CMOS0_1.bmp--原图
CMOS0__rect1.bmp去畸变后图
二、双目校正。
1、用同样的方法,对右相机拍摄的图像进行同样的标定。
标定结果:
Aspect ratio optimized (est_aspect_ratio =1) -> both components of fc are estimated (DEFAULT).
Principal point optimized (center_optim=1)- (DEFAULT). To reject principal point, set center_optim=0
Skew not optimized (est_alpha=0) -(DEFAULT)
Distortion not fully estimated (defined bythe variable est_dist):
Sixth order distortion not estimated (est_dist(5)=0) - (DEFAULT) .
Initialization of the principal point atthe center of the image.
Initialization of the intrinsic parametersusing the vanishing points of planar patterns.
Initialization of the intrinsic parameters- Number of images: 15
Calibration parameters afterinitialization:
Focal Length: fc = [ 1094.51360 1094.51360 ]
Principal point: cc = [ 319.50000 239.50000 ]
Skew: alpha_c = [ 0.00000 ] => angle of pixel = 90.00000 degrees
Distortion: kc = [ 0.00000 0.00000 0.00000 0.00000 0.00000 ]
Main calibration optimization procedure -Number of images: 15
Gradient descent iterations:1...2...3...4...5...6...7...8...9...10...11...12...13...14...15...16...17...18...19...20...21...22...done
Estimation of uncertainties...done
Calibration results after optimization(with uncertainties):
Focal Length: fc = [ 1153.56062 1153.70663 ] ?[ 5.52064 5.37363 ]
Principal point: cc = [ 307.59643 201.79164 ] ?[ 4.00096 2.92143 ]
Skew: alpha_c = [ 0.00000 ] ?[0.00000 ] => angle of pixel axes = 90.00000?0.00000 degrees
Distortion: kc = [ -0.41467 0.77106 -0.00200 -0.00188 0.00000 ] ?[ 0.02287 0.37580 0.00051 0.00051 0.00000 ]
Pixel error: err = [ 0.21001 0.18752 ]
Note: The numerical errors areapproximately three times the standard deviations (for reference).
并将标定的结果保存为Calib_Results_right.mat
则由左右相机标定的结果为“Calib_Results_left.mat”和“Calib_Results_right.mat”。
2、计算双目校正的参数。在command的命令栏里,输入“stereo_gui.m”出现如下界面:
将”Current Directory“设置为图片所在的目录,点击:“Load left and right calibration files”按钮,命令栏会提示,先输入Calib_Results_left.mat,回车,再输入Calib_Results_right.mat,回车。如下:
Calib_Results_left.mat calib_data_left.mat
Calib_Results_right.mat calib_data_right.mat
Loading of the individual left and rightcamera calibration files
Name of the left camera calibration file([]=Calib_Results_left.mat): Calib_Results_left.mat
Name of the right camera calibration file([]=Calib_Results_right.mat): Calib_Results_right.mat
回车,出现如下结果:
Intrinsic parameters of left camera:
Focal Length: fc_left = [ 1146.29229 1147.83468 ] ?[ 11.51067 11.19871 ]
Principal point: cc_left = [ 304.04991 233.16189 ] ?[ 8.23084 6.14044 ]
Skew: alpha_c_left = [ 0.00000 ] ?[0.00000 ] => angle of pixel axes = 90.00000?0.00000 degrees
Distortion: kc_left = [ -0.36478 1.07508 -0.00016 -0.00147 0.00000 ] ?[ 0.04196 0.67100 0.00120 0.00095 0.00000 ]
Intrinsic parameters of right camera:
Focal Length: fc_right = [ 1153.56062 1153.70663 ] ?[ 5.52064 5.37363 ]
Principal point: cc_right = [ 307.59643 201.79164 ] ?[ 4.00096 2.92143 ]
Skew: alpha_c_right = [ 0.00000 ] ?[0.00000 ] => angle of pixel axes = 90.00000?0.00000 degrees
Distortion: kc_right = [ -0.41467 0.77106 -0.00200 -0.00188 0.00000 ] ?[ 0.02287 0.37580 0.00051 0.00051 0.00000 ]
Extrinsic parameters (position of rightcamera wrt left camera):
Rotation vector: om = [ 0.02179 -0.01185 0.01145 ]
Translation vector: T = [ 288.71955 -4.79691 8.65882 ]
点击按钮,得到优化的结果:
Recomputation of the intrinsic parametersof the left camera (recompute_intrinsic_left = 1)
Recomputation of the intrinsic parametersof the right camera (recompute_intrinsic_right = 1)
Main stereo calibration optimizationprocedure - Number of pairs of images: 15
Gradient descent iterations: 1...done
Estimation of uncertainties...done
Stereo calibration parameters afteroptimization:
Intrinsic parameters of left camera:
Focal Length: fc_left = [ 1148.55963 1149.64262 ] ?[ 7.45634 7.30037 ]
Principal point: cc_left = [ 310.26705 238.04925 ] ?[ 7.04971 5.09296 ]
Skew: alpha_c_left = [ 0.00000 ] ?[0.00000 ] => angle of pixel axes = 90.00000?0.00000 degrees
Distortion: kc_left = [ -0.34370 0.76402 -0.00169 -0.00056 0.00000 ] ?[ 0.03451 0.53433 0.00090 0.00077 0.00000 ]
Intrinsic parameters of right camera:
Focal Length: fc_right = [ 1150.39567 1150.10073 ] ?[ 7.17569 6.99235 ]
Principal point: cc_right = [ 302.34812 193.42732 ] ?[ 7.17158 4.95445 ]
Skew: alpha_c_right = [ 0.00000 ] ?[0.00000 ] => angle of pixel axes = 90.00000?0.00000 degrees
Distortion: kc_right = [ -0.41255 0.86324 -0.00104 -0.00290 0.00000 ] ?[ 0.03845 0.60909 0.00084 0.00082 0.00000 ]
Extrinsic parameters (position of rightcamera wrt left camera):
Rotation vector: om = [ 0.01223 0.00022 0.01149 ] ?[ 0.00584 0.00846 0.00023 ]
Translation vector: T = [ 278.99648 3.79371 -16.83653 ] ?[ 2.50669 2.11662 17.55917 ]
Note: The numerical errors areapproximately three times the standard deviations (for reference).
3、进行双目校正即平行校正。点击按钮:command行中出现如下
校正的图片就在图片所在的目录下如下:
以“CMOS0__rectified1.bmp”和“CMOS1__rectified1.bmp”为命名成对出现的。如:
CMOS0__rectified2.bmp左图校正后
CMOS1__rectified2右图校正后
这样就进行完立体校正了。这两幅图像就是平行的了。
Matlab将上述左右两幅图像放在一起对比平行如下图:
这两幅图片对应的原始图像如下:
CMOS0_2.bmp左原图
CMOS1_2.bmp右原图
当然还有很多其他按钮以及对应的功能,大家都可以亲自试一试。
matlab calibration toolbox -- matlab标定工具的使用方法--去畸变和双目校正的更多相关文章
- CocoStuff—基于Deeplab训练数据的标定工具【一、翻译】(未完)
一.CocoStuff简介 CocoStuff是一款为deeplab设计的,运行在Matlab中的语义标定工具,其标定结果和结合Deeplab训练出的结果均为mat文件格式,该项目源码已在github ...
- Matlab Robotics Toolbox 仿真计算:Kinematics, Dynamics, Trajectory Generation
1. 理论知识 理论知识请参考: 机器人学导论++(原书第3版)_(美)HLHN+J.CRAIG著++贠超等译 机器人学课程讲义(丁烨) 机器人学课程讲义(赵言正) 2. Matlab Robotic ...
- Autoware 标定工具 Calibration Tool Kit 联合标定 Robosense-16 和 ZED 相机!
一.安装 Autoware & ZED 内参标定 & 外参标定准备 之前的这篇文章:Autoware 进行 Robosense-16 线雷达与 ZED 双目相机联合标定! 记录了我用 ...
- matlab添加toolbox失败的解决办法
matlab添加toolbox有三种方法: 1.在网上下载对应的文件,再复制到matlab安装路径中的toolbox文件夹里. 结果:失败.仍然显示不能用该模块. 2.由于笔者的学校有买正版,所以可以 ...
- {vlFeat}{Matlab}Linux中matlab的vlFeat配置
1.下载vlFeat编译后的版本binary package 2.解压后将 toolbox/,bin/,data/ 等文件夹复制到matlab新建工具箱目录 /toolbox/vlfeat/ 中 3. ...
- CocoStuff—基于Deeplab训练数据的标定工具【二、用已提供的标注数据跑通项目】
一.说明 本文为系列博客第二篇,主要讲述笔者在使用该团队提供已经标注好的COCO数据集进行训练的过程. 由于在windows中编译Caffe和Deeplab特别的麻烦,笔者并没有去探索,后续可能会去尝 ...
- 【MATLAB】用MATLAB绘制奥运五环
[MATLAB]用MATLAB绘制奥运五环 今天用MATLAB绘制了一个奥运五环,好吧,实际上是帮人做作业,嘿嘿. 贴代码: clear; clc; N = 1000; angle = linspac ...
- Matlab R2018a版离线使用帮助文档方法
转载自:Matlab R2018a版离线使用帮助文档方法 问题 Matlab R2018a版本安装后,帮助文档默认为在线方式,需要使用账号登录,如果没有激活密钥或许可证编号,就无法使用帮助文档了. 方 ...
- Matlab矩阵填充--Matlab interp2
Matlab interp2 为Matlab的矩阵填充函数, 填充关系: x=1:11; y=1:13; x1=1:0.1:12; y1=1:0.1:14; [x2,y2]=meshgrid(x1,y ...
随机推荐
- 2017-2018-1 20155202 张旭 嵌入式C语言——时钟提取时分秒
2017-2018-1 20155202 张旭 嵌入式C语言--时钟提取时分秒 任务要求: 在作业本上完成附图作业,要认真看题目要求. 提交作业截图 作弊本学期成绩清零(有雷同的,不管是给别人传答案, ...
- 网络对抗技术 2017-2018-2 20152515 Exp2 后门原理与实践
1.实验内容 (1)使用netcat获取主机操作Shell,cron启动 (0.5分) 关于netcat:是一个底层工具,进行基本的TCP UDP数据收发.常被与其他工具结合使用,起到后门的作用. 相 ...
- 20155330 《网络对抗》 Exp6 信息搜集与漏洞扫描
20155330 <网络对抗> Exp6 信息搜集与漏洞扫描 基础问题回答 哪些组织负责DNS,IP的管理? 互联网名称与数字地址分配机构(The Internet Corporation ...
- Luogu P1484 种树
这道题目还是比较简单的 首先题目的意思就让我们很轻易地想到DP 我们设f[i][j]表示前i个坑中种j棵树的最大利益,则有: f[i][j]=max(f[i-1][j],f[i-2][j-1]+a[i ...
- Sleeping会话导致阻塞原理(上)
背景 我在处理客户问题的时候,客户经常搞不懂sleeping 的由来,和他可能导致的问题.下面来详细说下 什么是sleeping 其实我们经常可以在数据库中看到“”sleeping“状态的连接,但是这 ...
- nginx 新增域名访问
nginx 新增域名访问 1.申请阿里云域名 2.指向阿里云主机 3.配置nginx文件 server { listen 80; server_name zlx.test.com; set $root ...
- jquery自动获取项目url路径
//很多时候我们需要使用当前项目路径,但是如果把项目路径写死,会带来很多不便,此时就需要自动获取项目路径.//我们可以根据jquery来进行自动获取项目路径,获取方法如下function getRoo ...
- 按键精灵对APP自动化测试(上)
简单介绍下应用背景:测试安卓app时发现重复点击某一按钮的时候会出现报错,开发修复后提交测试.如果采用手动点击按钮,效率不高,在领导提示下使用按键精灵实现自动操作. 一. 安卓手机按键精灵 ...
- 在Windows上安装配置Git
用安装 https://git-scm.com/ 官网下载安装包 (官网有安装步骤 https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%AE%8 ...
- OpenCV调整彩色图像的饱和度和亮度
问题 如何调整彩色图像的饱和度和亮度 解决思路 详细步骤: 将RGB图像值归一化到[0, 1] 然后使用函数cvtColor进行色彩空间的转换 接下来可以根据处理灰度图像对比度增强伽马变换或者线性变换 ...