Skip navigation.
Home
Istituto Scienze della Terra - SUPSI

Segmentazione o classificazione d'immagini con Grass

Indice


--> Contesto generale

--> Metodologie di segmentazione con Grass

--> Unsupervised classification (i.cluster, i.maxlik) (radiometric, unsupervised)

--> Supervised classification with monitor (i.class, i.maxlik) (radiometric, supervised)

--> Supervised classification with maps (i.gensig, i.maxlik) (radiometric, supervised)

--> Supervised classification with maps (i.gensigset, i.smap) (radio- and geo- metric, supervised)

--> Conclusioni

--> Sources


Contesto generale

I dati legati al territorio sono sempre più utilizzati, questo in molti ambiti d'applicazione nelle varie discipline scientifiche (idrologia, geologia, studio del traffico, pianificazione territoriale, tutela ambientale, ecc.). Non sempre é facile disporre di dati e la loro acquisizione é spesso lunga ed onerosa. La classificazione d'immagini o segmentazione permette attraverso un procedimento statistico di ricavare dati preziosi a partire da immagini, siano esse foto aeree (ortofoto), immagini satellitari o quant'altro.

Programmi di Remote Sensing come eCognition o Erdas permettono d'effettuare queste operazioni in modo semplice; lo svantaggio é che softwares performanti come questi sono anche, aimé, altrettanto costosi. Si é quindi scelto l'utilizzo di un OpenSource come Grass (versione 6.4), strumento efficace che permette d'affrontare questo lavoro con diversi approci.

Esempi di risultati relativi alla classificazione possono essere statistiche di superficie legate alla copertura boschiva oppure in generale la copertura del suolo (landuse) del territorio. Un buon esempio di ciò che si può ottenere sono i dati di copertura del suolo del Canton Ginevra-CH descritti al seguente link:

http://etat.geneve.ch/sitg/dictionnaire.html ( cercare "Couverture du sol par analyse spectrale (haute)" )

 

 

Metodologie di segmentazione con Grass

Grass 6.4 permette d'effettuare la classificazione d'immagini nei metodi:

  • Unsupervised (automatico o non assistito)
  • Supervised (assistito)
  • Hybrid

come da immagine (Fig. 8.11, pg. 315 - Open Source Gis, a Grass GIS Approach, Third Edition - Neteler, Mitasova)

Le due grandi famiglie di Unsupervised e Supervised si differenziano per il fatto che se nel primo caso l'operatore inizia nello scegliere il numero di classi (Cluster) per la classificazione ed in seguito il software esegue questa operazione in modo automatico, nel caso del metodo Supervised l'operatore "interagisce" con il comando dando lui, a sua scelta, delle zone campione (Training areas) che presentano le caratteristiche spettrali dei cluster o classi che il comando deve identificare sull'immagine per generare la classificazione.

C'é un'ulteriore differenziazione delle metodologie di classificazione e questo sulla base dei comandi che vengono concretamente utilizzati e sull'utilizzo o meno dell'approcio geometrico (oltre a quello radiometrico o spettrale). La tabella (Table. 8.1, pg. 323 - Open Source Gis, a Grass GIS Approach, Third Edition - Neteler, Mitasova) illustra bene questo concetto.

In effetti se i.cluster ed i.maxlik sono i comandi principali per una classificazione Unsupervised dove interviene il solo approcio radiometrico (caratteristiche spettrali dei pixel), i.gensigset ed i.smap sono i comandi principali per il metodo Supervised che oltre alla radiometria utilizza il concetto legato alla prossimità geometrica dei pixel (neighborhood similairities) per produrre la classificazione. Mentre la famiglia dei Supervised con approcio solo radiometrico é composta da i.class ed i.maxlik se si vogliono specificare "a monitor" le Training areas oppure i.gensig ed il solito i.maxlik dove utilizzo una mappa come input contenete queste Training areas.

Maggiori informazioni saranno date in seguito con l'utilizzo specifico di ogni metodologia!

 

Unsupervised classification (i.cluster, i.maxlik) (radiometric, unsupervised)

La classificazione Unsupervised in Grass consiste nella combinazione di due funzioni. Da una parte i.cluster serve a generare un file di tracce spettrali (sign file), poi i.maxlik permette d'utilizzare un algoritmo di maggiore verosimiglianza (highest probability) sulle immagini. Come risultato una mappa delle classificazioni (classification map), secondo in numero dei cluster scelti ed una mappa della bontà o qualità probabilistica della classificazione, la rejection map.

