Domanda

Voglio trovare un algoritmo in grado di trovare linee spezzate o forme in una bitmap. considera una situazione in cui ho una bitmap con solo due colori, retro e bianco (Immagini usate nei libri da colorare), ci sono alcune curve e linee che dovrebbero essere collegate tra loro, ma a causa di alcuni errori di scansione, i bit bianchi siedono invece di quelli neri. Come devo rilevarli? (Dopo questo lavoro, voglio convertire bitmap in file vettoriali. Voglio lavorare con l'algoritmo potrace).

Se hai qualche idea, per favore fatemelo sapere.

È stato utile?

Soluzione

Ecco un semplice algoritmo per correggere piccoli vuoti:

Innanzitutto, utilizza un filtro che crea un pixel nero quando uno dei suoi otto vicini è nero. Questo aumenterà il tuo schema generale.

Quindi, utilizzare un filtro di assottigliamento che rimuove il contorno extra ma lascia da solo gli spazi vuoti riempiti.

Vedi questo articolo per alcuni filtri e parametri: Lab di elaborazione delle immagini in C #

Altri suggerimenti

L'approccio più semplice è utilizzare una tecnica morfologica chiamata chiusura . Funzionerà solo se le lacune nelle linee sono piuttosto piccole in relazione alla vicinanza delle diverse linee.

Il modo in cui scegli l'elemt di strutturazione per eseguire la chiusura può anche migliorare o peggiorare le prestazioni.

L'articolo di Wikipedia è molto teorico (o matematico), quindi potresti voler consultare Google o qualsiasi libro sull'elaborazione delle immagini per ottenere una spiegazione migliore su come è fatto.

Forse Hough Transform può aiutarti. Bonus: ottieni i parametri delle linee per il tuo file vettoriale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top