sabato 6 maggio 2023

RGB change detection con RasterIO

 Un semplice metodo per avere il change detection da una immagine RGB e' la formula seguente

 


 che non e' altro che la distanza euclidea tra i due punti rappresentativi delle immagini nello spazio delle bande (quindi puo' essere scalato anche su n-bande)

 


 utilizzando la libreria RasterIO si puo' scrivere il codice seguente

 

import numpy as np
import rasterio
from rasterio.plot import show_hist,show

immagine1 = "cd1.tif"
immagine2 = "cd2.tif"


im1 = rasterio.open(immagine1)
im2 = rasterio.open(immagine2)

im1_b2 = im1.read(1).astype(float)
im1_b3 = im1.read(2).astype(float)
im1_b4 = im1.read(3).astype(float)


im2_b2 = im2.read(1).astype(float)
im2_b3 = im2.read(2).astype(float)
im2_b4 = im2.read(3).astype(float)

np.seterr(divide = "ignore", invalid = "ignore")

change_det = np.zeros(im1_b2.shape, dtype=rasterio.float32)


change_det = np.sqrt(np.power(im1_b2-im2_b2,2)+np.power(im1_b3-im2_b3,2)+np.power(im1_b4-im2_b4,2))


#print("Change Det Max " + str(np.max(change_det)))
#print("Change Det Min " + str(np.min(change_det)))

#show(change_det)

#show_hist(change_det)
kwargs = im1.meta
kwargs.update(driver='GTiff',dtype=rasterio.float32,count=1)

cd_image = rasterio.open('CD.tiff','w',**kwargs )
cd_image.write(change_det,1)
cd_image.close()

 

Nessun commento:

Posta un commento

Dockerizza Flask

Un esempio semplice per inserire in un container Docker una applicazione Flask Partiamo da una semplice applicazione che ha un file app.py ...