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

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...