Sunteți pe pagina 1din 90

SISTEME AVANSATE DE

ANALIZA SI
PRELUCRARE A
IMAGINILOR
francisc.iacob@cs.pub.ro
EF 202

CONTINUT
Formate de fisiere pentru imagini
Structuri de date pentru analiza imaginilor
Utilizarea transformatei Fourier in prelucrarea imaginilor
Transformarea cosinus discreta
Restaurarea imaginilor
Restaurarea imaginilor in domeniul spatial
Restaurarea imaginilor in domeniul frecventa
Corectia de umbra
Operatii asupra imaginilor
Operatii matematice
Operatii bazate pe convolutie
Operatii bazate pe derivate
Operatii morfologice. Algoritmi

Segmentarea imaginilor
Sisteme numerice pentru prelucrari de imagini
Reprezentarea si descrierea imaginilor
Reprezentarea granitelor
Descriptori de granite
Descriptori de regiuni
Descriptori relationali
Recunoasterea formelor
Pattern-uri si clase de pattern-uri
Recunoastere bazata pe metode teoretice de decizie
Potrivire ("matching")
Clasificatori statistici optimi
Retele neurale
Metode structurale

Notare
laborator: 30 puncte
tema de casa: 20 puncte
examen final: 50 puncte

Bibliografie
1)Rafael C. Gonzalez, Richard E. Woods - Digital
Image Processing, (Prentice-Hall).
2)Young I. T., Gerbrands J. J., Van Vliet L. J.
Fundamentals of Image Processing (Delft University
of Technology).
3)William K. Pratt - Digital Image Processing (John
Wiley & Sons).
4)Bernd Jhne - Digital Image Processing (SpringerVerlag Berlin Heidelberg).
5)Conway J., Gustavson T. Image Processing (Onsala
Space Observatory).

FORMATE DE FISIERE PENTRU IMAGINI


Continut
1. Domeniul prelucrarilor de imagini
2. Clase de imagini
3. Formate de fisiere pentru imagini
4. Structuri de date pentru analiza imaginilor
5. Perceptia umana a imaginilor
6. Sesizarea imaginii si achizitia

1. DOMENIUL PRELUCRARILOR DE IMAGINI

Tehnicile de prelucrare a imaginilor digitale: inceputul anilor 1920 (s au


transmis pentru prima oara imagini digitizate ale agentiilor de stiri prin
cablu submarin intre New York si Londra).

Aplicatiile conceptelor de prelucrare a imaginilor digitale: larga raspandire


de la mijlocul anilor 1960 (a treia generatie de calculatoare).

Prelucrarea imaginilor: obiect de studiu interdisciplinar (aplicatii


ingineresti, fizica, chimie, biologie, medicina, geografie, meteorologie,
studiul spatiului cosmic etc).

Prelucrarea datelor reprezentand imagini trei arii: grafica ("graphics"),

Grafica: informatii nonimagini imagini.


Aplicatii:
-reprezentarea grafica a unei functii sau set de date experimentale;
-generarea de imagini pentru programe jocuri;
-producerea de scene din programele simulatoare de zbor;
-arta pe calculator;
-animatia computerizata.

Prelucrarea imaginilor: atat intrarea cat si iesirea (rezultatul)


sunt imagini.

Aplicatii:
-sisteme de transmisie a imaginilor (cu tehnici de inlaturare a
zgomotelor si compactare a datelor);
-imbunatatirea imaginilor subexpuse sau neclare (cu tehnici de
imbunatatire a contrastului)
-modificarea drastica a imaginilor (schimbarea iluminarii, modificarea
contururilor unor obiecte);
-crearea unei imagini noi dintrun set de imagini existente (exemplu: in
medicina, obtinerea reprezentarii unor organe interne din imagini cu raze x sau
scintigrafice).

Recunoasterea formelor: imagine descriere a imaginii de


intrare sau asignarea imaginii la o clasa particulara.
Aplicatii:
-sistem de diagnostic medical (detecteaza anumite anomalii de pe
radiografii sau alte imagini medicale);
-recunoasterea persoanelor;
-identificarea amprentelor;
-sistem de sortare a corespondentei (detecteaza si identifica cifrele
codului postal de pe plic) etc.

Cele trei domenii de aplicaii ale tehnicii de calcul care


opereaz cu imagini:

Cateva aplicatii !

Restaurarea unei imagini:

Imbunatatirea culorilor unei imagini:

Reducerea zgomotului intr-o imagine:

Halftoning:

Detectarea fetelor:

Recunoasterea amprentelor digitale:

Componentele unui sistem pentru prelucrari de imagini de scop general:

2. CLASE DE IMAGINI

Clasa 1: imagini color si cu niveluri de gri (reprezentare fidela a realitatii)


