# Real-Time Geo-Localization for Land Vehicles Using LIV-SLAM and Referenced Satellite Imagery
## 3 Materials and Methods
### Local Image Real-Time Generating  
The local image generating algorithm integrates features from multiple LiDAR scans and camera frames, thereby significantly enhancing the feature richness compared to single-view approaches.  
Figure 4 gives the details of the projection.  
Given a point set:  
\[P=\{x,y,z,r,g,b\} \tag{1}\]  
where \((x,y,z)\) represents the three-dimensional spatial coordinates, and \((r,g,b)\) represents the corresponding color information. For each pixel at \(\left(c_{x},c_{y}\right)\), a subset of \(P\) within a radius is selected as contributing points, denoted as \(D\). A projection map can be calculated using a Gaussian-weighted averaging method as follows:  
\[I_{i}\big{(}c_{x},c_{y}\big{)}=\frac{\sum_{p_{k}\in D}p_{k}(C_{i})e^{-d_{k}^{2 }/2\sigma^{2}}}{\sum_{p_{k}\in D}e^{-d_{k}^{2}/2\sigma^{2}}} \tag{2}\]  
where \(d_{k}\) denotes the Euclidean distance between point \(p_{k}\) and the calculated pixel \(\left(c_{x},c_{y}\right)\), \(\sigma\) is the standard deviation, and \(i\) represents the color channel, as each channel of the color \((r,g,b)\) is averaged in the same manner.  
A straightforward implementation can be adopted. First, a projection image is determined based on the size of the projection area and the specified resolution. The color of each pixel is then computed using Equation (2), as illustrated in Figure 4. Assuming the image size is \(n\times n\) and there are \(m_{1}\) points within the projection area, the computational complexity of the approach is \(O\left(n^{2}m_{1}\right)\). It is evident that this complexity increases rapidly with larger projection areas and finer resolutions.  
To reduce computational overhead, the projection process is designed in an incremental way, using only the updated point cloud from the LIV-SLAM module. Specifically, each new point is projected onto the pixels within its effective weighting area. The numerator and denominator of (2) are accumulated into a value map \(V\big{(}c_{x},c_{y}\big{)}\) and a weight map \(W\big{(}c_{x},c_{y}\big{)}\), respectively. Then, the local projection image is generated by pixel-wise division of the value map by the weight map as follows:  
\[I_{i}\big{(}c_{x},c_{y}\big{)}=\frac{V\big{(}c_{x},c_{y}\big{)}}{W\big{(}c_{x },c_{y}\big{)}} \tag{3}\]  
Figure 4: Pixel-wise generation of the projection image.  
The computational complexities of the first and second steps are \(O\big{(}r^{2}m_{2}\big{)}\) and \(O\big{(}n^{2}\big{)}\), respectively, where \(r\times r\) is the size of the effective weighting area for a single pixel, and \(m_{2}\) represents the number of updated points. Typically, the weighting region for a single pixel is much smaller than the entire projection area (\(r~{}\ll~{}n\)), and the number of updated points is significantly less than the total number of points within the projection area (\(m_{2}~{}\ll~{}m_{1}\)). As a result, the incremental implementation is considerably more efficient. Moreover, the computational complexity remains invariant by increases in image size or resolution, which enhances matching reliability and accuracy by allowing larger projection images to capture more distinctive and detailed features.