martedì 24 gennaio 2023

PCA e GLCM in Sentinel 1

Utilizzando le immagini GRDH di Sentinel 1 (il dato GRDH si differenzia dal SLC perche' nel primo si ha solo l'ampiezza e l'intesita' del segnale nelle due polarizzazioni VV e VH mentre il SLC si ha sia la componente reale che quella complessa) si possono utilizzare i livelli di risposta (scale di grigi nelle immagini) per applicare degli algoritmi di PCA (componenti principali) e GLCM (Gray Level Co occurence matrix) per analisi delle texture

Dissimilarity map da GLCM

Composit di componenti principali

Due esempi di elaborazione in PCA e GLCM pre e post evento di inondazione

Partendo dal dato GRDH i passi da seguire sono (https://www.youtube.com/watch?v=xoQ4NikdOq0)

  • Subset
  • Apply Orbit File
  • Radiometric -> Calibrate
  • Speckle Filtering
  • Range Doppler Terrain Correction
  • Raster/Data Conversion/Convert to dB
  • Raster/Image Analysis/ Principal components
  • Raster/Image Analysis/Texture Analysis/Gray Level Co occurence Matrix 
Nel caso di PCA nelle bande troveremo le mappe per ogni componente principale con in aggiunta la mappa di errore e  response
Nel caso di GCLM troveremo per sigma0 VV e VH la mappa di contrasto, dissimilarita', omogeneita', ASM, energia, entropia, media, varianza,correlazione

giovedì 19 gennaio 2023

Sentinel 2 Super resolution

 Mediante il plugin di SNAP Sen2Res e' possibile ottenere una migliore risoluzione spaziale (per esempio per passare da 20 m/px a 10 m/px)



Una volta installato nel menu Optical compare la voce Sentinel 2 Super Resolution

Il calcolo e' estremamente impegnativo dal punto di vista computazionale. A titolo di esempio per effettuare la super resolution su una sola banda su una porzione inferiore al 20% di tutta una immagine ha richiesto al mio portatile piu' di un'ora. Questo perche' l'algoritmo conserva le informazioni spetttrali nelle immagini e non e' come fare un pancromatico su Landsat (dove l'informazione di alta risoluzione e' inserita nel canale luminosita' di un composit RGB)




lunedì 16 gennaio 2023

Vertical displacement from phase in Sentinel 1

Un approccio alternativo alla creazione di un DEM da interferogramma e' quello di usare Phase to Displacement al posto di Phase to Elevation  (in Radar/Interferometric/Products)


Ho creato un inteferogramma basandosi su una immagine Sentinel 1 prima e dopo un evento basandosi su questo tutorial

https://www.youtube.com/watch?v=9__baWNmoJQ


mercoledì 11 gennaio 2023

Dem da Sentinel 1

 Per creare un DEM da dati Sentinel 1 si devono per prima cosa selezionare due immagini SLC che siano il piu' possibili coerenti (quindi con date di acquisizione ravvicinate e la stessa traiettoria ascendente o discendente),con una baseline ampia (per selezionare le immagini si puo' utilizzare Vertex di ASF Alaska) ed immagini che appartengono alla stessa path



In generale si devono anche evitare immagini che presentino zone di mare (o laghi) e per il possibile di deve evitare periodi dell'anno con presenza di umidita'/precipitazioni. Anche le zone con spiccate modifiche della vegetazione possono creare problemi a causa della non penetrazione della banda C del radar sul canopy

Le immagini (i file sono gli SLC IW) sono molto grandi e quindi il primo passo e' effettuare uno split 

Dall'interno di SNAP si puo' selezionare sono la subswath e la polarizzazione ma si puo' selezionare un sottoinsieme ancora piu' ridotto selezionando i bursts creando un file come il successivo e caricandolo in S1- TOPS Split. Se non si vuole usare il file si puo' fare anche dall'interfaccia utente cambiando la slide bar orizzontale al di sotto della scritta Bursts

<parameters>
    <subswath>IW2</subswath>
    <selectedPolarisations>VV</selectedPolarisations>
    <firstBurstIndex>9</firstBurstIndex>
    <lastBurstIndex>10</lastBurstIndex>
</parameters>

In seguito si applica la correzione di orbita su ogni split (Radar/Apply Orbit File)

Si crea quindi lo stack delle due acquisizioni con S1 Back Geocoding (togliere Mask out area with no elevation ed flaggare Output Deramp and Demod Phase

  • Creiamo il file con nome Stack . Dopo questa fase in modo opzionale si puo' effettuare S1 Enhanced Spectral Diversity
  • Usando il comandoRadar/Interferometric/Products/Inteferogram formation si ottiene come risultato file Stack_ifg
  • Si procede al debusrst conS1 TOPS Deburst file Stack_ifg_deb
  • Il passo successivo e 'Radar > Interferometric > Products/Topographic Phase Removal option con file risultato  Stack_ifg_deb_dinsar
  • Si applica Multilooking cambiando a 6 il parametro Number of Range Looks file Stack_ifg_deb_dinsar_ML

  • Fase di filtraggio Radar > Interferometric > Filtering/Goldstein Phase Filtering file Stack_ifg_deb_dinsar_ML_flt
  • Export to SNAPSU TOPO Number tile 20 20
  • Si entra nella directory in cui e' stato fatto l'export e si seleziona il file di Phase per esempio in polarizzazione VV Phase_ifg_VV_25Nov2022_31Dec2022.snaphu.hdr e si fa Radar/Interferometric/Unwrapping/snaphu-unwrapping
  • in seguito si fa l'import selezionando come Source Product il file  Stack_ifg_deb_dinsar_ML_flt e come Unwrapped il file unwrapped nel folder snaphu. Si salva come unwrapped
  • Radar/Inteferometric/Products/Phase to elevation scegliendo il parametro SRTM 1 Sec HGT risultato file unwrapped_dem
  • Geometric > Terrain Correction > Range Doppler Terrain Correction. si sceglie il parametro SRTM 1 Sec HGT si puo' anche scegliere la proiezione indicando WGS84/UTM e tra selected sources si flagga DEM file unwrapped_dem_TC. Si puo' quindi esportare la banda come Geotiff

mercoledì 14 dicembre 2022

Layer stack con RasterIO

La libreria RasterIO permette di fare layer stacking ovvero creare dei composit 


In questo caso sono stati presi 3 indici NDVI della stessa area in diversi periodi dell'anno 

Il primo file nell'array corrispondera' al canale rosso ed i successibi verde e blu rispettivamente (tutti i layer devono avere le stesse dimensioni)

import rasterio

file_list = ['20220804_ndvi.tiff','20220913_ndvi.tiff','20221028_ndvi.tiff']

# Read metadata of first file
with rasterio.open(file_list[0]) as src0:
meta = src0.meta

# Update meta to reflect the number of layers
meta.update(count = len(file_list))

# Read each layer and write it to stack
with rasterio.open('stack.tif', 'w', **meta) as dst:
for id, layer in enumerate(file_list, start=1):
with rasterio.open(layer) as src1:
dst.write_band(id, src1.read(1))

martedì 6 dicembre 2022

Subset geografico con SNAP

Ci ho messo un po' a capire come funziona....

Per effettuare il subset via graph in SNAP si devono selezionare le bande che si intendono utilizzare e la finestra geografica. Per farlo non in modo interattivo si deve inserire un poligono in formato WKT e georiferito in WGS 84 (anche se le immagini sono in altro sistema di riferimento) ..partendo da uno shapefile si puo' utilizzare il servizio on line di conversione e poi fare update (se tutto e' andato bene compare un poligono giallo all'interno del perimetro rosso dell'immagine da tagliare




sabato 3 dicembre 2022

Debian testing e DNS

AGGIORNAMENTO : il problema non e' relativo a Debian ma al client di ProtonVPN che incasina il DNS

nmcli connection delete pvpn-ipv6leak-protection

==================================

Dopo molto tempo ho reinstallato una Debian testing.. piu' o meno sapendo a cosa andavo incontro

L'installazione e' avvenuta con successo ma al riavvio avevo perso la connessione di rete...indagando meglio non ho perso la connessione di rete ma il DNS.

Ho provato ad impostarlo da GUI ma niente...editando il file /etc/resolv.conf ho trovato

nameserver 8::

dopo averlo modificato in 

nameserver 8:8:8:8

e riavviato il servizio la rete ha iniziato a funzionare in modo corretto 

ps: sto ancora litigando con la stampante ma al momento non e' una priorita'

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...