Skip to main content

Table 1 An dual quaternion algorithm of Helmert transformation

From: A dual quaternion algorithm of the Helmert transformation problem

Initiation: input 3D coordinates of control points and construct 3D coordinate vector quaternion by Eq. (29), and input the point-wise weight \(\alpha_{i}\), and the initial value \(\lambda = \lambda_{ 0}\)

Step 1 Compute \(a\), \(b\), \(c\), \({\mathbf{A}}\), \({\mathbf{B}}\), \({\mathbf{C}}\) by Eq. (39) to Eq. (44)

Step 2 Compute \({\mathbf{D}}\) by Eq. (61), and carry out the eigenvalue–eigenvector decomposition of \({\mathbf{D}}\). \(\beta_{ 1}\) is set to the largest eigenvalue, and \(\varvec{r}\) is set to the eigenvector corresponding to the largest eigenvalue

Step 3 Compute \(\lambda_{i}\) (subscript \(i\) denotes the iterative number) by Eq. (67). If \(\left| {\lambda_{i} - \lambda_{i - 1} } \right| < \tau\) where \(\tau\) is a threshold (e.g., 1.0 × 10−10), turn to Step 4, otherwise turn to Step 2 with the value \(\lambda = \lambda_{i}\)

Step 4 Compute \({\mathbf{R}}\) by Eq. (24), furthermore, if rotation angles \(\theta_{x}\), \(\theta_{y}\), \(\theta_{z}\) are needed, compute them by Eq. (4). Compute \(\varvec{s}\) by Eq. (58) and then \(\varvec{t}\) by Eq. (28) and lastly translation \({\mathbf{t}}\) Eq. (26)

Step 5 Compute \(\varvec{e}_{i}\) first by substituting solution of \(\varvec{r}\), \(\varvec{s}\), \(\lambda\) into Eq. (32) and then compute \(e\) by Eq. (33). Lastly, compute the root-mean-square error \(rmse = \sqrt {\frac{e}{3n - 7}}\)