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