- 軟件大?。?span>304KB
- 軟件語言:中文
- 軟件類型:國產軟件
- 軟件類別:免費軟件 / 其他行業(yè)
- 更新時間:2017-05-23 10:28
- 運行環(huán)境:WinAll, WinXP, Win7
- 軟件等級:
- 軟件廠商:
- 官方網站:暫無
6.83M/中文/0.9
2.21M/中文/0.0
856KB/中文/10.0
120KB/中文/0.0
8.73M/中文/10.0
matlab相機標定工具箱是眾多網友正在尋找的一款工具箱軟件,該軟件主要針對MATLAB使用者打造,通過工具箱用戶可以解決使用過程中遇到的各種問題,需要的朋友歡迎來綠色資源網下載!
用VS2012+OpenCV2.4.6寫的雙目標定的程序(其實就是跑的Samples),實驗結果一直很不理想,查看很多Blog,說可以先用MATLAB標定工具箱獲得extrinsics和intrinsics矩陣,然后作為輸入參數再讀到OpenCV的stereoRectify函數,進而就可以Match了。這里,分享一下我做MATLAB標定的過程:
一、環(huán)境配置
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.繼續(xù)命令行窗口按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相差還是蠻大的,不知這對后續(xù)的視差圖等計算影響如何(怎么調整兩個攝像機的焦距相同也是個問題)。
4.run成功后,就可以看標定的結果了。同樣可以直觀的看出相機的相對位置相差很大。
圖4.圖3的俯視圖
5.還可以通過Rectify the calibration images按鈕,得到糾正后的所有棋盤格圖片,可以直接讀入OpenCV中進行Match了。當然,你需要對其他物體或是想實時得到視差圖,還得將互標定結果寫到OpenCV函數調用時支持的格式。
五、問題探討
1.相機的焦距是否應該保持一致?
答:答案是應該肯定的。因為在后續(xù)的視差圖轉換為三維圖時的Q矩陣只有一個f值。所以必須要求至少焦距相近。而且立體成像的三角測量(Learning OpenCV書中提到)的前提假設就是fl=fr。不知道理解的對不對。
2.怎么調整兩個攝像機的焦距相同?
答:a.離兩個相機相同遠處放置標定板(可以將兩個相機放置在一起以打到這個效果),分別調節(jié)兩個相機的焦距,使得兩個畫面的清晰度相似。(這是我咨詢大恒圖像的技術支持的結果)
b.我覺得這樣肯定還是不行,可以再微調,就是標定一次得一個焦距,再微調一下,再測,這樣就會很麻煩。
不知有沒有更好的方法。看了很多Blog,沒看到涉及這塊的,不知道大家都是怎么解決的。
請描述您所遇到的錯誤,我們將盡快予以修正,謝謝!
*必填項,請輸入內容