2015-04-06 22:45 5407人阅读 评论(2) 收藏 举报
 分类:
机器视觉(12) 

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标定工具的使用方法--去畸变和双目校正的更多相关文章

  1. CocoStuff—基于Deeplab训练数据的标定工具【一、翻译】(未完)

    一.CocoStuff简介 CocoStuff是一款为deeplab设计的,运行在Matlab中的语义标定工具,其标定结果和结合Deeplab训练出的结果均为mat文件格式,该项目源码已在github ...

  2. Matlab Robotics Toolbox 仿真计算:Kinematics, Dynamics, Trajectory Generation

    1. 理论知识 理论知识请参考: 机器人学导论++(原书第3版)_(美)HLHN+J.CRAIG著++贠超等译 机器人学课程讲义(丁烨) 机器人学课程讲义(赵言正) 2. Matlab Robotic ...

  3. Autoware 标定工具 Calibration Tool Kit 联合标定 Robosense-16 和 ZED 相机!

    一.安装 Autoware & ZED 内参标定 & 外参标定准备 之前的这篇文章:Autoware 进行 Robosense-16 线雷达与 ZED 双目相机联合标定! 记录了我用 ...

  4. matlab添加toolbox失败的解决办法

    matlab添加toolbox有三种方法: 1.在网上下载对应的文件,再复制到matlab安装路径中的toolbox文件夹里. 结果:失败.仍然显示不能用该模块. 2.由于笔者的学校有买正版,所以可以 ...

  5. {vlFeat}{Matlab}Linux中matlab的vlFeat配置

    1.下载vlFeat编译后的版本binary package 2.解压后将 toolbox/,bin/,data/ 等文件夹复制到matlab新建工具箱目录 /toolbox/vlfeat/ 中 3. ...

  6. CocoStuff—基于Deeplab训练数据的标定工具【二、用已提供的标注数据跑通项目】

    一.说明 本文为系列博客第二篇,主要讲述笔者在使用该团队提供已经标注好的COCO数据集进行训练的过程. 由于在windows中编译Caffe和Deeplab特别的麻烦,笔者并没有去探索,后续可能会去尝 ...

  7. 【MATLAB】用MATLAB绘制奥运五环

    [MATLAB]用MATLAB绘制奥运五环 今天用MATLAB绘制了一个奥运五环,好吧,实际上是帮人做作业,嘿嘿. 贴代码: clear; clc; N = 1000; angle = linspac ...

  8. Matlab R2018a版离线使用帮助文档方法

    转载自:Matlab R2018a版离线使用帮助文档方法 问题 Matlab R2018a版本安装后,帮助文档默认为在线方式,需要使用账号登录,如果没有激活密钥或许可证编号,就无法使用帮助文档了. 方 ...

  9. 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 ...

随机推荐

  1. Swoole Timer 的应用

    目录 你好,Swoole Timer 应用场景 参考文档 你好,Swoole PHP 的协程高性能网络通信引擎,使用 C/C++ 语言编写,提供了多种通信协议的网络服务器和客户端模块. Swoole ...

  2. Kubernetes学习之路(二十三)之资源指标和集群监控

    目录 1.资源指标和资源监控 2.Weave Scope监控集群 (1)Weave Scope部署 (2)使用 Scope (3)拓扑结构 (4)实时资源监控 (5)在线操作 (6)强大的搜索功能 2 ...

  3. 异常 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 解决方案

    原来是因为 AssetsMapper.xml 不知道为什么不见了,导致这个异常,在启动项目时的启动任务里调用到了它,然后因为没有这个xml,所以抛出异常 启动信息: C:\extend\Develop ...

  4. [转]JVM系列三:JVM参数设置、分析

    不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java ...

  5. 《Effective Java》学习笔记 ——异常

    充分发挥异常的优点,可以提高程序的可读性.可靠性和可维护性. 第57条 只针对异常的情况才使用异常 第58条 对可恢复的情况使用受检异常,对编程错误使用运行时异常 * 如果期望调用者能够适当的恢复,使 ...

  6. phabricator 结合 arcanist 使用

    简介 arcanist 是 phabricator 接口的命令工具,主要用于提交 diff 和 push review 通过的commit. 安装 下载源码,然后指定系统的环境变量即可 $ some_ ...

  7. 软件测试_测试工具_Loadrunner_IP欺骗

    一.设置IP欺骗的原因: 1.当某个IP的访问过于频繁或者访问量过大时,服务器会拒绝访问请求: 2.某些服务器配置了负载均衡,使用同一个IP不能测出系统的实际性能.Loadrunner中的IP欺骗通过 ...

  8. Linux 上传代码到github

    1.git init 初始化 2.git clone将刚刚创建的项目克隆下来 git clone https://github.com/... 3.进入到Project,编写代码 4.项目完成后执行g ...

  9. SCRUM 12.09 软件工程第二周计划

    第二轮迭代的第二周开始了,上一周我们进行了对代码优化的探索与自我审查. 本周,我们有以下两点目标要实现: 1.对客户端进行优化. 2.网络爬虫爬取美团外卖. 客户端优化主要开发人员:高雅智.牛强.彭林 ...

  10. Linux内核分析课程期中总结

    Linux内核分析课程期中总结 姓名:王朝宪 学号:20135114 注: 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com ...