立体视觉
嘗試用OpenCV來(lái)實(shí)現(xiàn)立體視覺(jué)也有一段時(shí)間了,主要的參考資料就是Learning OpenCV十一、十二章和OpenCV論壇上一些前輩的討論。過(guò)程中磕磕碰碰,走了不少?gòu)澛?#xff0c;終于在前不久解決了最頭大的問(wèn)題,把整個(gè)標(biāo)定、校準(zhǔn)、匹配的流程調(diào)試成功。(雖然還有一些問(wèn)題至今尚未搞清)
在這里寫(xiě)這篇文章,第一方面是給自己一個(gè)總結(jié),第二方面是感覺(jué)OpenCV立體視覺(jué)方面的資料還是相當(dāng)零散和不完整,新手入門(mén)需要花很長(zhǎng)時(shí)間才能摸索出來(lái),第三方面,也是自己在過(guò)程中有些問(wèn)題仍舊迷迷糊糊,希望可以拋磚引玉。
?
1.?攝像頭
我用的攝像頭是淘寶上買(mǎi)的三維攝像頭,兩個(gè)USB Camera加一個(gè)可調(diào)節(jié)的支架。實(shí)物照片如下
1.1 三維攝像頭實(shí)物圖
?
?
雙USB攝像頭的OpenCV驅(qū)動(dòng)可以參考以下鏈接
http://www.opencv.org.cn/index.php/使用DirectShow采集圖像
將上面代碼復(fù)制到自己的工程之后還需要對(duì)工程或者編譯環(huán)境做一下設(shè)置
?
VC6下的詳盡設(shè)置可以見(jiàn)代碼的注釋(修改工程的屬性)
VS2008中的設(shè)置也可以參照代碼注釋中VC++2005的設(shè)置(修改編譯環(huán)境)
?
?
2. 標(biāo)定
由于OpenCV中cvStereoCalibrate總是會(huì)得到很夸張的結(jié)果(見(jiàn)下文5.1問(wèn)題描述),所以最后還是決定用Bouguet的Matlab標(biāo)定工具箱立體標(biāo)定,再將標(biāo)定的結(jié)果讀入OpenCV,來(lái)進(jìn)行后續(xù)圖像校準(zhǔn)和匹配。
Matlab標(biāo)定工具箱的參考鏈接如下:
http://www.vision.caltech.edu/bouguetj/calib_doc/
上面有詳細(xì)的使用步驟,用起來(lái)相當(dāng)?shù)姆奖恪?/p>
?
以下是我個(gè)人用Matlab工具箱進(jìn)行立體標(biāo)定的步驟,供參考,如果需要更詳細(xì)步驟的話還是參照上面的鏈接
?
?
把Matlab工具箱的文件copy到對(duì)應(yīng)目錄下,把所要標(biāo)定的棋盤(pán)圖也放到.m文件所在的目錄下,然后在Matlab命令行窗口中打入calib_gui,選擇Standard之后便出現(xiàn)以下窗口
2.1. calilb_gui面板
?
我們先對(duì)右攝像頭的標(biāo)定,所以先把從右攝像頭上采集到的棋盤(pán)圖復(fù)制到工具箱目錄下。
點(diǎn)擊Image names,?命令行窗口會(huì)提示你輸入圖片的basename以及圖片的格式(比如你圖片文件名是right1, right2, …, right10,basename就是right),然后Matlab會(huì)自動(dòng)幫你讀入這些圖片,如下圖所示,可以看到,讀入了10幅右攝像頭的棋盤(pán)圖。
?
采集棋盤(pán)圖的時(shí)候要注意,盡量讓棋盤(pán)占據(jù)盡可能多的畫(huà)面,這樣可以得到更多有關(guān)攝像頭畸變方面的信息
?
2.2. 圖像basename讀入
?
2.3. 讀入的棋盤(pán)圖
?
?
?
?
然后再回到主控制界面,點(diǎn)擊Extract grid corners,提取每幅圖的角點(diǎn)
2.4. calib_gui面板
?
?
?
點(diǎn)擊完后,命令行會(huì)出現(xiàn)如下提示,主要是讓你輸入棋盤(pán)角點(diǎn)搜索窗口的大小。窗口定的大一點(diǎn)的話提取角點(diǎn)會(huì)比較方便點(diǎn)(即便點(diǎn)得偏離了也能找到),但也要注意不能大過(guò)一個(gè)方格的大小。剩下的兩個(gè)選項(xiàng),只要回車(chē)選用默認(rèn)設(shè)置就可以了
?
2.5. 選擇窗口大小
?
?
然后就開(kāi)始了角點(diǎn)的提取工作,按一定順序分別提取棋盤(pán)的最邊上的角點(diǎn),程序會(huì)自動(dòng)幫你找到所有對(duì)應(yīng)的角點(diǎn)
2.6. 提取角點(diǎn)
?
2.7. 提取角點(diǎn)2
?
?
?
在提取第一幅圖的時(shí)候命令行窗口可能會(huì)提示你輸入方格大小,這里輸入你方格的實(shí)際大小就行,比如我方格是27mm,就輸入27。這步事實(shí)上相當(dāng)關(guān)鍵,它定義了空間的尺度,如果要對(duì)物體進(jìn)行測(cè)量的話,這步是必須的。
?
按相同的方法提取完10幅圖后,點(diǎn)擊Calibration,開(kāi)始攝像頭標(biāo)定
?
?
2.8. calib_gui面板
?
?
經(jīng)過(guò)多次迭代后,程序會(huì)最終得到攝像頭的內(nèi)外參數(shù),如下圖所示(圖中符號(hào)由于字體關(guān)系沒(méi)有完全顯示,中間的問(wèn)號(hào)是表示誤差的加減號(hào))
?
2.9. Calibration迭代過(guò)程及結(jié)果
?
?
可以通過(guò)面板上的Show Extrinsic查看一下標(biāo)定結(jié)果,可以驗(yàn)證一下標(biāo)定外參數(shù)的結(jié)果
2.10. 外部參數(shù)圖示
?
?
?
驗(yàn)證標(biāo)定結(jié)果無(wú)誤之后,就點(diǎn)擊面板上的Save按鈕,程序會(huì)把標(biāo)定結(jié)果放在一個(gè)叫Calib_Result.mat中,為了方便后續(xù)立體標(biāo)定,把這個(gè)文件名改為Calib_Result_right.mat。
?
左攝像頭標(biāo)定的方法與右攝像頭相同,生成的Calib_Result.mat之后,將其改名為Calib_Result_left.mat就可以了
?
左右攝像頭都標(biāo)定完成之后,就可以開(kāi)始立體標(biāo)定了。
?
?
在Matlab命令行中鍵入stereo_gui啟動(dòng)立體標(biāo)定面板,如下圖所示
2.11. stereo_gui面板
?
?
點(diǎn)擊Load left and right calibration files并在命令行中選擇默認(rèn)的文件名(Calib_Result_left.mat和Calib_Result_right.mat)之后就可以開(kāi)始Run stereo calibration了,run之后的結(jié)果如下圖所示,左右攝像頭的參數(shù)都做了修正,并且也求出了兩個(gè)攝像頭之間的旋轉(zhuǎn)和平移關(guān)系向量(om和T)
?
2.12. 立體標(biāo)定結(jié)果
?
?
在面板上點(diǎn)擊Show Extrinsics of stereo rig,可以看到如下圖所示的雙攝像頭關(guān)系圖,可以看到,兩個(gè)攝像頭基本是前向平行的
2.13. 雙攝像頭與定標(biāo)棋盤(pán)間的位置關(guān)系
?
?
得到了立體標(biāo)定參數(shù)之后,就可以把參數(shù)放入xml文件,然后用cvLoad讀入OpenCV了。具體的方法可以參照Learning OpenCV第11章的例子,上面就是用cvSave保存標(biāo)定結(jié)果,然后再用cvLoad把之前的標(biāo)定結(jié)果讀入矩陣的
2.14. xml文件示例
?
?
這里需要注意的是Matlab標(biāo)定結(jié)果中的om向量,這個(gè)向量是旋轉(zhuǎn)矩陣通過(guò)Rodrigues變換之后得出的結(jié)果,如果要在cvStereoRectify中使用的話,需要首先將這個(gè)向量用cvRodrigues轉(zhuǎn)換成旋轉(zhuǎn)矩陣。關(guān)于Rodrigues變換,Learning OpenCV的第11章也有說(shuō)明。
?
2.15. 旋轉(zhuǎn)矩陣的Rodrigues形式表示
?
?
?
?
?
?
3. 立體校準(zhǔn)和匹配
有了標(biāo)定參數(shù),校準(zhǔn)的過(guò)程就很簡(jiǎn)單了。
我使用的是OpenCV中的cvStereoRectify,得出校準(zhǔn)參數(shù)之后用cvRemap來(lái)校準(zhǔn)輸入的左右圖像。這部分的代碼參考的是Learning OpenCV?十二章的例子。
?
校準(zhǔn)之后,就可以立體匹配了。立體匹配OpenCV里面有兩種方法,一種是Block Matching,一種是Graph Cut。Block Matching用的是SAD方法,速度比較快,但效果一般。Graph Cut可以參考Kolmogrov03的那篇博士論文,效果不錯(cuò),但是運(yùn)行速度實(shí)在是慢到不能忍。所以還是選擇BM。
?
以下是我用BM進(jìn)行立體匹配的參數(shù)設(shè)置
?
[cpp]?view plaincopy?
其中minDisparity這個(gè)參數(shù)我設(shè)置為0是由于我的兩個(gè)攝像頭是前向平行放置,相同的物體在左圖中一定比在右圖中偏右,如下圖3.1所示。所以沒(méi)有必要設(shè)置回搜的參數(shù)。
如果為了追求更大的雙目重合區(qū)域而將兩個(gè)攝像頭向內(nèi)偏轉(zhuǎn)的話,這個(gè)參數(shù)是需要考慮的。
?
3.1. 校正后的左右視圖
?
?
另外需要提的參數(shù)是uniquenessRatio,實(shí)驗(yàn)下來(lái),我感覺(jué)這個(gè)參數(shù)對(duì)于最后的匹配結(jié)果是有很大的影響。uniquenessRatio主要可以防止誤匹配,其主要作用從下面三幅圖的disparity效果比對(duì)就可以看出。在立體匹配中,我們寧愿區(qū)域無(wú)法匹配,也不要誤匹配。如果有誤匹配的話,碰到障礙檢測(cè)這種應(yīng)用,就會(huì)很麻煩。
?
3.2. UniquenessRatio為0時(shí)的匹配圖,可以看到大片的誤匹配區(qū)域
?
3.3. UniquenessRatio為10時(shí)的disparity map, 可以看到誤匹配被大量減少了, 但還是有噪點(diǎn)
?
3.4. UniquenessRatio為20時(shí)的disparity map, 可以看到誤匹配基本被去除了, 點(diǎn)云干凈了很多
?
?
?
關(guān)于cvFindStereoCorrespondenceBM這個(gè)函數(shù)的源代碼,曾經(jīng)做過(guò)比較詳細(xì)的研究,過(guò)一段時(shí)間也會(huì)把之前寫(xiě)的代碼注釋整理一下,發(fā)篇博文。
?
?
?
?
4.?實(shí)際距離的測(cè)量
在用cvFindStereoCorrespondenceBM得出disparity map之后,還需要通過(guò)cvReprojectImageTo3D這個(gè)函數(shù)將單通道Disparity Map轉(zhuǎn)換成三通道的實(shí)際坐標(biāo)矩陣。
具體的數(shù)學(xué)原理可以參考下面這個(gè)公式(from chenyusiyuan?http://blog.csdn.net/chenyusiyuan/archive/2009/12/25/5072597.aspx,實(shí)際深度的一些問(wèn)題這篇博文中也有提到)
4.1 距離轉(zhuǎn)換公式
?
?
但是在實(shí)際操作過(guò)程中,用cvReprojectImageTo3D得到的數(shù)據(jù)并未如實(shí)際所想,生成深度矩陣所定義的世界坐標(biāo)系我就一直沒(méi)弄清楚。這在下面的例子中會(huì)詳細(xì)說(shuō)明,希望這方面的專(zhuān)家能幫忙解答一下:
?
圖4.2是測(cè)量時(shí)的實(shí)際場(chǎng)景圖,場(chǎng)景中主要測(cè)量的三個(gè)物體就是最前面的利樂(lè)包裝盒、中間的紙杯、和最遠(yuǎn)的塑料瓶。
?
?
4.2. 實(shí)際場(chǎng)景中三個(gè)待測(cè)物體的位置
?
?
圖4.3是校準(zhǔn)后的左右圖和匹配出來(lái)的disparity map,disparity窗口中是實(shí)際的點(diǎn)云,object窗口是給disparity map加了個(gè)閾值之后得到的二值圖,主要是為了分割前景和背景。可以看到要測(cè)的三個(gè)物體基本被正確地分割出來(lái)了
?
4.3. 雙目攝像頭得到的disparity map
?
圖4.4是在disparity窗口中選取一個(gè)點(diǎn)后然后在實(shí)際坐標(biāo)矩陣中得到的對(duì)應(yīng)三維信息,在這里,我在三個(gè)物體的點(diǎn)云上各選一個(gè)點(diǎn)來(lái)代表一個(gè)物體實(shí)際的坐標(biāo)信息。(這里通過(guò)鼠標(biāo)獲取一點(diǎn)坐標(biāo)信息的方法參考的是opencv sample里的watershed.cpp)
?
4.4. 對(duì)應(yīng)點(diǎn)的三維坐標(biāo)
?
?
在這里可以看到,(265, 156)也就是利樂(lè)包裝盒的坐標(biāo)是(13, 12, -157),(137, 142)紙杯的坐標(biāo)是(77, 30, -312),(95, 115)塑料瓶的坐標(biāo)是(144, 63, -482)。
補(bǔ)充一下:為了方便顯示,所以視差圖出來(lái)之后進(jìn)行了一個(gè)0-255的normalize,所以value值的前一個(gè)是normalize之后點(diǎn)的灰度值,后一個(gè)是normalize之前點(diǎn)的實(shí)際視差圖。
由cvFindStereoCorrespondenceBM算法的源代碼:
?
dptr[y*dstep] = (short)(((ndisp - mind - 1 + mindisp)*256 + (d != 0 ? (p-n)*128/d : 0) + 15) >> 4); 其中 ndisp是ndisp = state->numberOfDisparities; mindisp是mindisp = state->minDisparity; mind就是sad得出的視差 實(shí)際視差大約是(64-mind-1)*256=1163, 基本是對(duì)的, 后面一項(xiàng)修正值在通常情況下可以忽略?
?
?
目前我還是不是很清楚立體坐標(biāo)系原點(diǎn)和尺度,但是從這三個(gè)點(diǎn)的z坐標(biāo)可以大致看出這三個(gè)物體的距離差大概是1:2:3,基本與實(shí)際場(chǎng)景中物體的位置一致。因此,可以通過(guò)這種方法確定出物體的大致距離信息。
?
但是,如果就從攝像頭參數(shù)本身來(lái)測(cè)量距離的話,就不是很明白了,還求這方面的大牛解答。
?
5. ?一些問(wèn)題
5.1 關(guān)于StereoCalibrate
OpenCV自帶的cvStereoCalibrate感覺(jué)不怎么好用,用這個(gè)函數(shù)求出的內(nèi)參外參和旋轉(zhuǎn)平移矩陣進(jìn)行校準(zhǔn),往往無(wú)法達(dá)到行對(duì)準(zhǔn),有時(shí)甚至?xí)霈F(xiàn)比較可怕的畸變。在看了piao的http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=4603帖子之后,也曾經(jīng)嘗試過(guò)現(xiàn)用cvCalibrateCamera2單獨(dú)標(biāo)定(左右各20幅圖),得出的結(jié)果基本和Matlab單獨(dú)標(biāo)定的相同,然后再在cvStereoCalibrate中將參數(shù)設(shè)成CV_CALIB_USE_INTRINSIC_GUESS,用來(lái)細(xì)化內(nèi)參數(shù)和畸變參數(shù),結(jié)果得出的標(biāo)定結(jié)果就又走樣了。
不知道有誰(shuí)在這方面有過(guò)成功經(jīng)驗(yàn)的,可以出來(lái)分享一下。畢竟用Matlab工具箱還是麻煩了些。
?
?
5.2?Translation向量以及立體匹配得出的世界坐標(biāo)系
Learning OpenCV中對(duì)于Translation和Rotation的圖示是這樣的
5.1. Learning OpenCV中的圖示
?
可是在實(shí)驗(yàn)過(guò)程中發(fā)現(xiàn),如果將Translation向量按尺度縮放,對(duì)于StereoRectify之后的左右視圖不會(huì)有變化,比如將T = [ -226.73817 ? -0.62302 ?8.93984 ] ,變成T = [ -22.673817 ? -0.062302 ?0.893984 ],在OpenCV中顯示的結(jié)果不會(huì)有任何變化。而且我如果修改其中的一個(gè)參量的話,左右視圖發(fā)生的變化也不是圖5.1中所示的那種變化(比如把x縮小,那么視圖發(fā)生的變化不是往x軸方向的平移)。
?
因此又回到了老問(wèn)題,這里這些坐標(biāo)的尺度究竟是什么?通過(guò)ReprojectTo3D那個(gè)函數(shù)得到的三維坐標(biāo)又是以哪個(gè)點(diǎn)為原點(diǎn),那三個(gè)方向?yàn)閤,y,z軸的??
?
補(bǔ)充: 對(duì)這個(gè)問(wèn)題的解答來(lái)自于和maxwellsdemon的討論
他的解釋如下:rotation是兩者的旋轉(zhuǎn)角度的關(guān)系,但是你要把它矯正平行,也是需要translation matrix的。你可以設(shè)想,兩個(gè)看似已經(jīng)平行了的攝像頭,但是深度上放置的有差距,那么在矯正的時(shí)候會(huì)議translation matrix所對(duì)應(yīng)的角度或者直線為基準(zhǔn),二者旋轉(zhuǎn)一個(gè)小角度,使得完全平行。
?
PPS:攝像頭網(wǎng)址 http://www.hytekautomation.com.cn/BNE001.aspx?productId=20
?
?//******************************************************************************************************************************************************************************************
101樓 HiGoodBoy 2016-03-17 17:51發(fā)表 [回復(fù)]
??? 博主,您好,我想請(qǐng)問(wèn)一下只知道兩幅影像的投影矩陣的情況下,如何進(jìn)行極線校正。采用stereorectify函數(shù)么?其中的cameramatrix,r,T參數(shù)都通過(guò)投影矩陣分解得到,但是畸變參數(shù)怎么得到呢?還望指點(diǎn)
100樓 wyx_123456 2016-01-18 20:35發(fā)表 [回復(fù)]
??? 博主,標(biāo)定完以后怎么判斷標(biāo)定結(jié)果好壞與否?
99樓 qq_33504386 2016-01-04 11:28發(fā)表 [回復(fù)]
??? 感謝樓主分享,學(xué)了不少,我們也是做三維掃描方案開(kāi)發(fā)的,浙大系,在杭州。現(xiàn)公司努力壯大研發(fā)團(tuán)隊(duì),歡迎有興趣的三維重建算法、三維點(diǎn)云后處理人才加入:QQ 2088190951
98樓 Jefferyhxm 2015-12-02 07:06發(fā)表 [回復(fù)]
??? 博主,看了你的文章,我還是有些疑惑。在使用matlab toolbox計(jì)算得到左右相機(jī)的內(nèi)參數(shù)和外參數(shù)以后,如何利用opencv來(lái)通過(guò)兩個(gè)圖像中的點(diǎn)坐標(biāo)計(jì)算三維空間坐標(biāo)呢?
97樓 _ALittleMore_ 2015-11-16 09:43發(fā)表 [回復(fù)]
??? 博主,最近一個(gè)項(xiàng)目中要用到立體匹配,要看懂cvFindStereoCorrespondenceBM這個(gè)的源碼,看到“關(guān)于cvFindStereoCorrespondenceBM這個(gè)函數(shù)的源代碼,曾經(jīng)做過(guò)比較詳細(xì)的研究,過(guò)一段時(shí)間也會(huì)把之前寫(xiě)的代碼注釋整理一下,發(fā)篇博文”心中一熱,去找博主的博文發(fā)現(xiàn)沒(méi)有,看評(píng)論才發(fā)現(xiàn)博主后來(lái)沒(méi)寫(xiě)了,剛接觸圖像處理和opencv不久,看這函數(shù)的源碼實(shí)在是覺(jué)得看不懂,博主,該怎么去看呢?求助求助!
96樓 jiullll 2015-08-06 19:14發(fā)表 [回復(fù)]
??? mind就是sad得出的視差是指哪個(gè)數(shù)值呢
95樓 jiullll 2015-08-06 17:44發(fā)表 [回復(fù)]
??? 請(qǐng)問(wèn)一下BM參數(shù)中的unitDisparity是什么呢
94樓 見(jiàn)賢思齊焉 2015-07-02 09:51發(fā)表 [回復(fù)]
??? 感謝樓主分享,但關(guān)于Matlab標(biāo)定的結(jié)果,小弟有點(diǎn)看不明白,關(guān)于fc或cc參數(shù),Matlab標(biāo)定結(jié)果均有兩個(gè)值。
??? 即
??? fc=[827.16255 826.98935]?[8.66335 8.5461]
??? cc=[341.20701,218.32537]?[16.91587,12.22932]
??? 前者應(yīng)該是焦距和像主點(diǎn)的像素坐標(biāo)吧,那后者是什么呢?是物理坐標(biāo)么?
??? 還望樓主解答~~謝謝了。
93樓 baidu_27903689 2015-05-24 20:34發(fā)表 [回復(fù)]
??? 講的很好 學(xué)了很多
92樓 Cason_wang 2015-04-03 14:57發(fā)表 [回復(fù)]
??? 你好,請(qǐng)教一下,我利用MATLAB toolbox分別標(biāo)定兩個(gè)攝像頭,得到攝像頭的內(nèi)外參數(shù)。那我現(xiàn)在要做的事是,直接利用兩個(gè)攝像頭采集,各采集一幀進(jìn)行標(biāo)定,然后做圖像拼接處理,這種思路對(duì)嗎?
91樓 放放風(fēng) 2015-01-18 21:12發(fā)表 [回復(fù)]
??? lz,我想請(qǐng)教下為什么我用reprojectimageto3d得出來(lái)的坐標(biāo)值很離譜呢?
??? Re: fox7xjw 2015-01-29 14:53發(fā)表 [回復(fù)]
??????? 回復(fù)u010119009:reprojectimageto3d出來(lái)的坐標(biāo)要乘以16之后才有點(diǎn)靠譜。。
??????? Re: sunlightli1216 2015-08-28 21:36發(fā)表 [回復(fù)]
??????????? 回復(fù)fox7xjw: cvReprojectImageTo3D得到的是什么?怎么把Z坐標(biāo)換算成距離呢?希望解答,不勝感激
90樓 fox7xjw 2015-01-17 15:20發(fā)表 [回復(fù)]
??? 我想請(qǐng)問(wèn)下博主,matlab的stereo_gui里面有一個(gè)Rectify the calibration images,好像是把所有棋盤(pán)格圖像做了校正,之后又獲得了一組標(biāo)定參數(shù);
??? 我想問(wèn)的是博主用到opencv中的參數(shù)是哪一組?還有這個(gè)Rectify the calibration images可不可以校正匹配要用的那一組真實(shí)場(chǎng)景圖像對(duì)呢?
??? 謝謝~
89樓 Joey_Tang 2014-10-14 16:16發(fā)表 [回復(fù)]
??? 博主的三維攝像頭在哪里買(mǎi)的啊?!能給出鏈接嗎?!
88樓 司令 2014-07-16 03:26發(fā)表 [回復(fù)]
??? 不錯(cuò)啊,看著博主的這個(gè)博客搞定了!非常感謝!
??? 那個(gè)Matlab toolbox不是一般的強(qiáng)大,我需要的各種變換還有PnP都有相應(yīng)的函數(shù),太牛逼了!
87樓 shiter 2014-06-22 22:42發(fā)表 [回復(fù)]
??? 同樣想買(mǎi)攝像頭的飄過(guò)。。。
86樓 liuhyluguan 2014-05-12 12:35發(fā)表 [回復(fù)]
??? 博主你好,拜讀了你的文章使我受益匪淺,但有一點(diǎn)不明,“把參數(shù)放入xml文件”這一步如何實(shí)現(xiàn),有具體的實(shí)現(xiàn)代碼或說(shuō)明嗎,wzyryan@163.com,懇請(qǐng)指導(dǎo)
??? Re: yu88888jie 2015-12-22 20:48發(fā)表 [回復(fù)]
??????? 回復(fù)liuhyluguan:就是你找一個(gè)xml文件 按照他那個(gè)格式把數(shù)據(jù)填進(jìn)去就可以了。 xml文件找不到的話可以下載opencv十二章的源碼,在里面把那個(gè)攝像頭矩陣什么的保存為xml就可以了 十一章的代碼里有說(shuō)怎么保存。
??? Re: zlllou 2014-12-04 21:14發(fā)表 [回復(fù)]
??????? 回復(fù)liuhyluguan:請(qǐng)問(wèn)你們解決了嗎
85樓 montgomerry 2014-05-04 22:20發(fā)表 [回復(fù)]
??? 看完你的博文受益良多,有個(gè)地方不太清楚我想問(wèn)下,matlab里的reprojection error怎么看?看不懂,可以跟你說(shuō)下嗎?
84樓 nangnima 2014-04-16 15:03發(fā)表 [回復(fù)]
??? 博主,不知道你還能不能看到我的評(píng)論,您提供的網(wǎng)址我找不到這種攝像頭啊,求博主給個(gè)鏈接,感激不盡。
83樓 Raby_GYL 2013-12-11 21:18發(fā)表 [回復(fù)]
??? 時(shí)間真快呀,三年過(guò)去了~我現(xiàn)在才學(xué)習(xí)到這部分~明年C++版本Learning OpenCV書(shū)籍出來(lái)了,不曉得對(duì)這部分有什么補(bǔ)充和改進(jìn)~
82樓 qingqingzjin 2013-11-14 15:08發(fā)表 [回復(fù)]
??? 相當(dāng)好的文章,核你受用。不過(guò)樓主,你提供的兩個(gè)鏈接:http://www.hytekautomation.com.cn/BNE001.aspx?productId=20
??? 和http://item.taobao.com/item.htm?id=4271696156
??? 都已經(jīng)失效了,現(xiàn)在我很想做這個(gè)方面的研究,所以麻煩你提供下賣(mài)這個(gè)相機(jī)的聯(lián)系方式吧,非常的感謝!
??? 我的QQ:2768676042
??? email:qingqingzjin@126.com
??? 麻煩LZ!
??? Re: 諾坎普10號(hào) 2014-05-08 20:05發(fā)表 [回復(fù)]
??????? 回復(fù)haorenka2010:請(qǐng)問(wèn)你買(mǎi)到攝像頭了嘛?
??????? Re: qingqingzjin 2014-08-11 20:25發(fā)表 [回復(fù)]
??????????? 回復(fù)liangtingfengyileng:沒(méi)有,不過(guò)我們買(mǎi)了一款國(guó)外的整套設(shè)備和軟件
81樓 CarsonGP 2013-08-30 15:46發(fā)表 [回復(fù)]
??? 樓主,我已經(jīng)拜讀了你的文章好幾遍了,我的目前已經(jīng)做好了單目的標(biāo)定,用的是opencv,我想問(wèn)下matlab標(biāo)定的效果咋樣?
80樓 thunder60 2013-08-07 02:22發(fā)表 [回復(fù)]
??? 博主您好,請(qǐng)問(wèn)matlab的標(biāo)定結(jié)果怎么引用給openCV, xml文件的結(jié)構(gòu)應(yīng)該是怎樣的?或者,openCV所要用的cvMat結(jié)構(gòu)的參數(shù)矩陣是怎樣的?
79樓 mihu_1234 2013-06-24 21:18發(fā)表 [回復(fù)]
??? 樓主你好 我用單目標(biāo)定的時(shí)候 SHOW EXTRINSIC 里面的Z軸方向的距離 和我的實(shí)際距離有差距 相差100左右 能否給我解答一下 多謝!!
78樓 gugumumu2010 2013-04-22 11:17發(fā)表 [回復(fù)]
??? 你好,不知道您還會(huì)不會(huì)回復(fù)我,實(shí)在是卡住了,我用cvStereoRectify函數(shù)校正兩幅圖片(我的圖片是MFC單文檔對(duì)話框里的兩個(gè)圖片控件打開(kāi)的),調(diào)試總是該函數(shù)的CV_CALIB_ZERO_DISPARITY參數(shù)出錯(cuò),請(qǐng)問(wèn)使用這個(gè)函數(shù)的時(shí)候?qū)D片有要求嗎?這個(gè)函數(shù)好像沒(méi)用到圖片啊。我用的是vc6.0+opencv1.1。還有cvRemap這個(gè)函數(shù)的輸入輸出圖片格式是哪個(gè),我的圖片控件打開(kāi)后是IplImage類(lèi)型的,要進(jìn)行轉(zhuǎn)換嗎?期待您的回復(fù)哦。
??? Re: gugumumu2010 2013-04-22 16:30發(fā)表 [回復(fù)]
??????? 回復(fù)gugumumu2010:是不是vc6.0不能用opencv1.1呀。我要瘋了。
77樓 u010147016 2013-04-18 23:01發(fā)表 [回復(fù)]
??? USB Camera 兩個(gè)攝像頭的配件淘寶上沒(méi)看到呀,能給個(gè)鏈接么
76樓 chy258143826 2013-03-19 12:14發(fā)表 [回復(fù)]
??? 引用“mailang2008”的評(píng)論:
??? 您好,我按您的方法在校正的時(shí)候遇到一個(gè)問(wèn)題,提示cvStereoRectify函數(shù)Formats o...
??? 我也碰到了相似的問(wèn)題,同求解答
75樓 chy258143826 2013-03-19 11:50發(fā)表 [回復(fù)]
??? 前輩在嗎?????現(xiàn)在求助ing。。。。。。
74樓 just_rookie 2013-02-28 15:53發(fā)表 [回復(fù)]
??? 這個(gè)帖子對(duì)于菜鳥(niǎo)來(lái)說(shuō)太具有指導(dǎo)性了!!
73樓 lsyyoyo 2013-02-22 21:02發(fā)表 [回復(fù)]
??? 樓主,雙目視覺(jué)的這個(gè)過(guò)程,包括在vc或者vs中對(duì)opencv的配置,這些個(gè)校正、BM等的匹配函數(shù),在PC機(jī)上可以實(shí)現(xiàn)。如果在DSP中,請(qǐng)問(wèn)樓主你知道這些函數(shù)、這個(gè)過(guò)程cvStereoRectify()校正,cvInitUndistortRectifyMap()和cvRemap()極線對(duì)準(zhǔn),cvFindStereoCorrespondenceBM()立體匹配還有嗎。還是就不一樣了?
72樓 chenruying 2013-01-07 12:43發(fā)表 [回復(fù)]
??? 你好,博主,
??? 我現(xiàn)在在一個(gè)機(jī)器人競(jìng)賽小組中,擔(dān)任程序設(shè)計(jì),但我的高度始終有問(wèn)題。。
??? 可以向博主請(qǐng)教一下代碼么
??? 我的郵箱 784255948@qq.com 或 reneechen1993@gmail.com
??? O(∩_∩)O謝謝
71樓 s001133 2013-01-04 15:12發(fā)表 [回復(fù)]
??? 前輩..你能教一下OpenCV那邊的程序嗎?或者可以分享一下你的源代碼嗎?~~謝謝?
70樓 feifeiniao123 2012-12-24 15:42發(fā)表 [回復(fù)]
??? 前輩,您好,很好的文章,前輩能不能共享一下用cvStereoRectify 這個(gè)函數(shù)實(shí)現(xiàn)校正的代碼,我現(xiàn)在處于初學(xué)階段,懇請(qǐng)前輩不吝賜教……我的郵箱yffeng@yeah.net。多謝您了
??? Re: richmanrain 2012-12-26 11:56發(fā)表 [回復(fù)]
??????? 回復(fù)feifeiniao123:同求,到這步就不是很清楚了,感謝了,郵箱richmanrain@163.com
69樓 kaiseu 2012-12-14 18:50發(fā)表 [回復(fù)]
??? 在matlab下標(biāo)定,用OPencv校準(zhǔn)、匹配,remap得到的校正圖明顯不在一條水平線上(一上一下),matlab下標(biāo)定的誤差顯示很小了,可能是什么原因啊?望指正!
68樓 yl2135315 2012-10-31 08:54發(fā)表 [回復(fù)]
??? 樓主你好,我目前也在弄這個(gè)三維測(cè)距,現(xiàn)在我能夠求出視差圖。不過(guò)用cvReprojectImageTo3D(CvArr * disparityImage, CvArr * result3DImage, CvMat * Q)。這個(gè)函數(shù)求出深度圖的時(shí)候,求出的結(jié)果很奇怪。result3DImage求出來(lái)的點(diǎn)。Z通道也就是深度很多點(diǎn)都是同一個(gè)結(jié)果。也就是景深一樣。并且大得驚人。還是個(gè)負(fù)數(shù)。不知道這些個(gè)原因樓主遇到過(guò)沒(méi)有。如果不介意希望可以發(fā)一份代碼到我郵箱。yanglong227@126.com。不盡感激。
??? Re: hx_ywzq 2015-11-19 14:49發(fā)表 [回復(fù)]
??????? 回復(fù)yl2135315:我也有這個(gè)問(wèn)題請(qǐng)問(wèn)你解決了嗎?
67樓 lsyyoyo 2012-10-25 15:02發(fā)表 [回復(fù)]
??? 嗯,博客里寫(xiě)文時(shí)截的這些圖片,我咋粘不上去
66樓 hit2038 2012-10-17 21:02發(fā)表 [回復(fù)]
??? 樓主你好,我一直在研究你這篇博文,我想知道“在disparity窗口中選取一個(gè)點(diǎn)后然后在實(shí)際坐標(biāo)矩陣中得到的對(duì)應(yīng)三維信息”這一步是如何實(shí)現(xiàn)的?能把代碼給我發(fā)一下嗎,272310401@qq.com 謝謝。
65樓 chgm_456D 2012-10-05 15:36發(fā)表 [回復(fù)]
??? 博主,你好!非常有幸拜讀你的文章,非常好,感謝你的分享。現(xiàn)在我有個(gè)問(wèn)題想問(wèn)一下:
??? 圖4.2 和4.3中 的物體的 那個(gè)框框,是程序自己檢測(cè)的,還是手動(dòng)畫(huà)上去的?非常感謝!
??? Re: scyscyao 2012-10-17 16:14發(fā)表 [回復(fù)]
??????? 回復(fù)chgm_456D:用opencv里面的一個(gè)函數(shù)畫(huà)上去的,好像是cvRectangle還是什么
64樓 allanpk716 2012-09-14 12:02發(fā)表 [回復(fù)]
??? 我只想問(wèn)問(wèn),博主你之前買(mǎi)的三維攝像頭,我看淘寶沒(méi)得賣(mài)了,找了半天,不知道還有什么地方能找到得到不?不然就得買(mǎi)家用攝像頭然后弄個(gè)固定架了
??? Re: scyscyao 2012-10-17 16:19發(fā)表 [回復(fù)]
??????? 回復(fù)allanpk716:好像市面上雙目攝像頭不少吧 剛剛淘寶搜了下立體攝像頭 就有很多此類(lèi)產(chǎn)品
??? Re: scyscyao 2012-10-17 16:17發(fā)表 [回復(fù)]
??????? 回復(fù)allanpk716:剛剛試了一下博文最后的鏈接 好像失效了。。。估計(jì)是那家公司倒閉了。。。是家小型創(chuàng)業(yè)公司
63樓 lsyyoyo 2012-08-26 09:53發(fā)表 [回復(fù)]
??? 想問(wèn)一下博主,你的圖片是怎么顯示的。我寫(xiě)博客的時(shí)候,截的這個(gè)圖片怎么沒(méi)法顯示呢?
??? Re: scyscyao 2012-10-17 16:19發(fā)表 [回復(fù)]
??????? 回復(fù)lsyyoyo:博客里的圖片?還是opencv顯示的圖片?
62樓 qqbb1987 2012-08-02 13:01發(fā)表 [回復(fù)]
??? “value值的前一個(gè)是normalize之后點(diǎn)的灰度值,后一個(gè)是normalize之前點(diǎn)的實(shí)際視差圖。”這話有問(wèn)題吧。實(shí)際視差怎么y方向還有值,經(jīng)過(guò)前向校正之后,只有x方向有視差值。還有這個(gè)y值是怎么得到的呢?想了好久沒(méi)搞清楚。。。
??? Re: scyscyao 2012-10-17 16:25發(fā)表 [回復(fù)]
??????? 回復(fù)qqbb1987:抱歉這里可能說(shuō)不太清楚 這里的value是指point is xx,xx value is xx,xx的value 跟x y 好像沒(méi)有關(guān)系
61樓 qqbb1987 2012-08-02 12:51發(fā)表 [回復(fù)]
??? 這個(gè)帖子我每天看四五遍,有些問(wèn)題一直沒(méi)搞清楚。希望能有志同道合一起探討。請(qǐng)假Q(mào)Q:532382142。附言:csdn立體視覺(jué)。
60樓 sunanger_wang 2012-07-13 14:32發(fā)表 [回復(fù)]
??? 樓主太好了,謝謝
59樓 xfortius 2012-07-03 17:24發(fā)表 [回復(fù)]
??? 贊。。原來(lái)沒(méi)有仔細(xì)閱讀,現(xiàn)在飆淚中啊。。多多學(xué)習(xí)。。
58樓 cbib_cat 2012-03-31 17:08發(fā)表 [回復(fù)]
??? LZ你好!
??? “關(guān)于cvFindStereoCorrespondenceBM這個(gè)函數(shù)的源代碼,曾經(jīng)做過(guò)比較詳細(xì)的研究,過(guò)一段時(shí)間也會(huì)把之前寫(xiě)的代碼注釋整理一下,發(fā)篇博文”
??? 我們目前在看這個(gè)算法,想?yún)⒖糒Z的博文。
??? Re: scyscyao 2012-10-17 16:22發(fā)表 [回復(fù)]
??????? 回復(fù)cbib_cat:哎 當(dāng)年畢設(shè)時(shí)候一腔熱情啊,后來(lái)沒(méi)寫(xiě)。。。。不過(guò)那個(gè)算法寫(xiě)得真的很高效,直接操控內(nèi)存地址來(lái)增加效率。。。。而且 其實(shí)現(xiàn)在研究這個(gè)算法的意義不太大了吧。。。很多新算法又出來(lái)了。。比如graph cut相關(guān)的,研究這些算法比較有前景
57樓 lizhao0211 2012-02-27 16:22發(fā)表 [回復(fù)]
??? 您好 我也在做三維重建的項(xiàng)目,能把您得到點(diǎn)的三維信息的程序給我發(fā)下嗎?想?yún)⒖家幌隆Vx謝
??? wangshuo1987sure@gmai.com
??? Re: zlllou 2014-12-04 21:19發(fā)表 [回復(fù)]
??????? 回復(fù)lizhao0211:你們的標(biāo)定怎么解決的,大神,幫幫忙,我們現(xiàn)在卡在標(biāo)定這里了,得到結(jié)果了,但是不知道怎么把MATLAB的結(jié)果導(dǎo)入opencv,郵箱619258732@qq.com
56樓 shihaos 2012-02-25 23:45發(fā)表 [回復(fù)]
??? 博主,你好,急切想知道一些問(wèn)題,我在利用cvReprojectImageTo3D函數(shù)輸出的矩陣數(shù)據(jù)讀出三個(gè)坐標(biāo)時(shí)是較小的數(shù)值,2.09323等,物體實(shí)際距離約為35cm,想請(qǐng)問(wèn)這是什么原因嗎?博主的三維坐標(biāo)輸出后是否經(jīng)過(guò)什么處理(乘以16外)
55樓 jixiangbeijing 2012-02-24 23:11發(fā)表 [回復(fù)]
??? 樓主您好,
??? “得到了立體標(biāo)定參數(shù)之后,就可以把參數(shù)放入xml文件”這句話能不能講的再清楚點(diǎn),我就是這個(gè)點(diǎn)過(guò)不去。萬(wàn)分感謝!
??? Re: yu88888jie 2015-12-22 20:49發(fā)表 [回復(fù)]
??????? 回復(fù)jixiangbeijing:就是你找一個(gè)xml文件 按照他那個(gè)格式把數(shù)據(jù)填進(jìn)去就可以了。 xml文件找不到的話可以下載opencv十二章的源碼,在里面把那個(gè)攝像頭矩陣什么的保存為xml就可以了 十一章的代碼里有說(shuō)怎么保存。
??? Re: leizishenlan 2013-04-21 16:05發(fā)表 [回復(fù)]
??????? 回復(fù)jixiangbeijing:你好,你現(xiàn)在研究出來(lái)了“如何利用matlab攝像頭標(biāo)定得出的參數(shù)轉(zhuǎn)化為xml文件”,自己也卡在了這里,特想你請(qǐng)教一下
??? Re: chy258143826 2013-03-19 12:00發(fā)表 [回復(fù)]
??????? 回復(fù)jixiangbeijing:您也是這個(gè)點(diǎn)過(guò)不去啊。/。。。。我也是啊。。半天得不到正確的xml文件。程序提醒數(shù)據(jù)結(jié)構(gòu)不對(duì),煩躁死了。
??????? Re: leizishenlan 2013-04-21 16:06發(fā)表 [回復(fù)]
??????????? 回復(fù)chy258143826:你好,你現(xiàn)在研究出來(lái)了“如何利用matlab攝像頭標(biāo)定得出的參數(shù)轉(zhuǎn)化為xml文件”,自己也卡在了這里,特想你請(qǐng)教一下
??????????? Re: zlllou 2014-12-04 21:20發(fā)表 [回復(fù)]
??????????????? 回復(fù)leizishenlan:你們解決了嗎,我也卡在這里了
54樓 budong000ni 2012-02-12 12:54發(fā)表 [回復(fù)]
??? LZ的攝像頭是兩個(gè)單獨(dú)的拼起來(lái)的嗎?分享一下,想做畢業(yè)設(shè)計(jì)
53樓 冰水冰 2011-12-24 21:50發(fā)表 [回復(fù)]
??? 不知博主能否發(fā)我一份 shilylucky@qq.com,做學(xué)習(xí)用,謝謝
52樓 qi_lanfeng 2011-12-07 11:16發(fā)表 [回復(fù)]
??? 你好,請(qǐng)問(wèn)樓主還在嗎?
??? 我有個(gè)問(wèn)題想跟你請(qǐng)教一下關(guān)于cvStereoRectify里面的R和T參數(shù)的問(wèn)題。我的內(nèi)外參數(shù)都已經(jīng)得到,于是我用R=R2*R1t
??? T=T2-R*T1,但是最后得到的結(jié)果卻不對(duì),請(qǐng)問(wèn)應(yīng)該如何修改
??? 此外有的時(shí)候矯正之后不是行對(duì)準(zhǔn)而是列對(duì)準(zhǔn),這個(gè)時(shí)候一般如何處理比較好?再次旋轉(zhuǎn)??
51樓 feira 2011-11-20 13:43發(fā)表 [回復(fù)]
??? 還有,你三維攝像頭從哪個(gè)店買(mǎi)的,給個(gè)地址吧
50樓 feira 2011-11-20 11:33發(fā)表 [回復(fù)]
??? 你好,openCV中,利用 cvFindFundametalMat 獲得基礎(chǔ)矩陣F,然后使用 cvComputeCorrespondEpiLines計(jì)算對(duì)應(yīng)點(diǎn)在另一幅圖像中的對(duì)應(yīng)極線。那么,調(diào)用cvFindFundametalMat時(shí),輸入圖片是校正好的嗎?計(jì)算極線時(shí),也輸入校正好的圖片嗎?還有,好多人說(shuō)校正好的圖片,匹配時(shí),只需要在同一行找就行了,那是不是就不用計(jì)算極線了?
49樓 gankeliang 2011-09-23 22:16發(fā)表 [回復(fù)]
??? 你好,請(qǐng)問(wèn)按照你圖中標(biāo)記出幾個(gè)物體,怎么實(shí)現(xiàn)的呢?還有就是我測(cè)的距離貌似不怎么準(zhǔn)確?貌似是一半這樣子。cvReprojectImageTo3D得到的坐標(biāo)不是很準(zhǔn)。但是攝像頭的Tx的距離是相當(dāng)準(zhǔn)的。
48樓 gankeliang 2011-08-24 09:49發(fā)表 [回復(fù)]
??? 你好,謝謝你的文章,請(qǐng)問(wèn)我也是做三維測(cè)距的,然后標(biāo)定都完成了,得到攝像頭的一系列參數(shù),然后再匹配的時(shí)候我采用的BM的方法,當(dāng)我自己載入自己的標(biāo)定參數(shù)的時(shí)候,匹配視差圖確什么都沒(méi)有,是一片漆黑的。拿別人的標(biāo)定結(jié)果載入,發(fā)覺(jué)有那么點(diǎn)點(diǎn)視差。會(huì)不會(huì)是我的標(biāo)定參數(shù)錯(cuò)誤呢?一直有點(diǎn)不懂?請(qǐng)問(wèn)能指導(dǎo)下我原因嗎?我的郵箱283299176@qq.com,期待您的指導(dǎo),可以把你的建議發(fā)郵箱或則回復(fù)給我嘛?謝謝了。這個(gè)問(wèn)題一直糾結(jié)好幾天了,還是解決不了。謝謝
47樓 huxingfu34072 2011-08-03 15:19發(fā)表 [回復(fù)]
??? 請(qǐng)問(wèn)matlab工具箱里面測(cè)距文件stereo_triangulation.m中ccd圖像坐標(biāo)到左相機(jī)坐標(biāo)是怎么變換的,那代碼寫(xiě)的好像跟說(shuō)明文件不一樣啊,謝謝!!!
46樓 sunnywish 2011-07-15 10:15發(fā)表 [回復(fù)]
??? 用這個(gè)方法標(biāo)定 不能得到本征矩陣和基礎(chǔ)矩陣啊
45樓 zjl1980 2011-06-13 13:33發(fā)表 [回復(fù)]
??? 沈程杳,您好,您能不能在百忙之中給我發(fā)一份BM算法的程序,我學(xué)習(xí)一下,前面的標(biāo)定都會(huì),可是到如何讀入xml文件,如何使用其進(jìn)行立體匹配的這些后面具體的東西就不會(huì)了,謝謝您了。我的郵箱是feng198086@sina.com
44樓 gold2011 2011-05-28 17:23發(fā)表 [回復(fù)]
??? 不錯(cuò)[e01]
43樓 gofi 2011-05-07 14:19發(fā)表 [回復(fù)]
??? 你好,我想問(wèn)下,得到的MAT格式文件如何轉(zhuǎn)換為XML格式
42樓 wanghs2419 2011-05-05 22:50發(fā)表 [回復(fù)]
??? 樓主你好,讀了你的文章真的是受益匪淺. 我也正在做雙目視覺(jué),剛剛開(kāi)始,還有很多不懂的地方. 如果可以的話,樓主能不能發(fā)一份從opencv讀入xml文件開(kāi)始,到雙目攝像頭得到disparity map的程序代碼. 僅供我學(xué)習(xí)使用.萬(wàn)分感謝! wanghs2419@hotmail.com
??? 謝謝!
41樓 rongtian_ye 2011-04-20 14:03發(fā)表 [回復(fù)]
??? 請(qǐng)問(wèn),用cvReprojectImageTo3D得到的數(shù)據(jù)用什么方法可以輸出來(lái)看?[e07]
40樓 rongtian_ye 2011-04-01 11:11發(fā)表 [回復(fù)]
??? 看了樓主寫(xiě)的,對(duì)用matlab得出的參數(shù)和后續(xù)的校準(zhǔn)、匹配之間的銜接還不是很清楚,xml文件是自己創(chuàng)建的嗎?放在哪里?程序要作何修改呢?
??? Re: feng533 2011-04-11 10:08發(fā)表 [回復(fù)]
??????? 回復(fù) rongtian_ye:您好,我也在做這方面的研究,遇到的問(wèn)題和你一樣,不知道你解決沒(méi)呢?希望和你探討下,我的郵箱:jian329089094@163.com
??????? Re: rongtian_ye 2011-04-20 14:06發(fā)表 [回復(fù)]
??????????? 回復(fù) feng533:我后來(lái)就沒(méi)有用matlab了,歡迎探討,lihao_scut@163.com
//****************************************************************************************************************************************************************************************
總結(jié)
- 上一篇: Tensorflow简单教程
- 下一篇: opencv 肤色