• Non ci sono risultati.

4.2 Modulo per la visualizzazione dei modelli virtuali

4.2.2 Integrazione con XVR

Affinch`e XVR possa effettuare il tracking in un ambiente multi-markers `e stato necessario implementare una DLL ed integrarla nel framework. Anche in questo caso viene utilizzata la libreria ARToolkitPlus per effettuare il marker detection e pose estimation.

Le funzioni esportate dalla DLL sono:

• extern C declspec(dllexport)void artkplus init(char* file name,

char* markerboard): funzione che inizializza l’ambiente ARToolkit- Plus per effettuare il tracking mult-markers ed avvia la videocamera.

• extern C declspec(dllexport) void opengl mem init(): funzio- ne che alloca i buffers per contenere sia l’immagine catturata tramite la videocamera che la texture.

• extern C declspec(dllexport) int artkplus grab draw(): fun-

zione che visualizza, nella finestra con contesto OpenGL, l’immagine catturata con la videocamera mediante texture, esegue l’algoritmo di marker detection e pose estimation ed infine imposta la matrice di pro- iezione prospettica. Se i markers che formano il marker field sono posi- zionati tutti sul medesimo piano `e possibile utilizzare, come algoritmo di pose estimation, lo RPP (Robust Planar Pose algorithm), altrimenti viene utilizzato l’algoritmo di default previsto da ARToolkit.

• extern C declspec(dllexport) void artkplus set modelview matrix():

funzione che imposta la matrice di trasformazione ottenuta mediante l’algoritmo di pose estimation.

• extern C declspec(dllexport) void close camera(): dealloca le

Capitolo 5

Test e Analisi della creazione

del Markerfield

In questo capitolo si analizza l’accuratezza con cui viene creato il mar- ker field mediante l’algoritmo proposto precedentemente, in varie condizioni operative.

La posizione dei markers all’interno del marker field, ottenuta attraverso la calibrazione automatica, ovviamente differisce dalla posizione reale sia a causa dell’algoritmo stesso che calcola il marker field sia a causa dell’algorit- mo di marker detection (dovuto alla threshold utilizzata, alla non corretta estrazione dei contorni del marker, agli errori di approssimazione nel calcolo delle matrici).

Per ogni marker presente nel marker field calcoliamo la distanza geome- trica (considerando le componenti x,y e z) tra il marker nel marker field reale e lo stesso marker prodotto automaticamente (Figura 5.1 nella pagina suc- cessiva) dopodich´e, considerando la totalit`a dei markers presenti nel marker

field, calcoliamo la distanza geometrica media: PN i=1 p (Xi R− XAi)2+ (YRi − YAi)2+ (ZRi − ZAi)2 N

dove N rappresenta il numero di markers mentre i pedici R ed A indica- no rispettivamente la posizione reale e quella ricavata automaticamente del marker all’interno del marker field rispetto al base marker.

Figura 5.1: Distanza gemetrica tra il marker nel marker field reale e lo stesso marker nel marker field prodotto automaticamente nel caso a due dimensioni La distanza pu`o essere assunta come l’errore con cui `e stato prodotto il marker field: pi`u l’errore ottenuto `e basso e pi`u la posizione dei markers all’interno del marker field ottenuto automaticamente si avvicina a quella reale.

I test sono stati eseguiti registrando un file video dell’ambiente di lavoro: l’utente si sposta all’interno del marker field inquadrando coppie di markers sufficienti affinch´e possa essere trovato un percorso tra il base marker ed ogni marker (vedere capitolo 3 per l’esatto funzionamento dell’algoritmo). Successivamente, variando opportuni parametri (ambientali o dell’algoritmo stesso), `e possibile confrontare i markers fields prodotti a partire dallo stesso video.

CAPITOLO 5. TEST E ANALISI DELLA CREAZIONE DEL MARKERFIELD87

Considerata la molteplicit`a delle configurazioni in cui pu`o essere prodot- to un marker field, i test effettuati si limitano ad un sottoinsieme selezio- nato, cercando di mettere in evidenza le condizioni ottimali in cui eseguire l’algoritmo di creazione automatica.

