2009-11-20 6 views
11

Sto cercando il metodo più rapido ed efficiente per rilevare un oggetto in un video in movimento. Cose da notare su questo video: è molto granuloso e a bassa risoluzione, anche lo sfondo e il primo piano si muovono contemporaneamente.Qual è il metodo migliore per il rilevamento di oggetti in video in movimento a bassa risoluzione?

Nota: Sto provando a rilevare un carrello su una strada in un video in movimento.

metodi che ho provato:

La formazione di un Haar Cascade - ho tentato la formazione dei classificatori per identificare l'oggetto prendendo copping più immagini dell'oggetto desiderato. Ciò ha dimostrato di produrre sia molti falsi rilevamenti che nessun rilevamento (l'oggetto desiderato non è mai stato rilevato). Ho usato circa 100 immagini positive e 4000 negativi.

Keypoint SIFT e SURF - Quando si tenta di utilizzare uno di questi metodi basati su funzionalità, ho scoperto che l'oggetto che volevo rilevare era a risoluzione troppo bassa, quindi non c'erano abbastanza funzioni da abbinare per rendere accurato rilevamento. (Oggetto desiderato non è mai stato rilevato)

Corrispondenza modello: questo è probabilmente il metodo migliore che ho provato. È il più preciso anche se il più hacky di tutti. Riesco a rilevare l'oggetto per un video specifico utilizzando un modello ritagliato dal video. Tuttavia, non esiste una precisione garantita poiché tutto ciò che è noto è la migliore corrispondenza per ogni fotogramma, non viene eseguita alcuna analisi sul modello di percentuale corrispondente al fotogramma. Fondamentalmente, funziona solo se l'oggetto è sempre nel video, altrimenti creerà un falso riconoscimento.

Quindi questi sono i 3 grandi metodi che ho provato e tutti hanno fallito. Ciò che funzionerebbe meglio è qualcosa come la corrispondenza dei modelli, ma con invarianza di scala e rotazione (che mi ha portato a provare SIFT/SURF), ma non ho idea di come modificare la funzione di corrispondenza dei modelli.

Qualcuno ha qualche suggerimento su come eseguire al meglio questa attività?

+2

Come è il camion orientato? La sua forma/orientamento cambia? La fotocamera cambia posizione? È un video one-off o un sistema che deve funzionare in molte condizioni diverse? – endolith

+0

Sono d'accordo con l'endolite, è fondamentale definire il problema con maggiori dettagli. La scelta del metodo influenzerà la robustezza. – Ivan

+0

La vista del camion al suo fianco e si muove orizzontalmente. La forma del veicolo non cambia molto, motivo per cui l'abbinamento dei modelli funziona, ma voglio ancora che il mio metodo sia robusto. Fondamentalmente la telecamera esegue una panoramica a sinistra e a destra, seguendo alcuni veicoli diversi, con altri veicoli che passano in background. In sostanza, voglio che funzioni in più situazioni rispetto a una (ma principalmente con video di qualità simile). Il minimo che voglio realizzare è un rivelatore di oggetti in movimento all'interno di un video in movimento. – monky822

risposta

0

Quanto bassa risoluzione stiamo parlando? Potresti anche elaborare l'oggetto? È un colore specifico? Ha uno schema? Le risposte influenzano ciò che dovresti usare.

Inoltre, potrei leggere l'istruzione di corrispondenza modello errata, ma sembra che tu stia sovrallenando (testando sullo stesso video hai estratto l'oggetto da ??).

+0

La risoluzione è 720x480, ma la qualità del video è molto scarsa. Il video è molto pixelato a questa risoluzione. Per quanto riguarda la corrispondenza del modello, non sto allenando nulla. Sto solo usando un oggetto ritagliato dal video e sto solo cercando da ciascun frame. – monky822

+0

Beh, lo stai allenando, solo su un set di dati. Il modello corrisponderà bene all'ammasso se l'illuminazione e l'orientamento dell'oggetto non cambiano. Nel momento in cui ciò accadrà, la precisione scenderà davvero. Ancora una volta, usa tutti i segnali che puoi - esp. colore se è lì. – UsAaR33

0

Un Haar Cascade richiederà significativi dati di addestramento da parte dell'utente e sarà inadeguato per eventuali modifiche di orientamento.

La soluzione migliore potrebbe essere quella di combinare la corrispondenza dei modelli con un algoritmo simile a camshift in opencv (5,7MB PDF), insieme a un modello probabilistico (dovrai calcolare questo modello) se il carrello è ancora nell'immagine.

2

This vehicle detection paper utilizza una banca filtro Gabor per il rilevamento di livello basso e quindi utilizza la risposta per creare lo spazio caratteristiche dove allena un classificatore SVM .

La tecnica sembra funzionare bene ed è almeno invariabile in scala. Comunque non sono sicuro della rotazione.

1

Non conoscendo la tua applicazione, la mia impressione iniziale è normalized cross-correlation, soprattutto perché ricordo di aver visto un cross-correlatore puramente ottico che aveva il tracciamento del veicolo come applicazione di esempio.(Tracciare un veicolo mentre passa usando solo componenti ottici e un'immagine del lato del veicolo - Vorrei poter trovare il collegamento.) Questo è simile (se non identico) a "modello di corrispondenza", che tu dici tipo di opere , ma questo non funzionerà se le immagini vengono ruotate, come sai.

Tuttavia, c'è un related method based on log-polar coordinates che funziona indipendentemente dalla rotazione, dalla scala, dalla cesoia e dalla traslazione.

Immagino che questo consentirebbe anche di rintracciare che l'oggetto ha lasciato la scena del video, poiché la correlazione massima diminuirà.

5

Applicare optical flow all'immagine e segmentarla in base al campo di flusso. Il flusso di fondo è molto diverso dal flusso "oggetto" (che principalmente diverge o converge a seconda che si stia muovendo verso o lontano da te, con anche qualche componente laterale).

Ecco un progetto un po 'vecchiotto, che ha funzionato in questo modo:

http://users.fmrib.ox.ac.uk/~steve/asset/index.html

Problemi correlati