• Non ci sono risultati.

Capitolo V: “Sviluppo del software”

5.1 La procedura di calibrazione della micro-camera

Per eseguire la calibrazione delle microcamere si è usato il Toolbox di Matlab® di Bouget [1] già esistente, che è stato però corredato da una nuova sezione apposita per la calibrazione del proiettore. Nella pratica il processo con cui si ottiene la calibrazione consiste in alcune fasi fondamentali:

 disposizione relativa del sistema di acquisizione e del provino di calibrazione e regolazione dell’ottica del sistema

 variazione della posizione del pannello di calibrazione e acquisizione delle immagini  processamento delle immagini ed estrazione dei punti d’interesse

 calcolo dei parametri di calibrazione  analisi degli errori ed eventuali correzioni

Dato che ottenere una buona calibrazione è di fondamentale importanza per raggiungere risultati soddisfacenti nella ricostruzione tridimensionale, si capisce quanto sia importante la qualità del provino di calibrazione. Nel caso specifico, il campo visivo della microcamera è molto ridotto e non solo. Bisogna ricordare, come già esposto nel capitolo precedente, che la testina intaorale viene posta a circa 1 cm dalla superficie superiore del dente da esaminare. Per questi motivi la griglia di calibrazione usata deve essere proporzionale alla risoluzione della microcamera, difatti un il lato del quadratino è di 2mm (fig. 5.1).

Fig. 5.1: Griglia fisica di calibrazione delle microcamere

Trovata la giusta orientazione relativa tra le varie parti del sistema di acquisizione, si procede al fissaggio delle stesse bloccando le varie guide di scorrimento dello scanner: questa posizione rimarrà fissa per tutta la campagna di acquisizione (fig 5.2).

93

La messa a fuoco del proiettore e delle microcamere deve essere tale che il provino risulti a fuoco nel modo migliore possibile anche nelle posizioni estreme assunte da esso in tutta la procedura di calibrazione. A questo punto si posiziona il pannello di calibrazione ricontrollando se la messa a fuoco sia ancora ottimale. In letteratura sono molti gli studi rivolti ad ottimizzare il processo di calibrazione. Lo studio guida risulta essere quello di Tsai che nel lavoro “A versatile camera calibration technique for high-accuracy 3D machine vision metrology using off-the-shelf tv cameras and lenses” [2], mostra come il numero di immagini da acquisire deve essere almeno 12, per ottenere una migliore accuratezza nel risultato. Inoltre è di fondamentale importanza il posizionamento della scacchiera nelle varie immagini da registrare. Sempre continuando a leggere l’articolo di Tsai e non solo [3,4,5,6,7], la procedura da eseguire è quella di cambiare sempre l’orientazione della scacchiera. Questo risulta molto semplice in un ambiente abbastanza grande, ma in questo caso dove lo spazio è ridotto a pochi centimetri, riuscire ad ottenere molti cambiamenti di orientazione risulta molto difficile.

Il processo di acquisizione delle immagini è formato principalmente da due step: 1. Acquisizione delle immagini della griglia non proiettata

2. Acquisizione delle immagini della griglia proiettata dal proiettore

Le acquisizioni relative ai due punti sopracitati, si distinguono per le griglie usate: per le immagini relative alle microcamere si usa la griglia vista prima (fig.5.1), per quelle del proiettore si usa una griglia diversa e proiettata sullo stesso piano di riferimento (fig.5.3).

Fig 5.3: Griglia proiettata “CheckerBoad”

Si procede dunque con l’acquisizione delle immagini. Per semplicità si è costruito in ambiente Matlab un semplice algoritmo per registrare, in modo semi automatico, le immagini relative alle microcamere e al proiettore. Come si può notare dalla fig. 5.4 e 5.5 , l’interfaccia creata riesce a registrare una coppia di immagini: la prima è quella del proiettore la seconda è quella delle microcamere. In particolare, il sistema ogni volta registrerà 4 immagini relative alle 4 microcamere (fig. 5.4) e 4 immagini relative al proiettore (fig.5.5). La procedura implica che quando si registra l’immagine relativa alla camera, si deve registrare l’immagine

