3D空间变换

文章目录

    • 1、等距变换(欧式变换)
    • 2、相似变换
    • 3、仿射变换(正交投影)
    • 4、射影变换(透视变换)
    • 参考

1、等距变换(欧式变换)

它相当于是平移变换(t)和旋转变换(R)的复合,等距变换前后长度,面积,线线之间的角度都不变。

自由度 6 (旋转变换R自由度+3,平移变换t自由度+3)
T = [ R t 0 T 1 ] T= \begin{bmatrix} R & t \\ 0^T & 1 \\ \end{bmatrix} T=[R0Tt1]

//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)
T S = [ s R t 0 T 1 ] T_S= \begin{bmatrix} sR & t \\ 0^T & 1 \\ \end{bmatrix} TS=[sR0Tt1]

//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)
T A = [ A t 0 T 1 ] T_A= \begin{bmatrix} A & t \\ 0^T & 1 \\ \end{bmatrix} TA=[A0Tt1]
可以看出,仿射变换就是对图像的旋转+平移+缩放+切变(shear),相比前两种变换图像的形状发生了改变,但是原图中的平行线仍然保持平行。

//4x4矩阵
//Eigen::Affine3d

4、射影变换(透视变换)

当图像中的点的齐次坐标的一般非奇异线性变换(A),射影变换的不变量是:重合关系、长度的交比

自由度15 (非奇异线性变换A自由度+9,平移变换t自由度+3,缩放变换v自由度+3),缩放变换v是对每个坐标的缩放,当s不为0时,由于采用齐次坐标,因此整个变换矩阵除以s,可以得到右下角为1的矩阵,当s=0时,是右下角为0的矩阵。
T S = [ A t v T s ] = [ a 11 a 21 a 31 t 1 a 12 a 22 a 32 t 2 a 13 a 23 a 33 t 3 v 1 v 2 v 3 s ] ⟶ x ∗ v 1 + y ∗ v 2 + z ∗ v 3 + s = 1 T_S= \begin{bmatrix} A & t \\ v^T & s \\ \end{bmatrix}= \begin{bmatrix} a_{11} & a_{21} & a_{31}& t_1 \\ a_{12} & a_{22} & a_{32} & t_2 \\ a_{13} & a_{23}& a_{33} & t_3 \\ v_1 & v_2 & v_3& s \\ \end{bmatrix} \\ \longrightarrow x*v_1+y*v_2+z*v_3+s=1 TS=[AvTts]=a11a12a13v1a21a22a23v2a31a32a33v3t1t2t3sxv1+yv2+zv3+s=1

//4x4矩阵
//Eigen::Projective3d

参考

3D空间变换_第1张图片3D空间变换_第2张图片

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

《计算机图形学》第九、十章

你可能感兴趣的:(计算机视觉,c++)