世界坐标系(右-前-上)沿着自身 Z Z Z轴平移 h h h,得到 T w t T_{wt} Twt:
T w t = [ 1 0 0 0 0 1 0 0 0 0 1 h 0 0 0 1 ] ( 1 ) \begin{aligned} T_{wt} &= \begin{bmatrix}1&0&0&0\\ 0&1&0&0\\ 0&0&1&h\\ 0&0&0&1\end{bmatrix} \qquad &(1) \\ \end{aligned} Twt=⎣⎢⎢⎡10000100001000h1⎦⎥⎥⎤(1)
相机的姿态角度(滚转,俯仰,偏航) ( r o l l , p i t c h , y a w ) (roll,pitch,yaw) (roll,pitch,yaw)对应在世界坐标系(右前上)是 ( α = − p i t c h , β = r o l l , γ = y a w ) (\alpha = -pitch, \beta = roll, \gamma = yaw) (α=−pitch,β=roll,γ=yaw),计算消失点时滚转角无影响即 r o l l = 0 roll=0 roll=0,则绕着固定坐标系 X , Y , Z X,Y,Z X,Y,Z三个坐标轴旋转后得到的变换矩阵 T w r T_{wr} Twr:
T w r = T w z ⋅ T w y ⋅ T w x = [ c o s ( γ ) − s i n ( γ ) 0 0 s i n ( γ ) c o s ( γ ) 0 0 0 0 1 0 0 0 0 1 ] [ c o s ( β ) 0 sin ( β ) 0 0 1 0 0 − sin ( β ) 0 c o s ( β ) 0 0 0 0 1 ] [ 1 0 0 0 0 cos ( α ) − sin ( α ) 0 0 sin ( α ) cos ( α ) 0 0 0 0 1 ] = [ c o s ( γ ) − s i n ( γ ) 0 0 s i n ( γ ) c o s ( γ ) 0 0 0 0 1 0 0 0 0 1 ] [ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ] [ 1 0 0 0 0 cos ( α ) − sin ( α ) 0 0 sin ( α ) cos ( α ) 0 0 0 0 1 ] = [ cos ( γ ) − sin ( γ ) cos ( α ) sin ( γ ) sin ( α ) 0 sin ( γ ) cos ( γ ) cos ( α ) − cos ( γ ) sin ( α ) 0 0 sin ( α ) cos ( α ) 0 0 0 0 1 ] ( 2 ) \begin{aligned} T_{wr} &= T_{wz} \cdot T_{wy} \cdot T_{wx} \\ &= \begin{bmatrix}cos\left(\gamma \right)&-sin\left(\gamma \right)&0&0\\ sin\left(\gamma \right)&cos\left(\gamma \right)&0&0\\ 0&0&1&0\\ 0&0&0&1\end{bmatrix} \begin{bmatrix}cos\left(\beta \right)&0&\sin \left(\beta \right)&0\\ 0&1&0&0\\ -\sin \left(\beta \right)&0&cos\left(\beta \right)&0\\ 0&0&0&1\end{bmatrix} \begin{bmatrix}1&0&0&0\\ 0&\cos \left(α\right)&-\sin \left(α\right)&0\\ 0&\sin \left(α\right)&\cos \left(α\right)&0\\ 0&0&0&1\end{bmatrix}\\ &= \begin{bmatrix}cos\left(\gamma \right)&-sin\left(\gamma \right)&0&0\\ sin\left(\gamma \right)&cos\left(\gamma \right)&0&0\\ 0&0&1&0\\ 0&0&0&1\end{bmatrix} \begin{bmatrix}1&0&0&0\\ 0&1&0&0\\ 0&0&1&0\\ 0&0&0&1\end{bmatrix} \begin{bmatrix}1&0&0&0\\ 0&\cos \left(α\right)&-\sin \left(α\right)&0\\ 0&\sin \left(α\right)&\cos \left(α\right)&0\\ 0&0&0&1\end{bmatrix}\\ &= \begin{bmatrix}\cos \left(γ\right)&-\sin \left(γ\right)\cos \left(α\right)&\sin \left(γ\right)\sin \left(α\right)&0\\ \sin \left(γ\right)&\cos \left(γ\right)\cos \left(α\right)&-\cos \left(γ\right)\sin \left(α\right)&0\\ 0&\sin \left(α\right)&\cos \left(α\right)&0\\ 0&0&0&1\end{bmatrix} \qquad &(2) \\ \end{aligned} Twr=Twz⋅Twy⋅Twx=⎣⎢⎢⎡cos(γ)sin(γ)00−sin(γ)cos(γ)0000100001⎦⎥⎥⎤⎣⎢⎢⎡cos(β)0−sin(β)00100sin(β)0cos(β)00001⎦⎥⎥⎤⎣⎢⎢⎡10000cos(α)sin(α)00−sin(α)cos(α)00001⎦⎥⎥⎤=⎣⎢⎢⎡cos(γ)sin(γ)00−sin(γ)cos(γ)0000100001⎦⎥⎥⎤⎣⎢⎢⎡1000010000100001⎦⎥⎥⎤⎣⎢⎢⎡10000cos(α)sin(α)00−sin(α)cos(α)00001⎦⎥⎥⎤=⎣⎢⎢⎡cos(γ)sin(γ)00−sin(γ)cos(α)cos(γ)cos(α)sin(α)0sin(γ)sin(α)−cos(γ)sin(α)cos(α)00001⎦⎥⎥⎤(2)
世界坐标系(右前上)到相机自身的(右前上)坐标系到相机的变换 T w o T_{wo} Two
T w o = T w t ⋅ T w r = [ 1 0 0 0 0 1 0 0 0 0 1 h 0 0 0 1 ] [ cos ( γ ) − sin ( γ ) cos ( α ) sin ( γ ) sin ( α ) 0 sin ( γ ) cos ( γ ) cos ( α ) − cos ( γ ) sin ( α ) 0 0 sin ( α ) cos ( α ) 0 0 0 0 1 ] = [ cos ( γ ) − sin ( γ ) cos ( α ) sin ( γ ) sin ( α ) 0 sin ( γ ) cos ( γ ) cos ( α ) − cos ( γ ) sin ( α ) 0 0 sin ( α ) cos ( α ) h 0 0 0 1 ] ( 3 ) \begin{aligned} T_{wo} &=T_{wt} \cdot T_{wr}\\ &= \begin{bmatrix}1&0&0&0\\ 0&1&0&0\\ 0&0&1&h\\ 0&0&0&1\end{bmatrix} \begin{bmatrix}\cos \left(γ\right)&-\sin \left(γ\right)\cos \left(α\right)&\sin \left(γ\right)\sin \left(α\right)&0\\ \sin \left(γ\right)&\cos \left(γ\right)\cos \left(α\right)&-\cos \left(γ\right)\sin \left(α\right)&0\\ 0&\sin \left(α\right)&\cos \left(α\right)&0\\ 0&0&0&1\end{bmatrix}\\ &= \begin{bmatrix}\cos \left(γ\right)&-\sin \left(γ\right)\cos \left(α\right)&\sin \left(γ\right)\sin \left(α\right)&0\\ \sin \left(γ\right)&\cos \left(γ\right)\cos \left(α\right)&-\cos \left(γ\right)\sin \left(α\right)&0\\ 0&\sin \left(α\right)&\cos \left(α\right)&h\\ 0&0&0&1\end{bmatrix} \qquad &(3) \end{aligned} Two=Twt⋅Twr=⎣⎢⎢⎡10000100001000h1⎦⎥⎥⎤⎣⎢⎢⎡cos(γ)sin(γ)00−sin(γ)cos(α)cos(γ)cos(α)sin(α)0sin(γ)sin(α)−cos(γ)sin(α)cos(α)00001⎦⎥⎥⎤=⎣⎢⎢⎡cos(γ)sin(γ)00−sin(γ)cos(α)cos(γ)cos(α)sin(α)0sin(γ)sin(α)−cos(γ)sin(α)cos(α)000h1⎦⎥⎥⎤(3)
相机自身的(右前上)坐标系到相机坐标系的变换 T c o T_{co} Tco
T o c = [ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ] [ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ] [ 1 0 0 0 0 0 1 0 0 − 1 1 0 0 0 0 1 ] = [ 1 0 0 0 0 0 1 0 0 − 1 1 0 0 0 0 1 ] ( 4 ) \begin{aligned} T_{oc} &= \begin{bmatrix}1&0&0&0\\ 0&1&0&0\\ 0&0&1&0\\ 0&0&0&1\end{bmatrix} \begin{bmatrix}1&0&0&0\\ 0&1&0&0\\ 0&0&1&0\\ 0&0&0&1\end{bmatrix} \begin{bmatrix}1&0&0&0\\ 0&0&1&0\\ 0&-1&1&0\\ 0&0&0&1\end{bmatrix}\\ &= \begin{bmatrix}1&0&0&0\\ 0&0&1&0\\ 0&-1&1&0\\ 0&0&0&1\end{bmatrix} \qquad &(4) \end{aligned} Toc=⎣⎢⎢⎡1000010000100001⎦⎥⎥⎤⎣⎢⎢⎡1000010000100001⎦⎥⎥⎤⎣⎢⎢⎡100000−1001100001⎦⎥⎥⎤=⎣⎢⎢⎡100000−1001100001⎦⎥⎥⎤(4)
世界坐标系到相机坐标系的变换为:
T w c = T w o ⋅ T o c = [ cos ( γ ) − sin ( γ ) cos ( α ) sin ( γ ) sin ( α ) 0 sin ( γ ) cos ( γ ) cos ( α ) − cos ( γ ) sin ( α ) 0 0 sin ( α ) cos ( α ) h 0 0 0 1 ] [ 1 0 0 0 0 0 1 0 0 − 1 1 0 0 0 0 1 ] = [ cos ( γ ) − sin ( γ ) sin ( α ) − sin ( γ ) cos ( α ) 0 sin ( γ ) cos ( γ ) sin ( α ) cos ( γ ) cos ( α ) 0 0 − cos ( α ) sin ( α ) h 0 0 0 1 ] ( 5 ) \begin{aligned} T_{wc} &= T_{wo} \cdot T_{oc} \\ &= \begin{bmatrix}\cos \left(γ\right)&-\sin \left(γ\right)\cos \left(α\right)&\sin \left(γ\right)\sin \left(α\right)&0\\ \sin \left(γ\right)&\cos \left(γ\right)\cos \left(α\right)&-\cos \left(γ\right)\sin \left(α\right)&0\\ 0&\sin \left(α\right)&\cos \left(α\right)&h\\ 0&0&0&1\end{bmatrix} \begin{bmatrix}1&0&0&0\\ 0&0&1&0\\ 0&-1&1&0\\ 0&0&0&1\end{bmatrix}\\ &= \begin{bmatrix}\cos \left(γ\right)&-\sin \left(γ\right)\sin \left(α\right)&-\sin \left(γ\right)\cos \left(α\right)&0\\ \sin \left(γ\right)&\cos \left(γ\right)\sin \left(α\right)&\cos \left(γ\right)\cos \left(α\right)&0\\ 0&-\cos \left(α\right)&\sin \left(α\right)&h\\ 0&0&0&1\end{bmatrix} \qquad &(5) \end{aligned} Twc=Two⋅Toc=⎣⎢⎢⎡cos(γ)sin(γ)00−sin(γ)cos(α)cos(γ)cos(α)sin(α)0sin(γ)sin(α)−cos(γ)sin(α)cos(α)000h1⎦⎥⎥⎤⎣⎢⎢⎡100000−1001100001⎦⎥⎥⎤=⎣⎢⎢⎡cos(γ)sin(γ)00−sin(γ)sin(α)cos(γ)sin(α)−cos(α)0−sin(γ)cos(α)cos(γ)cos(α)sin(α)000h1⎦⎥⎥⎤(5)
相机坐标系到图像坐标系的变换(对齐过程)为:
T c i = [ 1 0 0 0 1 0 0 0 1 0 0 1 z c ] ( 6 ) \begin{aligned} T_{ci} &= \begin{bmatrix}1&0&0\\ 0&1&0\\ 0&0&1\\ 0&0&\frac{1}{z_c}\end{bmatrix} \qquad &(6) \end{aligned} Tci=⎣⎢⎢⎡10000100001zc1⎦⎥⎥⎤(6)
图像坐标系到像素坐标系的变换为:
T i p = [ 1 f x 0 − c x f x 0 1 f y − c y f y 0 0 1 ] ( 7 ) \begin{aligned} T_{ip} &= \begin{bmatrix}\frac{1}{f_x}&0&-\frac{c_x}{f_x}\\ 0&\frac{1}{f_y}&-\frac{c_y}{f_y}\\ 0&0&1\end{bmatrix} \qquad &(7) \end{aligned} Tip=⎣⎡fx1000fy10−fxcx−fycy1⎦⎤(7)
则世界坐标系到图像像素坐标系的变换为:
T w p = T w c ⋅ T c i ⋅ T i p = [ cos ( γ ) − sin ( γ ) sin ( α ) − sin ( γ ) cos ( α ) 0 sin ( γ ) cos ( γ ) sin ( α ) cos ( γ ) cos ( α ) 0 0 − cos ( α ) sin ( α ) h 0 0 0 1 ] [ 1 0 0 0 1 0 0 0 1 0 0 1 z c ] [ 1 f x 0 − c x f x 0 1 f y − c y f y 0 0 1 ] = [ cos ( γ ) f x − sin ( γ ) sin ( α ) f y − cos ( γ ) c x f y + sin ( γ ) sin ( α ) f x c y − sin ( γ ) cos ( α ) f x f y f x f y sin ( γ ) f x cos ( γ ) sin ( α ) f y − sin ( γ ) c x f y − cos ( γ ) sin ( α ) f x c y + cos ( γ ) cos ( α ) f x f y f x f y 0 − cos ( α ) f y cos ( α ) c y z c + h f y + sin ( α ) f y z c z c f y 0 0 1 z c ] ( 8 ) \begin{aligned} T_{wp} &= T_{wc} \cdot T_{ci} \cdot T_{ip}\\ &= \begin{bmatrix}\cos \left(γ\right)&-\sin \left(γ\right)\sin \left(α\right)&-\sin \left(γ\right)\cos \left(α\right)&0\\ \sin \left(γ\right)&\cos \left(γ\right)\sin \left(α\right)&\cos \left(γ\right)\cos \left(α\right)&0\\ 0&-\cos \left(α\right)&\sin \left(α\right)&h\\ 0&0&0&1\end{bmatrix} \begin{bmatrix}1&0&0\\ 0&1&0\\ 0&0&1\\ 0&0&\frac{1}{z_c}\end{bmatrix} \begin{bmatrix}\frac{1}{f_x}&0&-\frac{c_x}{f_x}\\ 0&\frac{1}{f_y}&-\frac{c_y}{f_y}\\ 0&0&1\end{bmatrix}\\ &= \begin{bmatrix}\frac{\cos \left(γ\right)}{f_x}&-\frac{\sin \left(γ\right)\sin \left(α\right)}{f_y}&\frac{-\cos \left(γ\right)c_xf_y+\sin \left(γ\right)\sin \left(α\right)f_xc_y-\sin \left(γ\right)\cos \left(α\right)f_xf_y}{f_xf_y}\\ \frac{\sin \left(γ\right)}{f_x}&\frac{\cos \left(γ\right)\sin \left(α\right)}{f_y}&\frac{-\sin \left(γ\right)c_xf_y-\cos \left(γ\right)\sin \left(α\right)f_xc_y+\cos \left(γ\right)\cos \left(α\right)f_xf_y}{f_xf_y}\\ 0&-\frac{\cos \left(α\right)}{f_y}&\frac{\cos \left(α\right)c_yz_c+hf_y+\sin \left(α\right)f_yz_c}{z_cf_y}\\ 0&0&\frac{1}{z_c}\end{bmatrix} \qquad &(8) \end{aligned} Twp=Twc⋅Tci⋅Tip=⎣⎢⎢⎡cos(γ)sin(γ)00−sin(γ)sin(α)cos(γ)sin(α)−cos(α)0−sin(γ)cos(α)cos(γ)cos(α)sin(α)000h1⎦⎥⎥⎤⎣⎢⎢⎡10000100001zc1⎦⎥⎥⎤⎣⎡fx1000fy10−fxcx−fycy1⎦⎤=⎣⎢⎢⎢⎢⎡fxcos(γ)fxsin(γ)00−fysin(γ)sin(α)fycos(γ)sin(α)−fycos(α)0fxfy−cos(γ)cxfy+sin(γ)sin(α)fxcy−sin(γ)cos(α)fxfyfxfy−sin(γ)cxfy−cos(γ)sin(α)fxcy+cos(γ)cos(α)fxfyzcfycos(α)cyzc+hfy+sin(α)fyzczc1⎦⎥⎥⎥⎥⎤(8)
则图像像素坐标系的点变换到世界坐标系的点的过程为:
1 z c [ x w y w z w 1 ] = T w p [ u v 1 ] [ x w z c y w z c z w z c 1 z c ] = [ cos ( γ ) f x − sin ( γ ) sin ( α ) f y − cos ( γ ) c x f y + sin ( γ ) sin ( α ) f x c y − sin ( γ ) cos ( α ) f x f y f x f y sin ( γ ) f x cos ( γ ) sin ( α ) f y − sin ( γ ) c x f y − cos ( γ ) sin ( α ) f x c y + cos ( γ ) cos ( α ) f x f y f x f y 0 − cos ( α ) f y cos ( α ) c y z c + h f y + sin ( α ) f y z c z c f y 0 0 1 z c ] [ u v 1 ] = [ cos ( γ ) u f y − sin ( γ ) sin ( α ) f x v − cos ( γ ) c x f y + sin ( γ ) sin ( α ) f x c y − sin ( γ ) cos ( α ) f x f y f x f y sin ( γ ) u f y + cos ( γ ) sin ( α ) f x v − sin ( γ ) c x f y − cos ( γ ) sin ( α ) f x c y + cos ( γ ) cos ( α ) f x f y f x f y cos ( α ) c y z c + sin ( α ) z c f y − cos ( α ) z c v + h f y z c f y 1 z c ] ( 9 ) \begin{aligned} \frac{1}{z_c}\begin{bmatrix}x_w\\ y_w\\ z_w\\ 1\end{bmatrix} &= T_{wp} \begin{bmatrix}u\\ v\\ 1\end{bmatrix} \\ \begin{bmatrix}\frac{x_w}{z_c}\\ \frac{y_w}{z_c}\\ \frac{z_w}{z_c}\\ \frac{1}{z_c}\end{bmatrix} &= \begin{bmatrix}\frac{\cos \left(γ\right)}{f_x}&-\frac{\sin \left(γ\right)\sin \left(α\right)}{f_y}&\frac{-\cos \left(γ\right)c_xf_y+\sin \left(γ\right)\sin \left(α\right)f_xc_y-\sin \left(γ\right)\cos \left(α\right)f_xf_y}{f_xf_y}\\ \frac{\sin \left(γ\right)}{f_x}&\frac{\cos \left(γ\right)\sin \left(α\right)}{f_y}&\frac{-\sin \left(γ\right)c_xf_y-\cos \left(γ\right)\sin \left(α\right)f_xc_y+\cos \left(γ\right)\cos \left(α\right)f_xf_y}{f_xf_y}\\ 0&-\frac{\cos \left(α\right)}{f_y}&\frac{\cos \left(α\right)c_yz_c+hf_y+\sin \left(α\right)f_yz_c}{z_cf_y}\\ 0&0&\frac{1}{z_c}\end{bmatrix} \begin{bmatrix}u\\ v\\ 1\end{bmatrix} \\ &= \begin{bmatrix}\frac{\cos \left(γ\right)uf_y-\sin \left(γ\right)\sin \left(α\right)f_xv-\cos \left(γ\right)c_xf_y+\sin \left(γ\right)\sin \left(α\right)f_xc_y-\sin \left(γ\right)\cos \left(α\right)f_xf_y}{f_xf_y}\\ \frac{\sin \left(γ\right)uf_y+\cos \left(γ\right)\sin \left(α\right)f_xv-\sin \left(γ\right)c_xf_y-\cos \left(γ\right)\sin \left(α\right)f_xc_y+\cos \left(γ\right)\cos \left(α\right)f_xf_y}{f_xf_y}\\ \frac{\cos \left(α\right)c_yz_c+\sin \left(α\right)z_cf_y-\cos \left(α\right)z_cv+hf_y}{z_cf_y}\\ \frac{1}{z_c}\end{bmatrix} \qquad &(9) \end{aligned} zc1⎣⎢⎢⎡xwywzw1⎦⎥⎥⎤⎣⎢⎢⎡zcxwzcywzczwzc1⎦⎥⎥⎤=Twp⎣⎡uv1⎦⎤=⎣⎢⎢⎢⎢⎡fxcos(γ)fxsin(γ)00−fysin(γ)sin(α)fycos(γ)sin(α)−fycos(α)0fxfy−cos(γ)cxfy+sin(γ)sin(α)fxcy−sin(γ)cos(α)fxfyfxfy−sin(γ)cxfy−cos(γ)sin(α)fxcy+cos(γ)cos(α)fxfyzcfycos(α)cyzc+hfy+sin(α)fyzczc1⎦⎥⎥⎥⎥⎤⎣⎡uv1⎦⎤=⎣⎢⎢⎢⎢⎡fxfycos(γ)ufy−sin(γ)sin(α)fxv−cos(γ)cxfy+sin(γ)sin(α)fxcy−sin(γ)cos(α)fxfyfxfysin(γ)ufy+cos(γ)sin(α)fxv−sin(γ)cxfy−cos(γ)sin(α)fxcy+cos(γ)cos(α)fxfyzcfycos(α)cyzc+sin(α)zcfy−cos(α)zcv+hfyzc1⎦⎥⎥⎥⎥⎤(9)
由于消失点是处于地面上的点,其Z坐标为0,即 z w = = 0 z_w == 0 zw==0,所以有:
cos ( α ) c y z c + sin ( α ) z c f y − cos ( α ) z c v + h f y z c f y = 0 ( 10 ) \frac{\cos \left(α\right)c_yz_c+\sin \left(α\right)z_cf_y-\cos \left(α\right)z_cv+hf_y}{z_cf_y}=0 \qquad (10) zcfycos(α)cyzc+sin(α)zcfy−cos(α)zcv+hfy=0(10)
则可以得到:
z c = h f y cos ( α ) v − cos ( α ) c y − sin ( α ) f y ( 11 ) 1 z c = cos ( α ) v − cos ( α ) c y − sin ( α ) f y h f y = v cos ( α ) h f y + − cos ( α ) c y − sin ( α ) f y h f y ( 12 ) \begin{aligned} z_c&=\frac{hf_y}{\cos \left(α\right)v - \cos \left(α\right)c_y - \sin \left(α\right)f_y} \qquad &(11) \\ \frac{1}{z_c}&= \frac{\cos \left(α\right)v - \cos \left(α\right)c_y - \sin \left(α\right)f_y}{hf_y}\\ &=v\frac{\cos \left(α\right)}{hf_y}+ \frac{-\cos \left(α\right)c_y -\sin \left(α\right)f_y}{hf_y} \qquad &(12) \end{aligned} zczc1=cos(α)v−cos(α)cy−sin(α)fyhfy=hfycos(α)v−cos(α)cy−sin(α)fy=vhfycos(α)+hfy−cos(α)cy−sin(α)fy(11)(12)
将 z c z_c zc带入上式即有:
T w p = [ cos ( γ ) f x − sin ( γ ) sin ( α ) f y − cos ( γ ) c x f y + sin ( γ ) sin ( α ) f x c y − sin ( γ ) cos ( α ) f x f y f x f y sin ( γ ) f x cos ( γ ) sin ( α ) f y − sin ( γ ) c x f y − cos ( γ ) sin ( α ) f x c y + cos ( γ ) cos ( α ) f x f y f x f y 0 − cos ( α ) f y v cos ( α ) f y 0 0 v cos ( α ) h f y + − cos ( α ) c y − sin ( α ) f y h f y ] ( 13 ) \begin{aligned} T_{wp}&= \begin{bmatrix}\frac{\cos \left(γ\right)}{f_x}&-\frac{\sin \left(γ\right)\sin \left(α\right)}{f_y}&\frac{-\cos \left(γ\right)c_xf_y+\sin \left(γ\right)\sin \left(α\right)f_xc_y-\sin \left(γ\right)\cos \left(α\right)f_xf_y}{f_xf_y}\\ \frac{\sin \left(γ\right)}{f_x}&\frac{\cos \left(γ\right)\sin \left(α\right)}{f_y}&\frac{-\sin \left(γ\right)c_xf_y-\cos \left(γ\right)\sin \left(α\right)f_xc_y+\cos \left(γ\right)\cos \left(α\right)f_xf_y}{f_xf_y}\\ 0&-\frac{\cos \left(α\right)}{f_y}&v\frac{\cos \left(α\right)}{f_y}\\ 0&0&v\frac{\cos \left(α\right)}{hf_y}+ \frac{-\cos \left(α\right)c_y -\sin \left(α\right)f_y}{hf_y}\end{bmatrix} \qquad &(13) \end{aligned} Twp=⎣⎢⎢⎢⎢⎡fxcos(γ)fxsin(γ)00−fysin(γ)sin(α)fycos(γ)sin(α)−fycos(α)0fxfy−cos(γ)cxfy+sin(γ)sin(α)fxcy−sin(γ)cos(α)fxfyfxfy−sin(γ)cxfy−cos(γ)sin(α)fxcy+cos(γ)cos(α)fxfyvfycos(α)vhfycos(α)+hfy−cos(α)cy−sin(α)fy⎦⎥⎥⎥⎥⎤(13)
具体计算时要分离(u, v)的 影响, T w p T_{wp} Twp第三行中的 v v v难以分离,但是第三行用于计算 z w z_w zw,且地面上的 z w z_w zw恒为零,所以可以全部设为0; T w p T_{wp} Twp的第四行则比较容易分离。最后得到计算IPM时从像素到世界的变换 T 4 × 3 T_{4\times 3} T4×3:
T 4 × 3 = [ cos ( γ ) f x − sin ( γ ) sin ( α ) f y − c x f y cos ( γ ) + c y f x sin ( γ ) sin ( α ) − f x f y sin ( γ ) cos ( α ) f x f y sin ( γ ) f x cos ( γ ) sin ( α ) f y − c x f y sin ( γ ) − c y f x cos ( γ ) sin ( α ) + f x f y cos ( γ ) cos ( α ) f x f y 0 0 0 0 cos ( α ) h f y − c y cos ( α ) − f y sin ( α ) h f y ] = [ cos ( γ ) f x − sin ( γ ) sin ( α ) f y − c x cos ( γ ) f x + c y sin ( γ ) sin ( α ) f y − sin ( γ ) cos ( α ) sin ( γ ) f x cos ( γ ) sin ( α ) f y − c x sin ( γ ) f x − c y cos ( γ ) sin ( α ) f y + cos ( γ ) cos ( α ) 0 0 0 0 cos ( α ) h f y − c y cos ( α ) h f y − sin ( α ) h ] ( 14 ) \begin{aligned}T_{4\times 3} &= \begin{bmatrix} \frac{\cos \left(\gamma \right)}{f_x} &\frac{-\sin \left(\gamma \right)\sin \left(\alpha \right)}{f_y} &\frac{-c_x f_y \cos \left(\gamma \right)+c_y f_x\sin \left(\gamma \right)\sin \left(\alpha \right)-f_x f_y \sin \left(\gamma \right)\cos \left(\alpha \right)}{f_x f_y}\\ \frac{\sin \left(\gamma \right)}{f_x} &\frac{\cos \left(\gamma \right)\sin \left(\alpha \right)}{f_y} &\frac{-c_x f_y\sin \left(\gamma \right)-c_y f_x\cos \left(\gamma \right)\sin \left(\alpha \right)+f_x f_y\cos \left(\gamma \right)\cos \left(\alpha \right)}{f_x f_y}\\ 0&0&0\\ 0&\frac{\cos \left(\alpha \right)}{h f_y} &\frac{-c_y\cos \left(\alpha \right)-f_y \sin \left(\alpha \right)}{h f_y} \end{bmatrix} \\ &= \begin{bmatrix} \frac{\cos(\gamma)}{f_x} &-\frac{\sin(\gamma) \sin(\alpha)}{f_y} &-\frac{c_x \cos(\gamma)}{f_x} + \frac{c_y \sin(\gamma) \sin(\alpha)}{f_y} - \sin(\gamma) \cos(\alpha)\\ \frac{\sin(\gamma)}{f_x} &\frac{\cos(\gamma) \sin(\alpha)}{f_y} &-\frac{c_x \sin(\gamma)}{f_x} - \frac{c_y \cos(\gamma) \sin(\alpha)}{f_y} + \cos(\gamma) \cos(\alpha)\\ 0&0&0\\ 0 &\frac{\cos(\alpha)}{h f_y} &-\frac{c_y \cos(\alpha)}{h f_y} - \frac{\sin(\alpha)}{h} \end{bmatrix} \qquad &(14) \end{aligned} T4×3=⎣⎢⎢⎢⎢⎡fxcos(γ)fxsin(γ)00fy−sin(γ)sin(α)fycos(γ)sin(α)0hfycos(α)fxfy−cxfycos(γ)+cyfxsin(γ)sin(α)−fxfysin(γ)cos(α)fxfy−cxfysin(γ)−cyfxcos(γ)sin(α)+fxfycos(γ)cos(α)0hfy−cycos(α)−fysin(α)⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡fxcos(γ)fxsin(γ)00−fysin(γ)sin(α)fycos(γ)sin(α)0hfycos(α)−fxcxcos(γ)+fycysin(γ)sin(α)−sin(γ)cos(α)−fxcxsin(γ)−fycycos(γ)sin(α)+cos(γ)cos(α)0−hfycycos(α)−hsin(α)⎦⎥⎥⎥⎥⎤(14)
如果式(14)中的角度 α , γ \alpha,\gamma α,γ取负值,同时矩阵乘 − 1 -1 −1(不影响结果)。
则所有的 s i n sin sin值取反,同时矩阵的第三行与式(14)中的第四行乘 h h h(设定成什么都可以,不影响结果),此时即得到:
T G I = [ cos ( − γ ) f x − sin ( − γ ) sin ( − α ) f y − c x f y cos ( − γ ) + c y f x sin ( − γ ) sin ( − α ) − f x f y sin ( − γ ) cos ( − α ) f x f y sin ( − γ ) f x cos ( − γ ) sin ( − α ) f y − c x f y sin ( − γ ) − c y f x cos ( − γ ) sin ( − α ) + f x f y cos ( − γ ) cos ( − α ) f x f y 0 − cos ( − α ) f y − − c y cos ( − α ) − f y sin ( − α ) f y 0 cos ( − α ) h f y − c y cos ( − α ) − f y sin ( − α ) h f y ] ⋅ − 1 = [ − cos ( γ ) f x sin ( γ ) sin ( α ) f y c x cos ( γ ) f x − c y sin ( γ ) sin ( α ) f y − sin ( γ ) cos ( α ) sin ( γ ) f x cos ( γ ) sin ( α ) f y − c x sin ( γ ) f x − c y cos ( γ ) sin ( α ) f y − cos ( γ ) cos ( α ) 0 cos ( α ) f y − c y cos ( α ) f y + sin ( α ) 0 − cos ( α ) h f y c y cos ( α ) h f y − sin ( α ) h ] = [ − h cos ( γ ) f x h sin ( γ ) sin ( α ) f y h c x cos ( γ ) f x − h c y sin ( γ ) sin ( α ) f y − h sin ( γ ) cos ( α ) h sin ( γ ) f x h cos ( γ ) sin ( α ) f y − h c x sin ( γ ) f x − h c y cos ( γ ) sin ( α ) f y − h cos ( γ ) cos ( α ) 0 h cos ( α ) f y − h c y cos ( α ) f y + h sin ( α ) 0 − cos ( α ) f y c y cos ( α ) f y − sin ( α ) ] 1 h ( 15 ) {\color{darkorange} \begin{aligned} T_{GI} &=\begin{bmatrix} \frac{\cos(-\gamma)}{f_x} &\frac{-\sin(-\gamma) \sin(-\alpha)}{f_y} &\frac{-c_x f_y \cos(-\gamma) + c_y f_x \sin(-\gamma) \sin(-\alpha) - f_x f_y \sin(-\gamma) \cos(-\alpha)}{f_x f_y}\\ \frac{\sin(-\gamma)}{f_x} &\frac{\cos(-\gamma) \sin(-\alpha)}{f_y} &\frac{-c_x f_y \sin(-\gamma) - c_y f_x \cos(-\gamma) \sin(-\alpha) + f_x f_y \cos(-\gamma) \cos(-\alpha)}{f_x f_y}\\ 0 &-\frac{\cos(-\alpha)}{f_y}&-\frac{- c_y \cos(-\alpha) - f_y \sin(-\alpha)}{f_y}\\ 0 &\frac{\cos(-\alpha)}{h f_y} &\frac{-c_y \cos(-\alpha) - f_y \sin(-\alpha)}{h f_y}\end{bmatrix} \cdot -1\\ &=\begin{bmatrix} -\frac{\cos(\gamma)}{f_x} &\frac{\sin(\gamma) \sin(\alpha)}{f_y} &\frac{c_x \cos(\gamma)}{f_x} - \frac{c_y \sin(\gamma) \sin(\alpha)}{f_y} - \sin(\gamma) \cos(\alpha)\\ \frac{\sin(\gamma)}{f_x} &\frac{\cos(\gamma) \sin(\alpha)}{f_y} &-\frac{c_x \sin(\gamma)}{f_x} - \frac{c_y \cos(\gamma) \sin(\alpha)}{f_y} - \cos(\gamma) \cos(\alpha)\\ 0 &\frac{\cos(\alpha)}{f_y} &- \frac{c_y \cos(\alpha)}{f_y} + \sin(\alpha) \\ 0 &-\frac{\cos(\alpha)}{h f_y} &\frac{c_y \cos(\alpha)}{h f_y} - \frac{\sin(\alpha)}{h} \end{bmatrix} \\ &=\begin{bmatrix} -h\frac{\cos(\gamma)}{f_x} &h\frac{\sin(\gamma) \sin(\alpha)}{f_y} &h\frac{c_x \cos(\gamma)}{f_x} - h\frac{c_y \sin(\gamma) \sin(\alpha)}{f_y} - h\sin(\gamma) \cos(\alpha)\\ h\frac{\sin(\gamma)}{f_x} &h\frac{\cos(\gamma) \sin(\alpha)}{f_y} &-h\frac{c_x \sin(\gamma)}{f_x} - h\frac{c_y \cos(\gamma) \sin(\alpha)}{f_y} - h\cos(\gamma) \cos(\alpha)\\ 0 &h\frac{\cos(\alpha)}{f_y} &-h \frac{c_y \cos(\alpha)}{f_y} + h\sin(\alpha) \\ 0 &-\frac{\cos(\alpha)}{f_y} &\frac{c_y \cos(\alpha)}{f_y} - \sin(\alpha) \end{bmatrix} \frac{1}{h} \qquad&(15) \end{aligned} } TGI=⎣⎢⎢⎢⎢⎡fxcos(−γ)fxsin(−γ)00fy−sin(−γ)sin(−α)fycos(−γ)sin(−α)−fycos(−α)hfycos(−α)fxfy−cxfycos(−γ)+cyfxsin(−γ)sin(−α)−fxfysin(−γ)cos(−α)fxfy−cxfysin(−γ)−cyfxcos(−γ)sin(−α)+fxfycos(−γ)cos(−α)−fy−cycos(−α)−fysin(−α)hfy−cycos(−α)−fysin(−α)⎦⎥⎥⎥⎥⎤⋅−1=⎣⎢⎢⎢⎢⎡−fxcos(γ)fxsin(γ)00fysin(γ)sin(α)fycos(γ)sin(α)fycos(α)−hfycos(α)fxcxcos(γ)−fycysin(γ)sin(α)−sin(γ)cos(α)−fxcxsin(γ)−fycycos(γ)sin(α)−cos(γ)cos(α)−fycycos(α)+sin(α)hfycycos(α)−hsin(α)⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡−hfxcos(γ)hfxsin(γ)00hfysin(γ)sin(α)hfycos(γ)sin(α)hfycos(α)−fycos(α)hfxcxcos(γ)−hfycysin(γ)sin(α)−hsin(γ)cos(α)−hfxcxsin(γ)−hfycycos(γ)sin(α)−hcos(γ)cos(α)−hfycycos(α)+hsin(α)fycycos(α)−sin(α)⎦⎥⎥⎥⎥⎤h1(15)
之所进行这样的对比,主要是网络上大部分关于IPM的代码都是使用式(15)进行代码编写,而且在没有多少优化的情况下,导致代码阅读性较差,极不友好。