Sto cercando di riconoscere i corsi d'acqua dalle fotografie aeree (diciamo da Google Maps). I governi locali spesso dispongono di dati GIS che indicano dove si trovano i corsi d'acqua (e strade, edifici, ecc.), Ma i dati idrici in essi contenuti sono spesso in qualche modo inaccurati e potremmo essere in grado di migliorarli utilizzando le immagini aeree. Quindi abbiamo già alcuni dati di cui non ci si può sempre fidare.
So come eseguire alcune elaborazioni di base delle immagini sui dati (sfortunatamente non ho ancora immagini di esempio da mostrare qui, sto provando a immaginare come potrei farlo, non ho ancora un codice funzionante):
Posso raccogliere alcuni set di valori di colore usando frammenti di canali navigabili nelle immagini e capire quali pixel sono più vicini a questi colori, possibilmente anche per altri tipi di funzionalità (erba, strade, edifici ecc.). Se imposto una soglia su cui i pixel sono "abbastanza vicini", ottengo un insieme di pixel che sono probabilmente corsi d'acqua (ma ci sarà molto rumore).
Posso trasformare l'immagine in scala di grigi e utilizzare un algoritmo di rilevamento dei bordi standard per capire dove si trovano i bordi. Ancora una volta, questo mi dà una serie di pixel con limiti simili, ma ci sarà rumore e gli spigoli saranno troppo pensati e / o presentano delle lacune.
Quello che voglio avere come output è un insieme di poligoni che delineano i probabili corsi d'acqua.
Intuitivamente mi piacerebbe usare i bordi rilevati per creare poligoni e le informazioni sul colore per decidere quali di loro sono acqua, eventualmente facendo uso dei dati del governo che già abbiamo.
Esiste un modo noto per passare dal risultato di un algoritmo di rilevamento dei bordi a un bel set di poligoni chiusi? O qualche altro consiglio su come affrontare questo problema, se esiste un modo migliore?