透視投影矯正

2021-10-06 03:11:57 字數 603 閱讀 5420

答案:因為投影矩陣變換後,線性關係變了。

假設矩陣變換前,b是a和c兩個點的線性插值,b = ta + (1-t)c,其中b是由a和c插值而來的。。

變換後a變成了a』,c變成了c』。直接將b進行透視變換成了b』.

變換前即使【b = ta + (1-t)c】,三個點各自變換後,發現b』!= ta』+ (1-t)c』。

推導過程不難,我看了兩種。

但是國內教程也有挺不錯的。

《3d遊戲與計算機圖形學中的數學方法》的66頁也有解釋為什麼1/z才是線性相關,也能看懂推導,但是遠沒有上面的英文文獻思路清晰。

其實現代引擎的開發者發現其實1/w』更好用,因此都是對1/w』進行插值。【假設你還用1/z,**裡面需要儲存z,因為經過變換後,我們能輕易地獲得變換後的x』,y』以及z』,對變換後的屬性插值的時候,發現z沒了,已經變成了z』,這時候又發現』w的數值恰好和變換前的z一樣,w』=z(或者w』=-z符號不重要,反正分子分母同時消掉),因此索性直接用w】

參考寫引擎**的各位大佬不想專門臨時儲存變換前的z,因此小技巧就是,利用w』變換後的數值等於z變換前的值【根據不同座標系,可能是-z】

有空會展示一下github上哪些引擎是用了這個技巧,【等我有空回來補充】

OpenCV 透視變換矯正

演示結果參考 功能實現 執行程式,會顯示的尺寸,按回車鍵後,依次點選需矯正的的左上 右上 左下 右下角,並能顯示其座標,結果彈出矯正後的,如圖上的pic2對話方塊。可以繼續選擇四個點進行實驗,按下字元 q 後退出。如下 注 圖中的11.jpg自己選取放到該程式目錄下。使用滑鼠在原影象上選取感興趣區域...

Android OpenGL透視投影

首先申明下,本文為筆者學習 opengl es應用開發實踐指南 的筆記,並加入筆者自己的理解和歸納總結。1 透視除法 opengl會把每個gl position的x y和z分量都除以它的w分量。當w分量用來表示距離的時候,會使得較遠處的物體被移動到距離渲染區域中心更近的地方。新增w分量建立三維圖 p...

透視投影矩陣

1.將投影面上x,y,z方向上的點,投影到剪裁空間有一定比例關係 2.y方向上的比例關係 y y0 y y0 z tan fov 2 y y tan fov 2 z 讓f 1 tan fov 2 y f z y 3.x方向上的比例關係 x f z x 根據相似三角形原理 tan fovx 2 tan...