REMOTE SENSING

QGIS Orfeo ToolBox(OTB): UAV 영상에 LSMS 세그멘테이션 적용하기

유병혁 2016. 12. 4. 23:33

QGIS Orfeo ToolBox(OTB)를 이용하여 UAV 영상에 LSMS 세그멘테이션 적용을 학습해 보도록 하겠습니다.

 

LSMS(Large-Scale Mean-Shift)는 데이터를 타일 방식(tile-wise)으로 처리하는 세그멘테이션 워크플로(segmentation workflow)입니다.

영상을 한번에 처리하지 않고 타일로 나눠서 처리하기 때문에 그만큼 메모리 소모량을 줄일 수 있어 UAV 영상과 같은 대용량 데이터에 유리합니다.

 

LSMS는 데비이드 요우세피(David Youssefi)와 줄리안 미셸(Julien Michel)이 개발하였는데요,  데이비드는 당시에 OTB를 착수,

후원하는 프랑스국립우주센터(Centre National d’Etudes Spatiales, 줄여서 CNES)에서 인턴사원으로 근무하고 있었다고 합니다.

 

LSMS기법과 관련해서는 아래 Michel et al. (2015)의 논문을 참고하시면 됩니다:

Michel, J., Youssefi, D., Grizonnet, M., 2015. Stable Mean-Shift algorithm and its application to the
segmentation of arbitrarily large remote sensing images. IEEE Transactions on Geoscience and Remote Sensing. 53(2), 952-964.

 

저는 아래 그림과 같이 속리산국립공원 문장대 일원을 촬영한 UAV 영상을 사용하였습니다.

 

LSMS 세그멘테이션 워크플로(작업흐름)는 step 1 (smoothing), step 2, step 3(optional), step 4로 구성되어 있습니다.

공간처리 툴박스에서 Orfeo Toolbox (Image analysis) > Image Filtering 하부에 step 1이 있고, 나머지는 Segmentation 하부에 위치하고 있습니다.

 

먼저 Exact Large-Scale Mean-Shift segmentation, step 1 (smoothing)을 실행해 보겠습니다.

1단계는 UAV 영상에 민 시프트 필터링(mean shift filtering)을 적용하여 영상을 스무딩하는 과정입니다.

 

Input Image에 UAV 영상을 지정하고 Available RAM (Mb)에서는 가용 메모리를 직접 지정하실 수 있습니다.

공간 반경(Spatial radius)과 범위 반경(Range radius)은 민 시프트 필터링을 적용하는 화소 그룹을 지정하는 변수입니다.

모드 수렴 임계치(mode convergence threshold)와 반복 최대갯수(Maximum number of iterations)은 민 시프트 알고리듬의 반복 허용치를 지정합니다.

범위반경 계수(Range radius coefficient)는 0, 모드 검색(Mode search)은 비활성화한 상태에서, 아래와 같이 값을 설정하고 실행해보도록 하겠습니다. 

 

민 시프트 필터링(스무딩) 실행 결과는 아래와 같습니다. 이제 step 2로 넘어가볼까요?!

 

2단계에서는 필터 영상을 세그멘테이션하고 레이블(label)을 부여하는 과정으로 실행 창은 아래와 같습니다.

최소 영역 크기(Minum Region Size)는 화소수가 이 값보다 낮으면 레이블을 0으로 설정합니다.

여기서 Size of tiles in pixel (X-axis, Y-axis) 설정이 기존 민 시프트 세그멘테이션과 대비되는 LSMS의 장점을 보여주는데요,

대용량 파일을 한번에 처리하지 않고 타일 방식(tile-wise)으로 처리함으로써 메모리 소모량(memory consumption)을 낮출 수 있습니다.

 

이 단계에서는 영상을 타일 방식으로 처리하기 때문에 중간 파일들(intermediate files)이 생성되는데요,

Directory where to write temporary files는 생성 위치를 지정하고 Temporary files cleaning를 체크하면

출력 파일 생성 후 파일을 삭제해 줍니다. 이 위치를 지정하지 않으면 아래와 같은 오류가 발생하기도 합니다.

 

아개 그림과 같이 2단계에서는 타일마다 세그멘테이션을 실행하며 연속적으로 레이블을 부여하기 때문에

타일 가장자리(edge)에서 아티팩트(arfifact)가 발생하는데요, 최종 LSMS 결과물에서는 사라지게 됩니다. 

 

3단계는 최소 영역 크기(minimum region size)를 지정하여, 이 값보다 작은 영역은 인접한 그룹에 병합합니다.

소규모 영역을 줄이는 선택적 기능인데요, LSMS는 이것도 타일 방식으로 처리하여 메모리 소모를 줄이고 있습니다.

 

처리 결과는 아래와 같습니다. 확실히 2단계보다 단순해졌죠?!

 

이제 마지막 4단계인데요, 기존 래스터 영상을 GIS 벡터 파일로 변환하는 과정입니다.

단순히 변환만 하는 것이 아니라 속성값에 레이블 번호, 화소량, 각 폴리곤에 해당하는

밴드별 방사측정치(radiometry)의 평균(mean)과 분산(variance)값을 자동적으로 저장합니다.

 

최종 결과값은 아래와 같습니다. 앞서 보였던 아티팩트가 제거된 것을 보실 수 있습니다.

 

UAV 영상과 중첩한 LSMS 세그멘테이션 결과인데요, 보다 이상적인 결과를 얻기 위해서는 공간반경과 범위반경, 최소영역크기의 적절한 설정이 필요할 듯 합니다.

 

폴리곤을 하나 클릭해 보면 속성에 레이블 번호(label), 화소수(nbPixels), Red/Green/Blue 밴드 각각의 평균과 분산 값을 확인하실 수 있습니다.

UAV_Clip.tif
6.87MB