Alcuni dei parametri di cui possiamo tenere conto nella creazione del marker field sono:

• Illuminazione: all’interno del marker field, l’illuminazione pu`o essere

naturale o artificiale.

• Video a full resolution o half resolution: il video registrato pu`o essere

analizzato alla risoluzione con cui `e stato acquisito dalla webcam oppure a met`a risoluzione.

• Distanza: l’utente che si sposta all’interno del marker field pu`o inqua-

drare coppie di markers a differenti distanze.

• Costo: quando viene inividuata una coppia di markers, il costo as-

sociato al cammino che li connette pu`o essere opportunamente scelto considerando diversi fattori.

5.1

Test 1

Il primo test `e stato effettuato in un ambiente illuminato uniformemente (non sono presenti evidenti zone d’ombra) con luce artificiale con 10 markers di dimensione 120 millimetri che costituiscono il marker field.

Il video `e stato registrato con una webcam ad una risoluzione di 640x480 pixels, inquadrando due markers per volta ad una distanza di circa 1 metro da essi. Gli screenshots estratti dal file video, che mostrano le coppie di markers considerate per produrre il marker field, sono mostrati in figura 5.2 nella pagina seguente

Il video registrato, viene quindi analizzato da ARToolkitPlus per effet- tuare il marker detection e la pose estimation.

Figura 5.2: Screenshots delle coppie di markers considerate nell’ambiente di riferimento

La scelta del base marker pu`o essere arbitraria e fornita come input all’al- goritmo ma una buona scelta `e quella di prendere un marker che sia posizio- nato nella parte centrale del marker field: in questo modo il percorso dal base marker agli altri markers non diventa troppo lungo. Inoltre, come metrica di costo, `e stato scelto un valore unitario: quando viene eseguito l’algoritmo di Dijkstra, il percorso tra il base marker ed ogni marker `e quello con il minore numero di markers. In questo test, considerare come costo di un collegamen- to tra una coppia di markers un valore unitario o un qualsiasi altro valore `e indifferente, poich´e esiste un cammino minimo univoco che collega il base marker a tutti gli altri markers.

Come descritto nel paragrafo 3.2.3 ogni marker pu`o essere rappresentato come un nodo e quando l’algoritmo di marker detection individua nel frame

CAPITOLO 5. TEST E ANALISI DELLA CREAZIONE DEL MARKERFIELD89

video una coppia di markers, questi vengono connessi da un arco a cui `e associato il relativo costo (o peso): il grafo che rappresenta le relazioni tra i markers nello scenario in questione `e rappresentato nella figura 5.3.

Figura 5.3: Grafo che rappresenta le relazioni tra i markers (1 metro) Dopo l’esecuzione dell’algoritmo di Dijkstra otteniamo la rappresentazio- ne ad albero del marker field di figura 5.4

Figura 5.4: Albero ottenuto dopo l’applicazione di Dijkstra al grafo di figura 5.3

Un altro parametro, intrinseco all’algoritmo di costruzione del marker field, che deve essere considerato `e il valore da assegnare al filtro dell’algo-

ritmo, al fine di eliminare le matrici le cui componenti distano di una certa quantit`a dalla media calcolata1.

In un primo momento sono stati registrati venti video nelle condizioni precedentemente descritte, inquadrando le stesse coppie di markers in ogni video. Successivamente, per ogni video registrato, `e stato passato al filtro dell’algoritmo di creazione automatica un valore di 5, 10, 15, 20, 30, 40 e 50 millimetri (cio`e vengono eliminate le matrici le cui componenti x o y o

z distano di una quantit`a maggiore di 5, 10,..., 50 mm) per produrre il

marker field ed `e stata calcolata la distanza media2 di un marker presente

