布尔莎模型变换关系理解
[ X 2 Y 2 Z 2 ] = [ X 1 Y 1 Z 1 ] + [ T x T y T z ] + [ D R z − R y − R z D R x R y − R x D ] [ X 1 Y 1 Z 1 ] (1) \tag{1} \begin{bmatrix} X_2 \\ Y_2 \\ Z_2 \end{bmatrix} = \begin{bmatrix} X_1 \\ Y_1 \\ Z_1 \end{bmatrix} + \begin{bmatrix} T_x \\ T_y \\ T_z \end{bmatrix} + \begin{bmatrix} D & R_z & -R_y \\ -R_z & D & R_x \\ R_y & -R_x & D \end{bmatrix} \begin{bmatrix} X_1 \\ Y_1 \\ Z_1 \end{bmatrix} X2Y2Z2 = X1Y1Z1 + TxTyTz + D−RzRyRzD−Rx−RyRxD X1Y1Z1 (1)
式中
:
式中:
式中:
X
1
,
Y
1
,
Z
1
−
−
−
−
原坐标系坐标,单位
:
m
e
t
e
r
(参考
p
r
o
j
);
X_1,Y_1,Z_1 ----原坐标系坐标,单位:meter(参考proj);
X1,Y1,Z1−−−−原坐标系坐标,单位:meter(参考proj);
X
2
,
Y
2
,
Z
2
−
−
−
−
新坐标系坐标,单位
:
m
e
t
e
r
(参考
p
r
o
j
);
X_2,Y_2,Z_2 ----新坐标系坐标,单位:meter(参考proj);
X2,Y2,Z2−−−−新坐标系坐标,单位:meter(参考proj);
T
x
,
T
y
,
T
z
,
R
x
,
R
y
,
R
z
,
D
−
−
−
−
7
个转换参数:
3
个平移参数【单位
:
m
e
t
e
r
(参考
p
r
o
j
)】、
3
个旋转参数【计算单位
:
r
a
d
i
a
n
,展示单位:
a
r
c
s
e
c
o
n
d
s
(参考超图),但是在
p
r
o
j
中计算和展示都是
a
r
c
s
e
c
o
n
d
s
(参考
p
r
o
j
)】、
1
个尺度参数【单位
:
p
p
m
(参考
p
r
o
j
)】;
T_x,T_y,T_z,R_x,R_y,R_z,D ----7个转换参数:3个平移参数【单位:meter(参考proj)】、3个旋转参数【计算单位: radian,展示单位:arc seconds(参考超图),但是在proj中计算和展示都是 arc seconds(参考proj)】、1个尺度参数【单位:ppm(参考proj)】;
Tx,Ty,Tz,Rx,Ry,Rz,D−−−−7个转换参数:3个平移参数【单位:meter(参考proj)】、3个旋转参数【计算单位:radian,展示单位:arcseconds(参考超图),但是在proj中计算和展示都是arcseconds(参考proj)】、1个尺度参数【单位:ppm(参考proj)】;
各个单位换算关系:
Arc Second:角度测量单位(参考MathWorld)
1 Arc Second = 1/60 of an arc minute = 1/3600 of a degree
ppm指的是"parts per million",即每百万单位中的部分数(参考RapidTable)
1ppm = 0.0001% = 1/1000000
进一步换算:
[
X
2
Y
2
Z
2
]
=
[
X
1
Y
1
Z
1
]
+
[
T
x
+
D
X
1
+
R
z
Y
1
−
R
y
Z
1
T
y
−
R
z
X
1
+
D
Y
1
+
R
x
Z
1
T
z
+
R
y
X
1
−
R
x
Y
1
+
D
Z
1
]
(2)
\tag{2} \begin{bmatrix} X_2 \\ Y_2 \\ Z_2 \end{bmatrix} = \begin{bmatrix} X_1 \\ Y_1 \\ Z_1 \end{bmatrix} + \begin{bmatrix} T_x + DX_1 + R_zY_1 - R_yZ_1 \\ T_y - R_zX_1 + DY_1 + R_xZ_1 \\ T_z + R_yX_1 - R_xY_1 + DZ_1 \end{bmatrix}
X2Y2Z2
=
X1Y1Z1
+
Tx+DX1+RzY1−RyZ1Ty−RzX1+DY1+RxZ1Tz+RyX1−RxY1+DZ1
(2)
又
∵
又\because
又∵
[
T
x
+
D
X
1
+
R
z
Y
1
−
R
y
Z
1
T
y
−
R
z
X
1
+
D
Y
1
+
R
x
Z
1
T
z
+
R
y
X
1
−
R
x
Y
1
+
D
Z
1
]
=
P
[
T
x
T
y
T
z
R
x
R
y
R
z
D
]
=
[
P
1
P
2
P
3
P
4
P
5
P
6
P
7
P
8
P
9
P
10
P
11
P
12
P
13
P
14
P
15
P
16
P
17
P
18
P
19
P
20
P
21
]
[
T
x
T
y
T
z
R
x
R
y
R
z
D
]
\begin{bmatrix} T_x + DX_1 + R_zY_1 - R_yZ_1 \\ T_y - R_zX_1 + DY_1 + R_xZ_1 \\ T_z + R_yX_1 - R_xY_1 + DZ_1 \end{bmatrix} =P\begin{bmatrix} T_x \\ T_y \\ T_z \\ R_x \\ R_y \\ R_z \\ D \end{bmatrix} = \begin{bmatrix} P_1 & P_2 & P_3 & P_4 & P_5 & P_6 & P_7 \\ P_8 & P_9 & P_{10} & P_{11} & P_{12} & P_{13} & P_{14} \\ P_{15} & P_{16} & P_{17} & P_{18} & P_{19} & P_{20} & P_{21} \end{bmatrix} \begin{bmatrix} T_x \\ T_y \\ T_z \\ R_x \\ R_y \\ R_z \\ D \end{bmatrix}
Tx+DX1+RzY1−RyZ1Ty−RzX1+DY1+RxZ1Tz+RyX1−RxY1+DZ1
=P
TxTyTzRxRyRzD
=
P1P8P15P2P9P16P3P10P17P4P11P18P5P12P19P6P13P20P7P14P21
TxTyTzRxRyRzD
⇒ [ T x + D X 1 + R z Y 1 − R y Z 1 T y − R z X 1 + D Y 1 + R x Z 1 T z + R y X 1 − R x Y 1 + D Z 1 ] = [ P 1 T x + P 2 T y + P 3 T z + P 4 R x + P 5 R y + P 6 R z + P 7 D P 8 T x + P 9 T y + P 10 T z + P 11 R x + P 12 R y + P 13 R z + P 14 D P 15 T x + P 16 T y + P 17 T z + P 18 R x + P 19 R y + P 20 R z + P 21 D ] \Rarr \begin{bmatrix} T_x + DX_1 + R_zY_1 - R_yZ_1 \\ T_y - R_zX_1 + DY_1 + R_xZ_1 \\ T_z + R_yX_1 - R_xY_1 + DZ_1 \end{bmatrix} = \begin{bmatrix} P_1T_x + P_2T_y + P_3T_z + P_4R_x + P_5R_y + P_6R_z + P_7D \\ P_8T_x + P_9T_y + P_{10}T_z + P_{11}R_x + P_{12}R_y + P_{13}R_z + P_{14}D \\ P_{15}T_x + P_{16}T_y + P_{17}T_z + P_{18}R_x + P_{19}R_y + P_{20}R_z + P_{21}D \end{bmatrix} ⇒ Tx+DX1+RzY1−RyZ1Ty−RzX1+DY1+RxZ1Tz+RyX1−RxY1+DZ1 = P1Tx+P2Ty+P3Tz+P4Rx+P5Ry+P6Rz+P7DP8Tx+P9Ty+P10Tz+P11Rx+P12Ry+P13Rz+P14DP15Tx+P16Ty+P17Tz+P18Rx+P19Ry+P20Rz+P21D
⇒ P 1 = 1 , P 2 = 0 , P 3 = 0 , P 4 = 0 , P 5 = − Z 1 , P 6 = Y 1 , P 7 = X 1 P 8 = 0 , P 9 = 1 , P 10 = 0 , P 11 = Z 1 , P 12 = 0 , P 13 = − X 1 , P 14 = Y 1 P 15 = 0 , P 16 = 0 , P 17 = 1 , P 18 = − Y 1 , P 19 = X 1 , P 20 = 0 , P 21 = Z 1 \Rarr \\ P_1=1, P_2=0, P_3=0, P_4=0, P_5=-Z_1, P_6=Y_1, P_7=X_1 \\ P_8=0, P_9=1, P_{10}=0,P_{11}=Z_1, P_{12}=0, P_{13}=-X_1,P_{14}=Y_1 \\ P_{15}=0,P_{16}=0,P_{17}=1,P_{18}=-Y_1,P_{19}=X_1,P_{20}=0, P_{21}=Z_1 ⇒P1=1,P2=0,P3=0,P4=0,P5=−Z1,P6=Y1,P7=X1P8=0,P9=1,P10=0,P11=Z1,P12=0,P13=−X1,P14=Y1P15=0,P16=0,P17=1,P18=−Y1,P19=X1,P20=0,P21=Z1
⇒ P = [ 1 0 0 0 − Z 1 Y 1 X 1 0 1 0 Z 1 0 − X 1 Y 1 0 0 1 − Y 1 X 1 0 Z 1 ] \Rarr P= \begin{bmatrix} 1 & 0 & 0 & 0 & -Z_1 & Y_1 & X_1 \\ 0 & 1 & 0 & Z_1 & 0 & -X_1 & Y_1 \\ 0 & 0 & 1 & -Y_1 & X_1 & 0 & Z_1 \end{bmatrix} ⇒P= 1000100010Z1−Y1−Z10X1Y1−X10X1Y1Z1
∴
(
2
)
式变换为:
\therefore (2)式变换为:
∴(2)式变换为:
[
X
2
Y
2
Z
2
]
=
[
X
1
Y
1
Z
1
]
+
[
1
0
0
0
−
Z
1
Y
1
X
1
0
1
0
Z
1
0
−
X
1
Y
1
0
0
1
−
Y
1
X
1
0
Z
1
]
[
T
x
T
y
T
z
R
x
R
y
R
z
D
]
(3)
\tag{3} \begin{bmatrix} X_2 \\ Y_2 \\ Z_2 \end{bmatrix} = \begin{bmatrix} X_1 \\ Y_1 \\ Z_1 \end{bmatrix} + \begin{bmatrix} 1 & 0 & 0 & 0 & -Z_1 & Y_1 & X_1 \\ 0 & 1 & 0 & Z_1 & 0 & -X_1 & Y_1 \\ 0 & 0 & 1 & -Y_1 & X_1 & 0 & Z_1 \end{bmatrix} \begin{bmatrix} T_x \\ T_y \\ T_z \\ R_x \\ R_y \\ R_z \\ D \end{bmatrix}
X2Y2Z2
=
X1Y1Z1
+
1000100010Z1−Y1−Z10X1Y1−X10X1Y1Z1
TxTyTzRxRyRzD
(3)
基于最小二乘与多对同名点对计算参数
设存在
n
对同名点对:
(
X
a
,
Y
a
,
Z
a
)
1
→
(
X
b
,
Y
b
,
Z
b
)
1
,
⋯
,
(
X
a
,
Y
a
,
Z
a
)
n
→
(
X
b
,
Y
b
,
Z
b
)
n
.
设存在n对同名点对:(X_a,Y_a,Z_a)_1 \rarr (X_b,Y_b,Z_b)_1,\cdots,(X_a,Y_a,Z_a)_n \rarr (X_b,Y_b,Z_b)_n.
设存在n对同名点对:(Xa,Ya,Za)1→(Xb,Yb,Zb)1,⋯,(Xa,Ya,Za)n→(Xb,Yb,Zb)n.
令
令
令
θ
=
[
T
x
T
y
T
z
R
x
R
y
R
z
D
]
\theta =\begin{bmatrix} T_x \\ T_y \\ T_z \\ R_x \\ R_y \\ R_z \\ D \end{bmatrix}
θ=
TxTyTzRxRyRzD
v
i
=
(
X
b
−
X
a
,
Y
b
−
Y
a
,
Z
b
−
Z
a
)
i
T
,
v_i=(X_b - X_a,Y_b - Y_a,Z_b - Z_a)^T_i,
vi=(Xb−Xa,Yb−Ya,Zb−Za)iT,
P
i
=
[
1
0
0
0
−
Z
a
Y
a
X
a
0
1
0
Z
a
0
−
X
a
Y
a
0
0
1
−
Y
a
X
a
0
Z
a
]
i
,
P_i= \begin{bmatrix} 1 & 0 & 0 & 0 & -Z_a & Y_a & X_a \\ 0 & 1 & 0 & Z_a & 0 & -X_a & Y_a \\ 0 & 0 & 1 & -Y_a & X_a & 0 & Z_a \end{bmatrix}_i,
Pi=
1000100010Za−Ya−Za0XaYa−Xa0XaYaZa
i,
i
=
1
,
⋯
,
n
i=1,\cdots,n
i=1,⋯,n
根据式
(
3
)
,代入样本值得到方程组如下:
根据式(3),代入样本值得到方程组如下:
根据式(3),代入样本值得到方程组如下:
{
P
1
θ
=
v
1
P
2
θ
=
v
2
⋮
P
n
θ
=
v
n
\begin{dcases} P_1\theta = v_1 \\ P_2\theta = v_2 \\ \vdots \\ P_n\theta = v_n \end{dcases}
⎩
⎨
⎧P1θ=v1P2θ=v2⋮Pnθ=vn
则变换为矩阵方程为:
则变换为矩阵方程为:
则变换为矩阵方程为:
v
=
P
θ
v = P\theta
v=Pθ
P
=
[
P
1
P
2
⋮
P
n
]
,
v
=
[
v
1
v
2
⋮
v
n
]
P= \begin{bmatrix} P_1 \\ P_2 \\ \vdots \\ P_n \end{bmatrix}, v= \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix}
P=
P1P2⋮Pn
,v=
v1v2⋮vn
考虑
v
=
P
θ
无解,需要从
P
的列空间中找出最接近
v
的向量
u
(
u
可以理解为
v
在
P
的列空间中的投影,理解如下图所示:)
考虑v = P\theta无解,需要从P的列空间中找出最接近v的向量u(u可以理解为v在P的列空间中的投影,理解如下图所示:)
考虑v=Pθ无解,需要从P的列空间中找出最接近v的向量u(u可以理解为v在P的列空间中的投影,理解如下图所示:)
如上图所示,
p
是
b
在
[
a
1
a
2
]
列空间中的投影。
如上图所示,p是b在\begin{bmatrix} a_1 & a_2 \end{bmatrix} 列空间中的投影。
如上图所示,p是b在[a1a2]列空间中的投影。
令
e
=
v
−
u
,最小二乘就是找到
∥
e
∥
2
最小的点,最小二乘就是指向量长度的最小平方。
令e=v-u,最小二乘就是找到\parallel e \parallel^2最小的点,最小二乘就是指向量长度的最小平方。
令e=v−u,最小二乘就是找到∥e∥2最小的点,最小二乘就是指向量长度的最小平方。
由上可知,
u
位于
P
的列空间中,即
u
是
P
的各列的线性组合:
由上可知,u位于P的列空间中,即u是P的各列的线性组合:
由上可知,u位于P的列空间中,即u是P的各列的线性组合:
令
P
的列空间为
P
=
[
C
1
C
2
⋯
C
m
]
令P的列空间为 P= \begin{bmatrix} C_1 & C_2 & \cdots & C_m \end{bmatrix}
令P的列空间为P=[C1C2⋯Cm]
故存在
u
=
C
1
θ
1
~
+
C
2
θ
2
~
+
⋯
+
C
m
θ
m
~
故存在 u=C_1\tilde{\theta_1} + C_2\tilde{\theta_2} + \cdots + C_m\tilde{\theta_m}
故存在u=C1θ1~+C2θ2~+⋯+Cmθm~
即
P
θ
~
=
u
有解。
即P\tilde{\theta}=u有解。
即Pθ~=u有解。
e
=
v
−
u
=
v
−
P
θ
~
e=v-u=v-P\tilde{\theta}
e=v−u=v−Pθ~
e
正交于
P
的列空间,存在:
e正交于P的列空间,存在:
e正交于P的列空间,存在:
e
⊥
C
1
,
e
⊥
C
2
,
⋯
,
e
⊥
C
m
e \perp C_1,e \perp C_2,\cdots,e \perp C_m
e⊥C1,e⊥C2,⋯,e⊥Cm
由向量点积关系式可得: 由向量点积关系式可得: 由向量点积关系式可得:
⇒ { C 1 T ( v − P θ ~ ) = 0 C 2 T ( v − P θ ~ ) = 0 ⋮ C m T ( v − P θ ~ ) = 0 \Rarr \begin{dcases} C_1^T(v-P\tilde{\theta})=0 \\ C_2^T(v-P\tilde{\theta})=0 \\ \vdots \\ C_m^T(v-P\tilde{\theta})=0 \end{dcases} ⇒⎩ ⎨ ⎧C1T(v−Pθ~)=0C2T(v−Pθ~)=0⋮CmT(v−Pθ~)=0
⇒ [ C 1 T C 2 T C 3 T ⋮ C m T ] ( v − P θ ~ ) = [ 0 0 0 ⋮ 0 ] \Rarr \begin{bmatrix} C_1^T \\ C_2^T \\ C_3^T \\ \vdots \\ C_m^T \end{bmatrix} (v-P\tilde{\theta})= \begin{bmatrix} 0 \\ 0 \\ 0 \\ \vdots \\ 0 \end{bmatrix} ⇒ C1TC2TC3T⋮CmT (v−Pθ~)= 000⋮0
∵
P
=
[
C
1
C
2
⋯
C
m
]
\because P= \begin{bmatrix} C_1 & C_2 & \cdots & C_m \end{bmatrix}
∵P=[C1C2⋯Cm]
∴
P
T
=
[
C
1
T
C
2
T
⋮
C
m
T
]
\therefore P^T = \begin{bmatrix} C_1^T \\ C_2^T \\ \vdots \\ C_m^T \end{bmatrix}
∴PT=
C1TC2T⋮CmT
⇒
P
T
(
v
−
P
θ
~
)
=
0
\Rarr P^T(v-P\tilde{\theta})=0
⇒PT(v−Pθ~)=0
⇒
P
T
P
θ
~
=
P
T
v
\Rarr P^TP\tilde{\theta}=P^Tv
⇒PTPθ~=PTv
⇒
θ
~
=
(
P
T
P
)
−
1
P
T
v
\Rarr \tilde{\theta}=(P^TP)^{-1}P^Tv
⇒θ~=(PTP)−1PTv
即 θ ~ = ( P T P ) − 1 P T v 为基于最小二乘计算出来的最接近实际参数的转换值 即\tilde{\theta}=(P^TP)^{-1}P^Tv为基于最小二乘计算出来的最接近实际参数的转换值 即θ~=(PTP)−1PTv为基于最小二乘计算出来的最接近实际参数的转换值