matrici de valori intregi (pixeli - "picture element). Imaginile color
reprezentate prin trei matrici (RGB "red", "green", "blue") sau printr o
singura matrice (diferiti biti ai fiecarui element corespunzand la culori
diferite). Ochiul uman nu poate distinge diferente de iluminare sub 1%, deci
un octet /culoare / pixel este suficient.

Clasa 2: imagini binivel sau cu putine culori, exemplu: imagini alb negru
matrici cu un singur bit / pixel. Alta solutie: descrierea de zone avand o
culoare constanta (imagini cu putine culori).

Clasa 3: linii si curbe continue secvente de puncte reprezentate prin


coordonatele lor x,y sau prin diferentele succesive x, y. Solutii
ineficiente !
=> Coduri de inlantuire (vectorul care uneste doua puncte succesive - un
simbol dintrun set finit).
Exemplu: cod de inlantuire cu opt directii.

Solutie si mai eficienta: cod de inlantuire diferential (punct reprezentat prin


diferenta dintre doua coduri absolute succesive).
Exemplu: opt valori (0, 1, 2, 3, 4), dar frecvente de aparitie diferite: la o
curba filtrata 0 si 1 mai frecvente, 4 extrem de rar => cod de lungime variabila
pentru fiecare directie
(in medie 2 biti / punct).
Direcie
Cod
0
+1
-1
+2
-2
+3
-3
4

0
01
011
0111
01111
011111
0111111
01111111

Clasa 4: puncte sau poligoane seturi de puncte discrete la distanta, nu se


pot reprezenta prin coduri de inlantuire. Solutia: tablouri de coordonate x,y
eventual, prin hardware, aceste puncte pot fi unite prin linii drepte sau curbe
simple => poligoane.

Tipuri de operatii
imagine de intrare a[N,N] imagine de iesire b[N,N]:
Operatii punctuale (complexitate/pixel constanta): valoarea de iesire
pentru o anumita coordonata este dependenta numai de valoarea de
intrare din punctul respectiv ;
Operatii locale (complexitate/pixel p2, unde vecinatatea punctului este
p*p) : valoarea de iesire depinde numai de valorile pixelilor dintr-o
vecinatate a punctului respectiv ;
Operatii globale (complexitate/pixel N2, unde imaginea intreaga are
dimensiunea N*N) : valoarea de iesire pentru un pixel depinde de
valorile tuturor punctelor din imagine.

Tipuri de vecinatati
Vecinatate (esantionare) rectangulara de conectare 4 : utilizeaza o
retea de esantionare rectangulara, iar vecinatatea fiecarui pixel este
reprezentata prin cei patru pixeli vecini din directiile N, S, E, V ;
Vecinatate (esantionare) rectangulara de conectare 8 : este
asemanatoare solutiei precedente, cu diferenta ca vecinatatea fiecarui
pixel este formata din opt pixeli din imediata apropiere a acestuia ;
Vecinatate (esantionare) hexagonala de conectare 6 : reteaua de
esantionare este hexagonala iar vecinatatea fiecarui pixel contine cei
sase pixeli adiacenti acestuia.

3. FORMATE DE FISIERE PENTRU IMAGINI


Memorarea imaginilor doua categorii de formate de fisiere :
-fisiere de tip rastru (colectie de puncte de imagine);
-fisiere de tip vectorial (colectie de segmente sau vectori).

JPEG utilizeaza standardul de compresie Joint Photographics Experts


Group (grupul infiintat in 1986, standardul emis in 1992, aprobat in 1994 ca
ISO-10918-1).
Codificarea JPEG a unei imagini:
1)imaginea RGB imaginea in luminanta/crominanta (YCbCr Y
componenta de luminanta, Cb si Cr componentele de crominanta, albastru si
rosu), conform standardului JFIF (JPEG File Interchange Format). Pornind de
la o imagine RGB pe 8 biti se pot calcula componentele YCbCr (256 niveluri):
Y = 0.299 R + 0.587 G + 0.114 B
Cb = - 0.1687 R - 0.3313 G + 0.498 B + 128
Cr = 0.498 R - 0.4187 G - 0.0813 B + 128

Nu toate formatele de imagine memoreaza esantioanele in ordinea


R0, G0, B0, ... Rn, Gn, Bn. Este necesar sa se verifice ordinea
esantioanelor inainte de conversie. Conversia inversa YCbCr (256
niveluri) la RGB :
R = Y + 1.402 (Cr-128)
G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)
B = Y + 1.772 (Cb-128)
Conversia RGB la niveluri de gri poate sa utilizeze urmatoarea
relatie bazata pe senzitivitatea ochiului uman la diferite culori:
Y = 0.3*R + 0.59*G + 0.11*B

2) Ochiul uman fiind mai sensibil la luminanta (componenta Y)


