Preliminary ICP stage for data-thinning based on object geometry

Basically, the I CP algorithm steps are as follows: for each point i n the first set, match the closest point in the second set; estimate mapping parameters using the RMS cost function; transform points using estimated parameters; perform multiple iterations (reconnecting points, and so on). In this paper a preliminary data-thinning algorithm is proposed. It can help to speed up all ICP algorithm stages by reducing the amount of input data. The proposed algorithm is based on the human perception of objects geometry. A human often analyzes edges and corners of objects and does not pay attention to the inner parts of polygons when comparing two objects and looking for similar parts. The algorithm described in this article begins with a search of planes in point’s cloud. Next, the search for intersection of the found planes is performed in order to extract object edges. Finally, the intersection of the edges help us to get object corners. Further, all points not belonging to the edges and corners are removed from the point cloud. In real objects polygons most often occupy a large part of the object, therefore the proposed algorithm allows to get rid of a large number of insignificant points.


Introduction
The ICP (Iterative Closest Point) algorithm [1,2] has become the dominant method for aligning three dimensional models based purely on the geometry. The algorithm is widely used for registering the outputs of 3D scanners, which typically only scan an object from one direction at a time. For alignment it is necessary to find a geometric transformation that connects two point clouds in R 3 in the best way with respect to the L 2 norm. The ICP algorithm consists of two main stages: 1. Searching of corresponding points (pairs) in two clouds; 2. Minimizing the error metric (variational subproblem of the ICP) [3][4][5][6][7][8][9][10][11][12]. The computational complexity of minimizing of error metric and, especially, searching of the correspondence points essentially depends on the number of points in the clouds [13][14][15][16][17]. In this article, we propose the method that need to use before the ICP algorithm. It serves to thin out point clouds. The main purpose of the ICP algorithm is to find a match between point clouds. To reach this goal a series of consecutive steps is performed. At each step, 2 point clouds are used. The more points there are in the clouds, the more time is spent at each stage. The proposed method allows to reduce the number of points due to the removal of points that lie inside the polygons. The idea is based on the human perception of objects. To implement this algorithm, you can use 2 approaches. The first of them is to look for the internal points of the polygons. After finding -remove them. The second approach is to search for edges of objects on point clouds. After finding -delete all points except them. This article offers a second approach.

Method description
Let P be a cloud of N points. (1) Before starting the main steps of the algorithm it need to find some additional parameters: a) For each point p i take over all other points of the cloud p j , j = i b) Find maximum and minimum distances between x, y and z component c) Find the minimum of the differences The radius of the neighborhood of the subset is used to select a subset of points that will participate in the calculations at each iteration of the algorithm. Let P used be the set of points already used. Let P l be the set of planes found. Let L is the set of found lines. Let P h is the set of points in the neighborhood. At first, all these sets are empty. For each point p i ∈ P, i = [1.
.N ] we do the following: a) If the point belongs to the set P used then skip it.
if p i ∈ P used then i = i + 1 (6) b) Find all points belonging to the neighborhood of the point p i with radius r 1) Enumerate all points p j ∈ P, j = [1.
.N ] 2) Find the distance to the center point 3) If the distance is less than the radius of the neighborhood, add a point to the set P h if l > r then j = j + 1 (8) c) Find the minimum distance between points l min

1) Find all distances between points
2) Sort the resulting array 3) Take the center point of the array e) Find the tolerance distance f) Find the tolerance count point g) Declare an array of points in planes P inP lanes h) Enumerate all possible triples of points from the neighborhood i) Check that they do not belong to the set P inP lanes j) Check that the points are not too far apart. If not, go to the next three points.
k) If the points lie on a straight line with some error, skip this triple if line.distanceT o(v 3 ) > d tlrnc then go to next 3 points (18) l) Build a plane P lane on these three points. m) Find the points p v of the original set P lying in this plane with some error n) Check if the number of points is greater than the threshold, save this plane to set of planes o) After finding all possible planes, we find the intersections of these planes and save to the set of lines L line = cross(P l k , P l l ) ⇒ insert line to L p) Find the points from the initial set lying on the lines with some error The proposed method is applied to each input point cloud separately. The algorithm does not require additional information about the geometry of objects in the point cloud.

Results
The described algorithm allows to reduce the number of points in the source cloud up to 2 times. In the Figures below number input points describes N in and number output points describes N out . The first test (Figure 1 and Figure 2) was conducted on the icosahedron with an additional two notches of complex shape. The number of points has almost halved. A second test ( Figure  3 and Figure 4) was conducted with the Stanford bunny model. With this input cloud, after executing the algorithm, the number of points decreased by almost 4 times. The third test ( Figure 5 and Figure 6) was carried out on a parallelepiped with a cut of complex shape. On this input cloud, the number of points has decreased by about three times. All images show that the algorithm leaves edges of objects and removes points lying inside polygons.

Conclusion
The proposed method decimates the input point cloud and removes points from it from the inner parts of the polygons. This approach allows to obtain a cloud of points from which little significant points are excluded. This reduces the execution time of all stages of the ICP algorithm. Also, the resulting point cloud resulting from the operation of the algorithm gives a better visual perception of objects inside the clouds.  Figure 6. Output cloud N out = 540.