nel marker field prodotto automaticamente rispetto al medesimo marker nel marker field reale, per ogni valore passato al filtro. Infine, ne `e stata calcolata una media considerando il numero di video registrati (Figura 5.5)

0 5 10 15 20 25 30 35 40 5mm 10mm 20mm 30mm 40mm 50mm errore medio [mm] parametri filtro [mm]

Figura 5.5: Distanza media di un marker considerato nel marker field reale rispetto a quello automatico variando i parametri del filtro.

1vedere funzione apply filter pagina 77 2vedere pagina 87

CAPITOLO 5. TEST E ANALISI DELLA CREAZIONE DEL MARKERFIELD91

Osservando il grafico possiamo notare che, anche utilizzando un valore di 50 mm, la distanza media di un marker nel marker field reale rispetto al medesimo marker nel marker field prodotto automaticamente, non varia molto rispetto all’utilizzare un valore di 5 mm.

Un vantaggio nell’utilizzare un valore di 50 mm `e che il filtro non elimi- na un significativo numero di matrici di trasformazione, permettendo cos`ı di ottenere un marker field anche nel caso in cui le coppie di markers siano individuate un basso numero di volte. E’stato osservato infatti che, inqua- drando poche volte una coppia di markers ' 10 ed utilizzando, nel filtro, valori inferiori a 50 mm, spesso il marker field non veniva prodotto.

Un utilizzatore non esperto, che impiega l’algoritmo per scopi personali e non attento al numero di volte che inquadra una coppia, pu`o ottenere un marker field abbastanza accurato anche con poche matrici di trasformazioni acquisite.

I prossimi test sono stati eseguiti utilizzando implicitamente questo valore per il filtro.

Con i video registrati nello scenario descritto precedentemente, conside- rando le coppie di figura 5.2 nella pagina 88, `e stato fatto un confronto tra i markers fields prodotti inquadrando un numero variabile di volte una stessa coppia: dapprima sono stati considerati tutti i frame del video registrato, avendo in media 250 frame in cui `e presente la stessa coppia di markers per poi considerare, successivamente, un frame ogni 2, 4, 8 ed infine 16 (ovvero ogni volta viene dimezzato il numero totale di frame considerati), dove la media in cui compare la stessa coppia scende a 15 frame. Su queste matrici viene poi applicato il filtro come descritto dalla funzione apply filter3

Per produrre il marker field in prima istanza sono stati considerati tutti i frame del video registrato, avendo in media 250 frame in cui `e presente la medesima coppia di markers (e quindi vengono memorizzate 250 matrici di trasformazione che rappresentano la relazione di un marker rispetto all’altro della stessa coppia) per poi considerare, successivamente, un frame ogni 2, 4, 8 ed infine 16 in cui la media in cui compare la stessa coppia scende a

15 frame. Su queste matrici viene poi applicato il filtro come descritto dalla funzione apply filter.

La figura 5.6 mostra l’errore ottenuto facendo una media dell’errore otte- nuto dai 20 video registrati.

0 10 20 30 40 50 60 tutti 1/2 1/4 1/8 1/16 errore medio [mm] frames analizzati 640x480 pixels

Figura 5.6: Errore medio ottenuto considerando tutti i frame, 1 frame ogni 2, 1 frame ogni 4, 1 frame ogni 8 ed 1 frame ogni 16.

Possiamo notare che l’errore aumenta al diminuire dei frames analizzati. Considerando un alto numero di frames, vengono memorizzate molte matrici di trasformazioni relative tra una coppia di markers: il filtro, calcolando la media sulle componenti x, y e z delle matrici memorizzate, restituisce la posizione relativa di un marker rispetto all’altro marker della coppia che si avvicina alla posizione reale, poich´e, con un elevato numero di matrici di trasformazione, gli errori dovuti al calcolo di pose estimation, all’estrazione dei contorni, agli errori di arrotondamento nei calcoli ed all’applicazione della threshold, vengono attutiti.

CAPITOLO 5. TEST E ANALISI DELLA CREAZIONE DEL MARKERFIELD93 0 10 20 30 40 50 60 70 tutti 1/2 1/4 1/8 1/16 errore medio [mm] frames analizzati 320x240 Resolution Failed 640x480 pixels 320x240 pixels

Figura 5.7: Confronto tra l’errore medio ottenuto considerando il video ad una risoluzione di 640x480 pixels e 320x240 pixels

Un altro parametro che `e stato preso in considerazione `e la risoluzione video: nel prossimo test la risoluzione dei video registrati `e stata posta a 320x240 pixels, la met`a dell’originale, e nella figura 5.7 viene mostrato un confronto tra l’errore ottenuto nella creazione del marker field prodotto a piena risoluzione con quello prodotto a met`a risoluzione considerando tutti i frames del video.

