2012-03-06 15 views
7

Come si implementa uno Hough transform su un'immagine di testo? Sto cercando lo pseudo-codice (eventualmente questo sarà in java).Come implementare la trasformazione di Hough?

Ecco alcune informazioni di base:

Dato un'immagine, determinare l'equazione per una linea y = mx + b. In genere la trasformazione di Hough è rappresentata in coordinate polari tali che Rho = y*sin(theta) + x*cos(theta). (Non sono proprio sicuro di quali siano i valori X e Y corrispondenti all'immagine).

ci interessano solo i valori Rho e theta e li tracciamo. Le posizioni con molti punti nell'accumulatore (conosco parte dell'implementazione, non l'esecuzione) sono considerate una linea.

Il problema che non capisco è come trovare rho e theta con cui si aggiorna l'accumulatore.

+0

Fatemi sapere se risposta è stata utile! ;) – Matteo

risposta

5

Il caso più semplice di trasformazione di Hough è la trasformazione lineare per il rilevamento di linee rette per . Nello spazio immagine, la retta può essere descritta come y = mx + b e può essere graficamente tracciata per ogni coppia dei punti immagine (x, y)

Quindi questo indica ciò x e y corrispondono per tornare nell'immagine.

Nel trasformata di Hough, un'idea principale è quella di considerare le caratteristiche della retta non come punti immagine (x1, y1), (x2, y2), ..., ma invece, in termini dei suoi parametri, come il parametro slope m e il parametro dell'intercetta b.

In base a ciò, la retta y = mx + b può essere rappresentata come punto (b, m) nello spazio dei parametri. Tuttavia, uno affronta il problema che le linee verticali danno origine ai valori non limitati dei parametri m eb, . Per ragioni computazionali, è quindi preferibile utilizzare una coppia diversa di parametri, indicata con e (theta), per le linee nella trasformazione di Hough.

Il parametro rho rappresenta la distanza tra la linea e l'origine di , mentre theta è l'angolo del vettore dall'origine a questo punto più vicino di .

Questo ti dice cosa rho e theta corrispondono a: essi sono la rappresentazione in coordinate polari di pendenza e intercetta della linea che si sta tentando di descrivere nella vostra immagine.


Su SourceForge è possibile trovare un C++ implementazione di trasformata di Hough.

Una descrizione dalla quale si dovrebbe essere in grado di interpretare il codice che ho sottolineato nel link precedente può essere la seguente:

La trasformata di Hough algoritmo utilizza una matrice, chiamato un accumulatore, per rilevare l'esistenza di una linea y = mx + b.

Ad esempio, il problema di trasformazione lineare di Hough ha due parametri sconosciuti : m eb.

Per ciascun pixel e il relativo vicinato, l'algoritmo di trasformazione Hough determina se vi è una prova sufficiente di un bordo a quel pixel. Se così, calcolerà i parametri di quella linea, quindi cercherà nel raccoglitore dell'accumulatore in cui si trovano i parametri e aumenterà il valore di quel bin.

Trovando i bidoni con i valori più elevati, in genere alla ricerca di massimi locali nello spazio di accumulo, le linee più probabili possono essere estratti

Problemi correlati