REMOTE SENSING

QGIS 3.4 Orfeo ToolBox(OTB) - (2) 파이썬3에서 OTB 호출하기

유병혁 2019. 1. 14. 06:49

안녕하세요? 이번 글은 파이썬 3에서 Orfeo ToolBox(줄여서 OTB)를 호출하는 방법을 정리해 보겠습니다.


참고로 QGIS 3에서 OTB를 연동하는 방법은 아래 글을 따라가시면 됩니다.

QGIS 3.4 Orfeo ToolBox(OTB) - (1) 연동 설정하기 | http://blog.daum.net/geoscience/1284


OTB는 파이썬 2.7과 3.5를 위한 바인딩을 제공하는데요, 여기선 파이썬 3.5에서 OTB를 설정하겠습니다.

Python bindings | https://www.orfeo-toolbox.org/CookBook/Installation.html#python-bindings


파이썬 3.5는 '파이썬 공식 홈페이지(https://www.python.org/)'에서 내 PC용 파일을 받아주시면 됩니다.


설치하실 때 'Add Python 3.5 to PATH'를 클릭해주시기 바랍니다.


이제 명령 프롬프트에서 python을 클릭하시면 아래와 같이 Python 3.5가 실행됩니다.


OTB 바인딩 설정을 위해서는 넘파이(NumPy)를 설치해주셔야 합니다.

1
2
python -m pip install --upgrade pip
python -m pip install --upgrade numpy
cs


이제 '환경 변수 > 시스템 변수'를 설정해 주시면 되겠는데요,


먼저 PYTHONPATH를 다음과 같이 설정합니다:

변수 이름: PYTHONPATH

변수 값: C:\OTB-6.6.1-Win64\lib\python3

※ OTB 경로는 설정해주신 위치에 맞게 수정하시기 바랍니다.


lib 폴더에는 python과 python3 폴더가 있습니다. 각각 Python 2.7과 Python 3.5용 폴더로 보시면 되겠습니다.


python3 폴더에는 아래 파일들이 위치하고 있습니다.


다음으로는 시스템 변수 PATH에 OTB bin 폴더 위치를 추가합니다.

변수 이름: PATH

변수 값: C:\OTB-6.6.1-Win64\bin


끝으로 아래와 같이 시스템 변수를 추가합니다. 이제 모든 설정이 끝났습니다!

변수 이름: OTB_APPLICATION_PATH

변수 값: C:\OTB-6.6.1-Win64\lib\otb\applications


IDLE에서 다음 호출이 정상 동작하면 이제 OTB 바인딩이 된 상태입니다.

1
import otbApplication
cs


그럼, 간단한 예제를 통해 파이썬 3에서 OTB 기능을 호출해 보도록 할까요?!

소백산국립공원 주목군락 일원의 무인기 정사영상을 실습용 래스터로 사용하겠습니다.


위 래스터에 OTB가 제공하는 대비 향상(Contrast Enhancement) 기법을 적용해 보겠습니다.

ContrastEnhancement - Contrast Enhancement

https://www.orfeo-toolbox.org/CookBook/Applications/app_ContrastEnhancement.html


대비 향상 기법은 히스토그램 균일화(histogram equalization) 알고리즘을 적용한 것입니다.

히스토그램 균일화는 이미지의 히스토그램이 특정 영역에 집중되어 있는 분포를, 골고루 분포하도록 하는 작업을 말합니다.

https://opencv-python.readthedocs.io/en/latest/doc/20.imageHistogramEqualization/imageHistogramEqualization.html


해당 기능은 'OTB > Image Filtering > ContrastEnhancement'를 통해 실행하실 수 있습니다.


실행 창은 아래와 같은데요, 이것을 Python 3.5에서 OTB를 호출하여 구동해 보고자 합니다.


해당 코드는 직접 작성하실 필요가 없습니다. 각각 기능에 대한 예제 코드를 OTB CookBook에서 제공합니다.

Welcome to Orfeo ToolBox! | https://www.orfeo-toolbox.org/CookBook/


해당 코드를 갈무리해서 아래와 같이 파이썬 파일을 생성합니다.

변경한 부분은 디렉터리 위치 변경과 입력 파일명이 전부입니다.


코드를 보시면 히스토그램 빈의 개수는 256개이고, 지역 히스토그램 계산을 위한

너비, 높이는 각각 500, 500, 모드는 휘도(luminanace)인 것을 확인하실 수 있습니다.


예제 코드를 약간 수정하여 아래와 같이 대비 향상이 처리되었습니다. 간단하죠?!


참고로, QGIS에서 대비 향상 전후 영상의 히스토그램을 비교해보실 수 있습니다.


※ 히스토그램은 해당 레이어 속성에서 '투명도 > NODATA 값'을 0으로 설정(하고 확인 클릭)한 후,

   '최소값/최대값 스타일로 설정 > 밴드 2'로 선택하고 '선호사항/액션 > 선택 밴드 보이기'를 클릭하시면 됩니다.