QGIS 3.2에서 무인기 영상 세그먼테이션(image segmentation) 적용 방법을 정리하겠습니다.
여기서 영상 세그먼테이션은 객체기반 영상분석(OBIA)를 위한 예비단계로도 볼 수 있습니다.
Orfeo ToolBox (OTB)의 기능을 사용할 건데요,
QGIS에서 OTB 기능을 연동하는 방법은 아래 글을 참조하시면 되겠습니다.
QGIS 3.2에서 Orfeo ToolBox (OTB) 6.6 연동하기 | http://blog.daum.net/geoscience/1284
자, 먼저 무인기 영상을 열어볼까요?! 저는 소백산국립공원 주목군락 일원의 무인기 영상을 사용하였습니다.
여기서는 LSMS 영상 세그먼테이션을 적용하겠습니다. 해당 기능은 'OTB > Segmentation > LargeScaleMeanShift'에 위치하고 있습니다.
MeanShift 알고리즘에 관해서는 다크프로그래머 님의 다음 글을 추천 드립니다: [영상추적#1] Mean Shift 추적 | http://darkpgmr.tistory.com/64
LSMS 세그먼테이션은 다음 4단계로 구성됩니다:
[1] MeanShiftSmoothing
[2] LSMSSegmentation
[3] LSMSSmallRegionsMerging
[4] LSMSVectorization
아래는 LargeScaleMeanShift의 실행 창입니다. 각각의 파라미터가 어떤 의미를 가지고 있는지 한 번 샆펴볼까요?!
공간 반경(Spatial radius)은 평균화를 위한 공간 인접지역의 반경을 나타냅니다.
값이 클수록 평활해지고 처리시간은 늘어납니다.
범위 반경(Range radius)은 분광신호 유클리드 거리(방사측정 단위)에 대한 임계치를 나타냅니다.
값이 클수록 에지(edge) 보존이 적어지고, 반면에 값이 작을 수록 잡음 평활화가 적어집니다.
범위 반경은 처리시간에 영향을 미치지 않습니다.
최소 세그먼트 크기(Minimum Segment Size)는 세그먼테이션 후에 세그먼트가
이 기준보다 작은 크기인 경우 가장 가까운 분광신호를 가진 세그먼트에 병합됩니다.
화소 단위의 타일 크기(X축, Y축)을 설정합니다.
출력 모드는 vector 또는 raster로 선택할 수 있는데요, 저는 vector를 선택했습니다.
출력 모드가 vector인 경우에는 Support image for field computation이 활성화됩니다.
이 때 레이어를 선택하지 않으면 입력 이미지의 각 밴드별 평균, 표준편차이 계산됩니다.
Temporary files cleaning은 활성화된 경우, 생성한 모든 임시 파일들을 정리합니다.
고급 파라미터는 처리를 위해 사용 가능한 메모리를 Mb 단위로 설정할 수 있습니다.
Output mode가 vector이므로 아래와 같이 Output GIS vector file을 설정합니다. 자, 이제 실행해볼까요?!
아래와 같이 3개 파일이 생성되었습니다.
아래는 정사영상을 일부 확대한 화면입니다.
LSMSSegmentation을 적용한 결과입니다.
LSMSSmallRegionsMerging을 적용한 결과입니다. 세그먼트가 병합된 게 보이시죠?!
LSMSVectorization을 적용한 결과입니다.
속성 테이블에는 각 세그먼트의 라벨, 화소개수, 밴드별 평균과 표준편차 값이 저장되어 있습니다.