Come precedentemente effettuato, viene fatta una media dell’errore sul numero di video registrati, ovvero cinquanta.

L’errore ottenuto considerando una risoluzione di 320x240 pixels `e con- siderevolmente pi`u elevato rispetto al caso di 640x480 pixels: l’estrazione dei contorni dei markers avviene con meno precisione con la conseguenza di ottenere una pose estimation non accurata.

Inoltre, per un basso numero di frames considerati, in molti casi il marker field non viene prodotto poich´e, per qualche coppia di markers, non viene

ottenuta nessuna matrice di trasformazione valida.

Un vantaggio nell’uso di basse risoluzioni `e un incremento della velocit`a con cui viene analizzata l’immagine, fattore che pu`o essere utile se l’algoritmo viene utilizzato su dispositivi con basse capacit`a di calcolo, come i dispositivi portatili. E’ evidente per`o che, se utilizzato in queste condizioni, per ottenere un marker field `e necessario che una stessa coppia di markers sia inquadrata molte volte.

5.2

Test 2

Con la stessa configurazione di markers presentata precedentemente ed inquadrando il marker field ad una distanza di circa due metri dai mar- kers, otteniamo il seguente grafo che mostra le coppie di markers individuate (Figura 5.8).

Figura 5.8: Grafo che rappresenta le relazioni tra i markers (2 metri) Anche in questo caso il base marker `e il marker con ID uguale a 0 ed il costo associato ad ogni arco `e stato posto ad un valore unitario.

Dopo l’applicazione dell’algoritmo di Dijkstra, la rappresentazione ad albero del marker field `e quella di figura 5.9 nella pagina seguente.

CAPITOLO 5. TEST E ANALISI DELLA CREAZIONE DEL MARKERFIELD95

Figura 5.9: Albero ottenuto dopo l’applicazione dell’algoritmo di Dijkstra al grafo di figura 5.8 nella pagina precedente

L’errore medio sul numero di video analizzati `e rappresentato nella figu- ra 5.10 nella pagina successiva dove si pu`o notare che l’errore, rispetto al caso in cui i marker siano inquadrati ad una distanza di circa 1 metro co- me nel test precedente, sia pi`u elevato ed aumenta al diminuire dei frames considerati.

Se l’allineamento di contenuti virtuali tridimensionali (testi o immagini) a determinati oggetti non `e un vincolo stringente, ma `e richiesto solamente di visualizzare delle immagini virtuali all’interno del marker field, allora il marker field prodotto automaticamente pu`o essere accettabile.

Dimezzando la risoluzione del video, il marker field non viene prodotto an- che se vengono analizzati tutti i frames: i markers sono troppo piccoli rispetto alla distanza dalla quale vengono osservati impedendo cos`ı all’algoritmo di marker detection di individuare correttamente dei markers.

Se il costo del collegamento viene definito come la media aritmetica del- l’inverso dei due valori di confidenza con i quali vengono individuati i markers, l’albero ottenuto dopo l’applicazione di Dijkstra `e il medesimo di figura 5.8 nella pagina precedente.

0 10 20 30 40 50 60 70 80 90 tutti 1/2 1/4 1/8 1/16 errore medio [mm] frames analizzati 640x480 pixels

Figura 5.10: Errore ottenuto analizzando un diverso numero di frames ad una distanza di 2 metri dai markers

5.3

Test 3

Aumentando ulteriormente la distanza dalla quale vengono individuati i markers, cio`e a circa 3 metri, nell’ambiente precedentemente descritto, la rappresentazione ad albero del marker field `e quella di figura 5.11 nella pagina successiva ottenuta dopo l’applicazione dell’algoritmo di Dijkstra.

L’errore ottenuto nella creazione del marker field `e mostrato nella figu- ra 5.12 nella pagina seguente.

