1.简介
坐标转换是测量领域中数据处理的基础性工作。目前,广为接收的三维坐标转换模型是七参数模型,即1个缩放参数、3个旋转角度参数和3个平移参数。理论上9参数模型更加完善,但使用场景很少。
2.七参数模型
七参数的数学模型为:
[
X
Y
Z
]
s
=
k
∗
[
1
0
0
0
c
o
s
a
−
s
i
n
a
0
s
i
n
a
c
o
s
a
]
[
c
o
s
b
0
s
i
n
b
0
1
0
−
s
i
n
b
0
c
o
s
b
]
[
c
o
s
c
−
s
i
n
c
0
s
i
n
c
c
o
s
c
0
0
0
1
]
[
X
Y
Z
]
o
+
[
T
x
T
y
T
z
]
(1)
\begin{bmatrix}X \\Y \\ Z\end{bmatrix} _s=k*\begin{bmatrix}1&0 &0 \\0&cosa&-sina \\ 0&sina&cosa\end{bmatrix}\begin{bmatrix}cosb&0 &sinb\\0&1&0 \\ -sinb&0&cosb\end{bmatrix}\begin{bmatrix}cosc& -sinc&0 \\sinc&cosc&0 \\ 0&0&1\end{bmatrix}\begin{bmatrix}X \\ Y \\Z \end{bmatrix}_o+\begin{bmatrix} Tx \\ Ty \\Tz \end{bmatrix}\tag{1}
⎣⎡XYZ⎦⎤s=k∗⎣⎡1000cosasina0−sinacosa⎦⎤⎣⎡cosb0−sinb010sinb0cosb⎦⎤⎣⎡coscsinc0−sinccosc0001⎦⎤⎣⎡XYZ⎦⎤o+⎣⎡TxTyTz⎦⎤(1)
式(1)中具体可概括为:
[
X
Y
Z
]
s
=
k
∗
[
a
1
a
2
a
3
b
1
b
2
b
3
c
1
c
2
c
3
]
[
X
Y
Z
]
o
+
[
T
x
T
y
T
z
]
(2)
\begin{bmatrix}X \\Y \\ Z\end{bmatrix} _s=k*\begin{bmatrix}a1& a2 &a3 \\b1&b2&b3 \\ c1&c2&c3\end{bmatrix}\begin{bmatrix} X \\ Y \\Z \end{bmatrix}_o+\begin{bmatrix} Tx \\ Ty \\Tz \end{bmatrix}\tag{2}
⎣⎡XYZ⎦⎤s=k∗⎣⎡a1b1c1a2b2c2a3b3c3⎦⎤⎣⎡XYZ⎦⎤o+⎣⎡TxTyTz⎦⎤(2)
根据公共点的两套坐标,对式(2)的求解具体可概括为两类:最小二乘与整体最小二乘。本文主要简述最小二乘的几种解法。
3.最小二乘的多种解法
直接来看,对式(1)的求解很难。所以根据式(1)中旋转矩阵的转化与求解,目前的解法主要有以下几种:
3.1参数平差
式(1)不易求解,但不是不能求解。硬刚这7个参数有点难,但通过矩阵的合并,泰勒一阶展开,也可以写出来。将式(1)对7个参数进行泰勒一阶展开,然后罗列参数方程求解。
3.2 布尔沙解法
布尔沙模型是针对3个旋转角都是小角度的坐标转换模型,使用场景单一。小角度是多小呢,目前我的认知是不超过5度,这个关键是看我们的转换精度的预期控制。
3.3 符有限制条件的间接平差
硬刚这7个参数有点难,将式(1)化为式(2),对13个参数进行泰勒一阶展开,罗列参数方程。因为参数(2)旋转的参数见有约束,所以还要罗列6个条件方程。
3.4 罗德里格矩阵
比较巧妙的将式(1)中的旋转矩阵进行转换,最后仍然是一共有7个参数,所以还可以归结为间接平差的一种,只不过相比3.2法,求解简单一点。
3.5四元数
同样是将旋转矩阵进行了转换,但是感觉很复杂,比硬刚还硬刚,所以之后不写这个东西了。
这是第一篇,之后会详细阐述这几种解法的过程,包括代码和数据,敬请期待与点赞。