Ma seguiamo tutte le tappe:

------------------------------------------------------------------------------------------------------------------------------------------------------------------

1) Importare l'immagine con r.in.gdal (operazione che vale per tutte le metodologie)

Se si tratta di un'immagine RGB a tre bande visibili avrò come risultato output 3 immagini; ogni immagine rappresenta una banda o spettro. È ovvio che più frequenze cromatiche ho e meglio é per la segmentazione. Meglio ad esempio per riconoscere la vegetazione avere R,G,B ed IR piuttosto che solo RGB.

esempio di un'ortofoto geotiff che carico con r.in.gdal 

r.in.gdal -o input=/root/Desktop/Geodati_source/SEGMENTAZIONE/1313-31.tif output=1313_31 

Per la visualizzazione delle 3 bande RGB caricare il layer come d.rgb (Add RGB or HIS layer)

Per ricomporre o mettere insieme le 3 bande in un unico raster possiamo anche utilizzare r.composite (che é maggiormente consigliato perché mi permette di comporre una mappa raster unica unendo le 3 bande createsi con l'import dell'immagine in Grass (con r.in.gdal). Questo mi permette di lavorare meglio dopo quando dovrò identificare le Training areas)

esempio di r.composite 

r.composite red=1313_31.red@Prove green=1313_31.green@Prove blue=1313_31.blue@Prove levels=32 output=1313_31_composite

------------------------------------------------------------------------------------------------------------------------------------------------------------------

1b) Settare e salvare la Region di lavoro

------------------------------------------------------------------------------------------------------------------------------------------------------------------

2) i.group per raggruppare le diverse bande tra di loro in un'unica immagine "virtuale". Questa operazione ho lo scopo di raggruppare in una sorta di directory unica le molteplici bande (nel nostro caso 3 RGB) createsi durante l'import in Grass. In sostanza, per fare un parallelismo, il gruppo é una sorta di Feature Dataset di ArcGis per le immagini. È pure molto importante creare durante l' i.group un sottogruppo (sub-group). Anche questo sarà richiesto (requiered) dal successivo comando i.cluster

esempio di i.group 

i.group group=gruppo subgroup=sottogruppo input=1313_31.blue@Prove,1313_31.green@Prove,1313_31.red@Prove 

Attenzione : il comando i.group non crea una nuova immagine composta dalle bande (RGB), ma solo le associa tra loro strutturandole secondo le regole di Grass.

------------------------------------------------------------------------------------------------------------------------------------------------------------------

3) i.cluster per creare gli insiemi di pixel con statistica radiometrica simile (o tracce spettrali simili), ovvero creazione dei cluster di probabilità wi 

esempio di i.cluster 

i.cluster group=gruppo subgroup=sottogruppo sigfile=sign classes=5 iterations=30 convergence=98.0 separation=0.0 min_size=17

Attenzione : non gli piaciono caratteri speciali nel group e subgroup (esempio group@prove, group\, ...), come pure non vuole che specifico il percorso per il subgroup.

Il risultato di i.cluster é un file di testo detto signfile o sign (scarica esempio) senza estensione che contiene i vettri media e le matrici di varianza e covarianza calcolate con l'algoritmo detto di "migrating means". In sostanza:

- si scelgono punti random come centri dei cluster

- ogni pixel viene attribuito al cluster con centro più vicino (probabile)

- alcuni cluster sono eliminati (pochi pixel) oppure fusi (centri troppo vicini)

Per chi utilizza Grass con la chiavetta Slax (forse anche per gli altri), il signfile lo crea in una directory sig in /root/grassdb/Svizzera/Prove/group/gruppo/subgroup/sottogruppo/sig

 

Concetto di Clustering con Massima verosimiglianza e soglie per i valori minimi. Source : Classificazione d'immagini con Grass - Paolo Zatelli

 

Sul settaggio di i.cluster

 - Initial number of classes : numero di classi da generare. Conviene scegliere il numero di classi in modo giudizioso in funzione del contenuto dell'immagine da classificare. Troppe poche classi ed elementi molti disparati si troveranno riuniti (per esempio prato e certi tipi di coltivazione o cultura agricola), mentre troppe classi ed un 'immagine abbastanza "banale" con ad esempi una sola cultura agricola si troverà scissa in più cluster (prato esposto al sole, in ombra, ecc.), ciò che non é il caso.

