ROBOTICA E ANIMAZIONE DIGITALELA O A O OLABORATORIO- VISIONE -D tt P l Ti lliDott. Paolo TirelliProf. N. Alberto Borghese
AIBO CAMERA (1/2)Specifiche:
19/0Specifiche:Tecnologia CMOSRisoluzione: 104(H) x 80(V)F t 30 FPS
03/2009R
oV
i
Frame rate: 30 FPSCaratteristiche della lente: F 2.8, f = 3.27mmAngolo di visuale:
obotica e Ani
sione
hese
Orizzontale: 56.9°Verticale: 45.2°
Settaggi di default:
mazione D
igN
. Alb
erto
Bor
gh Settaggi di default:Bilanciamento del bianco: 5000 KShutter Speed: 1/100 sec
d t i i ( l ità d ll’ tt t )
gitale Ti
relli
–Pr
of. N durata esposizione (velocità dell’otturatore)
Gain: 0 dBpiù alto = migliore qualità dell’immagine con scarsa illuminazione
2
D
ott.
Paol
o T # of electrons per pixel / # of counts per pixel 2
AIBO CAMERA (2/2)Ri hi t OPENR C t lP i iti ()
19/0
Richieste a OPENR::ControlPrimitive():Bilanciamento del bianco (oprmreqCAM_SET_WHITE_BALANCE):
Possibili valori:WB INDOOR MODE (2856K)
03/2009R
oV
i
ocamparamWB_INDOOR_MODE (2856K)ocamparamWB_FL_MODE (5000K)ocamparamWB_OUTDOOR_MODE (6500K)
Sh tt d ( CAM SET SHUTTER SPEED)
obotica e Ani
sione
hese
Shutter speed (oprmreqCAM_SET_SHUTTER_SPEED)Possibili valori:
ocamparamSHUTTER_SLOW (1/50sec)SHUTTER MID (1/100 )
mazione D
igN
. Alb
erto
Bor
gh ocamparamSHUTTER_MID (1/100sec)ocamparamSHUTTER_FAST (1/200sec)
Gain (oprmreqCAM_SET_GAIN)P ibili l i
gitale Ti
relli
–Pr
of. N Possibili valori:
ocamparamGAIN_LOW (-6dB)ocamparamGAIN_MID (0dB)
GAIN HIGH (+6dB) 3
D
ott.
Paol
o T ocamparamGAIN_HIGH (+6dB) 3
AIBO CAMERAESEMPIO
P i il bil i d l bi
19/0
Per impostare il bilanciamento del bianco:
03/2009R
oV
i obotica e Ani
sione
Per impostare il gain:
hese
mazione D
igN
. Alb
erto
Bor
gh
gitale
Per impostare il shutter speed:
Tire
lli–
Prof
. N
4
D
ott.
Paol
o T 4
AIBO CAMERAIMPOSTAZIONI AUTOMATICHE
Bil i d l bi
19/0
Bilanciamento del biancoOPENR::ControlPrimitive (fbkID, oprmreqCAM_AWB_ON, 0, 0, 0, 0)
03/2009R
oV
i
Esposizione automaticaOPENR::ControlPrimitive (fbkID, oprmreqCAM_AE_ON, 0, 0, 0, 0)
obotica e Ani
sione
hese
Non sono molto efficienti, la predominanza di un colore nell'immagine confonde il bilanciamento.
mazione D
igN
. Alb
erto
Bor
gh
gitale Ti
relli
–Pr
of. N
5
D
ott.
Paol
o T 5
AIBO CAMERANOTE
Off l di i i i l di i i i
19/0
Offre quattro layers di immagini: tre layer di immagini compressea bassa, media, alta risoluzione ed un layer di color detection.
03/2009R
oV
i
Per ogni layer si puo’ accedere solo alle singole componenti Y, Cr eCb che vanno poi ricomposte per generare l’immagine a colori.
obotica e Ani
sione
hese
Color Detection Hardware: riconosce fino a 8 coloricontemporaneamente. Si basa sulla “color detection table” (CDT).
mazione D
igN
. Alb
erto
Bor
gh
Tramite il layer Color Detection si accede solo alla componentesemantica (etichette).
gitale Ti
relli
–Pr
of. N
6
D
ott.
Paol
o T 6
AIBO CAMERAESEMPIO DI SEGMENTAZIONE
19/003/2009R
oV
i
Immagine originale Immagine segmentata
obotica e Ani
sione
hese
mazione D
igN
. Alb
erto
Bor
gh
gitale Ti
relli
–Pr
of. N
Clustering dei colori in un numero ridotto di colori campione. 7
D
ott.
Paol
o T C s e g e co o e o o o co o ca p o e.
Ad esempio con CDT.7
STANDARD VIDEO (ITU-R BT.601) (1/2)T f i Di
19/0
Trasformazione Diretta:
Kb = 0.114
03/2009R
oV
iKb 0.114Kr = 0.299
Y * R * G * B
obotica e Ani
sione
hese
Y = + 0.299 * R + 0.587 * G + 0.114 * BCb = - 0.168736 * R - 0.331264 * G + 0.5 * BCr = + 0.5 * R - 0.418688 * G - 0.081312 * B
mazione D
igN
. Alb
erto
Bor
gh
0 ≤ Y’, R, G, B ≤ +10 5 ≤ Cb C ≤ +0 5
gitale Ti
relli
–Pr
of. N -0.5 ≤ Cb,Cr ≤ +0.5
8
D
ott.
Paol
o T 8
STANDARD VIDEO (ITU-R BT.601) (2/2)T f i I
19/0
Trasformazione Inversa:
R = Y + 1.402 * (Cr-128)
03/2009R
oV
iR Y 1.402 (Cr 128) G = Y - 0.34414 * (Cb-128) - 0.71414 * (Cr-128) B = Y + 1.772 * (Cb-128)
obotica e Ani
sione
hese
0 ≤ Y, Cb, Cr, R, G, B ≤ +255
mazione D
igN
. Alb
erto
Bor
gh
Diversi coefficienti per ITU-R NT.709 – HDTV:
gitale Ti
relli
–Pr
of. N Kb = 0.0722Kr = 0.2126
9
D
ott.
Paol
o T 9
STRUTTURE DATI DI OPEN-RFBKIMAGESENSOR
P l l i f i i i i d ll l è
19/0
Per leggere le informazioni provenienti dalla telecamera ènecessario instaurare un canale di comunicazione con essa.
03/2009R
oV
i
L’oggetto di sistema adibito alla gestione della telecamera èOVirtualRobotComm tramite il servizio (porta)FbkImageSensor.
obotica e Ani
sione
hese
g
Il tipo di dato scambiato (messaggio) è OFbkImageVectorData.
mazione D
igN
. Alb
erto
Bor
gh
Per instaurare un canale di comunicazione è necessario inserire laseguente linea nel file connect.cfg, seguita dal servizio (porta)
gitale Ti
relli
–Pr
of. N che il nostro oggetto mette a disposizione per ricevere le
informazioni provenienti dalla telecamera:
10
D
ott.
Paol
o T
OVirtualRobotComm.FbkImageSensor.OFbkImageVectorData.S.10
STRUTTURE DATI DI OPEN-ROFBKIMAGEVECTORDATA (1/4)
19/003/2009R
oV
i
4 elementi: uno per layer
obotica e Ani
sione
hese
mazione D
igN
. Alb
erto
Bor
gh
gitale Ti
relli
–Pr
of. N
11
Classe utilizzata per contenere le informazioni riportate
Dot
t. Pa
olo
T 11Classe utilizzata per contenere le informazioni riportatedella telecamera.
STRUTTURE DATI DI OPEN-ROFBKIMAGEVECTORDATA (2/4)
O i ll d ll’ OFbkI I f h ll
19/0
Ogni cella dell’array OFbkImageInfo ha una cellacorrispondente nel byte array.
OFbkI I f i l i f i i l i di l d il b
03/2009R
oV
i
OFbkImageInfo contiene le informazioni sul tipo di layer ed il byteassociato è un puntatore ai dati dell’immagine per quel layer.
obotica e Ani
sione
hese
L’indice del layer può essere una delle seguenti costanti:ofbkimageLAYER_H (colore – alta risoluzione)ofbkimageLAYER_M (colore – media risoluzione)
mazione D
igN
. Alb
erto
Bor
gh
ofbkimageLAYER_L (colore – bassa risoluzione)ofbkimageLAYER_C (color detection image).
gitale Ti
relli
–Pr
of. N
Si accede all’array OFbkImageInfo attraverso il metodo GetInfo() e si accede all’array byte attraverso il metodo GetData(). Questi metodi sono membri della classe OFbkImageVectorData. 12
D
ott.
Paol
o T g 12
STRUTTURE DATI DI OPEN-ROFBKIMAGEVECTORDATA (3/4)
L i i i difi t i YC Cb
19/0
Le immagini sono codificate in YCrCbY = luminositàCr = rosso meno la luminositàCb = blu meno la luminosità
03/2009R
oV
iC
Per ogni layer si puo’ accedere solo alle singole componenti Y, Cr e Cbche vanno poi ricomposte per generare l’immagine a colori; per il layerColor Detection si accede solo alla componente color detection. Le
obotica e Ani
sione
hese
pcostanti che identificano i layers sono:
ofbkimageBAND_Y (layer Y)ofbkimageBAND_Cr (layer Cr)ofbkimageBAND Cb (layer Cb)
mazione D
igN
. Alb
erto
Bor
gh ofbkimageBAND_Cb (layer Cb)ofbkimageBAND_CDT (layer Color Detection)
Non è possibile accedere direttamente al valore del pixel codificatod YCbC L’i f i i t ti d i t i li
gitale Ti
relli
–Pr
of. N secondo YCbCr. L’informazione va ricomposta a partire dai tre singoli
layers (Y, Cb, Cr).
OPEN-R non fornisce alcuna classe per ricostruire l’immagine ma tra 13
D
ott.
Paol
o T p g
i sample della SONY è presente una classe in grado di tradurre leinformazioni della camera in immagini BMP.
13
STRUTTURE DATI DI OPEN-ROFBKIMAGE
Utili t i l’i f i tit it d ll t l
19/0
Utilizzato per maneggiare l’informazione restituita dalla telecamera e contenuta nel pacchetto OFbkImageVectorData.
C t i l’ tt OFbkI V t D t ( i )
03/2009R
oV
i
Come costruire l’oggetto OFbkImageVectorData (esempio):OFbkImage img(imageVector->GetInfo(ofbkimageLAYER_M),
obotica e Ani
sione
hese
g ( g _ ),imageVector->GetData(ofbkimageLAYER_M), ofbkimageBAND_Y);
Oggetto per la gestione :
mazione D
igN
. Alb
erto
Bor
gh
gg p gdella banda Y
del layer M (medium resolution)
gitale Ti
relli
–Pr
of. N
Alcuni metodi utili di OFbkImage: 14
D
ott.
Paol
o T IsValid(), Pointer(), Width(), Height(), Pixel(x,y)... 14
OFBKIMAGEALCUNI METODI
b l I V lid() i OFbkI è i i i li
19/0
bool IsValid(): ritorna true se OFbkImage è stata inizializzatacorrettamente, false altrimenti.byte* Pointer(): ritorna un puntatore all’inizio dei dati
03/2009R
oV
i
dell’immagine.int Width(): ritorna la larghezza dell’immagine.int Height(): ritorna l’altezza dell’immagine
obotica e Ani
sione
hese
int Height(): ritorna l altezza dell immagine.byte Pixel(int x, int y): ritorna il valore del pixel dell’immaginealla coordinata (x,y). Il significato del valore riportato dipende daltipo di layer cui ci si sta riferendo
mazione D
igN
. Alb
erto
Bor
gh tipo di layer cui ci si sta riferendo.intSkip(): ritorna il numero di bytes per saltare un’intera lineadell’immagine.
gitale Ti
relli
–Pr
of. N byte ColorFrequency(OCdtChannel chan): ritorna il numero
dei pixel (divisi per 16) individuati nella banda di coloreidentificata da chan nel CD layer.
15
D
ott.
Paol
o T 15
AIBO CAMERAESEMPIO DI CODICE
Il di i di i i di i
19/0
Il seguente codice mostra un esempio di ricezione di un messagioproveniente dalla camera.
03/2009R
oV
i obotica e Ani
sione
hese
mazione D
igN
. Alb
erto
Bor
gh
gitale Ti
relli
–Pr
of. N
16
D i i i à ibil tili
Dot
t. Pa
olo
T 16Da qui in poi sarà possibile utilizzare l’informazione attraverso la variabile cdtImage.
AIBO CAMERAI LAYER
19/0
Layer h: 208x160
Layer m: 104x80
03/2009R
oV
i
Layer l: 52x40
L CDT 104 80
obotica e Ani
sione
hese
Layer CDT: 104x80 mazione D
igN
. Alb
erto
Bor
gh
gitale Ti
relli
–Pr
of. N
17
D
ott.
Paol
o T 17
AIBO CAMERABASSA RISOLUZIONE (52X40)
19/003/2009R
oV
i obotica e Ani
sione
hese
mazione D
igN
. Alb
erto
Bor
gh
gitale Ti
relli
–Pr
of. N
18
D
ott.
Paol
o T 18
AIBO CAMERAMEDIA RISOLUZIONE (104X80)
19/003/2009R
oV
i obotica e Ani
sione
hese
mazione D
igN
. Alb
erto
Bor
gh
gitale Ti
relli
–Pr
of. N
19
D
ott.
Paol
o T 19
AIBO CAMERAALTA RISOLUZIONE (208X160)
19/003/2009R
oV
i obotica e Ani
sione
hese
mazione D
igN
. Alb
erto
Bor
gh
gitale Ti
relli
–Pr
of. N
20
D
ott.
Paol
o T 20
AIBO CAMERACOLOR DETECTION TABLE (1/2)
Legata al Color Detection Layer
19/0g yImplementazione Hardware
Non vengono utilizzate risorse di calcolo.E’ molto veloce
03/2009R
oV
iE molto veloce.Massimo 8 colori riconoscibili.Programmabile:
obotica e Ani
sione
hese
Ci sono 8 canali (ocdtCHANNEL0, ocdtCHANNEL1, ...,ocdtCHANNEL7) che è possibile programmare.
Il CD layer contiene simultaneamente le informazioni su tutti gli 8
mazione D
igN
. Alb
erto
Bor
gh canali, uno per bit. L’operatore & con una bytemask può essere usatoper controllare se il pixel è “on” in un canale di colore, ovvero se ilpixel è stato riconosciuto come avente un colore appartenente a quel
l
gitale Ti
relli
–Pr
of. N canale.
Risoluzione 104x80Per ogni pixel (1byte) del layer si applica una maschera.
21
D
ott.
Paol
o T
Al pixel sarà associata un’etichetta da cui, tramite la maschera, risalirò al colore
21
AIBO CAMERACOLOR DETECTION TABLE (2/2)
Maschere per Color Detection Layer:
19/0Maschere per Color Detection Layer: 03/2009R
oV
i obotica e Ani
sione
hese
mazione D
igN
. Alb
erto
Bor
gh
gitale Ti
relli
–Pr
of. N
22
D
ott.
Paol
o T 22
COLOR DETECTION LAYERESEMPIO
P i il i l di di ( 0 0 è “ ” l
19/0
Per esempio, per sapere se il pixel di coordinate (10, 10 è “on” nel5° color detection channel):
03/2009R
oV
i obotica e Ani
sione
hese
mazione D
igN
. Alb
erto
Bor
gh
gitale Ti
relli
–Pr
of. N
23
D
ott.
Paol
o T 23
AIBO CAMERAIMPOSTARE LA CDT
Ogni canale è rappresentato da 32 piani CbCr lungo la
19/0Ogni canale è rappresentato da 32 piani CbCr lungo lacomponente Y nello spazio dei colori.
03/2009R
oV
i obotica e Ani
sione
hese
mazione D
igN
. Alb
erto
Bor
gh
gitale
Struttura che gestisce i colori OCdtVectorData:
Tire
lli–
Prof
. N
24
D
ott.
Paol
o T 24
IMPOSTARE LA CDTESEMPIO (1/3)
19/003/2009R
oV
i obotica e Ani
sione
hese
mazione D
igN
. Alb
erto
Bor
gh
gitale Ti
relli
–Pr
of. N
25
D
ott.
Paol
o T 25
OCDTVECTORDATAESEMPIO (2/3)
19/003/2009R
oV
i obotica e Ani
sione
hese
mazione D
igN
. Alb
erto
Bor
gh
gitale Ti
relli
–Pr
of. N
26
D
ott.
Paol
o T 26
OCDTVECTORDATAESEMPIO (3/3)
19/003/2009R
oV
i obotica e Ani
sione
hese
mazione D
igN
. Alb
erto
Bor
gh
gitale Ti
relli
–Pr
of. N
27
Per i dettagli su come impostare manualmente la CDT:http://homes.dsi.unimi.it/~tirelli/robotics/material/tutorial/Aibo_Imaging_v1.3.pdf
Dot
t. Pa
olo
T 27
OCDTVECTORDATAESEMPIO (4/4)
C Cd
19/0
Crea vettore Cdt: OPENR::NewCdtVectorData(&cdtVecID, &cdtVec)
Imposta il numero di canali:
03/2009R
oV
iImposta il numero di canali:SetNumData(1);
Recupero l'OCdtInfo:
obotica e Ani
sione
hese
GetInfo(0);Inizializza l'OCdtInfo:
Init(fbkID BALL CDT CHAN)
mazione D
igN
. Alb
erto
Bor
gh Init(fbkID, BALL_CDT_CHAN)Imposta un piano:
Set(Y_segment, Cr_max, Cr_min, Cb_max, Cb_min);
gitale Ti
relli
–Pr
of. N Memorizza le impostazioni nella telecamera:OPENR::SetCdtVectorData(cdtVecID);
28
D
ott.
Paol
o T 28
COLOR DETECTION SOFTWARECOLOR DETECTION SOFTWAREALTERNATIVA ALLA COLOR DETECTION TABLE
C l D i S f ili d l l
19/0
Color Detection Software utilizzando la classe:AISAiboYCrCbColorSegConsuma risorse di calcolo: su Aibo ERS7 circa 2msec per
03/2009R
oV
ipimmagine (layer High Resolution).Massimo 32 colori riconoscibili.Risoluzione arbitraria: dipende dalla dimensione
obotica e Ani
sione
hese
Risoluzione arbitraria: dipende dalla dimensionedell'immagine originale.Visionabile e scaricabile dal sito del corso:
http://homes dsi unimi it/~tirelli/robotics/material/software/AISColorSeg 1 0 tar gz
mazione D
igN
. Alb
erto
Bor
gh http://homes.dsi.unimi.it/ tirelli/robotics/material/software/AISColorSeg_1.0.tar.gz gitale Ti
relli
–Pr
of. N
29
D
ott.
Paol
o T 29