자율주행

🚗 Day 5: LiDAR 데이터 전처리 (노이즈 제거, 다운샘플링)

Tech Knowledge Note 2025. 9. 1. 21:00
반응형

안녕하세요! ✨
어제는 Day 4: LiDAR로 장애물 거리 측정 Python 실습을 통해 전방 장애물까지의 거리를 계산해봤습니다.
오늘은 한 단계 더 나아가, LiDAR 데이터를 더 깨끗하고 효율적으로 사용하는 방법, 바로 데이터 전처리를 다뤄보겠습니다.

LiDAR 데이터 전처리 (노이즈 제거, 다운샘플링)


🔍 왜 전처리가 필요한가?

LiDAR는 매우 정밀한 센서이지만, 현실 데이터에는 다음과 같은 문제가 존재합니다.

  • 노이즈(Noise): 먼지, 비, 눈, 반사체 때문에 잘못된 점이 발생
  • 데이터 과다(Overload): 초당 수십만 개의 점이 쏟아져 나오므로 처리 속도 저하
    👉 따라서 노이즈 제거와 다운샘플링은 자율주행 연구와 실제 적용에서 반드시 필요한 단계입니다.

🧹 1. 노이즈 제거 (Noise Filtering)

노이즈 제거는 의미 없는 점을 걸러내는 과정입니다.

대표적인 방법

  1. Statistical Outlier Removal (SOR)
    • 각 점 주변의 평균 거리와 표준편차를 계산
    • 지나치게 벗어난 점들을 제거
  2. Radius Outlier Removal
    • 일정 반경 내에 이웃 점이 일정 개수 미만이면 제거

👉 이 방법들은 PCL(Point Cloud Library) 또는 Python의 open3d 라이브러리에서 쉽게 적용할 수 있습니다.


✂️ 2. 다운샘플링 (Downsampling)

LiDAR는 초당 방대한 데이터를 생성합니다. 이를 그대로 쓰면 연산량이 커져 딥러닝 학습이나 실시간 제어가 느려집니다.

대표적인 방법

  1. Voxel Grid Filter
    • 3차원 공간을 작은 격자(Voxel)로 나눈 후, 각 격자에서 대표 점 하나만 남김
    • 데이터 수를 줄이면서 전체 구조 유지
  2. Uniform Sampling
    • 일정 간격으로 점을 추출하는 단순 방식

👉 다운샘플링은 처리 속도를 크게 높이면서도 정확도는 크게 떨어지지 않게 해줍니다.


⚙️ Python 예제 (Open3D 활용)

python
 
import open3d as o3d
# LiDAR 데이터 불러오기
pcd = o3d.io.read_point_cloud("lidar_data.pcd")
# 노이즈 제거 - Statistical Outlier Removal
cl, ind = pcd.remove_statistical_outlier(nb_neighbors=20, std_ratio=2.0) pcd_clean = pcd.select_by_index(ind)
# 다운샘플링 - Voxel Grid
pcd_down = pcd_clean.voxel_down_sample(voxel_size=0.1)
# 결과 시각화 o3d.visualization.draw_geometries([pcd_down])

✅ 위 코드에서는

  • 노이즈 제거(SOR) 로 이상값을 걸러내고,
  • Voxel Grid Filter 로 데이터를 줄여 최종 결과를 시각화합니다.

🛠 활용 포인트

  • 자율주행: SLAM, 객체 인식 전 데이터 정제
  • 드론/로보틱스: 실시간 환경 매핑 속도 향상
  • 산업 응용: 건축/측량 데이터의 용량 줄이기

📌 정리

  • LiDAR 데이터는 그대로 사용하기엔 노이즈와 데이터 과다 문제 존재
  • 노이즈 제거(SOR, Radius Outlier)다운샘플링(Voxel Grid, Uniform) 은 필수 전처리 과정
  • Python(Open3D) 활용으로 간단히 구현 가능
반응형

🚀 다음 글 예고

다음 글에서는 [Day 6: Radar 기본 원리 (FMCW, Doppler 효과)] 를 다룹니다.
LiDAR와 더불어 자율주행의 핵심 센서인 Radar의 원리와 장단점을 살펴보겠습니다.


✅ 오늘 글이 도움이 되셨다면 좋아요와 공유 부탁드립니다.

반응형