# PointCloud 필터링의 개요 및 세부 기술

#### PointCloud 필터링의 정의

PointCloud 필터링은 3차원 점군 데이터에서 유효한 데이터를 추출하거나 노이즈, 이상치 등을 제거하는 과정이다. 이 과정은 PointCloud 데이터를 정제하고, 분석 또는 모델링을 위한 준비 단계로서 매우 중요한 역할을 한다. 필터링은 주로 공간적 연관성, 속성 정보, 또는 특정 기준에 따라 데이터를 선별하는 다양한 알고리즘을 통해 수행된다.

#### 필터링의 목적과 중요성

필터링의 주요 목적은 PointCloud 데이터의 품질을 개선하는 것이다. 고품질의 PointCloud는 데이터 처리 및 분석의 정확성을 높일 수 있다. 또한, 필터링은 데이터 양을 줄여 연산 비용을 절감하고, 후속 처리 과정에서의 효율성을 증가시킨다. 특히, 필터링은 노이즈 제거, 지형 또는 객체 분할, 데이터 정합성 향상 등에 필수적이다.

#### PointCloud 필터링의 유형

PointCloud 필터링은 다양한 방식으로 분류될 수 있으며, 주요 유형은 다음과 같다.

* **노이즈 필터링 (Noise Filtering)**: 센서 잡음이나 외부 요인으로 인해 발생하는 불필요한 데이터를 제거한다.
* **이상치 제거 (Outlier Removal)**: PointCloud 내에서 주변 점들과 현저히 다른 위치에 있는 이상치를 식별하고 제거한다.
* **밀도 기반 필터링 (Density-based Filtering)**: 점의 밀도를 기준으로 데이터의 중요도를 판단하여, 특정 밀도 이하의 점들을 제거하거나 유지한다.
* **평균 필터링 (Averaging Filtering)**: 인접한 점들의 평균을 계산하여 데이터를 평활화(smoothing)한다.
* **다운 샘플링 (Downsampling)**: 데이터의 양을 줄이기 위해, 일정한 기준에 따라 일부 점들을 선택하여 유지하고 나머지를 제거한다.

#### 노이즈 제거 필터링

노이즈 제거 필터링은 센서 오류, 환경적 요인, 데이터 수집 과정에서 발생하는 잡음을 제거하는 작업이다. 주요 방법은 다음과 같다.

* **평균 이동 (Mean Shift)**: 각 점을 주변 점들의 평균값으로 이동시켜 노이즈를 감소시킨다. 이는 연속적인 점군에서 노이즈를 효율적으로 제거할 수 있다.
* **Gaussian 필터링**: 점군에 Gaussian 커널을 적용하여 각 점을 주변 점들의 가중 평균으로 계산한다. 이 방법은 노이즈를 부드럽게 제거하면서 원래 데이터를 유지하는 데 유리하다.
* **미디언 필터링 (Median Filtering)**: 각 점의 위치를 주변 점들의 중앙값으로 대체하여 노이즈를 제거한다. 이는 점진적인 변화가 있는 데이터에서 노이즈를 효과적으로 제거한다.

#### 이상치 제거 필터링

이상치 제거 필터링은 PointCloud에서 유효하지 않은 점, 즉 주위 점들과 비교하여 현저히 다른 위치에 있는 점들을 제거하는 과정이다. 주요 알고리즘은 다음과 같다.

* **Statistical Outlier Removal (SOR)**: 각 점의 평균 거리와 표준 편차를 계산하여, 설정된 임계값을 넘는 점을 이상치로 간주하고 제거한다.
* **Radius Outlier Removal (ROR)**: 특정 반경 내에 있는 이웃 점의 수를 계산하여, 이 수가 임계값보다 적은 점들을 이상치로 제거한다.
* **Local Outlier Factor (LOF)**: 점의 밀도와 주변 이웃 점의 밀도를 비교하여 이상치를 탐지하는 방법이다. LOF는 특히 복잡한 구조를 가진 PointCloud에서 유용하다.

#### 밀도 기반 필터링

밀도 기반 필터링은 점들의 밀도 정보를 이용해 데이터를 필터링하는 방법이다. 이 방법은 고밀도 영역과 저밀도 영역을 구분하여 데이터의 품질을 개선한다.

* **Voxel Grid Filter**: 공간을 작은 격자(Voxel)로 나누고, 각 Voxel 내의 점들을 하나로 대표화하여 밀도를 기반으로 데이터 양을 줄인다. 이 과정에서 Voxel 내의 점들은 하나의 중심점으로 대체된다.
* **Uniform Sampling**: 고밀도 영역의 점들을 일정 비율로 선택하여 데이터를 균등하게 줄인다. 이는 복잡한 구조에서 데이터의 분포를 유지하면서 필터링할 수 있다.
* **Adaptive Sampling**: 점의 밀도에 따라 다른 샘플링 비율을 적용하여, 고밀도 영역에서는 점을 많이 유지하고 저밀도 영역에서는 점을 줄인다.

#### 평활화 필터링

평활화 필터링은 PointCloud에서 작은 불규칙성을 제거하고, 데이터의 연속성을 증가시키는 방법이다.

* **Laplacian Smoothing**: 각 점을 이웃 점들의 평균 위치로 이동시켜 데이터를 평활화한다. 이 방법은 경계가 명확한 객체에서 데이터를 부드럽게 만드는 데 유용하다.
* **Bilateral Filtering**: 점의 위치뿐만 아니라 속성(예: 색상, 반사율)을 고려하여 평활화한다. 이는 데이터의 중요한 경계를 유지하면서 노이즈를 줄이는 데 효과적이다.
* **Non-Local Means Filtering**: 각 점의 평활화를 위해, 멀리 떨어진 점들의 유사성을 고려하여 평균을 계산한다. 이 방법은 복잡한 구조를 가진 PointCloud에서 유용하다.

#### 다운샘플링

하위 샘플링은 PointCloud의 데이터 양을 줄이기 위해 사용된다. 이는 데이터의 주요 특성을 유지하면서 처리 효율을 높이는 데 중점을 둔다.

* **Random Downsampling**: 점들을 무작위로 선택하여 데이터 양을 줄인다. 간단하지만 중요한 정보를 손실할 가능성이 있다.
* **Grid-based Downsampling**: 격자 기반으로 데이터를 구획하여 각 격자에서 대표 점을 선택한다. 이 방법은 데이터의 공간적 구조를 유지하는 데 유리하다.
* **Curvature-based Downsampling**: 곡률 정보를 이용하여 중요하지 않은 평탄한 영역의 점들을 줄이고, 중요한 곡률이 큰 영역은 유지한다.
