UNIVERSITA’ DEGLI STUDI DI CAGLIARI FACOLTA’ DI INGEGNERIA E ARCHITETTURA Dipartimento di Ingegneria Meccanica, Chimica e dei Materiali Corso di Laurea Magistrale in Ingegneria Meccanica A.A. 2013-2014 ESERCITAZIONE 3 Metodi Ottici A cura di: Goddi Veronica 46621 Cadau Nora 46891 Monni Giovanni 46619 Garau Giacomo 46713 Curreli Raimondo 46627 Cera Danilo 46856 Peddis Mario 47147 Melis Giuseppe 45583 Perra Fabio Porru Fabio 46611 Orrù Giuseppe 0 Indice 1. Introduzione ....................................................................................... 2 2. Analisi del metodo .............................................................................. 3 3. Esperienza in laboratorio .................................................................... 6 4. Impiego del software matlab ............................................................... 9 5. Script matlab .................................................................................... 11 1 1. Introduzione Il rilievo di forma è l’obiettivo base dell’esercitazione che verrà di seguito descritta e costituisce, senza dubbio, uno degli argomenti di maggior interesse nel campo dell’ingegneria industriale. Ciò accade perché esistono numerose applicazioni nel campo della Reverse Engineering, quella branca dell’ingegneria che analizza in maniera dettagliata l’oggetto al fine di costruirne uno nuovo che abbia caratteristiche simili al precedente ma, per esempio, maggiore efficienza. Le forme vengono restituite in formato digitale. Tale tecnica è utilizzata anche in ambiti differenti da quello ingngeristico, ad esempio per la creazione di modelli da inserire in ambienti realizzati attraverso la realtà virtuale o per la ricostruzione e il restauro di opere appartenenti al campo dei beni culturali. In campo ingegneristico la tecnica trova il più frequente impiego per il rilievo di forme in 3D e, nella meccanica sperimentale, per il rilievo delle deformazioni. Il metodo è meglio noto come proiezione di frange con phase shifting (o scorrimento a variazione di fase). 2 2. Analisi del metodo Il metodo proiezione di frange rientra in quella categoria di procedure 3D che si avvalgono della tecnica di scorrimento a variazione di fase comunemente denominata phase shifting. Come anticipato il metodo consente la ricostruzione della forma di un oggetto; per far ciò è necessario acquisire l’informazione da elaborare attraverso una serie di passi descritti di seguito. 1) Proiezione di k pattern a frange del tipo mostrato in Figura 1. Le frange non sono altro che bande verticali, di colore alternativamente nero e bianco, tutte di egual periodo; queste vengono però “shiftate” di un periodo pari a 2π/k ad ogni proiezione k-esima, variando l’angolo di fase in modo che si abbia l’illusione di un loro scorrimento sulla superficie sulla quale avviene la proiezione. Tipicamente lo shift utilizzato è pari a un quarto del periodo totale 2π (cioè π/2) e quindi i pattern sono quattro. Il profilo d’intensità delle frange utilizzate è di tipo rettangolare. Nella figura esemplificativa si riportano frange con periodo molto ampio per chiarezza di rappresentazione. Per l’esercitazione, al contrario, è stato utilizzato un periodo spaziale inferiore. 3 Figura 1. Esempio di proiezione dei quattro pattern 2) Acquisizione delle immagini con la fotocamera. Ciascuno dei quattro pattern viene proiettato in sequenza dapprima sullo schermo e in seguito, con la medesima sequenza, sull’oggeto. Si acquisiscono quindi con una fotocamera le k immagini prospettate. Il profilo d’intensità utilizzato è di tipo rettangolare. La fotocamera raccoglie in corrispondenza di ciascuno shift (k= 0, 1, 2, 3) un pattern di intensità Ik. Tale pattern non è altro che un’immagine che, nella fase di acquisizione mediante il software, si presenta come una matrice della quale ciascun elemento rappresenta un determinato pixel. Proiezione pattern Acquisizione con fotocamera Visualizza zione su schermo 4 3) Elaborazione dei pattern. I pattern di intensità Ik vengono elaborati per mezzo della seguente relazione: ๐ท = ๐๐๐๐ก๐ ๐ผ4 − ๐ผ2 ๐ผ1 − ๐ผ3 Il termine Φ rappresenta la mappa di fase. Tale fase, tuttavia, risulta essere una fase frazionaria; questo inconveniente è dovuto alla discontinuità della funzione arcotangente. Si passa quindi dalla fase frazionaria alla fase totale, mediante il procedimento denominato unwrapping (identificazione), basato sull’eliminazione delle discontinuità di cui sopra, proprie della fase frazionaria. 5 3. Esperienza in laboratorio L’esperienza condotta in laboratorio si prefissava come obiettivo la ricostruzione della forma di una scatola. Tale ricostruzione può anche intendersi come la rilevazione di una deformazione avente la morfologia dell’oggetto in esame. Per la realizzazione dell’esperimento sono stati utilizzati una fotocamera per l’acquisizione delle immagini, un PC ed un proiettore interconnessi per la proiezione delle frange sull’oggetto e sul piano di riferimento. Per poter ottenere un’immagine dell’oggetto con frange sovrapposte, è stato necessario proiettare i fasci piani e paralleli di luce rispetto ad una certa direzione, differente da quella di acquisizione mediante fotocamera. Per meglio dire i due angoli di proiezione e acquisizione, rispetto al piano assunto come riferimento, risultano differenti. Se l’oggetto è piano le frange continuano ad essere rettilinee ed equidistanti; in caso contrario risultano distorte e il loro scostamento dalla linearità dipende dalla forma dell’oggetto. Una misura di tale scostamento rispetto andamento rettilineo delle frange (che è quello che si visualizza nella fase di proiezione dei pattern sul piano) fornisce, quindi, una misura della forma dell’oggetto in esame. Infatti, il periodo delle frange sull’oggetto è modificato rispetto al periodo delle frange sul piano. Sono state acquisite in totale otto immagini, quattro per il piano e quattro per l’oggetto in esame; ognuna delle quattro immagini 6 riporta la proiezione dei quattro pattern, sfasati progressivamente di 90° come descritto precedentemente. Figura 4. Immagini del piano Figura 5. Immagini dell’oggetto Terminata l’acquisizione e noti i parametri geometrici della proiezione e dell’osservazione, è possibile dedurre l’altezza relativa 7 di ogni punto sulla superficie di misura che, nel caso specifico, è costituita dal piano di riferimento. La superficie della forma si ricava dal modello di frange osservate, dove l’incremento di altezza โh è espresso da: โ๐ โโ = ๐ก๐๐ ๐ผ Dove โ๐ è la differenza tra fase delle frange sul piano di riferimento e fase delle frange proiettate sull’oggetto, e α è l’angolo compreso tra la direzione della fotocamera e la direzione di propagazione fascio luminoso (o direzione di proiezione). La disposizione degli strumenti seguiva una configurazione a triangolo rettangolo nella quale l’angolo retto risultava essere quello dello spigolo coincidente con la fotocamera. Si riporta una schematizzazione in Figura 3. Figura 3. Layout operativo 8 4. Impiego del software Matlab Una volta terminate la fase di proiezione dei pattern a frange e l’acquisizione dei fotogrammi relativi alle diverse configurazioni, si procede all’acquisizione di questi ultimi mediante un programma di calcolo. Questo passaggio è necessario per determinare la fase delle frange sul piano di riferimento e quella delle frange proiettate sull’oggetto mediante la funzione atan2 (presente nella libreria Matlab) e ricavare la mappa di fase. Nel caso specifico il tutto è stato implementato in ambiente Matlab. Il primo passo per poter trattare le immagini col software consta di due fasi: 1. la conversione di tutte le immagini (quattro relative allo sfondo e altrettante relative alla scatola oggetto di misura) acquisite a colori in immagini monocromatiche. Questa è una fase indispensabile perché l’acquisizione delle immagini a colori su Matlab si tradurrebbe in una matrice di dimensioni note M ed N su 3 dimensioni anziché una che risulta difficile da gestire; 2. il taglio di tutte le immagini in maniera che queste continuino ad essere sovrapponibili, ovvero assicurandosi che in ciascuna foto vengano rimosse le stesse righe e colonne di pixel. A tal punto si è passati dalle immagini di dimensioni MxN a colori alle analoghe monocromatiche ma di dimensioni ridotte. Si è quindi andati a leggere il file contenente l’immagine con Matlab per mezzo del comando: 9 >> I = imread('nomedelfile’); Gli elementi della matrice ottenuta sono numeri interi (tipo uint8), cioè assumono valori da 0 a 255. Note le matrici associate sarebbe sufficiente utilizzare la funzione atan2 e ricavare la mappa di fase per lo sfondo e per la scatola per mezzo del comando: >>phi_sfondo = atan2(matrice4-matrice2,matrice1-matrice3); tuttavia tale funzione non lavora con numeri interi (tipo uint8) ma ha bisogno di numeri in virgola mobile (tipo float), perciò è necessario convertire ciascuna matrice di interi in matrice di float per mezzo del comando: >>f1 = im2double(nomematrice); 10 5. Script Matlab %-----------------------------------------------------------------------%------ESERCITAZIONE 3- PROIEZIONE DI FRANGE CON PHASE SHIFT -----%-----------------------------------------------------------------------%-----------------------------------------------------------------------% Script Matlab per il calcolo di phi (angolo del PhaseShift) % Autori: Nora Cadau, Veronica Goddi, Giovanni Monni, Mario Peddis, Fabio % Porru, Giuseppe Melis % Anno accademico: 2013/2014 %-----------------------------------------------------------------------clearall% cancella tutte le variabili del Workspace closeall% chiude tutte le finestre di plot clc% pulisce la commadwindow %-----------------------------------------------------------------------%---------DETERMINAZIONE DELLA FASE FRAZIONARIA phi -----------% Foto dello sfondo Sf_1 = imread('Im1BW.png'); % lettura della prima foto dello sfondo Sf_2 = imread('Im2BW.png'); % lettura della seconda foto dello sfondo Sf_3 = imread('Im3BW.png'); % lettura della terza foto dello sfondo Sf_4 = imread('Im4BW.png'); % lettura della quarta foto dello sfondo % Foto della scatola Sc_1 = imread('Scatola1BW.png'); Sc_2 = imread('Scatola2BW.png'); scatola Sc_3 = imread('Scatola3BW.png'); Sc_4 = imread('Scatola4BW.png'); scatola % lettura della prima foto della scatola % lettura della seconda foto della % lettura della terza foto della scatola % lettura della quarta foto della % Sfondo - Passaggio a numeri in virgola mobile per poter calcolare phi % con "atan2" f1 = im2double(Sf_1); f2 = im2double(Sf_2); f3 = im2double(Sf_3); f4 = im2double(Sf_4); % Scatola - Passaggio a numeri in virgola mobile per poter calcolare phi % con "atan2" f1_1 = im2double(Sc_1); f2_2 = im2double(Sc_2); f3_3 = im2double(Sc_3); f4_4 = im2double(Sc_4); % Calcolo di phi per lo sfondo phi_sfondo = atan2(f4-f2,f1-f3); % Calcolo di phi per la scatola phi_scatola = atan2(f4_4-f2_2,f1_1-f3_3); % Plottaggio di phi dello sfondo plot (phi_sfondo); % Plottaggio di phi della scatola plot (phi_scatola); % Salvataggio di phi dello sfondo nella cartella PippoBaldi 11 save('C:\Users\Admin\Desktop\PippoBaldi\phisfondoOK.dat','phi_sfondo','ascii','-tabs'); % Salvataggio di phi della scatola nella cartella PippoBaldi save('C:\Users\Admin\Desktop\PippoBaldi\phiscatolaOK.dat','phi_sfondo','ascii','-tabs'); 12 6. Conclusioni Giunti a questo punto del lavoro è necessario ottenere la fase cumulativa (unwrapping). tramite Questo il processo procedimento detto di identificazione prevede un’elaborazione mediante dei software disponibili sul sistema operativo Linux, ma la complessità dei calcoli non ha permesso il raggiungimento dei risultati previsti. 13