decat la crominanta (componentele Cb si Cr) => reducerea
rezolutiei spatiale a componentelor Cb si Cr (downsampling sau
chroma subsampling).
Rapoartele de reducere 4:4:4 (fara reducere), 4:2:2 (reducere
printr-un factor de 2 in directia orizontala din imagine a frecventei de
esantionare pentru Cb si Cr fata de frecventa pentru Y: exemplu Y
esantionat la 10 MHz, iar Cb si Cr la 5 MHZ) si cel mai comun 4:2:0
(reducerea printr-un factor de 2 in directiile orizontala si verticala din
imagine).

Douglas A. Kerr Chrominance Subsampling in Digital Images


O schema de reducere este exprimata prin J:a:b,
specificand numarul de esantioane de luminanta si crominanta intr-o
regiune conceptuala:
-lungimea J pixeli si inaltimea 2 pixeli (de obicei J = 4);
-a este numarul de esantioane de crominanta in prima linie
de J pixeli;
-b este numarul de esantioane (suplimentare) de crominanta
in a doua linie de J pixeli.
Cateva valori uzuale:

3) O imagine este impartita in blocuri 8x8 sau 16x16.


4) Se aplica transformata cosinus discreta (DCT-II) pentru fiecare
bloc, indepartand valorile mici. Exemplu pentru un bloc 8x8:

Se trece de la matricea cu valori pozitive de pixeli (0->255) la matricea


avand valori cu semn, centrate in jurul lui 0 (se scade 128 din fiecare
valoare de pixel => plaja de valori 128 ->127):

Se aplica transformarea DCT dupa relatia:

unde u este frecventa spatiala orizontala, 0u<8, v este frecventa


spatiala verticala, 0v<8 si

este functia de normalizare.

Pentru matricea considerata ca exemplu:

Valoarea din pozitia 0,0 este coeficientul componentei continue (DC),


iar ceilalti sunt coeficientii componentelor alternative (AC).

5) Cuantizarea este operatia care produce cele mai mari


pierderi de informatie. Se utilizeaza o matrice de cuantizare, cum este:

Coeficientii DCT cuantificati sunt calculati cu formula:

Pentru exemplul considerat se obtine matricea:

Calculul elementului 0,0:

6) Codificarea entropiei este o schema de compresie de date fara


pierdere de informatie, independenta de caracteristicile mediului.
Componentele sunt aranjate intr-o ordine in zig-zag:

Se obtine:

26
3
3
2
1
1
0
0
0
0
0
0
0
0
0

0
2
4
1
1
0
0
0
0
0
0
0
0

6
1
5
1
0
0
0
0
0
0
0

4
1
2
1
0
0
0
0
0

2
0
1
0
0
0
0

0
0
0
0
0

0
0
0

Pentru codificare se aplica un algoritm Huffman (se utilizeaza un cuvant


special de cod EOB pentru incheierea prematura a unei secvente cand
ceilalti coeficienti sunt 0). Secventa devine astfel:

26
3

1 EOB

Decodificarea imaginii pentru afisare: parcurgerea acestor


operatii in ordine inversa.
O imagine refacuta este foarte asemanatoare cu imaginea
initiala, diferentele fiind neglijabile => util pentru reprezentarea scenelor
naturale (fotografii), dar mai putin pretabil pentru imagini stiintifice
(pierderea de informatie poate sa fie inacceptabila).
JPEG: cel mai utilizat format pentru stocarea si transmiterea
fotografiilor pe World Wide Web (preferat fata de GIF - maxim 256 de
culori sau PNG - fisere mult mai mari, datorita compresiei mai putin
eficiente).
JPEG nu se preteaza la desene geometrice sau text, in aceste
cazuri fiind preferate formatele GIF si PNG.

BMP (Microsoft Windows Bitmap), format propriu Microsoft


Windows. Consta dintr-un header, urmat de informatiile de imagine.
Header-ul are doua parti:
-header de fisier: BITMAPFILEHEADER (14 octeti);
-header de informatii: BITMAPINFO (40 de octeti).
Header-ul de fisier (BITMAPFILEHEADER): informatii despre
tipul, dimensiunea si reprezentarea fisierului (DIB - Device Independent
Bitmap), conform structurii:

typedef struct tagBITMAPFILEHEADER{


WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DW bfOffBits;
}BITMAPFILEHEADER;
unde:
-bfType (octetii 0-1): tip fisier, trebuie sa contina semnatura
caracterele BM in ASCII sau 42 4D in hexazecimal;
-bfSize (octetii 2-5): lungime fisier n DWORD;
-bfReserved1 (octetii 6-7): cmp rezervat, valoare 0;
-bfReserved2 (octetii 8-9): cmp rezervat, valoare 0;
-bfOffBits (octetii 10-13): deplasament n octeti de la sfrstul
structurii BITMAPFILEHEADER pna la zona din fisier ce contine
pixelii codati.

