逆透视变换详解 及 代码实现(一)
逆透視變換詳解 及 代碼實(shí)現(xiàn)(一) 中主要是原理的說明:
一、世界坐標(biāo)軸和攝像機(jī)坐標(biāo)軸
從下圖中可以看到,世界坐標(biāo)為(X,Y,Z) ?相機(jī)坐標(biāo)為(Xc,Yc,Zc)
而世界坐標(biāo)變換到相機(jī)坐標(biāo)存在一個(gè)旋轉(zhuǎn)矩陣變換R以及一個(gè)位移變換T。
根據(jù)上圖可以得到世界坐標(biāo)到相機(jī)坐標(biāo)的公式變換!!
? ? ? ? ? ? ??? ? ??? ?世界坐標(biāo)到相機(jī)坐標(biāo)的公式
如果假設(shè)沒有坐標(biāo)的平移存在即t在這里不起作用,可以簡化公式為:
接下來我們來說下不同坐標(biāo)軸變換的旋轉(zhuǎn)矩陣
從二維圖像入手,坐標(biāo)變換如下圖所示
如果假設(shè)不存在位移變換,那么x0 和y0 將變?yōu)?。
現(xiàn)在從二維圖像變到三維圖像上的變換,假設(shè)固定一個(gè)(X,Y,Z)軸 旋轉(zhuǎn)其他兩個(gè)軸組成的平面。
1、繞X軸旋轉(zhuǎn) theta?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
2、繞Y軸旋轉(zhuǎn)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
3、繞Z軸旋轉(zhuǎn)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
下面為相機(jī)坐標(biāo)和平面坐標(biāo)系(成像投影關(guān)系)
根據(jù)上述的關(guān)系我們可以推得:
? ? ??
? ? 矩陣形式為: ?
??
---------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------
3、從平面坐標(biāo)得到的我們看到的(照片)圖像坐標(biāo)系
數(shù)字圖像在計(jì)算機(jī)內(nèi)為MXN數(shù)組,M行N列的圖像中每一個(gè)元素(pixel)數(shù)值就是圖像點(diǎn)的亮度(灰度)。
如圖,在圖像上定義直角坐標(biāo)系U,V,每一個(gè)像素為單位的圖像坐標(biāo)系坐標(biāo),
由于(u,v)只能表示像素位于數(shù)組中的列數(shù)與行數(shù),并沒有使用物理單位表示該像素在圖像中位置,
所以需要再建立以物理單位(mm)表示的圖像坐標(biāo)系,該圖像坐標(biāo)系以圖像內(nèi)某一點(diǎn)uv(0,0)為原點(diǎn),x軸和y軸分別平行于u、v。
如圖中,(u、v)表示以像素為單位的圖像坐標(biāo)系的坐標(biāo),(X、Y)表示以mm為單位的圖像坐標(biāo)系的坐標(biāo)。
假設(shè)每一個(gè)像素在X軸與Y軸方向上的物理尺寸為dx、dy,則圖像任意一個(gè)像素在兩個(gè)坐標(biāo)系下的坐標(biāo)有如下關(guān)系,
?其中(u0 ,v0) = xy(0,0)
進(jìn)而得到如下的矩陣表達(dá):
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
到此 逆透視變換就全部完成了!!!!
下面要說下 逆透視變換需要注意的問題, ? 因?yàn)橛邢c(diǎn)的存在,也就是說當(dāng)我們看火車軌道的時(shí)候總在某個(gè)距離上看到兩條軌道重合到一起后消失。
對(duì)于空間中任一點(diǎn)(XW,YW,ZW)T,投影之后的對(duì)應(yīng)像點(diǎn)為(u,v,1)T,寫成矩陣形式:
其中AR為變換矩陣,假設(shè)M = AR
將矩陣展開,這里去Zc = 1 可以得到如下關(guān)系式。
消失點(diǎn)可以認(rèn)為是空間直線上無窮遠(yuǎn)處的點(diǎn)投影在圖像上所成的像點(diǎn)。對(duì)于空間中某一直線L,方向?yàn)?#xff08;dx,dy,dz),給定直線上坐標(biāo)(ax,ay,az),所以直線上任一點(diǎn)A可以表示為:
?
當(dāng)趨于無窮時(shí)可以得到
從而得到消失點(diǎn)的坐標(biāo)。
注:逆透視變換的范圍不能到達(dá)消失點(diǎn),否則不能還原。
整體變換的示意圖:
逆透視變換詳解 及 代碼實(shí)現(xiàn)(二)
根據(jù)上述原理,結(jié)合應(yīng)用場景,列出代碼的實(shí)現(xiàn)!!
總結(jié)
以上是生活随笔為你收集整理的逆透视变换详解 及 代码实现(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单描述char(n)、varchar(
- 下一篇: 蓝桥杯 算法训练(四)结点选择(树形动态