Harshitha G S

  • Content Count

  • Joined

  • Last visited

Everything posted by Harshitha G S

  1. Hello… I am an engineering student working on a project based on NDVI calculation to monitor the crop health. I used the PiNoIR camera with blue filter for my experiment in order to obtain the values of NIR and Red region. I used the following code to extract the required values and to calculate the NDVI. But in the output image, the empty regions (area where no leaves are present as shown in the below figure) and ground have higher NDVI values. The shadowed regions are shown in the range 0.5 to 0.6. I wanted to know whether the output is correct and what corrections can be done in the -code in order to correct the error. The code is given below. from PIL import Image import numpy as np import cv2 from cv2 import imread from matplotlib import cm rgb_matrix =cv2.imread('inputimg.jpg') w=rgb_matrix.shape[1] #columns h=rgb_matrix.shape[0] #rows print(w) print(h) #Compute ndvi values for each pixel #NDVI=(NIR-R)/(NIR+R) res=[] for i in range(h): row=[] for j in range(w): val=rgb_matrix[j] n=val[2] r=val[1] num=((int(n)-int(r))) den=((int(n)+int(r))) if(den == 0): r=0.0 else: r=np.divide(num,den) row.append(r) res.append(row) print('Done') #based on NDVI values, give different colors for easier identification for i in range(h): for j in range(w): if(res[j] >=-1 and res[j] <0): rgb_matrix[j]=[128,128,128] #grey elif(res[j]>=0 and res[j]<0.2): rgb_matrix[j]=[64,255,0] #parrot green elif(res[j]>=0.2 and res[j]<0.3): rgb_matrix[j]=[125,255,255] #yellow elif(res[j]>=0.3 and res[j]<0.4): rgb_matrix[j]=[0,128,128] #dark green elif(res[j]>=0.4 and res[j]<0.5): rgb_matrix[j]=[255,255,0] #sky blue elif(res[j]>=0.5 and res[j]<0.6): rgb_matrix[j]=[255,51,153] #purple elif(res[j]>=0.6 and res[j]<0.7): rgb_matrix[j]=[0,128,255] #orange elif(res[j]>=0.7 and res[j]<0.8): rgb_matrix[j]=[255,43,255] #pink elif(res[j]>=0.8 and res[j]<0.9): rgb_matrix[j]=[40,40,255] #red else: rgb_matrix[j]=[255,0,0] #dark blue cv2.imwrite('outputimg.jpg',rgb_matrix) print("Completed!!") (Ignore the indentation errors)