이전 글(http://blog.daum.net/pg365/242)에서 지면을 분리해 내기위해 RANSAC과 plane fitting을 사용하였습니다. 숲속은 지면이 평평하지 않기때문에 평면으로 지면 데이터를 잘라내게 되면 제거되지 않는 부분도 생기며 어떤 부분은 너무 많이 잘려나가는 부분도 생깁니다.

 

숲속 지형은 굴곡이 있기때문에 지면을 곡면으로 고려한다면 좀 더 좋은 효과를 볼 수 있을것 같습니다. 그래서 곡면을 나타내는 방법 중 Bezier Surface(위키피디아 참조: http://en.wikipedia.org/wiki/B%C3%A9zier_surface)를 사용하기로 했습니다. 지면에 가장 잘 피팅 되는 Bezier Surface의 5x5개의 컨트롤 포인트를 찾고, 이 Bezier Surface로부터 거리가 7.5cm 내의 점들을 제거한 것이 다음 영상입니다. 지면을 단순한 평면으로 고려하였을 때보다 훨씬 더 지면이 잘 제거된 것을 볼 수 있습니다. 지면이 없어지고 나니 나무, 수풀, 구조물, 사람 등이 잘 드러납니다. 이제 각 유닛들을 떼어낸 후 분류기를 통해 분류할 예정입니다.

 

 

소스코드는 다음을 참조하세요. (데이터는 포함되어 있지 않습니다. 이전 글에 데이터가 링크되어 있습니다.)

 

소스코드 :  BezierSurfaceFitting.zip (Visual Studio 2008 SP1에서 작성)

 

참고문서:  BezierSurfaceFit.pdf  (Bezier surface fitting에 관련된 문서)