티스토리 뷰

미니멀공대생/Point Cloud

얕은 Point cloud 지식 - 1

미니멀공대생 2020. 12. 11. 15:14

 

Point Cloud의 경우 RGB-D, Lidar로 얻어진 거리값이 포함 된 point들의 cloud(구름) 형태를 말한다. 센서들을 통해 얻어진 point들은 후처리를 해줘야 한다. 어쩌면 당연하게도, 이미지 & 영상처리와 비슷한 형태의 후처리를 거친다. 따라서 이미지, 영상처리에 대한 지식이 있다면 이해가 조금은 쉽다.

 

 SLAM에 대한 수요가 많아지면서 이에 대한 자료는 좀 있는데, 당연하게 쓰이는 point cloud에 대한 내용이 잘 없어서 공부할 겸 정리해본다. 물론 나는 SLAM이 아닌 unKnown freeform 에 대한 surface reconstruction을 하고 있다.

출처 : PCL 홈페이지

 Point Cloud를 모를 때 알아두면 좋은 용어들은 사진에서 찾을 수 있다. 사진은 Point cloud library라는 point cloud의 전반적인 사용에 대한 라이브러리를 제공하는 홈페이지에서 참고하였다. 이 글에서는 라이브러리에 대한 설명보다는 위 토픽들을 통해, 우리가 원하는 결과물을 얻기 위해서는 어떤 부분을 공부해야 하는지 알아보도록 하겠다.

Point Cloud Features

1. 법선(Normal) 벡터에 관하여

출처 :  A 3D Object Detection and Pose Estimation Pipeline Using RGB-D Images

예를 들어 우리가 로봇 팔에 센서를 달아서 물체를 잡으려고 한다고 해보자. 이때 2가지 방법을 생각 할 수 있다.

  1. 물체에 marker를 달아서 인식하기
  2. 특정 물체에 대해 이미지 처리와 Point cloud를 통해 인식하기

1번보다는 2번이 더 좋아 보인다. marker는 너무 보기 싫으니깐(물론 개인적인 의견이다). 물체를 잘 잡기 위해서는 물체의 방향을 아는 게 중요하다. 이때 필요한 것이 법선 벡터이다. Point cloud 데이터에서 법선 벡터를 얻기 위해서는 2가지 방법이 있다.

  1. surface meshing 방법을 통해 point cloud에서 surface 데이터를 얻고 mesh에서 normal vector를 찾기
  2. point cloud 데이터 근사를 통해 바로 표면 normal vector를 찾기

실제 normal vector를 표현해보면 위 사진과 같이 나오게 된다.

어떤 방법이 좋은지는 중요하지 않다. normal vector를 찾는 이유가 중요하다. 내가 만약 Point cloud를 통해 물체의 방향성을 얻고 싶다면 normal vector를 얻는 방법에 대해서 찾아보도록 하자.

 

key words : Surface normals, Normal estimation

2. 히스토그램(histogram)에 관하여

출처 : Surface feature based classification of plant organs from 3D laserscanned point clouds for plant phenotyping

이미지 처리와 마친가지로 point cloud 데이터도 히스토그램을 확인 할 수 있다.

point cloud 데이터의 히스토그램의 경우 point의 K-NN과 surface normal vector 간의 관계를 기반으로 한다. 쉽게 말해서 point cloud 표면의 차이를 normal vector와의 관계로 표현하려고 한다. 따라서 위 사진과 같이 다른 형태의 point cloud 데이터의 경우 다른 형태의 히스토그램을 보여준다. 이를 통해 물체의 차이를 확인할 수도 있다.

 

key words : Point Feature Histograms(PFH), Fast Point Feature Histograms, Viewpoint Feature Histograms(VFH)

Point Cloud Filtering

1. pass through filtering에 관하여

출처 : Mathwork

이미지에서도 관심 영역(Region of interest)을 설정하듯이 point cloud에서도 관심 영역을 설정하여 그 부분의 point 들 만 관찰할 수 있다. 앞선 예시로 생각해보면, 로봇 팔에 달린 센서는 넓은 영역에서의 point cloud 데이터를 만들게 되지만 우리는 잡으려는 물체 근처만 알고 싶을 수 있다. 이때 관심 영역을 정해줘야 하는데, 이미지에서는 단순히 (x,y)였다면 point cloud에서는 3차원으로 (x,y,z)의 range를 설정해주는 것으로 ROI를 얻을 수 있다.

 

keyword : Region of interest, Pass through filter, Conditional filter

2. Outlier에 대해서

출처 : An efficient outlier removal method for scattered point cloud data

Outlier란 그림에서 보이는 A번째 사진처럼 우리가 찾으려는 물체 형태가 아닌 밖에 있는 점들을 말한다. 이는 센서 측정 노이즈(반사, 측정거리 등)에 의해 생성 되는 Point 들이다. 만약 내가 깔끔한 point cloud 데이터를 얻고 싶다면 outlier를 지우는 방법에 대해서 찾아봐야 한다.

 

keyword : Outlier

3. Statistical filter에 관하여

출처 : Completed End-To-End Low cost Solution To a 3D scanning system with Integrated Turntable

 위에서 언급한 outlier를 지우는 방법 중 하나가 statistical filter를 사용하는 것이다. outlier를 지워야하는 이유는 앞서 이야기한 Feature를 확인하기 위해 알아야 되는 normal vector나 curvature changes(곡선 변화)등을 구하기 힘들게 하기 때문이다. outlier들은 균등하지 않게 분포되는 게 일반적인데, 이를 제거하기 위해서는 각 점들의 이웃 점의 통계적 분석을 실행 해야 한다. 분석을 통해 일정 기준에 맞지 않는 점들을 삭제해주면 point cloud 데이터가 깔끔해진다. 방법론은 간단하게 한점에서의 일정 거리안에 있는 점들은 놔두고 그 밖의 점은 지워버리는 방식이다. 이때 가우시안 분포에 따른다고 가정하고 진행하게 된다.

 

2편으로 돌아오겠다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31