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

来源:互联网 发布:网络兼职申请表 编辑:程序博客网 时间:2024/05/25 12:20

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右原图


             当然还有很多其他按钮以及对应的功能,大家都可以亲自试一试。

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 戒指弄不下来了怎么办 高德地图反应慢怎么办 白色印花t恤染色怎么办 印花t恤图案掉了怎么办 衣服上印花掉了怎么办 ps cs 3图标太小怎么办 ai cs6图标太小怎么办 su界面太小怎么办win10 华为p9手机gps信号弱怎么办 小米手机导航gps信号弱怎么办 安卓手机gps信号弱怎么办 苹果6导航gps信号弱怎么办 苹果6plus反应慢怎么办 手机文件打开是乱码怎么办 手机wps文件打开是乱码怎么办 腾讯视频vip账号被盗怎么办 附单据数错了 怎么办 橡胶的回弹性差怎么办 自己喷漆喷坏了怎么办 透明塑料磨花了怎么办 包包金属刮花了怎么办 鞋子刮了黑印子怎么办 黑色鞋跟磨白了怎么办 脚穿鞋子磨起泡怎么办 脚被鞋子磨红了怎么办 脚被鞋子磨黑了怎么办 白鞋皮鞋磨了皮怎么办 小脚趾磨肿了怎么办 穿鞋小拇指磨脚怎么办 高铁东西忘了怎么办 人故意去撞车死了怎么办? 新货车上户超重怎么办 车险出保单车号填错怎么办 货车拦板变形了怎么办 行车监控看不清楚车号怎么办? 1.5米的鱼缸要怎么办 被锤子砸到手了怎么办 家里地下污水管道堵塞怎么办 家里pvc灯罩变黄怎么办 欧普吸顶灯灯罩坏了怎么办 硬盘用久了变慢怎么办