proiettata dal proiettore, questo avviene ponendo sulla griglia di calibrazione fisica, un foglio per poter registrare in modo nitido la griglia proiettata.

Fig. 5.4: Interfaccia per la registrazione delle immagini: in particolare acquisizione della prima immagine

relativa alla microcamera 1

Fig. 5.5: Interfaccia per la registrazione delle immagini: in particolare acquisizione della prima immagine

95

Dopo aver eseguito le 12 acquisizioni si passa alla parte iterativa della procedura: la prima cosa che si fa è la calibrazione delle microcamere. Per fare questo si lancia in Matlab il comando calib_gui.m che permette di accedere a tutte le funzioni del Toolbox (fig.5.6).

Fig. 5.6: Finestra di dialogo del Calib_gui.m di Matlab

Per procedere con la calibrazione, si deve decidere con quale microcamera iniziare, per semplicità si è iniziato con la numero 1 (fig. 5.7).

Fig. 5.7: Schermata per la visualizzazione delle 12 immagini relative alla microcamera 1 registrate dal

programma

Il programma richiede all’utente di immettere il valore della lunghezza dei lati delle caselle della scacchiera (per avere un riferimento sulle dimensioni) e di selezionare in senso orario (fig.5.8) mediante il puntatore per ogni immagine acquisita, i 4 vertici di un rettangolo costituito da un certo numero di caselle.

Fig. 5.8: Acquisizione dei quattro vertici della scacchiera

Avendo come riferimento questi 4 vertici, il programma riesce a contare il numero di quadrati contenuti nel rettangolo selezionato e calcola le posizioni che avrebbero tutti i vertici dei quadrati della scacchiera se non ci fosse la distorsione della lente (vedi cap. II) visualizza nello schermo delle crocette, l’indicazione di queste posizioni teoriche sovrapponendole a quelle reali (fig. 5.9).

97 Fig. 5.9 : Indicazione delle posizioni teoriche dei vari vertici dei quadratini

Se tali punti fossero in qualche immagine non abbastanza vicini a quelli reali, l’utente può immettere un valore iniziale della distorsione radiale e ripetere la procedura appena descritta. Tale valore può essere corretto finchè non si ottiene una corrispondenza soddisfacente. Eseguita quest’operazione per tutte le immagini, il programma esegue una prima provvisoria calibrazione senza considerare la distorsione: i risultati ottenuti in questa fase preliminare verranno utilizzati nella fase successiva che permette di ricavare tutti i parametri estrinseci ed intrinseci grazie al processo di ottimizzazione non lineare che tende a minimizzare gli errori di riproiezione (fig. 5.10).

Fig.5.10: Visualizzazione dell’Errore di Riproiezione. Ogni immagine acquisita è caratterizzata da un

colore diverso, ciò permette di avere visivamente una stima dell’errore relativo alle singole immagini. Nel caso di figura si notano un certo numero di punti neri e viola abbastanza lontani rispetto alla

nuvola centrale, in questo caso sarebbe opportuno effettuare una riestrazione delle immagini associate.

Il toolbox propone come risultato i valori calcolati della distanza focale, la posizione del punto principale e i parametri della distorsione. Inoltre consente di visualizzare gli errori di riproiezione consentendo di capire quali sono le immagini per cui ci possono essere ancora problemi. Nel caso rimanessero dei problemi è possibile escludere dal calcolo dei parametri le immagini in cui persistono errori rilevanti.

Il toolbox di Bouget di Matlab consente di visualizzare le varie posizioni relative assunte dal provino rispetto alla telecamera nella procedura di calibrazione (fig. 5.11) ; anche la distorsione della telecamera è visualizzabile in un grafico e volendo è possibile separare il contributo della distorsione tangenziale da quello radiale.

99 Fig. 5.11: Posizione dei piani rispetto al riferimento della microcamera

Per ogni calibrazione eseguita sono state fatte sempre tutte le operazioni possibili fino ad ottenere i minimi errori di ripetizione ottenibili dalle immagini e disposizione.

