REMOTE SENSING

QGIS 오르페오 툴박스(OTB): UAV 영상에 민 시프트(Mean-Shift) 필터링 적용하기

유병혁 2016. 9. 24. 14:12

안녕하세요?

 

UAV로부터 취득된 초고해상도 항공영상에 객체기반영상분석(Object-Based Image Analysis, OBIA)을

수행할 수 있겠는데요, OBIA는 세그멘테이션(segmentation)과 분류(classification) 단계를 수반합니다.

 

이번 글에서는 세그멘테이션의 일종인 민 시프트(Mean-Shift) 알고리즘에 대해 간단히 알아보고,

QGIS 오르페오 툴박스(Orfeo ToolBox, OTB)를 통해 UAV 영상을 민 시프트 분할해 보도록 하겠습니다.

 

 

일단, 스택오버플로 Q&A에 아래와 같이 참고할 만한 글이 있는데요,

영상에 민 시프트 세그멘테이션 과정을 그림으로 표현한 내용입니다.

Stack Overflow: Image Segmentation using Mean Shift explained
출처: http://stackoverflow.com/questions/4831813/image-segmentation-using-mean-shift-explained

 

아래 예시는 강도(intensity) 값만으로 표현된 1차원 특징 공간(feature space)인데요,

 

1) 아래 그림과 같이 검색 윈도(search window)들이 특징 공간에 분산됩니다.

    이때 윈도의 크기와 개수, 초기 위치는 필터링 목적에 따라 조정될 수 있습니다.

 

2) 각 윈도 내에서 데이터들의 평균들이 계산됩니다.

 

3) 각 윈도의 크기는 변하지 않고, 위치는 새로운 평균(mean) 위치로 이동(shift)됩니다.

 

4) 위의 2)와 3)의 과정들이 반복되면서 윈도들이 서로 중첩되겠죠?!

 

5) 정해진 수렴(convergence) 임계치 내로 중첩되면 윈도들은 서로 병합됩니다.

 

6) 설정된 반복 횟수, 또는 수렴 임계치에 다다를 때까지 계속 반복되며, 그 결과 무리(cluster)가 이뤄집니다.

 

이것을 수학적 표기로 정리하면 아래와 같습니다:

 

입력과 출력 합동 영역(joint-domain) 영상의 화소값을 각각 ,

이라고 가정할 때, 화소값들은 다음 단계에 따라 계산됩니다:

 

 

 

여기서, 번째 단계에서 화소에 대한 현재 모드 추정(current mode estimation),

는 반복 최대값(maximum number of iterations), 는 수렴 임계치(convergence threshold),

는 커널 함수(kernel function), 의 공간범위(spatial range) 와 분광범위(spectral range)  내에 있는 화소들의 집합을 나타냅니다.

 

 

여기서, 윗첨자  와  는 각각 합동영역 영상 화소들의 공간과 분광 요소(spatial and spectral components)를 나타냅니다.

 

공간범위(spatial range) 와 분광범위(spectral range) 설정에 따라 세그멘테이션 결과가

달라지는데요, 아래 Comaniciu et al. (2002) 의 논문을 보시면 상세한 설명을 보실 수 있습니다.

 

Journal Article:
Comaniciu, D., Meer, P., 2002. Mean Shift: A robust approach toward feature space
analysis. IEEE Transactions on Pattern Analysis and Machine Intelligence. 24(5), 603-619.

 

이번에는 위의 수학적 표기와 실제 QGIS OTB의 변수(parameter)들을 비교해보도록 하겠습니다.

QGIS OTB에서는 LSMS 세그멘테이션(Large-Scale Mean-Shift segmentation)을 제공하는데요,

 

LSMS는 크기가 커서 한번에 민 시프트 세그멘테이션을 처리하기 어려운 UAV, 항공 사진과 같은

대규모 영상을 타일방식(tile-wise)으로 처리하는 세그멘테이션 워크플로(segmentation workflow)입니다.

 

