天天看點

逆透視變換詳解 及 代碼實作(一)

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/yeyang911/article/details/51912322

逆透視變換詳解 及 代碼實作(一) 中主要是原理的說明:

一、世界坐标軸和錄影機坐标軸

從下圖中可以看到,世界坐标為(X,Y,Z)  相機坐标為(Xc,Yc,Zc)

而世界坐标變換到相機坐标存在一個旋轉矩陣變換R以及一個位移變換T。

逆透視變換詳解 及 代碼實作(一)
逆透視變換詳解 及 代碼實作(一)

根據上圖可以得到世界坐标到相機坐标的公式變換!!

逆透視變換詳解 及 代碼實作(一)

         世界坐标到相機坐标的公式

如果假設沒有坐标的平移存在即t在這裡不起作用,可以簡化公式為:

逆透視變換詳解 及 代碼實作(一)

接下來我們來說下不同坐标軸變換的旋轉矩陣

從二維圖像入手,坐标變換如下圖所示

逆透視變換詳解 及 代碼實作(一)

如果假設不存在位移變換,那麼x0 和y0 将變為0。

現在從二維圖像變到三維圖像上的變換,假設固定一個(X,Y,Z)軸 旋轉其他兩個軸組成的平面。

1、繞X軸旋轉 theta 

逆透視變換詳解 及 代碼實作(一)

2、繞Y軸旋轉

逆透視變換詳解 及 代碼實作(一)

3、繞Z軸旋轉

逆透視變換詳解 及 代碼實作(一)

-------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------

下面為相機坐标和平面坐标系(成像投影關系)

逆透視變換詳解 及 代碼實作(一)

根據上述的關系我們可以推得:

逆透視變換詳解 及 代碼實作(一)

    矩陣形式為:  

逆透視變換詳解 及 代碼實作(一)

---------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------

3、從平面坐标得到的我們看到的(照片)圖像坐标系

數字圖像在計算機内為MXN數組,M行N列的圖像中每一個元素(pixel)數值就是圖像點的亮度(灰階)。

如圖,在圖像上定義直角坐标系U,V,每一個像素為機關的圖像坐标系坐标,

由于(u,v)隻能表示像素位于數組中的列數與行數,并沒有使用實體機關表示該像素在圖像中位置,

是以需要再建立以實體機關(mm)表示的圖像坐标系,該圖像坐标系以圖像内某一點uv(0,0)為原點,x軸和y軸分别平行于u、v。

逆透視變換詳解 及 代碼實作(一)

如圖中,(u、v)表示以像素為機關的圖像坐标系的坐标,(X、Y)表示以mm為機關的圖像坐标系的坐标。

假設每一個像素在X軸與Y軸方向上的實體尺寸為dx、dy,則圖像任意一個像素在兩個坐标系下的坐标有如下關系,

逆透視變換詳解 及 代碼實作(一)

 其中(u0 ,v0) = xy(0,0)

進而得到如下的矩陣表達:

逆透視變換詳解 及 代碼實作(一)

---------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------

到此 逆透視變換就全部完成了!!!!

下面要說下 逆透視變換需要注意的問題,   因為有消失點的存在,也就是說當我們看火車軌道的時候總在某個距離上看到兩條軌道重合到一起後消失。

對于空間中任一點(XW,YW,ZW)T,投影之後的對應像點為(u,v,1)T,寫成矩陣形式:

逆透視變換詳解 及 代碼實作(一)

其中AR為變換矩陣,假設M = AR

逆透視變換詳解 及 代碼實作(一)

将矩陣展開,這裡去Zc = 1 可以得到如下關系式。

逆透視變換詳解 及 代碼實作(一)

消失點可以認為是空間直線上無窮遠處的點投影在圖像上所成的像點。對于空間中某一直線L,方向為(dx,dy,dz),給定直線上坐标(ax,ay,az),是以直線上任一點A可以表示為:

逆透視變換詳解 及 代碼實作(一)
逆透視變換詳解 及 代碼實作(一)

當趨于無窮時可以得到

逆透視變換詳解 及 代碼實作(一)

進而得到消失點的坐标。

注:逆透視變換的範圍不能到達消失點,否則不能還原。

整體變換的示意圖:

逆透視變換詳解 及 代碼實作(一)

逆透視變換詳解 及 代碼實作(二)

根據上述原理,結合應用場景,列出代碼的實作!!