5.4

Test 4

I prossimi test sono stati eseguiti nello stesso ambiente descritto preceden- temente ma illuminato con luce naturale e quindi sono presenti, all’interno del marker field, delle zone d’ombra.

CAPITOLO 5. TEST E ANALISI DELLA CREAZIONE DEL MARKERFIELD97

Figura 5.11: Albero ottenuto dopo l’applicazione dell’algoritmo di Dijkstra

0 10 20 30 40 50 60 70 80 90 tutti 1/2 1/4 1/8 1/16 errore medio [mm] frames analizzati

640x480 Resolution Failed 640x480 Resolution Failed 640x480 Resolution Failed

640x480 pixels

Figura 5.12: Errore medio ottenuto in un ambiente illuminato artificialmente ad una distanza di circa 3 metri dai markers

Inizialmente sono stati individuate coppie di markers come descritto nel Test 1 ed anche in questo caso, dopo l’esecuzione dell’algoritmo di Dijkstra, otteniamo la rappresentazione ad albero del marker field di figura 5.4 nella pagina 89: in questo caso l’errore medio, sia ad una risoluzione di 640x480 pixels che di 320x240 pixels, `e maggiore rispetto al Test 1. In un ambien- te scarsamente illuminato non si ha un netto contrasto tra il marker e lo sfondo su cui `e posizionato: quando l’algoritmo di marker detection applica la threshold per individuare i markers all’interno dell’immagine acquisita, il contorno individuato pu`o essere qualche pixels in pi`u poich´e, se il marker si trova in una posizione poco illuminata, zone intorno al marker possono essere convertite in pixels neri dalla threshold. Questo porta ad una stima non corretta della pose estimation.

Nella figura 5.13 `e mostrato l’errore medio ottenuto ad una risoluzione di 640x480 pixels e 320x240 pixels 0 10 20 30 40 50 60 70 tutti 1/2 1/4 1/8 1/16 errore medio [mm] frames analizzati

320x240 Resolution Failed 320x240 Resolution Failed 320x240 Resolution Failed

640x480 pixels 320x240 pixels

Figura 5.13: Confronto tra l’errore medio ottenuto considerando il video ad una risoluzione di 640x480 pixels e 320x240 pixels

CAPITOLO 5. TEST E ANALISI DELLA CREAZIONE DEL MARKERFIELD99

5.5

Test 5

In questo test la distanza dalla quale vengono inquadrati i markers `e di circa 2 metri e l’ambiente `e illuminato con luce naturale. La rappresentazione ad albero del marker field, dopo l’esecuzione dell’algoritmo di Dijkstra, `e quella ottenuta nel Test 2 di figura 5.9 nella pagina 95.

Anche in questo caso l’errore medio ottenuto `e maggiore rispetto al caso in cui il marker field era illuminato uniformemente con luce artificiale a causa del motivo descritto precedentemente.

Nella figura 5.14 `e mostrato l’errore medio ottenuto. Ad una risoluzione di 320x240 pixels non `e stato possibile ottenere nessun marker field in quanto il filtro eliminava tutte le matrici di trasformazioni.

0 10 20 30 40 50 60 70 80 90 tutti 1/2 1/4 1/8 1/16 errore medio [mm] frames analizzati

640x480 Resolution Failed 640x480 Resolution Failed 640x480 Resolution Failed

640x480 pixels

Figura 5.14: Errore ottenuto analizzando un diverso numero di frames ad una distanza di 2 metri dai markers senza luce

5.6

Test 6

Aumentando ulteriormente la distanza dalla quale vengono individuati i markers, cio`e a circa 3 metri, nell’ambiente precedentemente descritto, il problema della dimensione dei markers e delle zone di ombra porta alla non creazione del markerfield poich`e alcuni markers non venivano riconosciuti e quindi l’algoritmo di Dijkstra non veniva eseguito.

Documenti correlati