## 3 The Proposed Satellite Images DSM Generation Method
### RPC Refinement by DPBA  
In this section, we use the DPBA method to reduce the RPC error caused by the satellite attitude. DPBA is an improved bundle adjustment algorithm, which is mainly used to improve the accuracy of the generated DSM and accelerate the slow convergence speed of the traditional BA method.  
In the RPC refinement process, 3D points are generated by triangulation on the matching point pairs or matching point sets generated in Section 3.1. Then DPBA is performed based on the 2D-3D point correspondence. Due to the large number of RPC parameters (about 90 parameters per satellite image), optimizing directly RPC parameters will cause heavily computational burden, so the proposed method chooses some satellite camera attitude parameters and 3D point coordinates as the optimization variables of DPBA. The attitude parameters of the satellite camera include rotation transformation \(\mathbf{R}\) and translation transformation \(\mathbf{t}\). In fact, the attitude error of the satellite is mainly  
Figure 2: The reconstruction results from different image pairs: (**a**) image pair A; (**b**) image pair B.  
related to the attitude angle that defines the orientation of the sensor [32]. This error can be compensated by a rotational transformation. Therefore, the objective function of DPBA can be expressed by Equation (4).  
\[\min_{(\mathbf{X}_{n},\ \mathbf{R}_{m})}\frac{1}{2}\sum\limits_{m=1}^{M}\bigg{\{} \frac{1}{2}\sum\limits_{n=1}^{N}\left[\|\mathbf{x}_{mn}-\mathbf{P}_{m}(\mathbf{R}_{m}\mathbf{X} _{n}+\mathbf{t}_{m})\|_{2}^{2}+PE_{1}\right]+PE_{2}\bigg{\}}, \tag{4}\]  
where \(\mathbf{x}_{mn}\), \(\mathbf{X}_{n}\), \(\mathbf{P}_{m}(\cdot)\), \(M\) and \(N\) represent the same meaning as in Equation (3). In addition, \(\mathbf{R}_{m}\) and \(\mathbf{t}_{m}\) indicate rotation and translation of the \(m\)-th camera, respectively. \(PE_{1}\) and \(PE_{2}\) are the two penalty functions in the form shown in Equation (5):  
\[\begin{cases}PE_{1}=\frac{\lambda}{2}\|\mathbf{X}_{n}\|_{2}^{2}\\ PE_{2}=\frac{\tau}{2}\|\mathbf{R}_{m}\|_{2}^{2},\end{cases} \tag{5}\]  
where \(\lambda\) and \(\tau\) stand for the penalty parameters. In order to keep the values of the two penalty functions and the value of the original function approximately the same order of magnitude, we take \(\lambda\) 0.0000001 and \(\tau\) 100,000. In view of the fact that the optimization variables \(\mathbf{X}_{n}\) and \(\mathbf{R}_{m}\) in Equation (5) represent different physical meanings, and the magnitude difference between them is quite large, we design the penalty functions as two types. In Equation (5), the 3D point \(\mathbf{X}_{n}\), an optimization variable related to the number of matching points, is designed as the first penalty function. The rotation matrix \(\mathbf{R}_{m}\) represents the optimization variable related to the camera attitude and is designed into the second penalty function. Following the form of the ridge estimation, we still design the penalty functions in the form of \(\updownarrow_{2}\)-norm.  
To optimize efficiently, we use Euler angles to represent rotation transformations in the camera's attitude parameters. Hence, it \(\mathbf{R}_{m}\) can be expressed as follows:  
\[\begin{array}{ll}\mathbf{R}_{m}&=R_{X}(\alpha_{m})R_{Y}(\beta_{m})R_{Z}(\gamma_ {m})\\ &=\begin{pmatrix}1&0&0\\ 0&\cos\alpha_{m}&-\sin\alpha_{m}\\ 0&\sin\alpha_{m}&\cos\alpha_{m}\\ \end{pmatrix}\begin{pmatrix}\cos\beta_{m}&0&\sin\beta_{m}\\ 0&1&0\\ -\sin\beta_{m}&0&\cos\beta_{m}\\ \end{pmatrix}\begin{pmatrix}\cos\gamma_{m}&-\sin\gamma_{m}&0\\ \sin\gamma_{m}&\cos\gamma_{m}&0\\ 0&0&1\\ \end{pmatrix},\end{array} \tag{6}\]  
where \(R_{X}(\cdot)\), \(R_{Y}(\cdot)\), and \(R_{Z}(\cdot)\) represent the rotation on the \(X\)-axis, \(Y\)-axis, and \(Z\)-axis, respectively, and \(\alpha_{m}\), \(\beta_{m}\) and \(\gamma_{m}\) denote the Euler angles to be optimized of the \(m\)-th camera. The subsequent calculation of the refinement RPC parameters adopts the method in [32].