Documente Academic
Documente Profesional
Documente Cultură
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).
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).
Cateva aplicatii !
Halftoning:
Detectarea fetelor:
2. CLASE DE IMAGINI
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).
0
01
011
0111
01111
011111
0111111
01111111
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.
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
26
3
1 EOB
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.
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.
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.
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
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:
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:
Graficele raspunsurilor la
culoare ale conurilor:
X
x
X Y Z
si deci z = 1 x y.
Y
y
X Y Z
Z
z
X Y Z
Spectrul electromagnetic
Esantionare si cuantizare
Esantionarea si cuantizarea unei linii de scanare din imagine:
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.
Pattern-uri Moir
Ca o simpla aplicatie a teoremei lui Nyquist pentru o imagine cu dungi
verticale:
Pattern-urile Moir
Pattern-urile adevarate
Pattern-ul din imagine= filtru Bayer. De remarcat numar dublu de celule G fata de R si B
(sensibilitatea ochiului uman la culoarea verde).
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
}
}
}
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.
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)
}
}