Mi è stato chiesto da più parti come utilizzare la fotocamera ad infrarossi di Raspberry per ottenere misure biologiche quali l’indice di vitalità.

 

Vediamo come:

introduzione

Le immagini multispettrali nel vicino infrarosso hanno dimostrato la loro efficacia per la discriminazione vegetazione/suolo e monitoraggio agricolo in applicazioni di telerilevamento.

Con Raspberry è possibile acquistare una fotocamera che legge anche il vicino infrarosso (Camera Pi Noir).

Come elaborare le immagini ottenute con il filtro ad infrarossi?

Le immagini possono essere elaborate utilizzando un software di elaborazione di immagini come OpenCV, che calcola direttamente l’indice NDVI.

La qualità attesa delle immagini è sufficiente per ottenere bande dell’NDVI che offre opportunità per applicazioni di monitoraggio delle colture.

L’indice NDVI è ‘spesso direttamente correlato ad altri parametri di terra come la percentuale di copertura del terreno, attività fotosintetica della pianta, acqua superficiale, indice di area fogliare e la quantità di biomassa. .

L’algoritmo per calcolare l’ NDVI sottrae i valori di riflettanza del vicino infrarosso e lo divide dalla somma delle bande del vicino infrarosso e rosso.

 

NDVI = (NIR-RED) / (NIR + RED)

 

 

(Vedi anche: https://en.wikipedia.org/wiki/Normalized_Difference_Vegetation_Index )

 

Ecco un esempio da ( https://publiclab.org/wiki/near-infrared-camera )

 

NDVI-vis-comparison.jpg

 

 

La costruzione di una fotocamera NDVI basato su Raspberry Pi

Due approcci possono essere utilizzati:

  1. E ‘possibile acquisire tutte le informazioni necessarie per calcolare l’NDVI utilizzando solo la fotocamera Pi Noir. Se si aggiunge un filtro che fa passare solo l’infrarosso alloro ottengo direttamente una immagine in quella banda. Filtri del genere si trovano in commercio. Questa è la soluzione più semplice anche per la primaria!
  2. Secondo approccio è quello di prendere due immagini dello stesso oggetto con IR e senza IR . Le immagini possono essere sovrapposte utilizzando il software di elaborazione delle immagini come OpenCV ( OpenCV | OpenCV  opencv.org per come installarlo su Raspberry), utilizzando le funzioni di registrazione delle immagini ( OpenCV: Immagine registrazione ) che calcola direttamente l’NDVI . Ecco un esempio da  ottica automatica e infrarossi immagine Registrazione per lo stress Pianta acquatica Sensing | InTechOpen

image2.jpeg

Ecco il codice python per ottenere misure di GNDVI e BNDVI (se non funzione scaricate le librerie tra cui la potentissima e bellissima numpy)

  1. from picamera.array import PiRGBArray
  2. from picamera import PiCamera
  3. import time
  4. import numpy
  5. import cv2
  6. # initialize the camera and grab a reference to the raw camera capture
  7. camera = PiCamera()
  8. rawCapture = PiRGBArray(camera)
  9. # allow the camera to warmup
  10. time.sleep(0.1)
  11. # grab an image from the camera
  12. camera.capture(rawCapture, format=”bgr”)
  13. color_image = rawCapture.array
  14. # extract red green and blue channel
  15. nir_channel = color_image[:,:,0]/256.0
  16. green_channel = color_image[:,:,1]/256.0
  17. blue_channel = color_image[:,:,2]/256.0
  18. # calculate and show gndvi
  19. gndvi = (nir_channel – green_channel)/(nir_channel + green_channel)
  20. gndvi = (gndvi+1)/2
  21. gndvi = cv2.convertScaleAbs(gndvi*255)
  22. gndvi = cv2.applyColorMap(gndvi, cv2.COLORMAP_JET)
  23. cv2.imshow(“GNDVI”, gndvi)
  24. # calculate and show bndvi
  25. bndvi = (nir_channel – blue_channel)/(nir_channel + blue_channel)
  26. bndvi = (bndvi+1)/2
  27. bndvi = cv2.convertScaleAbs(bndvi*255)
  28. bndvi = cv2.applyColorMap(bndvi, cv2.COLORMAP_JET)
  29. cv2.imshow(“BNDVI”, bndvi)
  30. # display the image on screen and wait for a keypress
  31. cv2.imshow(“Image”, color_image)
  32. # save images
  33. cv2.imwrite(“./images/color.jpg”,color_image)
  34. cv2.imwrite(“./images/gndvi.jpg”,gndvi)
  35. cv2.imwrite(“./images/bndvi.jpg”,bndvi)
  36. cv2.waitKey(0)
Vai alla barra degli strumenti