대용량 Point Cloud 데이터 간소화

아이나비시스템즈
12 min readJun 27, 2024

--

Ep.11

이전 글에서 자율 주행을 위한 다양한 정밀 지도 데이터(ADAS-Map, HD-Map)의 정의와 아이나비시스템즈 자체 MMS 장비를 통한 정밀 지도 데이터 제작 과정에 대해 간략하게 알아보았습니다.

그림1. 정밀 지도 데이터 구축 과정

이러한 정밀 지도 데이터 제작 과정 중, 저희 자율주행기술개발팀에서는 “Point Cloud 정밀 지도 자동 도화” 기술의 지속적인 연구/개발을 통하여 자동 도화 결과의 정확성 향상 및 정밀 지도 구축 및 현행화 작업의 효율성 증대에 힘쓰고 있습니다.

이번 글에서는 “Point Cloud 정밀 지도 자동 도화” 기술의 첫번째 단계인 “대용량 Point Cloud 데이터의 간소화”에 대해 알아보고, 대중적으로 사용되는 주요 기법들을 통하여 이를 이해하는 시간을 가지고자 합니다.

그림2. Point Cloud 정밀 지도 자동 도화 과정
  1. 대용량 Point Cloud 데이터 간소화의 정의

MMS 장비를 통하여 수집, 구성된 Point Cloud 데이터는 LiDAR 센서로 수집된 좌표 (x, y, z Point) 정보뿐만 아니라 센서의 반사 방식에 의해 수집될 수 있는 신호 강도(Intensity)나 색상 값(RGB)등의 부가 정보가 포함되어 대용량의 데이터를 형성합니다.

예를 들어 1개의 Point Cloud 데이터 파일(300m 거리의 구간) 하나에 약 1400만 개의 Point가 포함되어 있으며, 각각의 Point 정보는 최소 34byte를 차지하여 약 450MB의 용량을 가집니다. 이에 더해 전체 수집 구간 거리에 따라 다수의 Point Cloud 데이터 파일이 생성될 수 있습니다.

가령, 경부 고속도로를 이용하여 서울TC에서 부산TC까지의 거리인 400km 구간을 MMS 장비로 수집할 경우, 생성되는 Point Cloud 데이터는 약 1300개 파일, 총 600GB에 달합니다. 이러한 대용량 데이터를 저장하고 화면 표시 및 분석 작업의 수행에는 작업 장비(PC)의 물리적인 성능과 메모리 문제뿐만 아니라, 데이터의 확인 및 연산에 많은 시간이 소요되는 한계를 가지고 있습니다.

컴퓨터 성능의 발전에 따라 대용량 데이터를 효과적으로 처리할 수 있는 물리적 기반이 마련되고 있지만, 정밀 지도 도화 작업의 효율성 증가를 위해 원본 Point Cloud 데이터에서 불필요한 데이터를 선별하여 제거하거나, 관심 영역(ROI)을 지정하여 전체 데이터의 용량을 감소시키는 것이 필수적이라 볼 수 있겠습니다.

2. 데이터 간소화 과정 (1) :: 불필요한 데이터 선별 및 필터링

Point Cloud 데이터를 간소화하는 과정에 있어서 첫번째 주요 작업은 불필요한 데이터를 선별하고 필터링하는 것입니다.

MMS 장비로 수집된 Point Cloud 데이터는 환경적 간섭 등으로 인해 발생하는 노이즈 데이터나, 수집 장비와 수집 대상 지점의 거리에 따른 비효율 적인 데이터가 포함될 수 있습니다. 이들을 선별하고 제거하기 위하여 Point Cloud 내부에 포함된 부가 정보를 통한 분석을 수행하거나 통계적, 기하학적인 알고리즘을 통하여 노이즈 데이터 분류를 시도할 수 있습니다.

A. 신호 강도 / 색상 값 필터링

Point Cloud 데이터에는 표면의 속성, 반사도에 영향을 받는 신호 강도(Intensity) 값과 색상 값(RGB) 등의 부가 정보가 포함되어 있습니다.

전체 데이터의 신호 강도 값의 분포와 특성을 파악하여 상대적으로 어두운(신호 강도가 낮은) Point를 구분하기 위한 기준 값을 선정하고, 산출된 신호 강도 기준 값을 바탕으로 도로 면과 같은 불필요한 구간의 Point를 특정하여 필터링할 수 있습니다.

그림3. 상대적으로 약한 신호 강도(Intensity)를 가지는 Point가 다수 포함된 원본 Point Cloud
그림4. 신호 강도(Intensity) 값을 이용하여 도로 면 부분을 제거한 결과

B. 노이즈 제거 알고리즘 적용