Header-ul de informatii (BITMAPINFO) dimensiunea si culorile


imaginii; doua componente: antetul structurii de informatii
(BITMAPINFOHEADER) si tabela de culori (RGBQUAD).
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
DWORD biWidth;
DWORD biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
DWORD biXPelsPerMeter;
DWORD biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;

unde:
-biSize (octetii 14-17): dimensiunea header-ului de informatii
(BITMAPINFOHEADER), in octeti (40 de octeti);
-biWidth (octetii 18-21): latimea imaginii, n pixeli;
-biHeight (Octetii 22-25): inaltimea imaginii, n pixeli;
-biPlanes (octetii 26-27): numarul de planuri de imagine ale dispozitivului de
afisaj (1);
-biBitCount (octetii 28-29): numarul de biti per pixel; poate fi 1, 4, 8 sau 24;
-biCompression (octetii 30-33): tipul de compresie utilizata: BI_RGB fara
compresie, BI_RLE8 sau BI_RLE4 pentru compresie de tip RLE cu cuvinte de
respectiv 8 sau 4 biti;
-biSizeImage (octetii 34-37): dimensiunea imaginii n octeti;
-biXPelsPerMeter (octetii 38-41): rezolutia pe orizontala a echipamentului (n
pixeli pe metru);
-biYPelsPerMeter (octetii 42-45): rezolutia pe verticala a echipamentului (n
pixeli pe metru);
-biClrUsed (octetii 46-49): numarul de culori utilizate n imagine (octetii 28-29
reprezinta numarul maxim posibil de culori, iar 46-49 numarul current utilizat);
daca acest camp este 0, imaginea foloseste toate culorile disponibile ale
paletei;
-biClrImportant (octetii 50-53): numarul culorilor importante din imagine; daca
acest camp este 0, toate culorile sunt luate n considerare.

Dupa header urmeaza tabela de culori, utilizata numai daca numarul de biti
per pixel este 8, iar numarul total de octeti utilizati in acest caz este
4x(numarul de culori din imagine). Ordonarea octetilor este de tip little endian
(primul octet este c.m.p.s.). Structura RGBQUAD descrie o culoare prin
componentele sale de rosu, verde si albastru si un cmp rezervat avnd
valoarea 0.
typedef struct tagRGBQUAD{
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
}RGBQUAD;
Fiecare pixel este codificat pe biBitCount biti; daca biBitCount este 1, 4 sau
8, fisierul contine tabela de culori asociata imaginii. Codurile pixelilor se
impacheteaza pe octeti (deci pentru 4 biti per pixel, fiecare octet reprezinta doi
pixeli succesivi). Daca biBitCount este 24, fiecare pixel este reprezentat pe trei
octeti, componentele de albastru, verde si rosu (in aceasta ordine) ale culorii
pixelului respectiv (True Color), fara tabela de culori. Codificarea pixelilor se
face independent pe fiecare linie orizontala a imaginii, de la stanga spre
dreapta incepand cu ultima linie, astfel incat sa rezulte un multiplu de 4 octeti,
eventual prin completare cu octeti neutilizati.

GIF (Graphics Interchange Format): la sfarsitul anilor 1980 pentru


transferuri de imagini prin retele.
-restrictie: limitarea numarului maxim de culori la 256;
-metoda de compresie a datelor: tehnica LZW (Lempel-Ziv-Welch),
bazat pe un tabel de coduri pentru sabloane (reprezentand blocuri de
date).
-header cu dimensiunile imaginii, rezolutia de culoare, dimensiunea
hartii de culori (colormap);
-formatul PNG (Portable Network Graphics) introdus mai recent
pentru inlocuirea formatului GIF;
-GIF si PNG sunt formate fara pierderi, deci o imagine astfel
codificata poate fi refacuta in intregime !

TIFF (Tagged Image File Format) format foarte flexibil. Poate salva mai
multe imagini intr-un fisier. Permite diferite rutine de compresie (LZW, JPEG,
Huffman, RLE sau nici o compresie), ordine little endian si big endian pentru
octeti, reprezentarea de imagini binare, cu niveluri de gri, RGB sau indexate.
=> software-ul pentru citirea imaginilor TIFF este complex.
Alte formate:
HDF (Hierarchical Data Format) utilizat pentru imagini stiintifice;
PCX utilizat initial pentru software-ul PC Paintbrush sub MS-DOS;
XWD (X Window Dump) utilizat la memorarea de imagini ecran sub
Xwindow (UNIX);
ICO pentru afisarea de icoane in sistemul de operare Microsoft Windows,
permitand imagini multiple intr-un fisier;
CUR, asemanator ICO, format pentru afisarea cursorului mouse-ului in
sistemul de operare Microsoft Windows.

4. STRUCTURI DE DATE PENTRU ANALIZA IMAGINILOR


