Riconoscimento dell'immagine di un'immagine angolare ben definita ma mutevole

Riconoscimento dell'immagine di un'immagine angolare ben definita ma mutevole


PROBLEMA


Ho una foto scattata da un veicolo oscillante. Per semplicità l'ho convertito in un'immagine in bianco e nero. Un esempio è mostrato di seguito:



L'immagine mostra i rendimenti ad alta intensità e contiene uno schema che trova tutte le immagini valide cerchiate in rosso. Questa immagine può essere presa da più angolazioni a seconda della rotazione del veicolo. Un altro esempio è qui:



L'intenzione qui è di tentare di identificare le celle immagine in cui esiste questo modello.


APPROCCI ATTUALI


Finora ho provato un paio di metodi, sto usando Matlab per testare ma alla fine lo implementerò in c++. È auspicabile che l'algoritmo sia efficiente in termini di tempo, tuttavia, sono interessato a qualsiasi suggerimento.


Riconoscimento delle funzionalità SURF (Funzionalità avanzate velocizzate)


Ho provato l'implementazione matlab predefinita di SURF per cercare di trovare funzionalità. Matlab SURF è in grado di identificare le caratteristiche in 2 esempi (non gli stessi di sopra), tuttavia, non è in grado di identificare quelle comuni:



So che i punti sono diversi, ma lo schema è ancora in qualche modo identificabile. Ho provato più serie di immagini e non ci sono quasi mai punti in comune. Dalla lettura di SURF sembra che non sia comunque robusto per le immagini distorte.
Forse qualche consiglio sulla pre-elaborazione qui?


Corrispondenza modello


Quindi è stata provata la corrispondenza dei modelli, ma sicuramente non è l'ideale per l'applicazione perché non è robusta per ridimensionare o inclinare le modifiche. Sono aperto a idee di pre-elaborazione per correggere l'inclinazione. Potrebbe essere abbastanza facile, alcune discussioni sulle informazioni aggiuntive sull'immagine sono fornite più in basso.


Per ora esaminiamo la corrispondenza dei modelli:supponiamo di avere le seguenti due immagini come modello e l'immagine corrente:



Il modello è scelto da una delle immagini più rivolte in avanti. E usandolo su un'immagine molto simile possiamo abbinare la posizione:



Ma poi (e in qualche modo ovviamente) se cambiamo l'immagine con un'angolazione diversa non funzionerà. Ovviamente ci aspettiamo questo perché il modello non assomiglia più al modello nell'immagine:



Quindi ovviamente abbiamo bisogno di un po' di lavoro di pre-elaborazione anche qui.


Linee Hough e RANSAC


Hough lines e RANSAC potrebbero essere in grado di identificare le linee per noi, ma come otteniamo la posizione del pattern?


Altri che non conosco ancora


Sono abbastanza nuovo nella scena dell'elaborazione delle immagini, quindi mi piacerebbe conoscere altre tecniche adatte a questo semplice ma difficile problema di registrazione delle immagini.


Il sensore e come aiuterà la pre-elaborazione


Il sensore è un laser 3d, è stato trasformato in un'immagine per questo esperimento ma conserva ancora le informazioni sulla distanza. Se tracciamo con distanza scalata da 0 - 255 otteniamo la seguente immagine:



Dove il più leggero è più lontano. Questo potrebbe sicuramente aiutarci ad allineare l'immagine, qualche idea sul modo migliore? . Finora ho pensato a cose come calcolare la normale delle celle che non sono 0, potremmo anche fare una sorta di discesa del gradiente o adattare i minimi quadrati in modo tale che la differenza nella distanza sia 0, che potrebbe allineare l'immagine in modo che è sempre dritto. Il problema è che la striscia bianca solida è più lontana? Forse potremmo segmentarlo? Quindi stiamo costruendo algoritmi sui nostri algoritmi quindi dobbiamo stare attenti in modo che questo non diventi un mostro.


Qualsiasi aiuto o idea sarebbe fantastico, sono felice di esaminare qualsiasi risposta seria!