MMS 장비로 생성된 Point Cloud 데이터에는 비교적 밀도가 낮고 불규칙적인 Point 정보들이 많이 포함되어 있을 수 있습니다. 이러한 데이터는 LiDAR 센서 특성상 발생하는 Noise 작은 물체의 감지로 인해 수집된 불규칙적인 Point 데이터입니다.

노이즈 제거 알고리즘 중 대표적으로 통계적 이상 값 제거 알고리즘(Statistical Outlier Removal)을 통하여, Noise 구간을 추정하는 방법을 시도하여 볼 수 있습니다.

통계적 이상 값 제거 알고리즘은 Point Cloud의 특정 Point와 주변에 분포한 Point 들과의 거리를 계산하여 전체 거리 평균과 표준 편차를 계산하고 이를 바탕으로 Point들의 거리 분포를 확인하여 이상 값(Outlier)을 분류하는 알고리즘입니다.

그림5. 특정 점과 주변 Point들 간의 거리 분포 그래프

감지된 이상 값(Outlier)에 해당 Point를 제거함으로써 Point Cloud 데이터의 전체적인 용량 감소의 효과를 기대할 수 있습니다.

그림6. 이상 값(Outliner)으로 분류된 Point를 제거하여 노이즈를 제거한 예시

C. Down Sampling 기법 적용

Point Cloud 데이터는 MMS 수집 장비의 차량 운행 속도나 장비와 수집 지점의 거리에 따라서 각자 다른 밀집도를 가진 Point 정보로 구성됩니다. 예를 들어 지면이나 사물이 수집 장비에 가까운 거리 일수록 유사한 속성의 Point가 밀집되어 수집되며, 이는 중복 데이터로 인한 데이터의 용량 증가를 가져올 수 있습니다. 이러한 불필요한 중복 데이터 제거를 위하여 Down Sampling 기술을 사용하여 데이터를 경량화, 데이터 분석 효율을 높일 수 있습니다.

Voxel Down Sampling 기법은 Point Cloud 데이터의 전체 범위에 3D Voxel Grid를 생성하여 Point를 구역 단위로 나누어 분류한 다음, 해당 Grid에 포함된 Point들 간의 상대 거리와 법선 예측 결과를 조합한 평준화 Point를 생성하여 전체 Point 개수를 줄이는 기법입니다.

그림6. 전체 데이터를 4개의 Voxel Grid로 구분한 뒤, Point를 근사화(approximated)
그림7. 25cm Voxel Grid 기준으로 간소화된 데이터의 예시

이를 통하여, Point Cloud 데이터의 전체적인 용량은 줄이면서, 특징적인 Point는 살려 데이터 분석 효율성 개선을 기대할 수 있습니다.

3. 데이터 간소화 과정 (2) :: 관심 구역 (ROI) 지정

Point Cloud 데이터를 간소화하는 과정에 있어서 두번째 주요 작업은 전체 데이터에서 필요한 지역의 데이터를 관심 구역 (ROI)으로 선정하는 것입니다.

자율 주행에 사용되는 정밀 지도 데이터는 차선 선형 정보뿐만 아니라 다양한 도로 표지, 차선 정보, 도로 특성 정보 등으로 이루어지며, 정밀 지도 데이터 감지에 포함되어야 할 구간을 특정하는 기술은 Point Cloud 데이터의 효과적인 분석을 위하여 중요한 사항 중 하나입니다. 다양한 Segmentation 기법을 적용하여 데이터를 특성에 맞추어 분류하고 불필요한 구간의 데이터를 제거함으로써 데이터 분석 성능을 높일 수 있습니다.

A. 평면 분할 (Plane Segmentation) 알고리즘

평면 분할 알고리즘은 전체 Point Cloud 데이터 들 중 바닥 면에 속하는 데이터 구역을 판별하여 분석 대상을 확정하고 이외의 데이터를 제거하여 데이터 용량을 감소시킬 수 있는 방안 중 하나입니다. Point Cloud 분석에 주로 사용되는 RANSAC (RANdom SAmple consensus) 알고리즘을 통하여 전체 데이터의 추세 모델을 예측하는 방식을 시도하여 볼 수 있습니다.

RANSAC 알고리즘의 동작원리로는, 전체 데이터들 중 특정 N개의 샘플 데이터를 선정하여 전체 데이터 모델을 예측하고, 이 예측 모델이 전체 데이터를 대표할 수 있는지를 검증하여 최종적으로 가장 적합한 데이터 모델 형태와 이에 포함되는 데이터를 찾는 방식입니다.

그림8. 2D 평면에서의 RANSAC 분석 알고리즘을 사용하여 대표 선형을 찾는 예시

Point Cloud를 포함한 대용량 데이터 분석 시 해당 RANSAC 알고리즘을 응용하여 전체 데이터 중 대표가 될 수 있는 평면을 Box 형태로 추산하고 Box 내부에 포함되는 Point를 정상 값(inlier) 구역으로, 이외의 Point를 이상 값(outlier)를 판정할 수 있습니다. 이렇게 분류된 데이터를 바탕으로 분석 대상을 선정하고 데이터를 간소화할 수 있습니다.