Una volta ottenuti dei risultati soddisfacenti, si può considerare conclusa la procedura di calibrazione della microcamera 1. I risultati vengono memorizzati in un file “Result_calib.m” che sarà utilizzato per la calibrazione dell’intero sistema di scansione. Ottenuta la calibrazione di questa microcamera, con un procedimento analogo, si calibrano anche le altre 3 microcamere.

5.2 La procedura di calibrazione del proiettore

Il programma di calibrazione del proiettore è simile a quello fatto in precedenza [8,9,10,11,12,13], ma non si esegue il calib_gui ma un altro algoritmo che, leggendo le immagini acquisite in precedenza, riesce, col procedimento dei riconoscimento dei corner, ad elaborare le immagini proiettate. Questo perché, il proiettore viene modellato come una telecamera inversa (Capitolo III paragrafo 3.6) quindi si necessita di un altro algoritmo che effettua la calibrazione del proiettore come una camera inversa. L’interfaccia grafica del suddetto algoritmo è molto semplice (fig. 5.12). Per avviare la procedura basta eseguire il GuiMakeProjectorData.m .

Fig. 5.12: Interfaccia dell’algoritmo GuiMakeProjectorData.m

Dalla figura si può notare come tutto il processo di riconoscimento dei corner viene gestito da una serie di step:

1. Richiamare la giusta directory dove sono state salvate le immagini acquisite

2. Cliccare sul primo file per far apparire nel box grande (segnato in rosso) la griglia da analizzare (fig. 5.13)

Fig.5.13: Analisi delle due griglie: quella a sinistra è la proiettata, quella di destra è quella di riferimento

3. Richiamare la giusta directory dove è stata salvata la griglia di riferimento definita “CheckBoard”

101

4. Col puntatore, in senso orario, si evidenziano i corner della griglia per formare un rettangolo (fig. 5.14)

Fig. 5.14: Descrizione dei corner delle 2 griglie

5. La stessa operazione viene effettuata sulla griglia di riferimento, mostrando attenzione ad operare anche qui in senso orario (fig. 5.14). questo procedimento è necessario per identificare le coordinate 3D dei punti selezionati e riportarle in riferimento camera in coordinate pixel.

6. I file eseguiti sono mostrati nella colonna sulla sinistra (fig. 5.15)

Fig. 5.15: Descrizione dei file salvati

Ad operazione terminata, il programma salva i dati ottenuti in un file denominato projector_data.m. Questa procedura viene effettuata per altre tre volte per quante sono le microcamere. Alla fine si ottengono 4 file di dati che andranno accoppiati ai 4 file di calibrazione delle microcamere.

5.3 Calibrazione dell’intero sistema ottico

Dopo aver calibrato in modo distinto gli elementi dello scanner ottico, bisogna unire i dati ottenuti per avviare la procedura di calibrazione dell’intero sistema. Per far ciò si esegue lo ScannerCalibration.m, che, basato sullo scanner_calibration_script.m di Bouget, aggiunge un minimo di controllo di compatibilità tra i dati di calibrazione camera e proiettore. L’algoritmo salva la posizione del primo piano per valutare la posizione relativa tra proiettore e telecamera (fig.5.16).

Fig.5.16: Analisi del primo piano acquisito dalla telecamera per valutare la posizione relativa tra proiettore e

telecamera

Successivamente calcola la posizione 3D di tutti i punti selezionati durante le fase di calibrazione del proiettore (fig.5.17) per ottenere il modello di distorsione del primo ordine con i relativi errori di riproiezione. Avviata la procedura si ottengono, con un processo iterativo di ottimizzazione dei dati, i dati relativi alla calibrazione dell’intero sistema (fig. 5.18,5.19).

103 Fig. 5.17: Andamento della calibrazione del proiettore in riferimento di una microcamera

Fig. 5.18: Posizione dei piani di calibrazione rispetto al sistema assoluto proiettore-camera

Fig.5.19: Posizione relativa tra camera e proiettore

Documenti correlati