色婷婷AV无码久久精品,久久天天躁狠狠躁夜夜97,羞羞麻豆国产精品1区2区3区,啪影院免费线观看视频,思思久久er99精品亚洲

常州機(jī)器視覺培訓(xùn)

常州上位機(jī)軟件開發(fā)

常州工業(yè)機(jī)器人編程設(shè)計(jì)培訓(xùn)

常州PLC培訓(xùn)

常州PLC

常州PLC編程培訓(xùn)

常州電工培訓(xùn)

常州和訊plc培訓(xùn)中心歡迎您!
當(dāng)前位置:網(wǎng)站首頁 > 新聞中心 新聞中心
雙目相機(jī)深度檢測-常州上位機(jī)學(xué)習(xí),常州機(jī)器視覺學(xué)習(xí)
日期:2024-4-12 16:48:11人氣:  標(biāo)簽:常州上位機(jī)學(xué)習(xí) 常州機(jī)器視覺學(xué)習(xí)

雖然最近注意力已經(jīng)不可遏制地被神經(jīng)科學(xué)、大腦記憶機(jī)制和各種畢業(yè)活動(dòng)吸引過去了,但是還是覺得有必要把這段時(shí)間雙目視覺方面的進(jìn)展總結(jié)一下。畢竟從上一篇博文發(fā)表之后,很多同仁發(fā)E-mail來與我討論,很多原來的疑團(tuán),也在討論和一步步的試驗(yàn)中逐漸解決了。 


開篇之前,首先要感謝maxwellsdemon和wobject,沒有和你們的討論,也就沒有此篇的成文。


說到雙攝像頭測距,首先要復(fù)習(xí)一下測距原理,把Learning OpenCV翻到416和418頁,可以看到下面兩幅圖

image.png

圖1. 雙攝像頭模型俯視圖

image.png

圖2, 雙攝像頭模型立體視圖


圖1解釋了雙攝像頭測距的原理,書中Z的公式如下:

image.png

在OpenCV中,f的量綱是像素點(diǎn),Tx的量綱由定標(biāo)棋盤格的實(shí)際尺寸和用戶輸入值確定,一般總是設(shè)成毫米,當(dāng)然為了精度提高也可以設(shè)置為0.1毫米量級(jí),d=xl-xr的量綱也是像素點(diǎn)。因此分子分母約去,z的量綱與Tx相同


圖2解釋了雙攝像頭獲取空間中某點(diǎn)三維坐標(biāo)的原理。


可以看到,實(shí)際的坐標(biāo)計(jì)算利用的都是相似三角形的原理,其表達(dá)式就如同Q矩陣所示。

image.png

空間中某點(diǎn)的三維坐標(biāo)就是(X/W, Y/W, Z/W)。


因此,為了精確地求得某個(gè)點(diǎn)在三維空間里的距離,我們需要獲得的參數(shù)有焦距f、視差d、攝像頭中心距Tx。


如果還需要獲得X坐標(biāo)和Y坐標(biāo)的話,那么還需要額外知道左右像平面的坐標(biāo)系與立體坐標(biāo)系中原點(diǎn)的偏移cx和cy。其中f, Tx, cx和cy可以通過立體標(biāo)定獲得初始值,并通過立體校準(zhǔn)優(yōu)化,使得兩個(gè)攝像頭在數(shù)學(xué)上完全平行放置,并且左右攝像頭的cx, cy和f相同(也就是實(shí)現(xiàn)圖2中左右視圖完全平行對(duì)準(zhǔn)的理想形式)。而立體匹配所做的工作,就是在之前的基礎(chǔ)上,求取最后一個(gè)變量:視差d(這個(gè)d一般需要達(dá)到亞像素精度)。從而最終完成求一個(gè)點(diǎn)三維坐標(biāo)所需要的準(zhǔn)備工作。


在清楚了上述原理之后,我們也就知道了,所有的這幾步:標(biāo)定、校準(zhǔn)和匹配,都是圍繞著如何更精確地獲得f, d, Tx, cx和cy而設(shè)計(jì)的。


雙目測距的原理就說到這里,為了避免大家看到大段純敘述性的文字頭暈,下面的行文將會(huì)以FAQ的形式圍繞著實(shí)現(xiàn)雙攝像頭測距過程中碰到的幾點(diǎn)疑惑展開。當(dāng)然,其中的解答也只是我的個(gè)人理解,如有不當(dāng),敬請(qǐng)指正。


