- 軟件大?。?span>304KB
- 軟件語言:中文
- 軟件類型:國產(chǎn)軟件
- 軟件類別:免費(fèi)軟件 / 其他行業(yè)
- 更新時間:2017-05-23 10:28
- 運(yùn)行環(huán)境:WinAll, WinXP, Win7
- 軟件等級:
- 軟件廠商:
- 官方網(wǎng)站:暫無
6.83M/中文/0.9
2.21M/中文/0.0
856KB/中文/10.0
120KB/中文/0.0
8.73M/中文/10.0
matlab相機(jī)標(biāo)定工具箱是眾多網(wǎng)友正在尋找的一款工具箱軟件,該軟件主要針對MATLAB使用者打造,通過工具箱用戶可以解決使用過程中遇到的各種問題,需要的朋友歡迎來綠色資源網(wǎng)下載!
用VS2012+OpenCV2.4.6寫的雙目標(biāo)定的程序(其實(shí)就是跑的Samples),實(shí)驗(yàn)結(jié)果一直很不理想,查看很多Blog,說可以先用MATLAB標(biāo)定工具箱獲得extrinsics和intrinsics矩陣,然后作為輸入?yún)?shù)再讀到OpenCV的stereoRectify函數(shù),進(jìn)而就可以Match了。這里,分享一下我做MATLAB標(biāo)定的過程:
一、環(huán)境配置
1.解壓MATLAB標(biāo)定工具箱至某個文件夾,默認(rèn)為:TOOLBOX_calib,將之存放在MATLAB\R2010b\toolbox下(個人喜歡,也可以放其他位置)。
2.運(yùn)行Matlab并添加文件夾TOOLBOX_calib的位置到matlab路徑path中,具體操作為:File->Set Path->Add Folder To Path,然后找到剛剛存放的文件夾TOOLBOX_calib,save一下就OK了。
二、文件配置
將所有要標(biāo)定的棋盤圖放到文件夾TOOLBOX_calib里.m文件所在的目錄下(個人喜歡將左右相機(jī)的圖片命名為left01.jpg和right01.jpg等的形式,看著舒服,也和后面要講的標(biāo)定結(jié)果保存對應(yīng)起來),OK,萬事俱備,準(zhǔn)備開動了。
三、單目標(biāo)定
1.在Matlab命令行窗口中輸入calib_gui
2.選擇Standard
3.點(diǎn)擊Image names,命令行窗口會提示你輸入圖片的basename以及圖片的格式(比如你圖片文件名是right01, right02, …, right12,basename就是right,圖片格式如:jpg),然后Matlab會自動幫你讀入這些圖片
4.然后再回到主控制界面,點(diǎn)擊Extract grid corners,提取每幅圖的角點(diǎn)。點(diǎn)擊完后,命令行會出現(xiàn)如下提示,主要是讓你輸入棋盤角點(diǎn)搜索窗口的大小。如果窗口定大一點(diǎn)的話提取角點(diǎn)會比較方便點(diǎn),即便點(diǎn)得偏離了也能找到,但也要注意不能大過一個方格的大小。這些選項(xiàng),都只要敲回車選用默認(rèn)設(shè)置就可以了。
5.繼上步Enter敲完后,跳出第一幅棋盤格圖,按順時針或是逆時針方向分別點(diǎn)選棋盤格的最外面的四個內(nèi)格點(diǎn),程序會自動檢測出其余的角點(diǎn)。
6.在選完四個角點(diǎn)后,程序會在命令行窗口提示你輸入標(biāo)定板棋盤的size,輸入你棋盤格的實(shí)際大小就行,比如我的棋盤格是24mm,就輸入24。這步事實(shí)上相當(dāng)關(guān)鍵,它定義了空間的尺度,如果要對物體進(jìn)行測量的話,這步是必須的。Ender后同時得到角點(diǎn)檢測結(jié)果圖。
7.繼續(xù)命令行窗口按Ender選擇默認(rèn)項(xiàng),跳出新的標(biāo)定板圖像,同樣的方法,如此反復(fù),檢測角點(diǎn)完12幅左視圖。
8.檢測完所有的圖像后,點(diǎn)擊Calibration,開始攝像頭標(biāo)定。
9.標(biāo)定完成后,可以進(jìn)行各種結(jié)果的可視化觀察。由Show Extrinsic得的結(jié)果圖可見相機(jī)與標(biāo)定板的距離約為1000mm左右,且其中各種顏色標(biāo)定板對應(yīng)Analyse Error的結(jié)果圖的各種誤差結(jié)果,其中,紅色的(對應(yīng)第2幅標(biāo)定板圖像)的誤差較大,部分角點(diǎn)提取有問題(這是當(dāng)時選角點(diǎn)時我故意選得偏離了一些,驗(yàn)證一下)。
11.左攝像頭標(biāo)定的方法與右攝像頭相同,生成的Calib_Result.mat之后,將其改名為Calib_Result_left.mat就可以了。
四、雙目標(biāo)定
1.左右攝像頭都標(biāo)定完成之后,就可以開始立體標(biāo)定了。在Matlab命令行中鍵入stereo_gui啟動立體標(biāo)定面板。
2.點(diǎn)擊Load left and right calibration files,在命令行窗口中會提示你分別填寫左右自標(biāo)定的結(jié)果,如果你按上面的文件名保存方式的話,直接Ender選擇默認(rèn)的文件名(Calib_Result_left.mat和Calib_Result_right.mat),或是填寫你自己保存的文件名。
3.Load成功后,就可以開始Run stereo calibration了,run之后的結(jié)果如下圖所示,左右攝像頭的參數(shù)都做了修正,并且也求出了兩個攝像頭之間的旋轉(zhuǎn)和平移關(guān)系向量(om和T)。從結(jié)果可以看出左右相機(jī)的Focal Length相差還是蠻大的,不知這對后續(xù)的視差圖等計(jì)算影響如何(怎么調(diào)整兩個攝像機(jī)的焦距相同也是個問題)。
4.run成功后,就可以看標(biāo)定的結(jié)果了。同樣可以直觀的看出相機(jī)的相對位置相差很大。
圖4.圖3的俯視圖
5.還可以通過Rectify the calibration images按鈕,得到糾正后的所有棋盤格圖片,可以直接讀入OpenCV中進(jìn)行Match了。當(dāng)然,你需要對其他物體或是想實(shí)時得到視差圖,還得將互標(biāo)定結(jié)果寫到OpenCV函數(shù)調(diào)用時支持的格式。
五、問題探討
1.相機(jī)的焦距是否應(yīng)該保持一致?
答:答案是應(yīng)該肯定的。因?yàn)樵诤罄m(xù)的視差圖轉(zhuǎn)換為三維圖時的Q矩陣只有一個f值。所以必須要求至少焦距相近。而且立體成像的三角測量(Learning OpenCV書中提到)的前提假設(shè)就是fl=fr。不知道理解的對不對。
2.怎么調(diào)整兩個攝像機(jī)的焦距相同?
答:a.離兩個相機(jī)相同遠(yuǎn)處放置標(biāo)定板(可以將兩個相機(jī)放置在一起以打到這個效果),分別調(diào)節(jié)兩個相機(jī)的焦距,使得兩個畫面的清晰度相似。(這是我咨詢大恒圖像的技術(shù)支持的結(jié)果)
b.我覺得這樣肯定還是不行,可以再微調(diào),就是標(biāo)定一次得一個焦距,再微調(diào)一下,再測,這樣就會很麻煩。
不知有沒有更好的方法??戳撕芏郆log,沒看到涉及這塊的,不知道大家都是怎么解決的。
請描述您所遇到的錯誤,我們將盡快予以修正,謝謝!
*必填項(xiàng),請輸入內(nèi)容