그림9. Point Cloud 데이터에서 바닥면 이외의 성분 분리(화단, 중앙분리대 등) 예시

B. Clustering 알고리즘

Point Cloud 전체 데이터에서 차선, 신호기, 교통 표지판 등의 데이터를 세부적인 정보를 분석하기 위하여 데이터의 클러스터링 기법을 사용할 수 있습니다. 이 방식은 분석 대상 데이터를 더욱더 세밀하게 분류하고 각각의 분류된 데이터를 개별적으로 접근함으로써 분석 성능을 비약적으로 상승시킬 수 있습니다.

이러한 클러스터링 알고리즘 중 DBSCAN Clustering 기법은 Point Cloud 데이터에 포함된 Point들의 밀도 기반 분류 방식입니다. 전체 Point Cloud 데이터에서 임의의 Point를 선택한 후 특정 거리 이내의 집중 분포된 Point를 찾아 Cluster 그룹으로 선정하고, Cluster 그룹의 주변에 분포된 Point나 Cluster 그룹 간의 상대적 거리와 위치를 한 번 더 체크하여 Cluster 그룹의 분류/확장/분리를 반복 수행합니다.

(좌) 그림10. 특정 Point를 선정하여 가까운 점을 분류하여 Cluster 생성 / (우) 그림11. 생성된 Cluster 그룹을 상호 확인하여 Cluster 그룹을 병합 및 확장
(좌) 그림12. Cluster 그룹 생성 및 확장의 반복 수행 / (우) 그림13. DBSCAN Clustering 결과

DBSCAN Clustering 알고리즘을 통하여 생성된 Cluster 그룹은 차선, 기물, 건물 등의 데이터를 분류하고 처리하기 위한 데이터의 기반이 되며, Cluster 그룹에 포함되지 못하는 Point는 이상 값(Outlier)으로 판단하여 제거할 수 있습니다.

4. 결론

이번 글에서 우리는, 대용량 Point Cloud 데이터의 간소화 과정의 정의와 그 과정에서 고려될 수 있는 다양한 방식의 데이터 검토 및 필터링 방법에 대하여 알아보았습니다.

저희 자율주행기술팀은 이러한 기법들을 검토하는 과정에서, “관심 영역(ROI) 판별” 알고리즘의 성능 또한 데이터 전체 크기에 크게 영향을 받는 것을 확인하였습니다. 이에 따라, 우선적으로 불필요 데이터(Noise 및 Outlier) 판별하고 필터링 하는 “1차 Point Cloud 데이터 간소화 단계”에 집중하였으며, 다양한 “관심 영역(ROI) 판별” 알고리즘의 동작 방식과 특성에 따라 Point Cloud 간소화 정도를 조정하여 효율성을 확보하기 위해 노력하였습니다.

이러한 고찰 과정을 통하여 “불필요한 데이터의 필터링”에서 “자동 도화를 위한 관심 영역(ROI) 지정” 과정으로 연결되는 Point Cloud 데이터 간소화를 통해, 정밀 지도 데이터를 자동 구축하고 작업 환경을 개선하는 데 기여하고 있습니다.

5. 마치며

세간에는 “완전 자율주행은 아직 시기상조다.” 라는 말이 많이 들려옵니다. 그만큼 법리적으로나 기술적으로도 많은 도전 과제가 남아있다고 생각합니다. 언뜻, 너무 부정적인 시각을 가져서는 아무것도 이룰 수 없다는 말도 떠오릅니다. 그렇기에 저희 아이나비시스템즈는 멈추지 않을 것입니다. 이러한 다양한 연구 개발을 통하여 다가올 자율주행 시대를 더욱 빠르고 더욱 가깝게, 안전하고 편리한 세상을 만들기 위해 노력하겠습니다.

감사합니다.

by 아이나비시스템즈 자율주행기술개발팀

이미지 출처 & 참고

1. PCL Library — Removing outliers using a StatisticalOutlierRemoval filter
https://pcl.readthedocs.io/projects/tutorials/en/master/statistical_outlier.html#statistical-outlier-removal

2. Downsampling a PointCloud using a VoxelGrid filter
https://adioshun.gitbooks.io/pcl/content/Tutorial/Filtering/pcl-cpp-downsampling-a-pointcloud-using-a-voxelgrid-filter.html

3. DBSCAN (Density-Based Spatial Clustering of Application with Noise)
https://devhwi.tistory.com/7

4. 중학생도 이해할 수 있는 RANSAC 알고리즘 원리
https://gnaseel.tistory.com/33

5. 자체 개발 프로그램 스크린 샷 일부

--

--