REMOTE SENSING

Orfeo ToolBox(OTB): 객체지향 분류

유병혁 2021. 6. 15. 03:23

안녕하세요? 이번 글은 Orfeo ToolBox(OTB)에서 객체지향 분류(object oriented classification)를 실행하는 과정을 정리해 보겠습니다. 영상분할(image segmentation)에 기초한 객체지향 분류는 드론 정사영상과 같이 공간해상도가 높은 영상의 분석에 선호됩니다.

 

훈련데이터를 생성하는 이전 글은 다음 링크를 참조하시면 되겠습니다.

 

Orfeo ToolBox(OTB): 훈련데이터 생성

안녕하세요? 이번 글은 Orfeo ToolBox(OTB)에서 훈련데이터를 생성하는 과정을 정리해 보겠습니다. 이전 글은 다음 링크를 참조하시면 되겠습니다. Orfeo ToolBox(OTB): 객체지향영상분할 안녕하세요? 이

blog.daum.net

훈련데이터를 기반으로 분류기(Classifier)를 직접 다뤄 보겠습니다. 'Learning > TrainVectorClassifier'를 실행합니다.

'TrainVectorClassifier' 실행 창은 아래와 같습니다.

'Input Vector Data'는 앞서 제작한 TRN.shp(훈련용)을 지정해 줍니다.

'Field names for training features'에는 TRN.shp 필드값 중 훈련에 사용할 필드명을 적어주시면 됩니다.

'Validation Vector Data'는 VAL.shp(검증용) 데이터를 지정합니다.

'Field containing the class integer label for supervision'에는 C_ID, 즉 분류 ID가 저장된 필드명을 입력해 줍니다.

'Classifier to use the training'에서는 분류기를 선택해주시면 되는데요, 아래와 같이 다양한 분류기들이 제공되고 있습니다. 저는 '랜덤 포레스트(random forest: rf)' 분류기를 선택해 주겠습니다.

선택된 분류기에 따라 그 분류기에 해당하는 매개변수 설정이 안내됩니다. rf에 대한 설정값들은 아래와 같습니다.

Output model은 분류기에 훈련 데이터를 통해 학습시킨 모델 파일로써, 확장자는 txt를 쓰시면 됩니다.
Output confusion matrix(오차행렬) or contingency table(분할표)는 검증 데이터를 통해 확인한 결과입니다.  

자, 이제 모델을 전체 영상분할에 적용해볼까요?! 'Learning > VectorClassifier'를 실행합니다.

VectorClassifier 창은 아래와 같습니다.

일단 'Name of the Input vector data'에 영상분할 파일을 지정하고,

'Model file'에 앞서 훈련시킨 모델 파일을 지정합니다.

'Field names to be calculated'는 앞서 훈련 단계와 동일하게 필드값을 지정해주시면 됩니다.

Confidence map은 체크해두시는 편이 좋은데요, 이 값의 의미는 선택한 분류기마다 차이가 있습니다. 랜덤 포레스트(rf) 분류기에서는 다수를 점한 클래스의 투표 비율을 나타냅니다.

이제 분류기 결과를 추출해볼까요?!

결과 파일의 속성 테이블을 열어보시면 predicted와 confidence 필드값이 추가된 것을 보실 수 있습니다.

레이어 속성에서 '분류값 사용'을 선택하고 각 값에 범례를 적용해 보겠습니다.

결과는 아래와 같습니다.