큰 영상을 타일 방식으로 분할해서 세그멘테이션을 적용하지만,

그 결과물이 이론적으로는 한 장의 영상을 처리했을 때와 동일한 결과를 제공하는 작업흐름입니다.

 

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

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

 

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

Journal Article:
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.

 

LSMS 워크플로는 총 4단계(이 중 1개는 선택)의 전용 애플리케이션으로 구성되어 있으며 결과값인 분할 영상과

일치하는 GIS 벡터 파일을 생성합니다.  각 폴리곤에는 각 밴드 방사값(radiometry)의 평균과 분산이 입력됩니다.

 

이 글은 step 1만을 다루고 있습니다:

 

Exact Large-Scale Mean-Shift segmentation, step 1 (smoothing)
http://otbcb.readthedocs.io/en/latest/Applications/app_MeanShiftSmoothing.html

 

Exact Large-Scale Mean-Shift segmentation, step 2
http://otbcb.readthedocs.io/en/latest/Applications/app_LSMSSegmentation.html

 

Exact Large-Scale Mean-Shift segmentation, step 3 (optional)
http://otbcb.readthedocs.io/en/latest/Applications/app_LSMSSmallRegionsMerging.html

 

Exact Large-Scale Mean-Shift segmentation, step 4
http://otbcb.readthedocs.io/en/latest/Applications/app_LSMSVectorization.html#parameters

아래 표는 OTB의 민 시프트 필터링의 변수들과 기술을 보여주고 있습니다.

표 출처: http://otbcb.readthedocs.io/en/latest/Applications/app_MeanShiftSmoothing.html

  • Input Image: 입력 영상
  • Filtered output: 필터링된 출력 영상
  • Spatial image: 공간 영상 출력. 변위지도(displacement map, 수렴 후 화소 위치)
  • Available RAM (Mb): 처리를 위한 가용 메모리(MB 단위)
  • Spatial radius: 주위(neighborhood)의 공간 반경
  • Range radius: 다중분광 공간(multi-spectral space)에서 반경 정의(방사 단위, radiometry unit)
  • Mode convergence threshold: 민 시프트 벡터가 이 임계치보다 낮거나 반복횟수가 최대값에 도달하면 반복계산이 중지됩니다.
  • Maximum number of iterations: 반복 최대값까지 수렴에 도달하지 못하면 반복계산법이 중지됩니다.
  • Range radius coefficient: 필터링된 화소의 색측정(colorimetry)의 범위 반경에 따라 좌우됨. y = rangeramp(범위 반경 계수) * x + ranger(범위 반경)
  • Mode search: 이 선택이 활성화(activated)되어 있으면, 이미 수렴된 화소와 교차했을 때 반복계산이 중지됩니다(스레드 개수에 다소 의존적).
  • Load otb application from xml file: xml 파일로부터 otb 애플리케이션 로딩
  • Save otb application to xml file: xml 파일에 otb 애플리케이션 저장

 

이제 QGIS에서 실제 UAV 영상에 민 시프트 필터링을 적용해 보도록 하겠습니다.

속리산국립공원 문장대 훼손지 일원을 DJI 인스파이어 1 젠뮤즈 X3로 촬영한 영상입니다.

 

공간처리 툴박스에서 'Orfeo Toolbox (Image analysis) > Image Filtering > Exact Large-Scale Mean-Shift segmentation, step 1 (smoothing)'을 클릭합니다.

 

아래와 같이 해당 창이 실행되었는데요, 기본값은 공간 반경(spatial radius) 5, 범위 반경(range radius) 15,

모드 수렴 임계치(Mode convergence threshold) 0.1, 반복 최대횟수(Maximum number of iterations) 100입니다.

 

위의 기본값으로 UAV 영상에 민 시프트(Mean-Shift) 필터링을 적용해 본 결과입니다.

동질성을 보이는 음영구간, 주변식생, 노출암석 등 화소들이 클러스터된 것을 볼 수 있습니다.