Imaginile pot fi reprezentate pe mai multe niveluri:
-imagine iconica (iconic images) este imaginea initiala obtinuta
prin diferite tehnici, reprezentata printr-o matrice de valori intregi
corespunzatoare pixelilor;
-imagine segmentata, continand parti ale imaginii initiale, grupate
impreuna, apartinand acelorasi obiecte;
-reprezentare geometrica continand informatii despre forme 2D sau
3D;
-model relational care permite prelucrarea datelor la un nivel mai
inalt de abstractizare.
Pentru reprezentarea imaginilor: diverse structuri de date, cum sunt
matrici, lanturi, grafuri, liste de proprietati ale obiectelor, baze de date, etc.

Matrici
Matricile: structurile de date cele mai utilizate pentru reprezentarea
imaginilor la un nivel coborat. Elementele unei matrici = valori intregi
corespunzand nivelurilor de gri sau componentelor de culoare ale
pixelilor din imagine. Aceste valori se obtin direct de la un echipament de
achizitie de imagine (exemplu un scanner).

Lanturi
Lanturile (chains) : pentru descrierea granitelor obiectelor dintr-o imagine.

Pixelul de referinta -> sageata. => cod de inlantuire:


0000776655555500000006444444442221111112234445652211.
Util cand se doreste determinarea unor puncte din imagine in care conturul
unui obiect isi modifica orientarea intr-un anumit fel (de exemplu se intoarce
spre stanga cu 90), caci este necesar sa se caute in cadrul lantului o pereche
anumita de valori. Pentru gasirea unor informatii locale este deci necesar sa se
parcurga intregul lant. Problemele devin mult mai dificile in cazul in care sunt
necesare informatii globale (de exemplu, forma unui obiect). Lanturile se pot
reprezenta utilizand structuri statice, de exemplu vectori, de lungimea
corespunzatoare lantului cel mai lung, sau o solutie mai buna este reprezentata
de structuri dinamice.

Codificare run length


Este solutia utilizata la faxuri. Pentru o imagine binara se memoreaza
numai zonele apartinand unor obiecte, sub forma unei liste de subliste.
Fiecare rand din imagine continand informatie utila este descrisa printr-o
sublista, in care primul element este numarul randului (liniei) din imagine,
iar urmatoarele valori sunt perechi de coordonate, corespunzand
inceputului si sfarsitului unui segment continuu (succesiune continua de
pixeli).

Imaginea este codificata prin ((11144)(214)(52355)). Aceasta solutie se


poate utiliza la fel de bine si pentru imagini cu mai multe niveluri de gri
sau culori, prin memorarea suplimentara a nivelului stralucirii pixelilor.

Structuri de date topologice


Structurile de date topologice descriu imaginile prin seturi de elemente
si relatiile dintre acestea.
Grafuri de adiacente ale regiunilor reprezinta o categorie de astfel de
structuri. Exemplu:

Structuri relationale
Descriu relatii dintre obiectele imaginii, obtinute in urma segmentarii -> se
utilizeaza pentru analiza imaginilor la nivel inalt. Exemplu:

Nr.
1

Obiect
cer

2
3
4
5
6

soare
deal
coroana
trunchi
lac

Culoare
albastru
deschis
galben
verde deschis
verde inchis
maro
albastru inchis

Rand min.
0

Coloana min.
0

In
-

15
35
10
85
82

20
0
80
85
5

1
3
3

Structuri de date ierarhice


Vederea cu ajutorul calculatorului (computer vision) volum mare de
calcule. Structurile de date ierarhice permit utilizarea de algoritmi care
determina o strategie a procesarii pe baza unui volum mic de date si numai in
portiunea de interes iau in considerare intreaga rezolutie.
Piramida M sau piramida matriciala (M-pyramid): secventa {ML, ML-1, ...,
M0} de imagini, unde ML este imaginea initiala, Mi-1 este obtinuta din Mi prin
reducerea rezolutiei la jumatate, etc, iar M0 este imaginea redusa la un singur
pixel. Evident ca este necesar ca imaginea sa fie patrata de dimensiune putere
a lui 2. Solutia este utila atunci cand se doreste sa se prelucreze imaginea
simultan la rezolutii diferite.
Numarul de pixeli necesari pentru reprezentarea in memorie a unei
piramide M (memorarea tuturor matricilor) este:

Piramida T (T-pyramid sau tree pyramid) este un arbore in care fiecare


nod are patru fii. Radacina arborelui corespunde cu imaginea initiala, cei patru
fii ai radacinii corespund la patru cadrane egale in care se imparte imaginea,
etc.

Datorita regularitatii structurii adresele nodurilor arborelui se calculeaza usor,


daca se cunoaste adresa de inceput si dimensiunea imaginii.

Arborele 4D (quadtree) este o modificare a piramidei T. Fiecare nod,


