# An Automatic Geometric Registration Method for Multi Temporal 3D Models
## 3 Methodology
### Spatial-Feature-Point Extraction  
The research object of this paper was a 3D model, which contained data including vertices, triangulated-mesh connecting vertices, and texture-image data corresponding to vertices, as shown in Figure 3a. In Figure 3a, the yellow circles are vertices in the 3D model data, which are connected by black lines to form a triangulation. Each vertex corresponds to a unique normalized 2D texture coordinate, as shown by the white origin in Figure 3b. Then, the corresponding 2D texture coordinates, which are the normalized coordinates of the feature points in the texture image, and 3D vertices are rendered to form a regular 3D model. The prerequisite of 3D model registration is to obtain high-precision spatial-feature points and their corresponding spatial positions. However, the conventional method of extracting image feature points directly extracts the coordinates of 2D image points, and then recovers their spatial positions based on the SfM pipeline algorithm [27]. Since texture images of 3D model data are irregular images, as shown in Figure 3b, the direct transformation relationship between texture coordinates and their spatial coordinates cannot be directly formed. Therefore, we propose a spatial feature-point-extraction method that can calculate the corresponding spatial positions of feature points on texture images. Firstly, feature points are extracted from texture images. The scale-invariant feature transform (SIFT) feature has been widely used in the field of feature extraction because of its advantages of invariant to lighting, scale, and rotation changes and can overcome affine image changes [28]. In this paper, SIFT feature points are first extracted from texture images, and their image coordinates are normalized to texture coordinates, as shown in Equation (1). \[\left\{ \begin{matrix}t_{x}=\frac{x}{\pi id}y\\ t_{y}=1-\frac{x}{\pi id}\end{matrix} \right. \tag{1}\]  
where _wid_ and _hei_ represent the width and height of the texture image (in pixels), respectively. \(t_{x}\) and \(t_{y}\) represent the normalized texture coordinates. Secondly, the plane coordinates of feature points \(\left[ \begin{matrix}X_{w}&Y_{w}\end{matrix} \right]^{\text{T}}\) are interpolated. The normalized texture coordinates \(\left[ \begin{matrix}t_{x}&t_{y}\end{matrix} \right]^{\text{T}}\) of each triangle were searched to obtain the texture vertex coordinates of the triangles. A schematic diagram of a triangle and model triangle is shown in Figure 4.  
Figure 3: The composition of the 3D model. (**a**) The vertices of the 3D model and the triangulation connecting the vertices. (**b**) The texture image of the 3D model and the texture coordinates corresponding to the vertices. In Figure 4, \(t_{1}\), \(t_{2}\), and \(t_{3}\) are the three normalized vertex coordinates of the texture triangle, respectively. \(X_{1}\), \(X_{2}\), and \(X_{3}\) are the spatial plane coordinates of the model triangle, respectively. \(t_{i}\) is the normalized texture position corresponding to the extracted feature point. \(X_{i}= \begin{bmatrix}X_{w}&Y_{w}&Z_{w}\end{bmatrix} ^{\mathrm{T}}\) is the spatial position corresponding to \(t_{i}\). According to the corresponding relationship between the model triangle and the texture triangle, the plane coordinates of texture triangle and model triangle are defined as a 2D affine transformation, which can be expressed as Equation (2). \[ \begin{bmatrix}X_{w}\\ Y_{w}\end{bmatrix} = \begin{bmatrix}a&b&c\\ d&e&f\end{bmatrix}\begin{bmatrix}t_{x}\\ t_{y}\\ 1\end{bmatrix}  \tag{2}\]  
where \((a,b,c,d,e,f)\) are 2D affine-transformation parameters. The three normalized texture coordinates of the texture triangle and the vertex plane coordinates of the corresponding model triangle are put into Equation (2). After finishing, which can be expressed as:  
\[\mathbf{A}\mathbf{\cdot}\mathbf{X}=\mathbf{L} \tag{3}\]  
Figure 4: The mapping relationship between texture triangles and model triangles. \[\text{where }\mathbf{A}=\left[