Спектральные индексы и NDVI
Урок объясняет, как из двух спектральных каналов получают карту здоровья растительности.
NDVI (нормализованный разностный вегетационный индекс) — простой показатель «зелёности» поверхности, вычисляемый из красного и ближнего инфракрасного каналов.
Здоровый лист устроен хитро: хлорофилл жадно поглощает красный свет (для фотосинтеза), а внутренняя структура листа сильно отражает ближний инфракрасный (NIR), который глазу не виден. Значит, у живой растительности резкий контраст: красного отражается мало, NIR — много. Этот контраст и измеряет NDVI:
$$\text{NDVI} = \dfrac{\text{NIR} - \text{RED}}{\text{NIR} + \text{RED}}$$
Индекс лежит в диапазоне от −1 до +1. Густая зелень даёт 0,6–0,9, голая почва — около 0,1–0,2, вода и облака — отрицательные значения.
Считаем NDVI
samples = [
("густой лес", 0.50, 0.08),
("редкая трава", 0.30, 0.18),
("голая почва", 0.22, 0.20),
("вода", 0.05, 0.10),
]
for name, nir, red in samples:
ndvi = (nir - red) / (nir + red)
print(f"{name:>12}: NDVI = {ndvi:+.3f}")Вывод:
густой лес: NDVI = +0.724
редкая трава: NDVI = +0.250
голая почва: NDVI = +0.048
вода: NDVI = -0.333Густой лес даёт высокий NDVI (0,72), редкая трава — средний, голая почва — около нуля, а вода уходит в минус. По карте NDVI агроном за минуты видит, где поле здорово, а где растения страдают от засухи или болезни — задолго до того, как это станет заметно глазу.
Как работает под капотом
Нормировка (деление на сумму) делает индекс устойчивым к освещённости: в тени облака яркость обоих каналов падает вместе, а их отношение почти сохраняется. Поэтому NDVI сравним между снимками — особенно если они сделаны в одинаковых условиях, что и обеспечивает солнечно-синхронная орбита из раздела 2. На базе той же идеи строят десятки индексов: NDWI для воды, NDBI для застройки, NBR для гарей.
Частые ошибки
NDVI часто считают «измерителем зелёного цвета» — это неверно: ключ в невидимом ближнем ИК, без него индекс не работает. Поэтому обычная RGB-камера телефона NDVI не даёт. Вторая ошибка — сравнивать NDVI снимков, сделанных в разное время суток и при разном угле Солнца, без поправок: тени и атмосфера искажают значения. Третья — забывать, что облака и их тени дают артефакты, и кадры приходится фильтровать.
Итог
- NDVI = (NIR − RED)/(NIR + RED) — индекс «зелёности» от −1 до +1.
- Живая растительность поглощает красный и отражает ближний ИК — отсюда контраст.
- Нормировка делает индекс устойчивым к освещённости и сравнимым между снимками.
- RGB-камера NDVI не даёт — нужен невидимый ближний ИК-канал.