Вычисление NDVI из NIR-образа завода

#python #opencv

#python #opencv

Вопрос:

Я пытаюсь получить NDVI изображения объекта. Я делаю это впервые, поэтому я не уверен, что предпринятые мной шаги верны. Во втором блоке я добавил цветовую карту к NIR-изображению, а затем разделил каналы, чтобы я мог использовать формулу NDVI для канала NIR и красного канала. В последнем блоке я применил формулу и построил изображение. Результирующие значения во втором блоке кажутся мне странными, но я не уверен, как проверить, правильно ли это.

 import os 
from PIL import Image
import matplotlib.pyplot as plt 
from matplotlib import cm 
import numpy as np 
from IPython.display import display
import cv2
import cmapy

img_path = os.getcwd()   "/plant.png"
img = Image.open(img_path)
plt.figure(figsize = (10,10))
test_img = img
plt.imshow(test_img)
  

NIR-образ:
введите описание изображения здесь

 test_img2 = cv2.imread(img_path)
img_c = cv2.applyColorMap(test_img2, cmapy.cmap('Reds')).astype(np.int)
_, R, NIR = cv2.split(img_c)

plt.figure(figsize = (10,10))
plt.imshow(img_c)
plt.show()
  

Добавление цветовой карты:
введите описание изображения здесь

 ndvi = (NIR-R)/(NIR R 0.01)
print(ndvi.max())     0.9999029220464032
print(ndvi.mean())    0.10046810466714343
print(ndvi.min())    0.01999960000799984

plt.figure(figsize = (10,10))
plt.imshow(ndvi)
plt.show()
  

После вычисления NDVI:
введите описание изображения здесь

Комментарии:

1. Интересный вопрос, но что такое «NDVI»?

2. @YvesDaoust Привет! Это показатель состояния растения по отражаемому им свету. Хлорофилл поглощает видимый свет и отражает ближний инфракрасный свет. Поэтому, когда растения становятся нездоровыми, они начинают поглощать больше ближнего инфракрасного света. NDVI позволяет увидеть эти изменения, используя ближний инфракрасный свет и красный свет.