注:本文介绍的是摄像头内参数的标定,而非外参数
之前做摄像头标定时都是用opencv提供的函数,利用代码来标定摄像头,但是后来发现这样误差比较大,索性后来就用matlab的工具箱了.下面记录一下matlab工具箱标定的过程:
简介:
运行环境:Linux(ubuntu)
工具:matlab 7.9.0
注:如果不知道怎么安装标定工具箱请留言,或者网上搜一下,很多的,标定需要用到的图片,需要自己用欲标定的摄像头拍摄,如:
下面开始标定:
step1:启动matlab
step2:在命令行下启动标定工具箱
命令:
>> cd ..
>> cd toolbox/
>> cd TOOLBOX_calib/
>> calib_gui
界面:
注:第一个和第二个按钮都可以选择,内存够大的话就选择第一个(貌似现在的电脑内存都够大,呵呵)
step3:选择第一个,出现:
注:内参数的标定只需要用到第一行的四个选项:选择图片\加载图片\选取角点\标定,还有一点需要说明,图片直接放在标定工具箱的文件夹里面,如图:
step4:选择图片:
点击第一个按钮后,命令行出现:Basename camera calibration images (without number nor suffix):
这里输入图片名的第一个字符,比如我的图片是:b1.jpg,b2.jpg,b3.jpg...,则输入b回车就ok.
step5:回车后出现:Image format: ([]='r'='ras', 'b'='bmp', 't'='tif', 'p'='pgm', 'j'='jpg', 'm'='ppm')
这里输入图片的格式,比如:输入jpg后回车
step6:此时所有图片都被读取了:
注:如果没有读取,点击第二个按钮
step7:点击第三个按钮序曲角点:
命令行会出现如下一系列东东:
Number(s) of image(s) to process ([] = all images) = (这是问你要标定多少图片,直接回车)
Window size for corner finder (wintx and winty):
wintx ([] = 6) = (行角点数,看自己的图片需要记录多少角点)
winty ([] = 6) =(列角点数)
Do you want to use the automatic square counting mechanism (0=[]=default)(直接回车)
or do you always want to enter the number of squares manually (1,other)?
step8:出现如图,自己选取四个拐角
step9:回车,第一张图片会提示你输入方格的大小,根据自己的标定版来输,单位是毫米,输好后,会看到所有角点背标记
step10:依次处理剩余图片,所有图片处理完后,点击第四个按钮,出现标定结果:
注:fc是摄像头焦距,依次是x,y方向分量
cc是图像坐标系的原点在图像像素坐标系的坐标(紧跟后面的是最大误差)
后面的就不多做解释了.
ok,标定完成
--------------------------------------------------------------------------------------------------------------------
LunqingHou: //个人学习笔记,转载请注明出处
-------------------------------------------------------------------------------------------------------------------