Pinhole Camera Model(針孔相機(jī)模型)
????????針孔相機(jī)是一種沒有鏡頭、只有一個(gè)小光圈的簡(jiǎn)單相機(jī)。 光線穿過光圈并在相機(jī)的另一側(cè)呈現(xiàn)倒立的圖像。為了建模方便,我們可以把物理成像平面(image plane)上的圖像移到實(shí)際場(chǎng)景(3D object)和焦點(diǎn)(focal point)之間,把他想象成一個(gè)和物理成像平面等大小的虛擬圖像平面(Virtual image plane),這樣一來就不再是倒立的圖像,而是直立圖像。
?
????????有了相機(jī)后,上圖中的藍(lán)色盒子就變成了相機(jī),上圖中的物理成像平面Image plane也被數(shù)字化到由一個(gè)個(gè)pixel組成的sensor上,并保存下來。因此,對(duì)于相機(jī)而言,上圖中的焦點(diǎn)就是相機(jī)的鏡頭,而上圖中的物理成像平面,需要被轉(zhuǎn)換成像素平面(pixel plane),物理成像平面(image plane)與像素平面(pixel plane)大小相同,計(jì)量單位不同。物理成像平面的單位是一個(gè)物理單位,例如mm,,而像素平面實(shí)際上就是一個(gè)二維圖像,他的單位實(shí)際上是某某pixel在圖像中的第幾行第幾列。
為了后續(xù)的描述方便我們這里先定義四個(gè)坐標(biāo)系:
1,二維像平面(焦平面)坐標(biāo)系Image plane,原點(diǎn)為,坐標(biāo)軸用,表示。
2,二維圖像坐標(biāo)系pixel plane,原點(diǎn)為,坐標(biāo)軸用,表示。
3,三維相機(jī)坐標(biāo)系pinhole plane/camera,原點(diǎn)為,坐標(biāo)軸用,,表示。
4,三維世界坐標(biāo)系world,原點(diǎn)為,坐標(biāo)軸用,,表示。
? ? ? ? 將3D世界場(chǎng)景映射成2D圖像(像素平面pixel plane)總共分兩步,第一步是把定義在世界坐標(biāo)系中的實(shí)際3D物體映射到3D相機(jī)極坐標(biāo)系中。相當(dāng)于是把實(shí)際世界中的物體分別通過兩個(gè)不同的坐標(biāo)系來表示,然后通過找到這兩個(gè)不同坐標(biāo)系之間的差異,建立這兩個(gè)坐標(biāo)系之間的聯(lián)系。這一轉(zhuǎn)換關(guān)系就是下圖中到的轉(zhuǎn)換。
????????從3D世界坐標(biāo)系(world coordinates)到3D相機(jī)坐標(biāo)系(camera coordinates),需要用到外參(extrinsic parameters)或外參矩陣(extrinsic matrix)--->[R t]。
????????其次,從3D相機(jī)坐標(biāo)系(camera coordinates)到2D像素坐標(biāo)系(pixel plane)需要用到內(nèi)參(intrinsic parameters)或內(nèi)參矩陣(intrinsic matrix)--->K。同樣是把成像后的圖像,用兩個(gè)不同的坐標(biāo)系來表示,然后再建立這兩個(gè)坐標(biāo)系(物理成像坐標(biāo)系與二維圖像坐標(biāo)系)之間的聯(lián)系,使兩者可以相互轉(zhuǎn)換。
extrinsic parameters外參:世界坐標(biāo)系到相機(jī)坐標(biāo)系的轉(zhuǎn)換
? ? ? ? 對(duì)于世界坐標(biāo)系中的某一點(diǎn)大M而言,他本身是存在了,并不會(huì)因?yàn)槲覀冇袥]有建立坐標(biāo)系而受影響。但當(dāng)我們?nèi)藶榈慕⒆鴺?biāo)系以后,這個(gè)點(diǎn)在我們所定義的坐標(biāo)系下就有坐標(biāo)值了。首先,對(duì)于點(diǎn)M而言,他在世界坐標(biāo)系下可表示為M=[],而在相機(jī)坐標(biāo)系中M=[],這是同一個(gè)點(diǎn),只不過在不同的坐標(biāo)系所對(duì)應(yīng)的坐標(biāo)值不同。(其中:中的上角標(biāo)“M”表示點(diǎn)M,下角標(biāo)"w"表示世界坐標(biāo)系worl,以此類推,關(guān)于下角標(biāo)的定義可參照我上面定義的四個(gè)坐標(biāo)系。)
? ? ? ? ?相機(jī)坐標(biāo)系相對(duì)于世界坐標(biāo)系而言,我們不能保證兩個(gè)坐標(biāo)系的原點(diǎn)完全重合,因此,對(duì)于x-y-z都存在一定的位移,由一個(gè)3x1矩陣t(translation)表示,其中每個(gè)元素分別對(duì)應(yīng)了x-y-z方向上的位移:
此外,我們也不能保證相機(jī)在拍照時(shí)沒有任何角度的偏差,因此,這兩個(gè)坐標(biāo)系的坐標(biāo)軸存在一個(gè)整體的旋轉(zhuǎn)。由一個(gè)3x3矩陣R(rotation)表示:
二者合并得到增廣矩陣[R|t],使得:
?
其中:
????????這一數(shù)學(xué)表達(dá)式的意義是:一個(gè)在世界坐標(biāo)系中定義的點(diǎn),如果要用相機(jī)坐標(biāo)系來表示,可以用矩陣[R|t]左乘該點(diǎn)的世界坐標(biāo)系坐標(biāo)實(shí)現(xiàn)。
這樣一來就完成了大M點(diǎn)在世界坐標(biāo)系下的坐標(biāo)值到相機(jī)坐標(biāo)系下的坐標(biāo)值的轉(zhuǎn)化:
Intrinsic parameters內(nèi)參: 現(xiàn)實(shí)世界中的一點(diǎn)在相機(jī)坐標(biāo)系下的坐標(biāo)值到圖像上的一點(diǎn)在圖像坐標(biāo)系中的坐標(biāo)值之間的轉(zhuǎn)換
? ? ? ? 通過前面的研究,我們找到了世界坐標(biāo)系與相機(jī)坐標(biāo)系的聯(lián)系,相當(dāng)于學(xué)會(huì)了用相機(jī)坐標(biāo)系來表示世界的物體(3D Object),現(xiàn)在,我們用相機(jī)坐標(biāo)系來分別描述世界中的實(shí)際物體與“挪到前面來的”物理成像平面中物體的像,即,在相機(jī)坐標(biāo)系中用不同的坐標(biāo)值定義了世界中的實(shí)際物體大M點(diǎn)與虛擬成像平面上的像---小m點(diǎn)?(圖一),并找到他們之間的聯(lián)系。
?(圖一)
????????表示光心,也叫攝影中心。過光心做垂直于物理成像平面的直線叫主光軸(principal axis),垂點(diǎn)叫主點(diǎn)(principal point)。光心與主點(diǎn)之間的距離為焦距f。
? ? ? ? 現(xiàn)在,在相機(jī)坐標(biāo)系中,我們令世界中的某一點(diǎn)大M的坐標(biāo)值為M=[]。在虛擬成像平面中所成的像為小m,且小m的坐標(biāo)值為m=[](注意:x-y-z的上角標(biāo),我用大寫的M表示實(shí)際點(diǎn)大M所對(duì)應(yīng)的坐標(biāo)值,用小寫的m表示虛擬成像平面中的點(diǎn)小m)。
????????同時(shí),我們令主光軸與相機(jī)坐標(biāo)系中的軸重合,單看相機(jī)坐標(biāo)系中由與軸組成的二維平面(圖二),我們令大M在這一平面上的投影為,令小m在-平面上的投影為。
?(圖二)
????????在三角形中,線段的長度為小m在軸方向的坐標(biāo)值,線段的長度為小m在軸方向的坐標(biāo)值。在三角形中,線段的長度為,線段的長度為。根據(jù)三角形與三角形相似,可以建立如下關(guān)系:
????????又因?yàn)樾點(diǎn)一定在物理成像平面上,則,在3D相機(jī)坐標(biāo)系中,的坐標(biāo)值就等于焦距f,代入上式后得出:
????????同樣,如果單看相機(jī)坐標(biāo)系中的與軸所組成的平面(圖三),且用表示大M在這一平面上的投影,用表示小m在-平面上的投影:
??(圖三)
根據(jù)相似相似三角形?與三角形,可以建立如下關(guān)系
????????這樣一來,我們就建立了世界中的大M與虛擬成像平面上的對(duì)應(yīng)點(diǎn)小m,在相機(jī)坐標(biāo)系中的關(guān)系:
(上面兩式合稱為公式1)
相機(jī)坐標(biāo)系到像平面坐標(biāo)系:
????????又因?yàn)椋摂M成像平面中的小m點(diǎn),不僅在3D相機(jī)坐標(biāo)系中,也在2D像平面坐標(biāo)系中。且,像平面坐標(biāo)系的中心在主光軸上。這就意味著,對(duì)于同一個(gè)點(diǎn)光心O而言,他在相機(jī)坐標(biāo)系下的坐標(biāo)值和在2D像平面坐標(biāo)系下的坐標(biāo)值相同。即,光心在相機(jī)坐標(biāo)系下的坐標(biāo)值為[=0,=0],同時(shí),他在2D像平面坐標(biāo)系中的坐標(biāo)值也等于[=0,=0]
? ? ? ? 同理,已知相機(jī)坐標(biāo)系中小m點(diǎn)的坐標(biāo)值為m=[,],令小m點(diǎn)在相平面中的坐標(biāo)值為m=[,],則有:
(公式2)
如(圖四)所示:
?(圖四)
這就完成了相機(jī)坐標(biāo)系到像平面坐標(biāo)系的轉(zhuǎn)換。
像平面坐標(biāo)系到圖像坐標(biāo)系:
????????在相機(jī)內(nèi)部,物理成像平面被sensor以pixel為單位采樣了,且,圖像坐標(biāo)系的原點(diǎn)在圖像的左上角,見(圖五)。因此,像平面坐標(biāo)系中的小m點(diǎn)的坐標(biāo)值,還需要一個(gè)轉(zhuǎn)換關(guān)系。
?(圖五)
????????一方面:圖像坐標(biāo)系是用mxn個(gè)像素對(duì)像平面坐標(biāo)系的采樣。所以需要一個(gè)由mm為單位的像平面坐標(biāo)系到以pixel為單位的圖像坐標(biāo)系的轉(zhuǎn)換。
????????假設(shè)圖像傳感器的物理尺寸,也就是物理成像平面的大小為mxn(mm),傳感器保存的圖像尺寸為wxh(pixel)。要想把mxn的像保存到wxh的圖上,則,以mm為單位的物理成像平面與以pixel為單位的圖像之間的比例關(guān)系為:
第一個(gè)等式表示,圖像中每個(gè)pixel的物理尺寸有多寬mm。
第二個(gè)等式表示,圖像中每個(gè)pixel的物理尺寸有多高mm。
????????這樣一來,就能用圖像坐標(biāo)系的坐標(biāo)值(第幾行第幾列)來替換小m點(diǎn)在像平面坐標(biāo)系中的坐標(biāo)值(即,在方向的長度為(mm)和在方向的長度為(mm)):
(公式3)
????????另一方面:二維圖像坐標(biāo)系的原點(diǎn)在圖像(sensor)的左上角,而像平面坐標(biāo)系的原點(diǎn)則是在senor的中心。因此,對(duì)于同一個(gè)點(diǎn)光心O而言,他在2D圖像坐標(biāo)系下的坐標(biāo)值和在2D像平面坐標(biāo)系下的坐標(biāo)值不同,這兩個(gè)坐標(biāo)值之間存在一個(gè)偏移量Offset。我們?cè)趫D像坐標(biāo)系內(nèi)定義方向上到的偏移量為,他等于圖像的寬度的一半---w/2,在方向上到的偏移量為,他等于圖像的長度的一半---h/2。
光心O在圖像坐標(biāo)系中的坐標(biāo)值是:
(公式4)
其中:
? ? ? ? 公式4的意思是:光心O在圖像平面中的坐標(biāo)值等于他在像平面中的坐標(biāo)值加上一定的偏移量。同理,已經(jīng)轉(zhuǎn)換到圖像坐標(biāo)系內(nèi)的小m點(diǎn)的坐標(biāo)值(見公式3),加上Offset后為:
(公式5)?
進(jìn)一步,將公式2帶入公式5后有:
然后再帶入公式1,得到:
(公式6)
我們令,則上式可簡(jiǎn)化為:
(公式7)
其中:
1,表示以mm為單位的物理焦距f,在橫向等于多少個(gè)像素。
2,表示以mm為單位的物理焦距f,在豎向等于多少個(gè)像素。
公式7用矩陣的方式可表示為:
一般情況下,在x方向與y方向的偏移量正好是圖像長寬的一半,即[,]。這樣一來內(nèi)參矩陣可改為:
其中的3x3矩陣,就叫內(nèi)參矩陣,用大寫的英文字母K表示。
?總結(jié):
最后我們來梳理一下整個(gè)轉(zhuǎn)換過程:
1,大M點(diǎn)在世界坐標(biāo)系下的坐標(biāo)值[],通過外參矩陣[R t]得到了大M點(diǎn)在相機(jī)坐標(biāo)系中的坐標(biāo)值[]。(通過同一點(diǎn)在不同坐標(biāo)系中的坐標(biāo)值,找到兩個(gè)坐標(biāo)系之間的關(guān)系。)
2,在相機(jī)坐標(biāo)系中,根據(jù)相似三角形求出大M點(diǎn)在虛擬成像平面中所對(duì)應(yīng)的小m點(diǎn)的坐標(biāo)值[]。(通過同一坐標(biāo)系下的不同點(diǎn),找到這兩個(gè)點(diǎn)之間坐標(biāo)值的聯(lián)系)
3,根據(jù)虛擬成像平面在相機(jī)坐標(biāo)系中的位置,根據(jù)小m點(diǎn)在相機(jī)坐標(biāo)系下的坐標(biāo)值[,,]得到他在像平面坐標(biāo)系下的坐標(biāo)值[=,=]。(通過同一點(diǎn)在不同坐標(biāo)系中的坐標(biāo)值,找到兩個(gè)坐標(biāo)系之間的關(guān)系。)
4,最后,根據(jù)像平面坐標(biāo)系與圖像坐標(biāo)系的相對(duì)關(guān)系,通過內(nèi)參矩陣把小m點(diǎn)在像平面中的坐標(biāo)值[,]轉(zhuǎn)到了圖像坐標(biāo)系中所對(duì)應(yīng)的坐標(biāo)值[,]。
參考文獻(xiàn):
????????1,https://www.cnblogs.com/xiaohuidi/p/15711767.html
????????2,What Is Camera Calibration?- MATLAB & Simulink- MathWorks 中國
????????3,2.3 透視投影的相機(jī)模型_嗶哩嗶哩_bilibili
(配圖與本文無關(guān))?文章來源:http://www.zghlxwxcb.cn/news/detail-655401.html
版權(quán)聲明:文中的部分圖片,文字或者其他素材,可能來自很多不同的網(wǎng)站和說明,在此沒法一一列出,如有侵權(quán),請(qǐng)告知,立即刪除。歡迎大家轉(zhuǎn)載,但是,如果有人引用或者COPY我的文章,必須在你的文章中注明你所使用的圖片或者文字來自于我的文章,否則,侵權(quán)必究。 ----松下J27?文章來源地址http://www.zghlxwxcb.cn/news/detail-655401.html
到了這里,關(guān)于數(shù)字圖像處理 --- 相機(jī)的內(nèi)參與外參(CV學(xué)習(xí)筆記)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!