<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SLAM基礎(chǔ):相機(jī)與圖像

          共 4049字,需瀏覽 9分鐘

           ·

          2022-03-10 11:49

          點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺”公眾號(hào)

          重磅干貨,第一時(shí)間送達(dá)

          來自 | 知乎? ?

          鏈接丨h(huán)ttps://zhuanlan.zhihu.com/p/33583981

          本文僅作學(xué)術(shù)交流,如有侵權(quán),請(qǐng)聯(lián)系后臺(tái)刪除。


          相機(jī)模型


          相機(jī)拍照,是將三維世界中的一個(gè)三維點(diǎn)映射到對(duì)應(yīng)的二維影像平面的過程。這個(gè)過程能夠用一個(gè)幾何模型來進(jìn)行描述。在各種各樣的模型中,最簡(jiǎn)單也最常用的就是針孔相機(jī)模型,也叫針孔模型。這個(gè)模型較為簡(jiǎn)單,而由于相機(jī)鏡頭上透鏡的存在,成像的過程中會(huì)有畸變產(chǎn)生。為此,需要另外對(duì)畸變進(jìn)行建模。

          ?

          針孔相機(jī)模型


          初中物理里都會(huì)有一個(gè)小孔成像的實(shí)驗(yàn),這個(gè)小孔成像的模型可以看作是針孔相機(jī)模型的基礎(chǔ)。

          這里盜圖一張,來自高博的《視覺slam十四講》

          如上圖所示,相機(jī)坐標(biāo)系為O-x-y-z,想象人站在相機(jī)后面,O 為相機(jī)光心,z軸指向相機(jī)前方,x 軸向右而y 軸向下。真實(shí)世界中的一個(gè)點(diǎn)P,經(jīng)過小孔O 投影后,落在物理成像平面O'-x'-y' (也稱像平面坐標(biāo)系)上,稱為像點(diǎn)P'。

          假設(shè)P在相機(jī)坐標(biāo)系下的坐標(biāo)為[X, Y, Z]T,P' 為[X', Y', Z']T,焦距為f。根據(jù)相似三角形有:

          其中,負(fù)號(hào)表示所成的像是倒立的。

          習(xí)慣上把成像平面對(duì)稱到相機(jī)的前方,再整理一下上式即可得:

          至此,我們描述了點(diǎn)P 和它的像之間的空間關(guān)系。在數(shù)碼相機(jī)中,我們最終得到的是由一個(gè)個(gè)像素組成的數(shù)字影像,這需要在成像平面上進(jìn)行采樣量化。這里就不針對(duì)二者進(jìn)行介紹了。

          在物理成像平面上定義一個(gè)像素坐標(biāo)系?o'-u-v。一樣地想象人站在相機(jī)之后,其原點(diǎn)o' 位于圖像的左上角,u軸向右和x 軸平行,v 軸向下和y 軸平行。假設(shè)P' 的像素坐標(biāo)為[u, v]T。像素坐標(biāo)系和物理成像平面O'-x'-y' 之間相差縮放平移。因此,假設(shè)像素坐標(biāo)在u軸上縮放了 倍,在v 軸上縮放 倍。同事,二者之間的平移量為[cx, cy]T。那么,P' 在物理成像平面下的坐標(biāo)和其像素坐標(biāo)間的關(guān)系為:

          將式(2) 代入并??合并成??,把??合并成?(這也是x 軸上的焦距和y 軸上的焦距不同的原因),可得:

          上式就是相機(jī)坐標(biāo)系下,一個(gè)空間點(diǎn)的三維坐標(biāo)到其對(duì)應(yīng)像點(diǎn)到像素坐標(biāo)到轉(zhuǎn)換關(guān)系。其中,f 的單位為米,??的單位為像素/米。

          利用齊次坐標(biāo),將上市寫成矩陣形式可得:

          上式中,K?稱為相機(jī)矩陣或者內(nèi)參數(shù)矩陣,因?yàn)樗亩际窍鄼C(jī)的參數(shù)。一般習(xí)慣把Z 放在左側(cè),計(jì)算完后再對(duì)結(jié)果除以其第三個(gè)值以得到像素坐標(biāo)。通常認(rèn)為相機(jī)矩陣在出廠之后是固定的并由廠家給出。如果沒有則可以對(duì)相機(jī)進(jìn)行標(biāo)定以得到相機(jī)內(nèi)參。

          注意一直到這里,我們都沒有涉及到相機(jī)的位姿T,因?yàn)槲覀円恢痹谙鄼C(jī)坐標(biāo)系下。相機(jī)的位姿描述了相機(jī)在世界坐標(biāo)系下的位置和姿態(tài),也給出了世界坐標(biāo)系到相機(jī)坐標(biāo)系的變換關(guān)系。舉例來說,對(duì)于一組照片,如果取第一張照片對(duì)應(yīng)的相機(jī)坐標(biāo)系為世界坐標(biāo)系,則對(duì)應(yīng)的相機(jī)位姿為旋轉(zhuǎn)矩陣為單位陣而平移向量為0。而其他照片對(duì)應(yīng)的相機(jī)位姿為該世界坐標(biāo)系下到該照片對(duì)應(yīng)的相機(jī)坐標(biāo)系的變換關(guān)系。

          由于相機(jī)在運(yùn)動(dòng),所以點(diǎn)P 的相機(jī)坐標(biāo)應(yīng)該是它的世界坐標(biāo),記作Pw,根據(jù)相機(jī)當(dāng)前的位姿變換到相機(jī)坐標(biāo)系下的結(jié)果。

          上式使用了齊次坐標(biāo)并且包含了一次齊次坐標(biāo)到非齊次坐標(biāo)的變換。其中,Rt?或著T?表示相機(jī)的外參數(shù),它會(huì)隨著相機(jī)的運(yùn)動(dòng)而發(fā)生改變,是SLAM 過程中待估計(jì)的目標(biāo),表示著機(jī)器人的軌跡。最后,上式的T?為Tcw,表示世界坐標(biāo)系到相機(jī)坐標(biāo)系的變換,其轉(zhuǎn)置為Twc

          注意到齊次坐標(biāo)乘上一個(gè)非零常數(shù)后表示的是同一個(gè)點(diǎn),所以可以把上市左側(cè)中的Z 去掉。

          前面我們提到這個(gè)式子包含一次齊次坐標(biāo)到非齊次坐標(biāo)的變換。因?yàn)橛覀?cè)的TPw?是一個(gè)4維向量。將之除以最后一維并取前三維得到相機(jī)坐標(biāo)系下的三維坐標(biāo)。對(duì)于這個(gè)三維向量,按照齊次坐標(biāo)的方式,可以再對(duì)其最后一維進(jìn)行歸一化處理,就得到了P 在相機(jī)歸一化平面?上的投影:

          此時(shí),Pc?可以看成是一個(gè)二維的齊次坐標(biāo),稱為歸一化坐標(biāo)。它可以看成是位于相機(jī)前方z = 1 處的平面上,該平面稱為歸一化平面。Pc 經(jīng)過相機(jī)內(nèi)參后就得到了像素坐標(biāo),所以可以把像素坐標(biāo)[u, v]T 看成是歸一化平面上的點(diǎn)進(jìn)行量化測(cè)量的結(jié)果。

          盜圖一張,來自高博的《視覺slam十四講》

          這一小節(jié)我們介紹了相機(jī)模型和各個(gè)坐標(biāo)系的轉(zhuǎn)換關(guān)系。其中涉及了世界坐標(biāo)系,相機(jī)坐標(biāo)系,歸一化坐標(biāo),像平面坐標(biāo)系和像素坐標(biāo)系。要注意它們之間的區(qū)別和兩兩之間的轉(zhuǎn)換關(guān)系。

          畸變

          為了獲得好的成像效果,一般會(huì)在相機(jī)前方加上各種透鏡。這就會(huì)對(duì)光線的傳播產(chǎn)生新的影響:

          • 透鏡自身對(duì)光線傳播的影響;

          • 由于機(jī)械組裝中的誤差,導(dǎo)致透鏡和稱像平面不完全平行而產(chǎn)生的誤差。

          第一種原因引起的畸變稱為徑向畸變。因?yàn)樵趯?shí)際的加工過程中,透鏡一般是中心對(duì)稱的,這就使得這種畸變通常也是徑向?qū)ΨQ。它主要分為兩大類:桶形畸變枕形畸變

          盜圖一張,來自高博的《視覺slam十四講》

          可以看大,桶形畸變是由圖像的放大率隨著光軸之間的距離增加而減小;枕形畸變則相反。它們是徑向畸變,因此穿過圖像中心和光軸有交點(diǎn)的直線能保持形狀不變。

          而第二種原因引入的畸變稱為切向畸變,并不存在對(duì)稱性質(zhì)。

          前面說過,假設(shè)某一點(diǎn)P的歸一化表示為[x, y]T。也可以用極坐標(biāo)來表示它,寫作??. 徑向畸變可以看作是坐標(biāo)點(diǎn)沿著長(zhǎng)度方向發(fā)生了變化??,也就是其距離原點(diǎn)的長(zhǎng)度發(fā)生了變化;切向畸變可以看成是坐標(biāo)點(diǎn)沿著切線方向發(fā)生了變化,也就是水平夾角變化了??。

          對(duì)于徑向畸變,由于它們都是隨著與中心之間的距離增加而增加,因此可以用一個(gè)多項(xiàng)式函數(shù)來描述畸變前后的坐標(biāo)變化:

          在上式中,對(duì)于畸變較小的圖像中心區(qū)域,畸變糾正主要是k1 起作用;對(duì)于畸變較大的邊緣區(qū)域,主要是k2 起作用。根據(jù)所用鏡頭,可以適當(dāng)使用合適的校正系數(shù)。

          對(duì)于切向畸變,可以使用另外的兩個(gè)參數(shù)p1, p2 來進(jìn)行糾正:

          聯(lián)合上面兩個(gè)式子,對(duì)于相機(jī)坐標(biāo)系中的一點(diǎn)P [X, Y, Z],找到其對(duì)應(yīng)像點(diǎn)的像素坐標(biāo)的過程可以描述為:

          1. 將三維空間點(diǎn)投影到歸一化圖像平面。設(shè)它的歸一化坐標(biāo)為[x, y]T;

          2. 進(jìn)行畸變矯正:

          3. 通過相機(jī)的內(nèi)參數(shù),利用糾正后的點(diǎn)求的該點(diǎn)的像素坐標(biāo):

          ?

          雙目相機(jī)模型


          針孔相機(jī)模型描述了單個(gè)相機(jī)的成像過程。但僅有一張相片是不足以確定對(duì)應(yīng)空間點(diǎn)的具體位置的。考慮相機(jī)光心O 和像點(diǎn)p,二者的連線在物方空間是一條射線,這條射線上的所有點(diǎn)都可能投影到這個(gè)像點(diǎn)上。只有當(dāng)P的深度確定時(shí),才能確定它的空間位置。

          確定深度的方法有很多種,人眼就是一個(gè)典型的雙目相機(jī)模型:通過左右眼看到的景物的差異(稱為視差)來判斷物體與我們之間的距離。利用雙目相機(jī),同時(shí)采集左右相機(jī)的圖像,計(jì)算圖像間的時(shí)差,以此估計(jì)每一個(gè)像素的深度。

          雙目相機(jī)一般由左右兩個(gè)相機(jī)組成,可以把兩者都看作是針孔相機(jī)。左右相機(jī)間的距離稱為基線(一般二者嚴(yán)格平行,距離固定)。

          考慮一個(gè)空間點(diǎn)P,它在左右相機(jī)上的像點(diǎn)分別為Pl, Pr。在理想情況下,這兩個(gè)像的位置的差異只出現(xiàn)在x 軸上(因?yàn)樽笥蚁鄼C(jī)嚴(yán)格平行,只在x 軸上有差異)。記左右像點(diǎn)的x 軸上的像素坐標(biāo)分別為uL, uR。根據(jù)下圖所示的相似三角形有:

          盜圖一張,來自高博的《視覺slam十四講》

          設(shè)??為左右像點(diǎn)的橫坐標(biāo)之差,即視差。根據(jù)上市則有:

          可以看到,視差與距離成反比。時(shí)差越大,距離越近。此外,基線d 確定了雙目相機(jī)能確定的深度的最大值。基線越長(zhǎng),能測(cè)得的距離就越遠(yuǎn)。

          RGB-D 相機(jī)模型

          RGB-D 相機(jī)可以主動(dòng)測(cè)量每個(gè)像素的深度。目前的RGB-D 相機(jī)按原理可以分為兩大類:

          1. 通過紅外結(jié)構(gòu)光?來測(cè)量像素深度,如Kinect 1;

          2. 通過飛行時(shí)間?(time-of-flight) 來測(cè)量像素深度,如Kinect 2.

          測(cè)量了深度后,RGB-D 相機(jī)通常按照(生產(chǎn)時(shí)就確定好的)相機(jī)擺放位置,自動(dòng)完成深度圖和彩色圖之間的配對(duì)工作,輸出一一對(duì)應(yīng)的彩色圖和深度圖。如此,我們就可以在兩張影像上的同一個(gè)像素位置讀取到色彩信息和深度信息,計(jì)算像素的三維坐標(biāo)。

          圖像

          在計(jì)算機(jī)中,圖像是一個(gè)二維數(shù)組/ 矩陣。以最簡(jiǎn)單的灰度圖為例,每個(gè)像素位置(x, y) 對(duì)應(yīng)一個(gè)灰度值I。則一個(gè)寬為w 高為h 的圖像可以表示為:

          由于存儲(chǔ)空間和數(shù)值精度的限制,我們無法表達(dá)出所有色彩。常用0 - 255 的整數(shù)(即一個(gè)字節(jié))來表達(dá)圖像的灰度強(qiáng)度。則一張寬640 高480?像素分辨率的灰度圖就表示為:

          unsigned char image[480][640]

          注意到高度為圖像的行數(shù)寬度則為列數(shù)。而計(jì)算機(jī)中第一個(gè)下標(biāo)為數(shù)組的行,第二個(gè)下標(biāo)為數(shù)組的列。表示為:

          盜圖一張,來自高博的《視覺slam十四講》

          注意到這里y 軸是行而x 軸是列。所以如果我們想訪問像素坐標(biāo)為 (x, y) 的像素,則應(yīng)寫為:

           unsigned char pixel = image[y][x]

          請(qǐng)讀者注意這里x 和y 的順序。這是很多程序錯(cuò)誤的原因。

          彩色圖像由于在一個(gè)位置上同時(shí)有RGB 分別對(duì)應(yīng)的像素強(qiáng)度,所以引入了通道?(channel) 的概念。對(duì)于每一個(gè)像素,用三個(gè)通道分別保留其R、G、B 上的像素值。和灰度圖一樣,每個(gè)通道一般也是一個(gè)字節(jié)(8位),彩色圖的一個(gè)像素需要24 位存儲(chǔ)空間。

          對(duì)于RGB-D 相機(jī)產(chǎn)生的深度圖,距離單位一般為毫米,8 位存儲(chǔ)空間只能表示0.255 米,顯然是不夠的。一般采用16位整數(shù)來記錄深度圖的信息。16位整數(shù)能表示0 - 65535 之間的數(shù)值,最大值大概為65米。從這里我們也可以看出,RGB-D 相機(jī)不能表示大范圍的距離信息。


          本文僅做學(xué)術(shù)分享,如有侵權(quán),請(qǐng)聯(lián)系刪文。

          —THE END—
          瀏覽 78
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色小姐噜噜久久 | 午夜草逼 | 操极品美女 | 999欧美精选 | 欧美在线日韩在线 |