- File containing initial signature : file sign delle firme spettrali creato già precedentemente con il comando i.class (vedi capitoli successivi) che serve come base al clustering. In questo caso si ha una sorta di classificazione ibrida.

- Maximum number of iterations : numero massimo di iterazioni dell'algoritmo di clustering.

- Percent convergence : é la percentuale di convergenza che deve raggiungere il cluster, per default sissa a 98. Se le classi da separare sono molto distinte (esempio lago e bosco), un tasso di convergenza elevato non é un handicap poiché le classi arriveranno più rapidamente a stabilizzarsi.

- Cluster separation : corrisponde alla differenzazione tra ogni classe spettrale. È una sorta di distanza oltre la quale due classi rimangono divise, quindi bisogna aumentare il valore se desideriamo che le classi ottenute siano ben distinte sul piano spettrale.

- Minimum number of pixel in a class : numero minimo di pixel perché una classe esista. Portare questo parametro ad un valore elevato permette d'evitare di trovare delle classi "orfane" ovvero che contengono pochi pixel, ma ben distinte sul piano spettrale per il clustering. Per spiegare meglio il concetto, ammettiamo d'avere un immagine a due colori distinti (es. bianco e nero) ed in più 20 pixel di colore giallo. Se nel settaggio Initial number of classes = 2 Grass mi creerà 2 cluster, uno nero ed uno bianco mentre il giallo non lo crea perché a livello statistico si tratta del valore meno frequente in termini quantitativi. Se invece Initial number of classes > 2 ma Minimum nuber of pixel in a class > 20 allora anche in questo caso avrò come risultato solo 2 cluster o classi perché essendoci nell' immagine 20 pixel gialli non raggiungo il numero minimo. Quindi più questo valore é alto e più generalizzo l'immagine. Si produce una sorta di "banalizzazione" che molte volte é evidentemente più utile rispetto ad una classificazione con un numero enorme di classi. Caso esempio : aumentando questo parametro non voglio che venga classificata l'autovettura blu-elettrica in un'ortofoto.

------------------------------------------------------------------------------------------------------------------------------------------------------------------

4) i.maxlik per la classificazione effettiva dell'immagine con il calcolo di massima verosimiglianza utilizzando i risultati di i.cluster. 

Attenzione : comando per il quale non esiste una finestra di dialogo ma direttamente lanciato con linea di comando sul Bash di Grass)

esempio di i.maxlik

GRASS 6.4.svn (Svizzera):~/grassdb > i.maxlik [-q] group=gruppo subgroup=sottogruppo  sigfile=sign class=1313_31_class reject=1313_31_rej

dove input : group, sugbroup, sigfile mentre output : class, reject

output : 1. il raster classificato (1313_31_class), ma le classi non hanno ancora nessun significato di uso del suolo. È l'operatore a doverle etichettare a posteriori. 2. il raster rappresentante la probabilità di rigetto di ogni pixel per la classe a cui é stato attribuito (1313_31_rej). In sostanza la carta dell'attendibilità espressa in [%] dove quando ho valori di % bassi ho un'incertezzo o scarsa attendibilità mentre valori alti di % corrispondono a buona attendibilità dei risultati.

------------------------------------------------------------------------------------------------------------------------------------------------------------------

5) Analisi dei risultati ottenuti

Lo scopo é quello d'analizzare i risultati ottenuti sulla base di report statistici (consultare la distribuzione dei pixel), in particolare della reject map

5a) r.report consente di visualizzare i dati di cui é composta la reject map (1313_31_rej). Con questo comando i risultati si consultano direttamente nell'output, poi posso salvare il file tabulare delle statistiche. Con d.histogram invece creo un report grafico di tipo istogramma.

esempio di r.report

r.report map=1313_31_rej@Prove units=h null=* nsteps=255

esempio di istogramma d.histogram

Abbiamo visto che con r.report e/o d.histogram posso vedere la statistica relativa gli intervalli di valori 1,2,3,4,5, ... a cui corrisponde un valore in % che é il grado di reject ed un'area per ogni classe d'intervallo espressa in questo caso in [ha].

Pixel con grado di reject > 70 % : attendibili