exceptand frunzele, are patru fii (0-NV, 1-NE, 2-SV si 3-SE) si similar cu
piramida T imaginea este impartita in patru cadrane egale, pe fiecare nivel.
Totusi nu este necesar sa se memoreze toate nodurile de pe un nivel, daca
acestea au aceleasi valori sau aceeasi stralucire.

Reprezentarile ierarhice ale imaginilor prezinta unele probleme, in special


dependenta de pozitiile, orientarile si dimensiunile obiectelor, iar doua imagini
foarte asemanatoare (de exemplu o imagine si copia acesteia foarte putin
deplasata) conduc la reprezentari mult diferite.

5. PERCEPTIA UMANA A IMAGINILOR


Lumina este o forma de radiatie electromagnetica ce poate
fi perceputa de ochiul uman daca este intr-un spectru restrans cu
lungimea de unda cuprinsa intre aproximativ 350-780 nm:

Se considera E() distributia de energie spectrala a luminii emise de o


sursa de lumina, t() si r() transmisivitatea si reflectanta unui obiect (depind de
lungimea de unda). Pentru un obiect transmisiv distributia de energie spectrala
observata este:

C ( ) t ( ) E ( )
iar pentru un obiect reflectant:

C ( ) r ( ) E ( )
Exista trei descriptori (atribute) pentru perceptia luminii: stralucirea,
nuanta (culoarea) si saturatia.
1) In general, pentru doua surse avand aceeasi distributie spectrala
este perceputa ca fiind mai stralucitoare sursa avand intensitatea (energia) mai
mare. Totusi, stralucirea subiectiva (intensitatea perceputa de sistemul vizual
uman) este o functie logaritmica de intensitatea incidenta a luminii. Chiar daca
plaja de luminozitate este mare, aceasta nu poate fi perceputa simultan ci
numai pe anumite portiuni la un moment dat, in functie de adaptarea ochiului.
Exista o serie de experimente care demonstreaza ca stralucirea perceputa nu
este o simpla functie de intensitatea luminoasa:

a) o imagine avand benzi cu nuante de gri strict uniforme este perceputa ca


avand variatii de nuanta, mai ales in zonele de granita dintre dungile alaturate
(benzile lui Mach, dupa Ernst Mach care a descris fenomenul prima data in
1865);

b) fenomenul numit contrast simultan indica faptul ca stralucirea


perceputa a unei regiuni nu depinde exclusiv de intensitatea sa. Chiar daca
toate patratele centrale au aceeasi intensitate luminoasa, acestea sunt
percepute diferit (patratele sunt percepute tot mai intunecoase pe masura ce
fondul devine mai luminos).

Alte experimente care ilustreaza perceptia vizuala umana sunt iluziile optice.
Astfel: a) se poate distinge un patrat, chiar daca nu exista linii reprezentand
laturile sale; b) se poate distinge un cerc; c) segmentele orizontale sunt egale,
dar sunt percepute ca fiind inegale; d) chiar daca nu par, liniile oblice sunt
paralele si echidistante.

2) Un alt atribut care permite distingerea unei lumini rosii de alta verde
este nuanta (hue). Se cunoaste experimentul prin care se obtine
descompunerea unei surse de lumina in componentele sale utilizand o prisma
de sticla (descompunerea luminii albe in componentele sale, obtinand
curcubeul).

3) Cel de-al treilea atribut este saturatia, care permite distingerea unei
lumini intense de o alta mai pastelata, avand aceeasi distributie spectrala.
Aceste trei caracteristici pot fi reprezentate intr-un singur desen,
indicand perceptia umana a luminii:

Retina dispune de trei tipuri de senzori de culoare /


receptori (celule conice pentru lungimi de unda scurte S,
medii M si lungi L):

Graficele raspunsurilor la
culoare ale conurilor:

Varfurile graficelor corespund aprox cu lungimile de unda pentru albastru (445


nm), verde (535 nm) si rosu (575 nm, mai aproape de galben).
=> perceptia de culoare trebuie sa poata fi reprezentata printr-o
combinatie a celor trei culori (perceptii de baza)

Raspunsul unui observator standard la informatia de culoare se


poate masura printr-un set de trei valori (valori tristimuli), direct
proportionale cu cantitatile de rosu, verde si albastru necesare pentru
obtinerea luminii color.
Cele trei valori tristimuli T1, T2 si T3 pot forma axele unui spatiu
de culori. O culoare particulara poate fi reprezentata ca un vector in
acest spatiu, dar este necesar sa se memoreze coordonatele varfului si
nu lungimea vectorului. Prin unirea varfurilor tristimulilor se obtine
triunghiul lui Maxwell. Intersectia unui vector de culoare cu planul
triunghiului furnizeaza o masura a nuantei si saturatiei culorii in termeni
de distanta a punctului fata de varfurile triunghiului.