Q1:標(biāo)定時(shí)棋盤格的大小如何設(shè)定,對(duì)最后結(jié)果有沒有影響?


A:當(dāng)然有。在標(biāo)定時(shí),需要指定一個(gè)棋盤方格的長度,這個(gè)長度(一般以毫米為單位,如果需要更精確可以設(shè)為0.1毫米量級(jí))與實(shí)際長度相同,標(biāo)定得出的結(jié)果才能用于實(shí)際距離測量。一般如果尺寸設(shè)定準(zhǔn)確的話,通過立體標(biāo)定得出的Translation的向量的第一個(gè)分量Tx的絕對(duì)值就是左右攝像頭的中心距。一般可以用這個(gè)來驗(yàn)證立體標(biāo)定的準(zhǔn)確度。比如我設(shè)定的棋盤格大小為270 (27mm),最終得出的Tx大小就是602.8 (60.28mm),相當(dāng)精確。 


Q2:通過立體標(biāo)定得出的Tx符號(hào)為什么是負(fù)的?


A:這個(gè)其實(shí)我也不是很清楚。個(gè)人的解釋是,立體標(biāo)定得出的T向量指向是從右攝像頭指向左攝像頭(也就是Tx為負(fù)),而在OpenCV坐標(biāo)系中,坐標(biāo)的原點(diǎn)是在左攝像頭的。因此,用作校準(zhǔn)的時(shí)候,要把這個(gè)向量的三個(gè)分量符號(hào)都要換一下,最后求出的距離才會(huì)是正的。


但是這里還有一個(gè)問題,就是Learning OpenCV中Q的表達(dá)式,第四行第三列元素是-1/Tx,而在具體實(shí)踐中,求出來的實(shí)際值是1/Tx。這里我和maxwellsdemon討論下來的結(jié)果是,估計(jì)書上Q表達(dá)式里的這個(gè)負(fù)號(hào)就是為了抵消T向量的反方向所設(shè)的,但在實(shí)際寫OpenCV代碼的過程中,那位朋友卻沒有把這個(gè)負(fù)號(hào)加進(jìn)去。(一家之言,求更詳細(xì)的解釋)


Q3:cvFindStereoCorrespondenceBM的輸出結(jié)果好像不是以像素點(diǎn)為單位的視差?


A:在OpenCV2.0中,BM函數(shù)得出的結(jié)果是以16位符號(hào)數(shù)的形式的存儲(chǔ)的,出于精度需要,所有的視差在輸出時(shí)都擴(kuò)大了16倍(2^4)。其具體代碼表示如下:


dptr[y*dstep] = (short)(((ndisp - mind - 1 + mindisp)*256 + (d != 0 ? (p-n)*128/d : 0) + 15) >> 4);


可以看到,原始視差在左移8位(256)并且加上一個(gè)修正值之后又右移了4位,最終的結(jié)果就是左移4位


因此,在實(shí)際求距離時(shí),cvReprojectTo3D出來的X/W,Y/W,Z/W都要乘以16 (也就是W除以16),才能得到正確的三維坐標(biāo)信息


Q4:利用雙攝像頭進(jìn)行測距的時(shí)候世界坐標(biāo)的原點(diǎn)究竟在哪里? 


A:世界坐標(biāo)系的原點(diǎn)是左攝像頭凸透鏡的光心。


說起這個(gè),就不得不提到針孔模型。如圖3所示,針孔模型是凸透鏡成像的一種簡化模型。當(dāng)物距足夠遠(yuǎn)時(shí)(遠(yuǎn)大于兩倍焦距),凸透鏡成像可以看作是在焦距處的小孔成像。(ref: http://bak1.beareyes.com.cn/2/lib/200110/04/20011004006.htm)

image.png

圖3. 針孔模型


在實(shí)際計(jì)算過程中,為了計(jì)算方便,我們將像平面翻轉(zhuǎn)平移到針孔前,從而得到一種數(shù)學(xué)上更為簡單的等價(jià)形式(方便相似三角形的計(jì)算),如圖4所示。

image.png

圖4. 針孔模型的數(shù)學(xué)等價(jià)形式


因此,對(duì)應(yīng)圖2就可以知道,世界坐標(biāo)系原點(diǎn)就是左攝像頭針孔模型的針孔,也就是左攝像頭凸透鏡的光心


Q5:f和d的單位是像素,那這個(gè)像素到底表示什么,它與毫米之間又是怎樣換算的?


A:這個(gè)問題也與針孔模型相關(guān)。在針孔模型中,光線穿過針孔(也就是凸透鏡中心)在焦距處上成像,因此,圖3的像平面就是攝像頭的CCD傳感器的表面。每個(gè)CCD傳感器都有一定的尺寸,也有一定的分辨率,這個(gè)就確定了毫米與像素點(diǎn)之間的轉(zhuǎn)換關(guān)系。舉個(gè)例子,CCD的尺寸是8mm X 6mm,分辨率是640X480,那么毫米與像素點(diǎn)之間的轉(zhuǎn)換關(guān)系就是80pixel/mm。


在實(shí)際運(yùn)用中,我們?cè)跀?shù)學(xué)上將這個(gè)像平面等效到小孔前(圖4),這樣就相當(dāng)于將在透鏡中心點(diǎn)之前假設(shè)了一塊虛擬的CCD傳感器。


