V'è un ampio e ripetitivo trasformata di Hough in un pezzo di codice che sto vagamente attaccato troppo . Il manutentore di quella parte del codice ha sperimentato con array sparsi (in realtà un C++ std::map
digitato sull'indice delle celle se ho capito bene la sua presentazione) per l'accumulatore con un certo successo.
Suppongo che la velocità sia correlata ai problemi di localizzazione della cache, e sicuramente dipende dai dati sparsi.
Aggiornamento: Il software di cui sopra è destinato a servire molti esperimenti di fisica delle particelle, ma è stato originariamente utilizzato su un progetto banco di prova (cioè piccola scala). Dato che siamo diventati seri nel fare progetti più grandi e abbiamo iniziato a fare Monte Carlo per loro, la trasformazione di Hough è tornata a essere un po 'più complessa anche con la matrice sparsa.
Finora abbiamo non hanno una soluzione, ma uno dei colleghi hanno scoperto Gandalf che comprende "fast hough transform", che sembra valutare il trasformare in un quad-albero come modo (in 2D, presumibilmente si utilizza una struttura ottale in 3D) ridurre l'ordine di lavoro. Probabilmente stiamo andando a sperimentare con questo.
Ulteriore aggiornamento: Un collega ha implementato una trasformazione progressiva e probabilistica di Hough nel nostro codice che attualmente sembra essere la versione più veloce che abbiamo. Funziona meglio se non si richiede che ogni punto venga assegnato a una linea.
avete un esempio reale di dati su cui applicare questo codice? Sembra che ci siano diverse ottimizzazioni possibili, alcune indipendenti dai dati, ma altre dipenderebbero dalla distribuzione effettiva dei dati in img e dalla dimensione dell'immaginario. – kriss
un esempio dei dati che ho è http: // StackOverflow.it/questions/4372259/hough-transform-error-in-matlab-and-opencv mi rendo conto che ci sono solo 3 punti per colonna (ecco come ho creato quelle immagini) quindi ci dovrebbe essere un modo per accelerarlo, ma la parte di tempo in cui la memoria sta riempiendo l'accumulatore e non sta attraversando l'immagine – Denis