COP FE 331:fe
Transcript
COP FE 331:fe
robot zone ➲ robot zone di WALTER LUCETTI ([email protected]) VISIONE ARTIFICIALE parte sesta LA TEORIA DEI SENSORI e delle telecamere In questo articolo sulla visione artificiale abbandoneremo momentaneamente le applicazioni pratiche della libreria OpenCV per illustrare la teoria dei sensori visivi. Le nozioni introdotte in questo articolo saranno fondamentali per posizionare la telecamera e quindi il robot che la utilizza nel mondo reale, passando dal sistema di riferimento in pixel al sistema di riferimento in coordinate reali e viceversa. N ei precedenti articoli abbiamo visto alcune applicazioni pratiche dell’utilizzo della visione artificiale per identificare oggetti nel mondo reale e seguirne i movimenti, ma non abbiamo mai accennato alla loro posizione in “coordinate mondo”. Per poter eseguire questo passaggio è necessario conoscere alcune caratteristiche del sensore visivo utilizzato e dell’ottica montata su di esso, il sensore deve essere dunque modellato e di seguito vedremo il modello più semplice per caratterizzare una telecamera: il modello “pin-hole”. IL SENSORE MODELLO “PIN-HOLE” Questo modello è illustrato semplicemente in figura 1. La traduzione letterale di pin-hole è “punta di spillo”, ogni raggio proveniente dal mondo reale, prima di colpire il sensore della telecamera, passa per un punto unico delle dimensioni infinitesimali di una punta di spillo. Tale punto è detto “centro di proiezione” (CP). Le telecamere moderne, per ricreare l’immagine digitale acquisita, utilizzano un sensore discreto basato su tecnologia CCD o CMOS, composto da una matrice di NxM elementi fotosensibili dove ogni elemento fotosensibile corrisponde a un pixel dell’immagine risultato dell’acquisizione. Un punto reale di coordinate (x,y,z) viene dunque “proiettato” sul piano di acquisi104 zione del sensore con le coordinate (u,v), dove “u” è la coordinata orizzontale, “v” la coordinata verticale e il centro del sistema di riferimento. Come abbiamo visto nei precedenti articoli, il punto di coordinata (0,0) è in alto a sinistra nell’immagine, con l’asse verticale rivolto verso il basso (figura 2). Il sistema di riferimento del mondo reale si considera centrato sull’asse ottico della telecamera, con l’asse Z uscente dall’ottica (figura 3). Osservando la figura 1 notiamo che le distanze che abbiamo finora identificato sono legate tra loro da semplici relazioni di similitudine tra i due triangoli opposti al vertice CP e possiamo quindi passare tra i due sistemi di riferimento seguendo le semplici formule: dove “z” è la distanza tra l’oggetto misurato e il “centro di proiezione”, mentre “f” è una componente fondamentale di ogni sistema ottico noto come “distanza focale”, la distanza tra il centro di proiezione e il “piano del sensore”. Il modello Figura 1: il modello pin-hole. del sensore presentato fino a questo punto è ideale: il centro del sensore corrisponde esattamente al punto di intersezione tra l’“asse ottico” della telecamera e il piano del sensore. In realtà questa coincidenza non è mai vera, infatti il sensore CCD o CMOS non è mai assemblato in modo preciso, soprattutto in webcam economiche. Come abbiamo visto nel precedente articolo, inoltre, il centro del sistema di riferimento relativo all’immagine non è al centro del sensore, ma in alto a sinistra; per questo motivo avremo bisogno di altri due parametri, noti come cx e c y, che identificano il punto C (c x, c y), il “centro del sensore”. Le coordinate camera della proiezione di un punto del mondo sul piano dell’immagine saranno dunque calcolate con le seguenti nuove formule: e pensare questi due tipi di distorsione (operazione di rettifica), dopo aver stimato sei coefficienti di distorsione radiale (k 1 , k 2 , k 3 , k 4 , k 5 , k 6 ,) e due coefficienti di distorsione tangenziale (p 1, p 2,). Questi coefficienti si inseriscono nelle due formule viste nel paragrafo precedente, complicandole notevolmente: Figura 2: sistema di riferimento dell’immagine. Un altro fattore non ancora considerato è il fatto che gli elementi sensibili del sensore di acquisizione non sono perfettamente quadrati. Questo comporta l’utilizzo di due valori differenti per le focali orizzontali e verticali: f x e f y. Le due formule diventano ancora: Figura 3: sistema di riferimento in “coordinate mondo”. caso in cui sia nota a priori la variabile “z”, la distanza reale del punto “misurato” dal centro di proiezione. Questo è il motivo per cui non è possibile ricavare la posizione reale di un oggetto acquisito con una sola telecamera, a meno di un fattore Z, noto come “fattore di scala”, calcolabile solo conoscendo la dimensione reale dell’oggetto acquisito, facendo delle proporzioni. Nei prossimi articoli vedremo come calcolare la coordinata z utilizzando una seconda telecamera, passando dunque al sistema “stereo-visivo”, lo stesso sistema che utilizziamo per stimare la distanza degli oggetti che osserviamo attraverso gli occhi. con Per arrivare a: LE DISTORSIONI INTRODOTTE DALLE LENTI per passare da “coordinate mondo” a “coordinate camera” e per passare da “coordinate camera” a “coordinate mondo”. I più attenti avranno notato che quest’ultima operazione è fattibile solo nel Per concludere la caratterizzazione del sistema di acquisizione visivo è necessario introdurre il concetto di “distorsione”. Anche i sistemi ottici montati sulle telecamere non sono ideali, se lo fossero quanto abbiamo visto finora sarebbe sufficiente a definire il modello di una telecamera. Ma i sistemi ottici introducono due tipi di distorsione: la distorsione radiale (figura 4, a sinistra), dovuta alla convessità o concavità della lente, e la distorsione tangenziale (figura 4, a destra), dovuta all’inclinazione non perfetta del sensore di acquisizione. Gli effetti della distorsione sulle immagini sono visibili in figura 5 e figura 6: a sinistra l’immagine distorta (distorsione a barilotto, in figura 5, e a cuscinetto, in figura 6); a destra l’immagine corretta con la rettifica. OpenCV mette a disposizione alcune funzioni che permettono di com- Non fatevi spaventare da quanto siano complicate queste equazioni, OpenCV mette a disposizione anche tutti gli strumenti necessari per poterle utilizzare senza doverle ricordare ogni volta che devono essere applicate in un algoritmo di visione artificiale.Prima di poterle usare è però necessario stimare tutti i parametri che abbiamo incontrato finora: f x, f y, c x e c y, noti come “parametri intrinseci” della telecamera e k1, k2, k3, k4, k5, k6, p1 e p2, noti come “coefficienti di distorsione”. robot zone ➲ robot zone CALIBRAZIONE DELLA TELECAMERA Figura 4: effetto delle distorsioni ottiche. Figura 5: distorsione radiale a barilotto. Figura 6: distorsione radiale a cuscinetto. OpenCV, oltre a mettere a disposizione le funzioni di rettifica, mette anche a disposizione le funzioni per la stima dei parametri della telecamera. La stima di questi parametri richiede una procedura detta “procedura di calibrazione”: una scacchiera (figura 7) è acquisita da differenti punti di vista (figura 8); per ogni acquisizione si identificano i vertici della scacchiera e se ne calcolano le coordinate nel sistema di riferimento dell’immagine. Essendo note le dimensioni dei quadrati della scacchiera è possibile mettere in relazione le coordinate (u,v) di ogni vertice rilevato a ogni acquisizione con le sue coordinate reali (x,y,z); da tale associazione si estraggono le relazioni matematiche che legano i due sistemi di riferimento. Risolvendo un complicato sistema di equazioni è possibile stimare tutti i parametri del sensore. CONCLUSIONI Figura 7: un esempio di scacchiera di riferimento utilizzata per la procedura di calibrazione del sensore di acquisizione. Figura 8: differenti acquisizioni di una scacchiera di riferimento utilizzate per la stima dei parametri del sensore. In questo articolo puramente teorico abbiamo affrontato uno dei concetti fondamentali della visione artificiale, la modellizzazione del sensore di acquisizione. Nel prossimo articolo vedremo come la libreria OpenCV semplifica il lavoro della modellizzazione mettendo a disposizione comode funzioni da utilizzare una sola volta durante la procedura di calibrazione del sistema e ogni volta che acquisiremo un’immagine per la sua rettifica. ❏ CODICE MIP 2832943 PER approfondire... - [1] Documentazione di ufficiale OpenCV in lingua inglese relativa al modello pin-hole e alla calibrazione della telecamera: http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html - [2] Tutorial OpenCV sulla procedura di calibrazione: http://docs.opencv.org/doc/tutorials/calib3d/camera_calibration/camera_calibration.html - Nuovo sito ufficiale di OpenCV, dove è possibile trovare tutte le novità sulla libreria, documentazione e tutorial: www.opencv.org - Sito non ufficiale di OpenCV per gli utenti italiani, in cui sono presenti i primi video tutorial analoghi ai primi articoli apparsi su Fare Elettronica: http://www.opencv.it - Per discutere il codice dell’articolo o chiedere consigli e chiarimenti non esitate a contattare l’autore all’indirizzo email: [email protected] - Esempi e tutorial su OpenCV in italiano sono disponibili sul blog dell’autore: www.robot-home.it - Applicazione della visione artificiale a un robot autonomo amatoriale: www.indiegogo.com/myzharbot 106