matlab相機標定工具箱是一款适合matlab軟件使用的相机标定工具箱,通过该工具箱,可以帮助用户解决使用过程中遇到的各种问题,非常实用的一款工具箱,需要的朋友赶紧来本站下载吧!

matlab相機標定工具箱使用方法
用VS2012+OpenCV2.4.6寫的雙目標定的程序(其實就是跑的Samples),實驗結果一直很不理想,查看很多Blog,說可以先用MATLAB標定工具箱獲得extrinsics和intrinsics矩陣,然後作爲輸入參數再讀到OpenCV的stereoRectify函數,進而就可以Match了。這裏,分享一下我做MATLAB標定的過程:
一、環境配置
1.解壓MATLAB標定工具箱至某個文件夾,默認爲:TOOLBOX_calib,將之存放在MATLAB\R2010b\toolbox下(個人喜歡,也可以放其他位置)。
2.运行Matlab并添加文件夹TOOLBOX_calib的位置到matlab路径path中,具体操作为:File->Set Path->Add Folder To Path,然后找到刚刚存放的文件夹TOOLBOX_calib,save一下就OK了。
二、文件配置
將所有要標定的棋盤圖放到文件夾TOOLBOX_calib裏.m文件所在的目錄下(個人喜歡將左右相機的圖片命名爲left01.jpg和right01.jpg等的形式,看著舒服,也和後面要講的標定結果保存對應起來),OK,萬事俱備,准備開動了。
三、單目標定
1.在Matlab命令行窗口中輸入calib_gui
2.選擇Standard
3.点击Image names,命令行窗口会提示你输入图片的basename以及图片的格式(比如你图片文件名是right01, right02, …, right12,basename就是right,图片格式如:jpg),然后Matlab会自动帮你读入这些图片
4.然后再回到主控制界面,点击Extract grid corners,提取每幅图的角点。点击完后,命令行会出现如下提示,主要是让你输入棋盘角点搜索窗口的大小。如果窗口定大一点的话提取角点会比较方便点,即便点得偏离了也能找到,但也要注意不能大过一个方格的大小。这些选项,都只要敲回车选用默认设置就可以了。
5.繼上步Enter敲完後,跳出第一幅棋盤格圖,按順時針或是逆時針方向分別點選棋盤格的最外面的四個內格點,程序會自動檢測出其余的角點。
6.在選完四個角點後,程序會在命令行窗口提示你輸入標定板棋盤的size,輸入你棋盤格的實際大小就行,比如我的棋盤格是24mm,就輸入24。這步事實上相當關鍵,它定義了空間的尺度,如果要對物體進行測量的話,這步是必須的。Ender後同時得到角點檢測結果圖。
7.繼續命令行窗口按Ender選擇默認項,跳出新的標定板圖像,同樣的方法,如此反複,檢測角點完12幅左視圖。
8.檢測完所有的圖像後,點擊Calibration,開始攝像頭標定。
9.标定完成后,可以进行各种结果的可视化观察。由Show Extrinsic得的结果图可见相机与标定板的距离约为1000mm左右,且其中各种颜色标定板对应Analyse Error的结果图的各种误差结果,其中,红色的(对应第2幅标定板图像)的误差较大,部分角点提取有问题(这是当时选角点时我故意选得偏离了一些,验证一下)。
11.左攝像頭標定的方法與右攝像頭相同,生成的Calib_Result.mat之後,將其改名爲Calib_Result_left.mat就可以了。
四、雙目標定
1.左右攝像頭都標定完成之後,就可以開始立體標定了。在Matlab命令行中鍵入stereo_gui啓動立體標定面板。
2.点击Load left and right calibration files,在命令行窗口中会提示你分别填写左右自标定的结果,如果你按上面的文件名保存方式的话,直接Ender选择默认的文件名(Calib_Result_left.mat和Calib_Result_right.mat),或是填写你自己保存的文件名。
3.Load成功后,就可以开始Run stereo calibration了,run之后的结果如下图所示,左右摄像头的参数都做了修正,并且也求出了两个摄像头之间的旋转和平移关系向量(om和T)。从结果可以看出左右相机的Focal Length相差还是蛮大的,不知这对后续的视差图等计算影响如何(怎么调整两个摄像机的焦距相同也是个问题)。
4.run成功後,就可以看標定的結果了。同樣可以直觀的看出相機的相對位置相差很大。
圖4.圖3的俯視圖
5.还可以通过Rectify the calibration images按钮,得到纠正后的所有棋盘格图片,可以直接读入OpenCV中进行Match了。当然,你需要对其他物体或是想实时得到视差图,还得将互标定结果写到OpenCV函数调用时支持的格式。
五、問題探討
1.相機的焦距是否應該保持一致?
答:答案是应该肯定的。因为在后续的视差图转换为三维图时的Q矩阵只有一个f值。所以必须要求至少焦距相近。而且立体成像的三角测量(Learning OpenCV书中提到)的前提假设就是fl=fr。不知道理解的对不对。
2.怎麽調整兩個攝像機的焦距相同?
答:a.離兩個相機相同遠處放置標定板(可以將兩個相機放置在一起以打到這個效果),分別調節兩個相機的焦距,使得兩個畫面的清晰度相似。(這是我咨詢大恒圖像的技術支持的結果)
b.我覺得這樣肯定還是不行,可以再微調,就是標定一次得一個焦距,再微調一下,再測,這樣就會很麻煩。
不知有沒有更好的方法。看了很多Blog,沒看到涉及這塊的,不知道大家都是怎麽解決的。