Uneori luminanta nu este de interes pentru reprezentarea unei culori. In


acest caz nuanta si saturatia de culoare se pot descrie prin coordonate
de cromacitate (valori tristimuli normalizate), definite astfel:

Evident, t3 = 1 t1 t2, deci sunt necesare numai doua coordonate


pentru descrierea unei culori.

In cadrul studiului perceptiei culorilor, unul dintre primele spatii


de culoare definite matematic a fost spatiul CIE 1931 XYZ
(Commission Internationale de lclairage). Valorile tristimuli sunt
reprezentate in spatiul de culori CIE 1931, fiind notate X, Y si Z, sunt
aproximativ (dar nu identic) culorile de baza rosu, verde si albastru
(sunt derivate din acestea).
Deoarece ochiul uman are trei tipuri de senzori de culoare
raspunzand la diferite lungimi de unda, reprezentarea tuturor culorilor
vizibile este un grafic 3D. Conceptul de culoare se poate imparti in
doua componente: stralucire si cromacitate (exemplu: culoarea gri
este tot o culoare alba, dar cu alta stralucire). Astfel cromacitatea
poate fi specificata de numai doi parametri derivati, x si y (valori
normalizate):

X
x
X Y Z
si deci z = 1 x y.

Y
y
X Y Z

Z
z
X Y Z

Spectrul electromagnetic

Spectrul vizibil este prezentat marit (dar in realitate reprezinta o sectiune


extrem de ingusta din spectrul electromagnetic).
Spectrul se poate exprima in termeni de lungime de unda, frecventa sau
energie. Relatie:
= c/
unde c este viteza luminii (2.998x108 m/s)

6. SESIZAREA IMAGINII SI ACHIZITIA


Structura unui senzor de imagine, aranjarea in retea liniara si amplasarea intr-o
retea bidimensionala:

In multe echipamente de achizitie de imagine, inclusiv camere (foto/video) se


utilizeaza senzori CCD (Charge-Coupled Device) sau CMOS APS (Active Pixel
Sensor), plasati intr-o retea 2D de ordinul 4000x4000 sau chiar mai mult.
Reteaua de senzori produce iesiri proportionale cu integrala luminii (energiei)
receptionate de fiecare senzor, semnalele analogice fiind convertite in valori
digitale (convertoare analog/digitale).

Model simplu pentru formarea imaginii


O imagine poate fi repezentata printr-o functie de doua variabile f(x, y),
pozitiva si finita:
0 < f(x, y) <
Se disting doua componente: iluminarea incidenta de la sursa de lumina si
iluminarea reflectata de obiectele din scena (denumite componentele de
iluminare si reflectanta):
f(x, y) = i(x, y) r(x, y)
unde
0 < i(x, y) <
0 < r(x, y) < 1
Exemplu: intr-o zi insorita iluminarea produsa de soare este peste 90000 lm/m 2
(lumen/m2), respectiv 10000 lm/m2 intr-o zi innorata, iar luna furnizeaza 0.1
lm/m2. Catifeaua neagra are reflectanta 0.01, otelul inoxidabil 0.65, perete
vopsit alb 0.80, iar zapada 0.93.

Esantionare si cuantizare
Esantionarea si cuantizarea unei linii de scanare din imagine:

Imaginea continua proiectata pe aria de senzori si rezultatul reprezentat de


imaginea esantionata si cuantizata:

Aliasing
Efectul de blur
Conform teoremei lui Nyquist daca rata de esantionare < 2x frecventa
cea mai mare a semnalului => aliasing!
Efectul de blur poate sa apara la achizitie cand rata de esantionare
este foarte mica. Daca pentru imaginea urmatoare se utilizeaza o rata de
esantionare pe orizontala foarte mica (ex: 20 esantioane/linie) se obtine o
imagine impartita in blocuri (fiecare bloc o culoare constanta). Schimbarile de
culoare in aria unui bloc nu pot fi sesizate.

Efectul utilizarii unui numar redus de biti pentru cuantizare produce


aparitia unor zone mari de culoare uniforma (ex: reducerea de la 2 24 culori la
12).

Pattern-uri Moir
Ca o simpla aplicatie a teoremei lui Nyquist pentru o imagine cu dungi
verticale:

Se obtin rezultate eronate pentru frecventa esantionare < 10 esantioane/linie


(ex: f=5esantioane/linie => fie imagine complet alba fie complet neagra).

Se pot obtine efecte Moir mai interesante pentru imagini mai


complexe. Imagine cu dungi inclinate esantionata cu o retea rectangulara (linii
orizontale si verticale de esantionare se presupune ca daca mai mult de
bloc esantionare este umplut cu negru, rezulta la digitizare pixel negru, altfel
alb):

Efectul Moir poate sa apara si la fotografierea unei scene, daca se


utilizeaza o rezolutie insuficienta:

Pattern-urile Moir

