C++ 코드는 [이곳]에서 다운로드 가능합니다. 원본 코드는 [이곳]을 참고 하였습니다. 샘플파일은 [bunny.pcd]을 사용하였습니다. Jupyter 버젼은 [이곳]에서 확인 가능 합니다.
!python --version !pip freeze | grep pcl
Python 2.7.15rc1
python-pcl==0.3
import numpy as npimport pclimport randomcloud = pcl.load('bunny.pcd')print('cloud(size) = '+str(cloud.size))# Create a KD-Treetree = cloud.make_kdtree()# Output has the PointNormal type in order to store the normals calculated by MLSmls = cloud.make_moving_least_squares()mls.set_Compute_Normals (True)mls.set_polynomial_fit (True)mls.set_Search_Method (tree)mls.set_search_radius (0.03)# Use all neighbors in a radius of 3cm.# // Reconstructmls_points = mls.process ()print('cloud(size) = '+str(mls_points.size))pcl.save_PointNormal(mls_points, 'bunny-mls.pcd')
cloud(size) = 397
cloud(size) = 397
노이즈 제거후 Upsampling을 수행 하므로, 제거된 노이즈가 많을경우 포인트 수는 오히려 감소 할수 있습니다.