3D空間變換

1、等距變換(歐式變換)

它相當於是平移變換(t)和旋轉變換(R)的複合,等距變換前後長度,面積,線線之間的角度都不變。

自由度 6 (旋轉變換R自由度+3,平移變換t自由度+3)
T=[Rt0T1] T= \begin{bmatrix} R & t \\ 0^T & 1 \\ \end{bmatrix}

//4x4矩陣
//Eigen::Isometry3d

Eigen::Isometry3d T = Eigen::Isometry3d::Identity( );  // 三維變換矩陣
T.rotate( rotation_vector );  // 旋轉部分賦值
T.pretranslate( Eigen::Vector3d( 1, 0, 0 ) );  // 設置平移向量
cout << "Transform matrix = \n" << T.matrix( ) << endl;

2、相似變換

等距變換和均勻縮放(S)的一個複合,類似相似三角形,體積比不變。

自由度 7 (歐式變換+6,和歐式變換相比多個一個縮放參數s,自由度+1)
TS=[sRt0T1] T_S= \begin{bmatrix} sR &amp; t \\ 0^T &amp; 1 \\ \end{bmatrix}

//4x4矩陣
double s;
Eigen::Isometry3d Ts = Eigen::Isometry3d::Identity( );  // 三維變換矩陣
Ts.rotate( s*rotation_vector );  // 旋轉部分賦值
Ts.pretranslate( Eigen::Vector3d( 1, 0, 0 ) );  // 設置平移向量
cout << Ts.matrix( ) << endl;

3、仿射變換(正交投影)

一個平移變換(t)和一個非均勻變換(A)的複合,A是可逆矩陣,並不要求是正交矩陣。

仿射變換的不變量是:平行線,平行線的長度的比例,面積的比例

自由度12 (非奇異線性變換A自由度+9,平移變換t自由度+3)
TA=[At0T1] T_A= \begin{bmatrix} A &amp; t \\ 0^T &amp; 1 \\ \end{bmatrix}
可以看出,仿射變換就是對圖像的旋轉+平移+縮放+切變(shear),相比前兩種變換圖像的形狀發生了改變,但是原圖中的平行線仍然保持平行。

//4x4矩陣
//Eigen::Affine3d

4、射影變換(透視變換)

當圖像中的點的齊次座標的一般非奇異線性變換(A),射影變換的不變量是:重合關係、長度的交比

自由度15 (非奇異線性變換A自由度+9,平移變換t自由度+3,縮放變換v自由度+3),縮放變換v是對每個座標的縮放,當s不爲0時,由於採用齊次座標,因此整個變換矩陣除以s,可以得到右下角爲1的矩陣,當s=0時,是右下角爲0的矩陣。
TS=[AtvTs]=[a11a21a31t1a12a22a32t2a13a23a33t3v1v2v3s]xv1+yv2+zv3+s=1 T_S= \begin{bmatrix} A &amp; t \\ v^T &amp; s \\ \end{bmatrix}= \begin{bmatrix} a_{11} &amp; a_{21} &amp; a_{31}&amp; t_1 \\ a_{12} &amp; a_{22} &amp; a_{32} &amp; t_2 \\ a_{13} &amp; a_{23}&amp; a_{33} &amp; t_3 \\ v_1 &amp; v_2 &amp; v_3&amp; s \\ \end{bmatrix} \\ \longrightarrow x*v_1+y*v_2+z*v_3+s=1

//4x4矩陣
//Eigen::Projective3d

參考

在這裏插入圖片描述在這裏插入圖片描述

https://wenku.baidu.com/view/6f1bcf28cfc789eb172dc81b.html?rec_flag=default&sxts=1564016659312

https://wenku.baidu.com/view/e2889780d4bbfd0a79563c1ec5da50e2524dd1c0.html?rec_flag=default&sxts=1564016877094

https://wenku.baidu.com/view/c26e2a3cdd3383c4bb4cd29a.html?from=search

《計算機圖形學》第九、十章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章