Algoritmo per il confronto delle linee

2

Sto lavorando all'importazione dei dati sull'uso del territorio in Openstreetmap. Purtroppo ho riscontrato un problema che ha ritardato il mio orario.

Dai un'occhiata alla foto qui sotto: la linea rossa è la strada principale (è mappata correttamente usando i dispositivi GPS). L'area bianca è la regione che indica la presenza della strada: deve essere posizionata esattamente sopra la linea rossa. Sfortunatamente, questa regione non è stata acquisita con i dati GPS, ma è stata costruita principalmente con immagini aeree (quindi ci sono errori di proiezione e anche problemi con il contrasto e la definizione delle immagini): questo spiega il problema di corrispondenza con la linea rossa. / p>

Dato che possiedo una conoscenza limitata in questo particolare problema geometrico, stavo cercando degli algoritmi che potrebbero aiutarmi a risolvere questo problema. Il mio pensiero era di gestire i confini della regione bianca come due linee diverse e applicare una sorta di algoritmo di corrispondenza. Idealmente, l'algoritmo che sto cercando dovrebbe essere in grado di confrontare le caratteristiche di due linee e regolarne una di conseguenza sull'altra.

C'è qualcosa di simile che potrebbe aiutarmi? O hai altre possibili soluzioni?

Grazie per il tuo aiuto e il tuo tempo.

    
posta Davide_sd 19.07.2016 - 11:27
fonte

2 risposte

1

Non è necessario confrontare le linee se si conosce che il bianco è difettoso e quello rosso è ok. Basta eliminare la linea bianca esistente dall'immagine originale, quindi aggiungere una nuova linea bianca che segue il percorso rosso e ha uno "spessore" che è paragonabile allo "spessore" della linea bianca originale.

Se questo non è quello che avevi in mente, o se non funziona per qualche motivo che ti sei dimenticato di descrivere finora, sentiti libero di commentare o modificare la tua domanda e migliorarla.

    
risposta data 15.01.2017 - 18:38
fonte
0

Questa è una rapida idea di come lo farei io:

  1. Dividere la linea rossa in punti all'intervallo appropriato
  2. Per ogni punto, trova il punto di chiusura sulla linea bianca.
  3. Spostare leggermente ciascun punto verso il punto di ritrovamento. Forse applicare "bleed" che sposta anche i punti di quartiere nella stessa direzione, ma a un'ampiezza ridotta.
  4. Ripeti i passaggi 2-3 finché le linee non sono abbastanza vicine. Forse creare una metrica di errore / euristica per uscire dopo che la differenza è abbastanza piccola.
  5. La differenza tra il punto in cui il punto è iniziato e terminato è la mappatura tra le due linee.
risposta data 19.07.2016 - 15:40
fonte

Leggi altre domande sui tag