Skip to main content
. 2024 Dec 10;24(24):7889. doi: 10.3390/s24247889
Algorithm 1. CSNDT
Input:
   X: Current scan
   Y: Reference scan
Output:
   p: Transform parameter
 1: {Initialization:}
 2: Y={C1, C2, , Cn} ← L-DBSCAN
 3: For all Point cloud cluster CiY do
 4:   Ci={m1,,mm}  all points in Ci
 5:   μj1ni=1mmjmjCi
 6:   j1nj=1m(mjμj)(mjμj)T
 7:   l=max(xmaxxmin, ymaxymin)
 8:   If seg>1 do segmentation
 9:     For all small Point cloud cluster CisCi do
 10:       Cis={m1,,mm}  all points in Cis
 11:       μjs1ni=1mmjmjCi
 12:       js1nj=1m(mjμjs)(mjμjs)T
 13:     End for
 14:   End if
 15: End for
 16: {First Registration:}
 17: While not converged do
 18:   score0, g0, H0, p10
 19:   For all points xiX do
 20:     Find the cell Fi that contains xi
 21:     scorescore+p(xi)
 22:     Update g, H
 23:   End for
 24:   Solve HΔp1=g
 25:   p1p1+Δp1
 26: End while
 27: {Second Registration:}
 28: While not converged do
 29:   score0, g0, H0, p2p1
 30:   For all points xiX do
 31:     Find the cell Fis that contains xi
 32:     scorescore+p(xi)
 33:     Update g, H
 34:   End for
 35:   Solve HΔp2=g
 36:   p2p2+Δp2
 37: End while