2009-11-08 9 views
8

Spero di ottenere qualche aiuto con il rilevamento di oggetti 2D. Darò una breve panoramica del contesto in cui questo sarà implementato.Rileva marcatore nell'immagine 2D

Ci sarà un'immagine presa del soffitto. Il soffitto sarà dotato di marcatori su di esso in modo da poter determinare l'orientamento della fotocamera. Le immagini verranno sempre scattate rivolte verso l'alto. Il mio obiettivo è rilevare uno di questi marker nell'immagine e determinarne la rotazione. Quindi rotazione e ridimensionamento (in misura minore) saranno i due fattori principali utilizzati nel rilevamento dell'immagine. Scriverò il software in C# o MATLAB (non ancora sicuro).

Ad esempio, l'indicatore potrebbe essere una freccia in questo modo:

Reference Arrow

Un'immagine presa del soffitto conterrebbe marcatori. Il software deve rilevare un singolo marker e determinare che è stato ruotato di 170 gradi.

Ceiling Arrows

non ho alcuna esperienza precedente con l'analisi delle immagini. So che l'elaborazione delle immagini è un argomento abbastanza ampio e speravo di ottenere qualche consiglio su quale direzione dovrei prendere e quali tecniche sarebbero le migliori per la mia applicazione. Grazie!

+0

Vorrei suggerire di cambiare il titolo della tua domanda in "Rileva marcatore nell'immagine 2D". Le rilevazioni di oggetti hanno altre connotazioni nell'analisi delle immagini. – Ivan

risposta

3

Suggerirei MATLAB o se si intende utilizzare C#, Emgu CV è piuttosto buono.

Hough transforms sono una grande idea. Una volta individuati i bordi dell'immagine, usando, ad esempio, un Canny edge detector, si ottiene un'immagine di bordo (che è un'immagine binaria con solo 1 o 0 per i valori).

Quindi, la linea retta di Hough trasforma (essenzialmente) fila una linea su ciascun pixel bianco nell'immagine del bordo (la risoluzione della linea dipende da te) utilizzando una funzione parametrizzata per la linea e calcola il numero totale di bianco (valutato a 1) pixel lungo ciascuna linea filata e memorizza queste informazioni in un grande accumulatore che memorizza i dati indicizzati dai parametri della linea.

alt text http://upload.wikimedia.org/wikipedia/en/a/af/Hough_space_plot_example.png

Nell'esempio precedente, la forma parametrica per una linea è:

rho = x*cos(theta) + y*sin(theta) 

dove rho è la distanza e theta è l'angolo

Così come puoi vedere, se guardi il cestino con un particolare orientamento, puoi scoprire quante linee sono orientate a quell'angolo. Ovviamente, dovrai fare del lavoro extra per capire quali linee sono orientate con quell'angolo dato che hai 5 linee per freccia, ma non dovrebbe essere troppo difficile.

+0

il tuo secondo paragrafo è mal scritto: sembra che la trasformata di hough sia un rilevatore di bordi, mentre è un rilevatore di linea. per essere completo, un rilevatore di bordo sobel si adatterebbe bene anche qui. –

+0

Hmm, non penso. Sembra abbastanza chiaro che il secondo paragrafo utilizza l'immagine del bordo per ottenere la trasformazione di Hough. In secondo luogo, la completezza non è un problema, dal momento che ci sono ** diversi ** rilevatori di bordo disponibili, quindi menzionarne uno dovrebbe essere sufficiente per indirizzare l'OP nella giusta direzione. In ogni caso, grazie per l'input, modifico il paragrafo. – Jacob

4

Non sono direttamente in questo campo, ma ti suggerisco di iniziare a esaminare specificamente il rilevamento dei fronti. Se si dispone di un background in matematica/ingegneria dei materiali sono abbastanza facile da capire:

questo sembrava scintilla alcune idee: http://www.cfar.umd.edu/~fer/cmsc426/lectures/edge1.ppt

2

Avrete bisogno di esplorare il rilevamento dei bordi, in modo da guardare in filtri Hough. Dopodiché dovrai consultare le classificazioni dei pattern e l'estrazione delle feature.

This paper ha un algoritmo che sembra funzionare senza rilevamento del fronte. This book excerpt è più orientato verso il tipo di rilevamento di simboli che si intende, una volta eseguito il rilevamento dei bordi.

3

come sempre in computer vision, il tuo primo problema è l'illuminazione e l'acquisizione delle immagini. prima di andare oltre, stabilisci in che modo i tuoi indicatori saranno stampati sul soffitto, quale sarà la loro forma, quale luce utilizzerai per vederli e quale impostazione della fotocamera sceglierai per guardare i marcatori.

dato un buon materiale, una buona luce e una buona macchina fotografica, non si può avere alcun problema per elaborare l'immagine. ad esempio, puoi stampare una freccia intera in un materiale retroriflettente, con una coda più lunga del tuo esempio, utilizzare una luce colorata e un filtro corrispondente sulla fotocamera. ora tutto ciò che hai sulla tua immagine sono frecce ... ci sono molti altri modi per acquisire l'immagine che ti aiuterà lì.

una volta che hai delle semplici frecce, una semplice analisi del blob (che consiste nel calcolare i momenti statistici degli oggetti nell'immagine) ti darà molte informazioni: ogni freccia dovrebbe avere valori quasi uguali per i 7 momenti hu, il che permette per filtrare gli oggetti in modo efficiente, anche l'orientamento calcolato dai momenti centrali ti darà l'angolo della freccia. l'analisi del blob è solo statica, è estremamente veloce.

3

Diversi sistemi sono stati sviluppati per individuare i marcatori e il loro orientamento robustamente:

Se il tuo obiettivo principale non è quello di imparare, ma per far funzionare l'applicazione, ti suggerisco di utilizzare uno di questi. Per un principiante non è un compito banale rilevare in modo affidabile la posizione e l'orientamento di un indicatore casuale in un'immagine.

D'altra parte, se siete virile interessati ad imparare, vorrei anche direttamente a ARToolKit e its publications (and their references) che spiegano come implementare robusto rilevamento marcatore.

1

Un modo rigoroso per determinare l'orientamento di un immaginata acquisite in geometria proiettiva (la maggior parte delle telecamere) utilizza i punti di fuga e linee di fuga. Buone notizie per te: il tuo marker può essere usato per trovare queste informazioni!Altre buone notizie, l'immagine può essere rettificata, quindi le colonne di immagine (l'asse y) corrisponderanno alla direzione su-giù. Troverai ulteriori informazioni su questo argomento nel capitolo 8 del libro di Hartley e Zisserman, Multiple View Geometry in Computer Vision.

Ricordare anche che probabilmente sarà necessario lavorare sul problema di distorsione radiale , la distorsione causata dall'obiettivo della fotocamera. Gli altri ragazzi hanno ragione riguardo al problema di rilevamento della freccia: devi usare il rilevamento del fronte e, successivamente, il modello Trasformato Hough o corrispondente allo. Fare riferimento al libro di Gonzalez e Woods Digital Image Processing per i dettagli.