Di regola ho una buona classificazione o segmentazione dell'immagine quando non ho troppi pixel (o troppa area) inferiori ad un grado di reject del 70%. Caso d'incertezza. Mentre tutto ciò che é maggiore del 70%, ovvero da classe 10 in su, é da considerarsi buono. Per iterazione agendo sui parametri dei comandi di Grass (in particolare i.cluster) dobbiamo pertanto cercare di far aumentare il numero di pixel > 70%.

Nel nostro esempio analizzando la zona dello stadio vedo che la pista rossa me la considera come molto incerta (valori in % molto bassi) anche se dall'ortofoto questo oggetto é molto ben definito. La considera incerta perchè essendo una superficie con una colorazione particolare non é stato creato un apposito cluster (dei 5 che ho settato) con quel tipo di caratteristiche. Il programma tende a farmi rientrare la pista dello stadio in un cluster che non gli si addice ma che più gli é simile (rientra nella classe 4) ma dandogli un'incertezza molto grande (% bassa). Ora, la suddivisione in classi della segmentazione e soprattutto la scelta del numero dei cluster é da farsi in funzione della differenziazione territoriale e magari aiutandosi con dati o info già esistenti (copertura del suolo del catasto per esempio).

5b) r.mapcalc : sempre per aver a disposizione più strumenti che ci consentono d'analizzare i risultati e procedere ad un loro miglioramento posso utilizzare il comando r.mapcalc per generare una mappa a soli due valori (valore 1 : grado reject > 70% ;  valore null il resto) ed utilizzare i soliti r.report e/o d.histogram per visualizzare i dati in esame.

esempio r.mapcalc

r.mapcalc 'classe_rejqual=if(1313_31_rej>=10,1,null())'

------------------------------------------------------------------------------------------------------------------------------------------------------------------

6) r.category per assegnare un attributo alfanumerico o descrittivo al raster della map class (mappa della classificazione). Ho bisogno di un file (di testo ma senza estensione) da chiamare in causa con questa struttura (nell' esempio cat_1313 (scaricare))

1:acqua
2:fiume_terraumida_vegetazione
3:prato
4:terreno
5:costruzioni

esempio di r.category

r.category map=1313_31_class@Prove fs=tab 'rules=/root/Desktop/Tutorial Grass/segmentazione/cat_1313'

------------------------------------------------------------------------------------------------------------------------------------------------------------------

7) Filtri : ora per fare in modo che la mappa sia più veritiera possibile eliminando quei pixel isolati all'interno di grandi superfici omogenee posso applicare dei filtri. Ne proponiamo uno anche se bisognerebbe senz'altro trovare quello più adeguato (magari con l' r.mapcalc) "caso per caso" studiando un po' meglio la situazione. Esempio l' r.neighbors mi permette con la modalità "mode" di assegnare ad un pixel il valore più frequente in base ai pixel adiacenti (in questo caso scegliendo 3 sono i pixel 3x3 attorno al pixel in esame). Risultato: l'immagine é meno "sporca" da pixel isolati ma c'é il problema di perdita di pixel ai bordi. Per esempio una casa in mezzo ad un campo potrebbe venir ridotta nella sua superficie.

esempio r.neighbors

r.neighbors input=1313_31_class4@Prove output=filtro_mode_class4 method=mode size=3

Estratto di mappa prima (sinistra) e dopo filtro (destra) neighbors mode. Si noti come l'immagine dopo l'applicazione del filtro sia più "pulita"; il passaggio tra le due classi predominanti é più netto ed i pixel isolati sono spariti.

------------------------------------------------------------------------------------------------------------------------------------------------------------------

Scarica la shell che consente di fare tutte le operazioni da 1) a 4) contemporaneamente

------------------------------------------------------------------------------------------------------------------------------------------------------------------

Supervised classification with monitor (i.class, i.maxlik) (radiometric, supervised)

Questa classificazione consiste nell'identificare direttamente a schermo in una finestra interattiva con i.class le Training areas per poi creare il file delle firme spettrali signfile utilizzato nel i.maxlik

Attenzione: é stato costatato che nelle versione 6.3 e 6.4 di Grass i.class non funziona correttamente perché non riesce a generare correttamente il signfile. Metodo comunque descritto tappa per tappa.

1) r.in.gdal, r.composite ed i.group

2) i.class per lavorare interattivamente su monitor. Però prima aprire un monitor con

d.mon start=x0

esempio i.class

GRASS 6.4.svn (Svizzera):~/grassdb > i.class group=gruppo sub=sottogruppo map=1313_31_composite outsig=sup_sig_risultati

