2012-08-01 11 views
7

Ho recentemente lavorato a una soluzione per un problema di tracciamento dell'oggetto. Quello che devo fare è identificare e tracciare oggetti 3D che possono muoversi su un piano 2D, cioè la traduzione in xey, e la rotazione attorno a z. L'oggetto che deve essere tracciato è noto in anticipo e qualsiasi informazione desiderata può essere estratta da esso. Si presume inoltre che le condizioni di illuminazione non subiranno alcun cambiamento grave e che lo sfondo rimarrà relativamente stazionario. Gli oggetti da tracciare in genere non saranno di un solo colore, quindi il tracciamento per colore non è un'opzione.OpenCV: Tracciamento di oggetti 3D che si spostano su un piano 2D

Ho implementato con successo un prototipo per il tracciamento di più oggetti 2D utilizzando la sottrazione dello sfondo e la corrispondenza del modello dinamico. Ora desidero espandere il monitoraggio degli oggetti 3D, ma finora sono rimasto deluso da ciò che ho trovato/ottenuto. Elencherò alcuni dei tentativi che ho fatto nella speranza che qualcuno possa far luce.

1.) Dinamico Template matching: Vorrei che l'utente selezionasse l'oggetto in un videoframe e quindi intorno all'oggetto è definita un'area di ricerca. L'oggetto verrà quindi cercato all'interno di quest'area. This clip mi ha dato l'idea in origine. Sfortunatamente, questo non ha funzionato per me, poiché l'oggetto si perde quando subisce una rotazione (volta le spalle alla telecamera). Ho anche provato ad aggiornare continuamente il modello quando viene trovato l'oggetto, ma questo ha portato il modello a diventare un altro oggetto (straniero) ogni volta che l'oggetto desiderato diventa occluded.

2.) Lucas-Kanade flusso ottico: ho utilizzato OpenCV's goodFeaturesToTrack per trovare alcuni buoni punti da tracciare e ho tentato di tracciare questi punti attraverso più fotogrammi usando calcOpticalFlowPyrLK. Tuttavia, le prestazioni di questo algoritmo sono state un po 'deludenti. L'ho applicato al set di dati Oxford Corridor, ma i punti che avevo inizialmente rilevato andrebbero presto persi.

3.) SURF: Ho provato a rilevare le funzionalità con SURF, ma il problema era che era molto difficile applicarlo agli oggetti 3D che possono differire notevolmente da diversi angoli di visualizzazione. Speravo di trovare la documentazione sul SURF di cv2, poiché questo sembrava fornire funzionalità per fornire l'estrattore di feature SURF con i punti chiave (forse da goodFeaturesToTrack). Sfortunatamente, non sono ancora riuscito a trovare un modo per farlo. La mia domanda su S.O .: OpenCV: Extract SURF Features from user-defined keypoints

Background: ho una singola webcam stazionaria, con tutte le mie elaborazioni eseguite su un computer desktop. Sto usando il wrapper Python di OpenCV e il plugin PyDev per Eclipse, su Windows 7.

Se qualcuno potesse suggerire tecniche aggiuntive da provare, o anche alcuni suggerimenti per migliorare le prestazioni delle tecniche già menzionate, farei molto apprezzalo.

+2

che dire di questo: http://info.ee.surrey.ac.uk/Personal/Z.Kalal/tld.html – moooeeeep

+0

In realtà stavo proprio guardando quello! Che coincidenza, ma grazie comunque :) [Cool Video] (http://www.youtube.com/watch?v=1GhNXHCQGsM&feature=related) – casper

risposta

0

Senza vedere l'oggetto che si desidera tracciare è difficile trovare alcuni suggerimenti utili. Se fai qualche foto per mostrarci il problema che sicuramente aiuterebbe la discussione. Le persone qui a volte implementano i loro suggerimenti/idee e condividono con te.

+0

Ciao, grazie per la tua risposta! La mia soluzione deve essere in grado di tracciare qualsiasi oggetto presentato ad esso, ad es. tazza di caffè, pezzo degli scacchi, animale di pezza, macchinina o qualche oggetto simile. Non so cosa sarà questo oggetto, ma una volta deciso l'algoritmo di tracciamento può costruire qualsiasi tipo di modello da esso. – casper