一般我們是將相機模型簡化成針孔相機模型,
那麼相平面與相機座標系之間的關係為:
通常為了方便,會把相平面放在小孔與目標點之間。
下面就介紹下相平面投影的三種不同方法。
通過相似三角形(下圖兩個虛線三角形)
可以得到下列關係:
展開就是:
這裡x_h等為齊次座標系座標,x等為相機座標系點,x等則為相平面上的透視投影點, 可以看出,投影點的位置不僅僅是與x等有簡單的縮放關係,還和z成反比,z越大投影點x等越小,這就解釋了為什麼相機拍攝的近大遠小。
正交投影可以理解是透視投影的一種極端情況,f趨近無窮大,f/z趨近1,這時矩陣形式就寫成:
展開為:
這裡w為1. 可以看出,相平面上的點就是相機座標系的點,簡單粗暴,直接去掉了z。這種投影方式沒法反應近大遠小的特點,所以就有了下面稍微複雜點的正交投影:縮放正交投影。
由於正交投影簡化過猛,直接丟棄了z,這裡為了體現縮放又把z加回來了,只不過這裡的z是個常值,比如乙個三維的點雲,可以將分母設為點雲z的均值,這樣就實現了投影的縮放(依然保留了平行直線的關係)
另外值得一提的是,使用深度學習對3d 人臉進行**時,通常使用的是弱透視模型,得到的head pose並不是相對拍攝的相機座標系的,因為真實相機是透視投影模型,
上圖左邊a,b和c為人頭相對相機座標系的x軸做了平移,如果使用弱透視投影,投影的結果應該是右下角三張圖,看起來人頭都沒旋轉。。但是如果按照透視投影方法來投影,得到的就是右上三張圖,如果要獲取相對相機座標系下人頭的head pose,那麼需要對yaw和pitch方向做下角度補償。
投影矩陣備忘
投影矩陣 project matrix 本意是將不規則的檢視體 view volume 變換成乙個單位立方體,但投射到螢幕時,z被丟棄了,所以造成了2d投影的假象.注意這是錯覺,實際概念應該是投射到單位立方體空間,是空間投射的概念.需要注意的是,opengl最終投射到單位立方體 1,1,1 1,1,...
投影矩陣詳解
視錐就是場景中的乙個三維空間,它的位置由視口的攝像機來決定。這個空間的形狀決定了攝像機空間中的模型將被如何投影到螢幕上。透視投影是最常用的一種投影型別,使用這種投影,會使近處的物件看起來比遠處的大一些。對於透視投影,視錐可以被初始化成金字塔形,將攝像機放在頂端。這個金字塔再經過前 後兩個剪下面的分割...
投影矩陣推導
投影變換是計算機圖形學的基礎,理解並推導投影矩陣也是很有必要的。正交投影比較簡單,沒有透視失真效果 近大遠小 而透視投影比較符合人類的眼睛感知,平行線在遠處會相交於一點。投影是通過乙個4x4的矩陣來完成的,將視錐對映成標準觀察體 齊次裁剪空間 opengl採用的是右手座標系,z軸朝螢幕向外,因此觀察...