Q6:為什么cvStereoRectify求出的Q矩陣cx, cy, f都與原來的不同?


A:這個(gè)在前文有提到過。在實(shí)際測量中,由于攝像頭擺放的關(guān)系,左右攝像頭的f, cx, cy都是不相同的。而為了使左右視圖達(dá)到完全平行對(duì)準(zhǔn)的理想形式從而達(dá)到數(shù)學(xué)上運(yùn)算的方便,立體 校準(zhǔn)所做的工作事實(shí)上就是在左右像重合區(qū)域最大的情況下,讓兩個(gè)攝像頭光軸的前向平行,并且讓左右攝像頭的f, cx, cy相同。因此,Q矩陣中的值與兩個(gè)instrinsic矩陣的值不一樣就可以理解了。


實(shí)驗(yàn)結(jié)果:


實(shí)驗(yàn)下來,雖然Block Matching算法本身對(duì)精度有所限制,但測距基本能達(dá)到能讓人接受的精度,結(jié)果如下圖5所示

image.png

圖5. OpenCV雙攝像頭測距結(jié)果




上圖中,中、左、右三個(gè)物體分別被放在離攝像頭50cm, 75cm和90cm的位置?梢钥闯鰷y距的結(jié)果相當(dāng)不錯(cuò)。當(dāng)然,上面這幅圖是比較好的結(jié)果。由于BM算法的限制,同一點(diǎn)云中相同距離的點(diǎn)一般會(huì)有正負(fù)2厘米之內(nèi)的誤差。


圖6是利用雙目攝像頭測物體長寬的結(jié)果,可以看出結(jié)果似乎不太準(zhǔn)確。。。

image.png

圖6. OpenCV雙攝像頭測邊長結(jié)果




其中,物體寬為117-88=29mm,但實(shí)際寬度為5.2cm,物體高位71-13=58mm,但實(shí)際高度為13cm。這方面的誤差還是比較難以理解


此外,還有一個(gè)問題至今尚未完全理解,就是雙目攝像頭的中心距,為什么采用Tx而不是T向量的長度。因?yàn)槿绻笥乙晥D重合區(qū)域最大化的話兩個(gè)攝像頭的光軸都要與T垂直才是(如圖7),這樣的話,校正后兩個(gè)攝像頭的中心距應(yīng)該是T才對(duì)。不知道我這樣的理解對(duì)不對(duì)?

image.png

圖7. 雙攝像頭立體校準(zhǔn)俯視圖

本文網(wǎng)址:
下一篇:沒有資料

相關(guān)信息:
版權(quán)所有 CopyRight 2006-2017 江蘇和訊自動(dòng)化設(shè)備有限公司 常州自動(dòng)化培訓(xùn)中心 電話:0519-85602926 地址:常州市新北區(qū)府琛商務(wù)廣場2號(hào)樓1409室
蘇ICP備14016686號(hào)-2 技術(shù)支持:常州山水網(wǎng)絡(luò)
本站關(guān)鍵詞:常州PLC培訓(xùn) 常州PLC編程培訓(xùn) 常州PLC編程 常州PLC培訓(xùn)班 網(wǎng)站地圖 網(wǎng)站標(biāo)簽
在線與我們?nèi)〉寐?lián)系
色婷婷AV无码久久精品,久久天天躁狠狠躁夜夜97,羞羞麻豆国产精品1区2区3区,啪影院免费线观看视频,思思久久er99精品亚洲