Sul monitor compare una schermata screen dove si devono scegliere  delle region (training areas) per l'analisi spettrale. L'utilizzo dello screen interattivo può essere riassunto come segue:

- Zoom sull'area d' interesse della mappa
- Disegno a schermo della region e visualizzazione delle curve di distribuzione o analisi spettrale (Define Region -> Draw Region -> Disegno con Left, Undo con Middle, End con (Right)); chiudere la region con Complete Region); Analyse Region per vedere gli istogrammi di distribuzione mentre Display matches mi fa vedere in ampia veduta i pixel sulla mappa che hanno le stesse caratteristiche della Draw Region definita a schermo.
- Salvare la distribuzione o Region scrivendo il nome nella Bash di Grass (es. classe prato)
- alla fine uscire ed il comando i.class mi dice che ha salvato la Signature (definita dalle varie Region o Training areas)

 

Attenzione: l' i.class non ti da la possibilità di definire più di un campione per la stessa training area. Esempio: la classe prato non può essere definita da 4 poligoni sparsi dei quali faccio poi la media, ma possibilità di definire la classe con una sola training area.

3) i.maxlik : c'é un bug come già detto perché il signfile creato dall' i.class é difettoso

------------------------------------------------------------------------------------------------------------------------------------------------------------------

Supervised classification with maps (i.gensig, i.maxlik) (radiometric, supervised)

Questa classificazione consiste nell'utilizzo del comando i.gensig nel quale sono richieste le training areas come layer per l'elaborazione del signfile. Successivamente il solito i.maxlik. Si consiglia di creare (disegnare le training areas con un Desktop GIS come ArcGis o MapInfo).

Esempio di training areas multicampioni disegnate con ArcGis

1) r.in.gdal, r.composite ed i.group

2) i.gensig per aprire la finestra di dialogo. Vengono chieste le training area (Ground truth training map ) ed il group e subgroup dell'immagine da classificare. Le training areas che devono essere un layer raster possono essere create con v.digit ed r.digit ma si consiglia per facilità e comodità degli strumenti di navigazione / visualizzazione dell'immagine ed d'utilizzo degli strumenti di Editing di crearle in .shp con ArcGIS (ogni training area contraddistinta da un attributo univoco e magari label 1:foresta, 2:lago, ... Inoltre tutto quello che non é training area nel raster deve avere valore nullo Null o * ). Successivamente importarle (v.in.ogr) e rasterizzarle (v.to.rast) poi con Grass.

esempio: import shape, rasterizzazione, utilizzo i.gensig

v.in.ogr -o dsn=/root/Desktop/Geodati_source/SEGMENTAZIONE/shp/campioni.shp output=campioni_landuse min_area=0.0001 snap=-1
v.to.rast input=campioni_landuse output=campioni_landuse use=attr type=area layer=1 column=Num value=1 rows=4096 labelcolumn=Natura --overwrite

Ricordarsi che per il campo imput non gli piacciono caratteri speciali tipo @ che mette in automatico (quindi da eliminare) e definire nella rasterizzazione l'attributo per la differenziazione del valore del raster, in questo caso Num, e l'attributo dello shp per il quale poi verrà creato un label, in questo caso Natura)

Esempio i.gensig

i.gensig trainingmap=campioni_landuse@Prove group=gruppo@Prove subgroup=sottogruppo signaturefile=sign1_igensig

Anche in questo caso il signfile sign1_igensig viene creato in /root/grassdb/Svizzera/Prove/group/gruppo/subgroup/sottogruppo/sig

 

3) i.maxlik : come per la unsupervised classificare l'intera immagine con il classificatore di massima verosimiglianza però questa volta utilizzando i risultati di i.gensig. Per i.maxlik, sempre linea di comando sul Bash perché nessuna finestra di dialogo.

esempio i.maxlik

i.maxlik [-q] group=gruppo subgroup=sottogruppo  sigfile=sign1_igensig class=1313_31_class1_igensig reject=1313_31_rej1_igensig

4) Analisi dei risultati ottenuti

Immagini risultato di i.gensig