Pattern-urile adevarate

Evitarea efectului: la fotografiere se schimba


fie unghiul de incidenta sau rezolutia
fotografiei (se poate pastra rezolutia, dar se
modifica usor focalizarea).

Pentru preluarea unei imagini se utilizeaza ca senzor o matrice de


celulele fotosensibile aranjate astfel incat fiecare celula sa detecteze o singura
componenta de culoare (prin utilizarea unui filtru).

Pattern-ul din imagine= filtru Bayer. De remarcat numar dublu de celule G fata de R si B
(sensibilitatea ochiului uman la culoarea verde).

Se utilizeaza interpolarea pentru a deduce celelalte doua


componente de culoare din celulele vecine. Operatia de interpolare poate
duce la aliasing.
Demozaicare: algoritmul pentru derivarea celor doua canale de
culori lipsa pentru fiecare celula. Se utilizeaza un algoritm cel mai
apropiat vecin pentru a determina culoarea c a unei celule pe baza
vecinilor cei mai apropiati avand culoarea c.
Se considera un bloc mxn, in care vecinii cei mai apropiati celulei
(i,j) sunt celulele
(i 1, j 1),(i 1, j),(i 1, j +1),(i, j 1),(i, j +1),(i +1, j 1),(i +1, j),(i +1, j +1)
unde 0 i m si 0 j n.

algoritm nearest_neighbor
{
Pentru fiecare celula (i,j) care detecteaza culoarea c1 {
Pentru fiecare culoare c2 {red,green,blue} astfel incat c2 c1 {
S = setul vecinilor cei mai apropiati celulei (i,j) avand culoarea c2
Seteaza valoarea de culoare pentru c2 la celula (i,j) egala cu media
valorilor de culoare c2 la celulele din S
}
}
}

Exemplu de aplicare a algoritmului:

(stanga: calcularea valorilor pentru R si B din cate doi vecini; dreapta:


calcularea valorilor pentru G si B din cate patru vecini).

Muchii zimtate
Acest tip de aliasing apare la generarea unei imagini si nu la achizitie,
rezultand din rezolutia finita a display-ului si afisarea de unitati discrete (pixeli).
Exemplu: trasarea unei linii de grosime un pixel.

Trasarea unei linii intre doua puncte:

algoritm draw_line
/*Input: x0, y0, x1, y1 coordinatele capetelor segmentului; c culoarea liniei.
Output: linia afisata pe ecran.*/
{
/*Obs. Se includ tipurile de date fiind importante in intelegerea algoritmului*/
int dx, dy, num_steps, i
float x_increment, y_increment, x, y
dx = x1 x0
dy = y1 y0
if (absolute_value(dx) > absolute_value(dy))
then num_steps = absolute_value(dx)
else num_steps = absolute_value(dy)
x_increment = float(dx) / float (num_steps)
y_increment = float (dy) / float (num_steps)
x = x0
y = y0
/*round(x) rotunjeste la cel mai apropiat intreg*/
draw(round(x), round(y), c)
for i = 0 to num_steps1 {
x = x + x_increment
y = y + y_increment
draw(round(x), round(y), c)
}
}

Algoritmul se poate generaliza pentru trasarea de linii de orice grosime.


Exemplu: linie de grosime doi pixeli intre punctele de coordonate (8,1) si (2,15).
Se considera o linie ideala trasata intre cele doua capete. Pentru generarea
liniei intr-o imagine bitmap algoritmul trebuie sa determine care pixeli sunt
intersectati de aria ideala cu latimea doi pixeli: un pixel este colorat in negru
daca cel putin jumatate din aria sa este acoperita de linia ideala cu grosimea
doi pixeli.

Rezulta o linie afectata de aliasing.

Anti-aliasing este o tehnica de reducere a aspectului zimtat al liniilor


trasate: se coloreaza un pixel cu o nuanta a culorii proportionala cu procentul in
care pixelul este acoperit de linie. Pentru exemplul precedent, daca un pixel
este acoperit complet de linie atunci se coloreaza in negru, daca este acoprit
doar 50% atunci primeste o valoare de gri la jumatate intre alb si negru, etc. Se
obtine un aspect mai lin pentru segmentul de dreapta.

Fenomenul de aliasing apare si la marirea obiectelor intr-o imagine


(exemplu: marirea unei linii). Procesul = upsampling. Prin upsampling se
accentueaza aliasing-ul dintr-o imagine. Exemplu: o linie de grosime un pixel
este marita de doua ori, apoi de patru ori.

Exista algoritmi de marire care atenueaza aspectul de linie zimtata, dar nu


elimina complet aliasing-ul.
In grafica vectoriala aliasing-ul este mai putin accentuat la upsampling,
deoarece segmentul de dreapta este generat din nou pe baza coordonatelor
capetelor.

S-ar putea să vă placă și