## 2 Methodology
When \(d_{i}\) is not within the range of \(\overline{d}\ \pm 3\sigma\), the point \(p_{i}\) can be removed as a noise point. In the 3D point cloud denoising processing, \(\mu\) can be adjusted as needed. If \(\mu\) is larger, fewer points will be deleted; if \(\mu\) is smaller, more points will be deleted [14]. The filtering effect of SOR is affected by the noise removal coefficient \(\mu\) and the number of points \(k\) in the field. In the actual application process, by comparing the filtering effects under different parameters, the parameters with the better effect are selected, which can remove noise points as much as possible and retain the real value. In this paper, we define the number of clusters as 10, \(k\) as 50, and \(\mu\) as 1. These data are obtained by actual experimental testing. For different point cloud data, different parameters need to be tested to obtain a better filter effect. ```
1:Point cloud \(P=\{p_{i}\}\), \(p_{i}=(x_{i}y_{i},z_{i})\)
2:Filtered point cloud \(O=\left\{o_{j}\right\}\), \(o_{j}=\left(x_{j},y_{j},z_{j}\right)\)
3:function Fast cluster statistic outlier removal (\(P\))
4:Defining cluster size
5:\(N\gets Clusternumber\)
6:\(ClusterLenth=max\{x_{i}\}-min\{x_{i}\}/N\)
7:\(ClusterWidth=max\{y_{i}\}-min\{y_{i}\}/N\)
8:\(ClusterHeight=max\{z_{i}\}-min\{z_{i}\}/N\)
9:Subdividing point cloud space into \(N\) clusters \(C=c_{k}\)
10:for\(p_{i}\in P\)do
11:\(d_{i}=\left(\sum_{i}^{k}k\_nearestNeighbourDistance(p_{i})\right)/k\)
12:add \(p_{i}\) appropriate cluster \(c_{k}\)
13:endfor
14:\(\mu_{\mu}=i/N\)
15:Retain clusters \(C_{u}\) with number of points less than \(\mu_{\mu}\)
16:for\(p_{i}\in C_{u}\)do
17:\(\overline{d}_{i}=\frac{1}{\overline{n}}\sum_{i}^{n}d_{i}\)
18:\(\sigma=\sqrt{\frac{1}{n}\sum_{i}^{n}\left(d_{i}-\overline{d}_{i}\right)^{2}}\)
19:\(P^{\prime}=\left\{p_{i}\in P\right|\left(\overline{d}_{i}-\mu\sigma\right) \leq d_{i}\leq\left(\overline{d}_{i}+\mu\sigma\right)\right\}\)
20:endfor
21:return\(P^{\prime}\)
22:endfunction
23:functionPass-through filter (\(P^{\prime}\))
24: Defining experimental area (EA)
25:\(x_{min}\gets EAx_{min}\)
26:\(x_{max}\gets EAx_{max}\)
27:\(y_{min}\gets EAy_{min}\)
28:\(y_{max}\gets EAy_{max}\)
29:return\(O=\left\{p^{\prime}_{i}\in P^{\prime}|x_{min}<x_{i}<x_{max},y_{min}<y_{i}<y_{ max}\right\}\)
30:endfunction
```  
**Algorithm 1** Pretreatment  
**Upsampling:** After filtering the point cloud, we use GPU-GAN to upsample the point cloud, which is an improvement based on PU-GAN [13]. The upsampling model is divided into two parts: the generator network and the discriminator network, as shown in Figure 3.  
Figure 3: Overview of GPU-GAN’s architecture. MLP represents multi-layer perceptron; Conv represents convolutional layer; \(N\) is the number of points in \(P\); r is the upsampling rate; and \(C\), \(C^{\prime}\), \(C_{d}\) are the number of feature channels. The generator network has three components to process the input point cloud sequentially. The purpose of the feature extraction component is to extract features from the input point cloud. The feature expansion component aims to expand the point feature. It upsamples the point feature to obtain the expanded feature, and then downsamples that to compute the difference between the features before and after upsampling. The difference is added with the first-step expanded feature to self-correct the expanded feature. The point set generation component returns a set of 3D coordinates from the point expansion feature through a set of multi-layer perceptrons. Finally, rN points are generated through a farthest point sampling step. \(r\) is the upsampling magnification. \(N\) is the number of points. The purpose of the discriminator network is to distinguish whether the generator is input or not to help the generator training. Inspired by AR-GCN [17], we introduce a graph convolution module and redesign the discriminator part. Firstly, we extract global features of the input point cloud with shape \(rN\times c\) using a set of MLPs.