Commento relativo all'immagine: dalla classification map e dalla rejection map si nota che il programma reagisce ed identifica bene i pixel con stessa frequenza spettrale delle trainig areas (infatti la cementificazione la identifica molto bene). Però, tutto ciò che non era stato definito nelle training areas, esempio bosco, ecc. lo associa alla classe o cluster che più si avvicina (verosimile). Nel caso specifico tutto ciò che non é lago o cemento (classi o cluster ben definiti) lo associa alla classe campo (in rosso) ma la percentuale di reject é molto bassa quindi poco affidabile.
Per migliorare la segmentazione o classificazione sull'intera ortofoto bisogna per forza diminuire la percentuale di valori con reject < 70% aumentando le classi delle training areas; per un miglior risultato definire più trainig areas o poligoni campioni sparsi nella stessa classe.

Questo metodo sembra dare comunque dei buoni risultati puntuali ovvero é efficente quando voglio per esempio identificare solo una o due classi particolari sull'intera immagine. Per esempio se da una ortofoto mi interessa solo ciò che é edificio o bosco, oppure tutte le superfici in terra rossa (tennis).

A differenza di i.class é possibile definire più poligoni campioni per la stessa classe di training area. Per la stessa classe devo dargli più gruppi di pixel con spettro diverso e Grass effettua una media. Si consiglia di non mischiare però troppo radiometrie diverse nella stessa classe senò la campana di Gauss si allarga e quel cluster potrebbe diventare il ricettacolo di tutto ciò che é ambiguo o non definito.

Conlusioni: la creazione della mappa finale passa necessariamente tramite iterazioni e calcoli per ottimizzare i risultati ottenuti dalla classification map, la rejection map, ed uno o più filtri o condizioni sulla base di dati esterni (catasto, ecc.).

Comparazione tra risultati di i.gensig con mono trainig areas (sinistra) e multi training areas (destra). Si noti come l'utilizzo di più campioni (multi training areas) migliori l'attendibilità del risultato e come l'immagine classificata sia meno "sporca".

 ------------------------------------------------------------------------------------------------------------------------------------------------------------------

Supervised classification with maps (i.gensigset, i.smap) (radio- and geo- metric, supervised)

Questo metodo é concepito come il precedente ma oltre ad un'analisi radiometrica sugli spettri utilizza un concetto legato alla prossimità geometrica del pixel (neighborhood similarities) per classificare i pixel. Con l'ausilio di i.gensigset posso creare il solito signfile, dopodiché utilizzando i.smap (sequential maximum a posteriori - estimation) creo la mappa delle classificazioni.

Attenzione : questo metodo non restituisce la reject map!

1) r.in.gdal, r.composite ed i.group

2) i.gensigset per la creazione del signfile

esempio i.gensigset

i.gensigset trainingmap=campioni_landuse group=gruppo subgroup=sottogruppo signaturefile=sign1_igensigSET maxsig=10

Attenzione: anche qui non sembra gradire caratteri tipo @ quindi rimuovere prima di lanciare il comando ed il signfile lo crea in /root/grassdb/Svizzera/Prove/group/gruppo/subgroup/sottogruppo/sigset

3) i.smap per la creazione della classification map

esempio di i.smap

i.smap group=gruppo subgroup=sottogruppo signaturefile=sign1_igensigSET blocksize=128 output=class1_m_igensigSET

l'attivazione o disattivazione del parametro Use maximum likelihood estimation (instead of smap) non sembra dare differenze visibili nei risultati

4) Analisi dei risultati ottenuti

I risultati sono in linea con la metodologia precedente i.gensig + i.maxlik, ma si nota una migliore qualità dovuta al filtraggio dello "sporco" dei pixel singoli sparsi sul terreno. Nel caso in esempio (vedi immagine sotto) molti pixel gialli (classe lago) non esistono più, come giusto che sia.

Comparazione tra metodo i.gensig + i.maxlik (sinistra) e i.gensigset + i.smap

------------------------------------------------------------------------------------------------------------------------------------------------------------------

Conclusioni

L'utilizzo di softwares per la classificazione di immagini può rivelarsi uno strumento molto efficace. È necessrio però che l'operatore sappia le varie metodologie da applicare in funzione già del risultato che vorrà ottenere. In questo senso uno studio preliminare dell' immagine da classificare é indispensabile. Anche sulla base della conoscenza territoriale della zona di studio é bene identificare il numero migliore di classi e gli altri parametri importanti, ciò che influenza direttamente il grado di dettaglio e l' attendibilità della classificazione. Infine, dopo aver ottenuto la carta delle classificazioni, si procederà ad un trattamento tramite filtri specifici e la comparazione con dati già esistenti. Questa operazione é molto importante per l'ottimizzazione del risultato finale.

Sources