안녕하세요? 이번 글은 OTB BandMath 기능을 통해 무인기 영상의 식생지수를 계산해 보겠습니다.
현재 널리 쓰이고 있는 저가 UAV는 거의 대부분 일반적인 RGB 카메라를 탑재하고 있는데요,
전세계 70%를 점유하고 있는 중국 DJI 드론도 대부분 sRGB 스타일의 카메라를 탑재하고 있습니다.
sRGB는 1996년에 HP와 Microsoft과 협력하여 만든 표준 RGB 색 공간(standard RGB color space)입니다.
R, G, B는 각 원색의 색 좌표(chromatic coordinate)로 정의될 수 있는데요,
아래 그림은 r좌표와 g좌표로 정의된 색도분포표(chromaticity diagram)입니다.
1931년 국제조명위원회(CIE)가 제정한 것으로, x축은 적색 좌표, y축은 녹색 좌표입니다.
보통 다중분광 위성영상의 경우 RGB 밴드와 NIR 밴드를 함께 취득하여 NDVI와 같은 식생지수를 계산했었는데요,
UAV 기반 RGB영상은 공간해상도는 매우 우수한 반면, 분광해상도는 원격탐사 목적에 제한적이라고 볼 수 있습니다.
최근에 UAV에 탑재 가능한 적외선 카메라들 상당수는 기존 카메라를 NIR 필터로 개조한 형태입니다.
이미지 출처: http://diydrones.com/profiles/blogs/diy-camera-filter-swap-on-a-canon-powershot
이런 경우에는 natural-color composite와 false-color composite 영상을 동시에 취득할 수가 없는데요,
여기서는 RGB 영상만으로 식생지수를 계산하고, 이것을 OTB BandMath에서 처리하는 방법을 정리해 보겠습니다.
먼저, RGB 영상의 식생지수에 대해 알아보겠습니다. 여기서는 아래 지수 중 NGRDI를 계산해 보겠습니다.
이미지 출처: https://www.mdpi.com/2072-4292/10/6/824
'OTB > Miscellaneous > BandMath'를 실행합니다.
BandMath 실행 창은 아래와 같습니다.
Input image-list에 무인기 영상을 선택합니다.
NGRDI 지수의 식은 아래와 같습니다. 여기서 G, R에 해당되는 밴드를 지정해 주면 되겠습니다.
OTB에서는 muParser 수학 표현식을 사용합니다.
muparser - Fast Math Parser Library | https://github.com/beltoforion/muparser
Input image-list에 등록된 첫 번째 이미지의 1번, 2번 밴드가 각각 R, G에 해당됩니다.
이에 수식은 아래와 같이 작성될 수 있습니다(예: im1b2는 첫번째 영상 2번 밴드의 화소값).
이제 BandMath를 실행해 보겠습니다.
아래 이미지에서 좌측은 무인기 원본영상, 우측은 NGRDI 처리영상입니다. 식생과 비식생을 대비시키는데 도움이 되겠죠?!