Sunteți pe pagina 1din 41

Universitatea Valahia din Targoviste

Facultatea de Inginerie Electrica, Specializarea: Telecomunicatii, Anul IV,


Semestrul I
Student: Dragan Sebastian-Ionut

Universitatea "Valahia" din Targoviste


Sisteme & Tehnologii Avansate de Telecomunicatii

Codare & Prelucrare Video


- tema de laborator Matlab-

Universitatea Valahia din Targoviste


Facultatea de Inginerie Electrica, Specializarea: Telecomunicatii, Anul IV,
Semestrul I
Student: Dragan Sebastian-Ionut

Universitatea Valahia din Targoviste


Facultatea de Inginerie Electrica, Specializarea: Telecomunicatii, Anul IV,
Semestrul I
Student: Dragan Sebastian-Ionut

Student: Dragan Sebastian-Ionut


SAT, Anul II
2014

Codare & prelucrare video


- tema de laborator 1. Construiti o imagine de dimensiune 512x512 reprezentand un patrat centrat cu latura de 128 de pixeli.
a. Generati 4 astfel de imagini avand patratul central cu nivelul de gri 128, iar fondul 0, respectiv fondul
80, 160, 255.
b. Afisati imaginile folosind functiile image(), imagesc(), imshow(), colormap(gray()).
c. Afisati si comparati cele 4 imagini. Comentati.
Generam imaginea de 512x512 folosita ca fundal dupa ce am creat functia urmatoare in directorul
C:\Program Files\MATLAB\R2011b\patrat.m . Numele fisierului trebuie sa fie neaparat patrat.m pentru
ca apelarea sa functioneze:
function a=patrat(N,F)
for i=1:N;
for j=1:N;
a(i,j)=F;
end
end
end
Introducem comenzile urmatoare in Command Window:
>>a=patrat(512,0);
>> image(a)
>> colormap(gray(256))
Vom obtine imaginea din figura alaturata (>>):

Universitatea Valahia din Targoviste


Facultatea de Inginerie Electrica, Specializarea: Telecomunicatii, Anul IV,
Semestrul I
Student: Dragan Sebastian-Ionut

Universitatea Valahia din Targoviste


Facultatea de Inginerie Electrica, Specializarea: Telecomunicatii, Anul IV,
Semestrul I
Student: Dragan Sebastian-Ionut
Pentru a reprezenta un patrat cu latura de 128 de pixeli in interiorul imaginii de 512x512 vom crea
fisierul C:\Program Files\MATLAB\R2011b\patratinpatrat.m continand functia:
function b=patratinpatrat(N,L,F)
for i=1:N;
for j=1:N;
b(i,j)=F;
end
end
L1=(512-128)/2;
C1=L1;
for i=L1:L1+128;
for j=C1:C1+128;
b(i,j)=L;
end
end
Dupa ce am scris si salvat functia, ne intoarcem in Command Window si introducem urmatoarele
comenzi de apelare:
>> b=patratinpatrat(N,L,F);
>> image(b)
In functia patratinpatrat(N,L,F) avem:
*N este marimea imaginii (512 in cazul nostru)
*L este latura patratului centrat in imagine (128 in cazul nostrul)
*F este culoarea fundalului imaginii noastre (0, 80, 160, 255), unde:
F=0 este valoarea pentru negru
F=255 este valoarea pentru alb imaculat
Toate valorile cuprinse intre 0 si 255 sunt nivele de gri, tinand cont de faptul ca am folosit paleta
de culori colormap(gray(256)).
In continuare vom afisa aceeasi imagine de mai multe ori folosind diferite niveluri de gri din
paleta colormap(gray(256).
Vom folosi valorile 0, 80, 160, 255 pentru a sesiza diferentele de nivel de gri mai usor, avand in
vedere ca un ochi uman perfect distinge in jur de 200 de niveluri diferite de gri.

Universitatea Valahia din Targoviste


Facultatea de Inginerie Electrica, Specializarea: Telecomunicatii, Anul IV,
Semestrul I
Student: Dragan Sebastian-Ionut

Pentru:
>> b=patratinpatrat(512,128,0);
>> image(b)
Obtinem:

Pentru
>> b=patratinpatrat(512,128,80);
>> image(b)
Obtinem:

Pentru:
>> b=patratinpatrat(512,128,160);
>> image(b)
Obtinem:

CPV: Codare & Prelucrare Video

Pentru
>> b=patratinpatrat(512,128,255);
>> image(b)
Obtinem:

Observam cum patratul din centru este scos mai mult sau mai putin in evidenta in functie de nivelul de gri
folosit pentru fundal.
Acum dupa ce ne-am jucat cu diferitele niveluri de gri la punctul (a), trecem la punctul (b) unde vom
incerca sa remarcam diferentele dintre comenzile image( ), imagesc( ), imshow( ), colormap(gray( )).
Introducem in Command Window urmatoarele comenzi:
>>b=patratinpatrat(512,128,0);
>>colormap(gray(256));
Acum vom afisa imaginea lui b folosind pe rand image( ), imagesc ( ) si imshow ( ):
Pentru image(b) obtinem :

Pentru imagesc(b) obtinem :

Student: Dragan Sebastian-Ionut, SAT, Anul II

CPV: Codare & Prelucrare Video

Pentru imshow(b) obtinem :

Avand ca si comparatie cele 3 imagini de mai sus, observam ca image(b) si imagesc(b) afiseaza
imaginea pe o axa de coordonate (x,y), cu diferenta ca imagesc(b) scaleaza datele imaginii astfel inca sa
foloseasca valorile minime si maxime din colormap(gray(256)), in cazul nostru negru (0) si alb (255).
Comanda imshow( ) nu afiseaza axa de coordonate (x,y), ci in schimb afiseaza imaginea la marimea ei
naturala (512x512 pixeli).
2. Benzile lui Mach. Generati o imagine de dimensiune 512x512 reprezentand o mira cu m benzi
orizontale (m=4-16).
a. Priviti cu atentie imaginea afisata. Comentati.
b. Reprezentati grafic cu functia plot() profilul liniei 256. Figurati profilul liniei percepute de
dumneavoastra.
In fisierul C:\Program Files\MATLAB\R2011b\benzimach.m scriem functia pentru afisarea benzilor lui
Mach (N=marimea imaginii, b=numarul de benzi Mach):
function c=benzimach(N,b)
for i=1:N;
for j=1:N;
c(i,j)=0;
end
end
L=256;
d=N/b;
for i=1:b;
c(1:N,(i-1)*d+1:i*d)=L/b*(i-1);
l=1+L/b*i;
end
In Command Window introducem urmatoarele comezi:
>>c=benzimach(512,6)
>>image(c)

*Atentie sa nu punem ; dupa ce inchideti paranteza

Student: Dragan Sebastian-Ionut, SAT, Anul II

CPV: Codare & Prelucrare Video

Obtinem o imagine de 512x512 pixeli cu 6 benzi, reprezentand o succesiune ascendenta de nivele de gri
incepand de la stanga (negru) spre dreapta (alb imaculat).

In continuare vom folosi comanda plot(c) si vom obtine graficul din imaginea de mai jos:

3. Scrieti o functie care sa genereze imaginea unui disc de raza R si nivel de gri A centrat pe un fundal
uniform de nivel de gri B. Folositi functia pentru a obtine imaginea alaturata. Priviti cu atentie figura si
comentati.
Student: Dragan Sebastian-Ionut, SAT, Anul II

CPV: Codare & Prelucrare Video

In figura din dreapta avem o imagine patrata cu un


fundal alb si 4 cercuri negre peste care pare a fi suprapus un alt
patrat asezat in centrul imaginii, acoperind cate un sfert din
cercuri la colturile patratului aparent. Patratul in sine nu exista
deoarece este de aceeasi culoare cu fundalul, insa mintile
noastre il sugereaza ca urmare a faptului ca are colturile
marcate, acestea fiind sugerate de cele 4 cercuri asezate in mod
convenabil.

Mai intai vom crea o functie pe care o vom numi in mod intuitiv d=cercinpatrat(N,R,L,F) in
fisierul C:\Program Files\MATLAB\R2011b\cercinpatrat.m si vom salva continutul acestui fisier:
function d=cercinpatrat(N,R,L,F)
for i=1:N;
for j=1:N;
if(i-N/2)^2+(j-N/2)^2<R^2;
d(i,j)=L;
else
d(i,j)=F;
end
end
end
In functia noastra avem urmatorii parametri:
N=marimea imaginii
R=raza cercului
L=culoarea din interiorul cercului
F=culoarea de fundal a imaginii
Avand creata deja functia, acum introducem in Command Window urmatoarele date:
>>d=cercinpatrat(512,128,0,255);
>>image(d)
Astfel, obtinem imaginea urmatoare:

Student: Dragan Sebastian-Ionut, SAT, Anul II

CPV: Codare & Prelucrare Video

Daca vom introduce apoi in Command Window comenzile:


>>e=[d d; d d]
>>image(e)
Vom obtine imaginea urmatoarea:

Continuand cu introducerea de date in Command Window, vom adauga comenzile:


>> e(256:512+256,256:512+256)=255;
>> image(e)
Astfel obtinem imaginea la care trebuia sa ajungem:

4. Comentati ce observati in figurile de mai jos. Incercati sa generati astfel de figuri folosind matlab.

Student: Dragan Sebastian-Ionut, SAT, Anul II

CPV: Codare & Prelucrare Video

In imaginea de mai sus avem in partea stanga 2 drepte de aceeasi lungime, insa cea de sus pare a avea o
lungime mai mica decat cea a dreptei de dedesubt ca urmare a faptului ca varfurile celor 2 drepte sunt
marcate intr-un mod care sa pacaleasca ochiul uman si sa sugereze acesta iluzie subtila.
In partea dreapta a imaginii avem un patrat la care sunt trasate cele 2 diagonale, iar mijloacele laturilor
opuse sunt unite prin 2 segemente. Faptul ca aceste 4 segmente sunt discontinue in apropiere de centrul
patratului sugereaza existenta unui cerc al carui contur nu este trasat. Cercul in sine nu exista dar minte
noastra totusi il percepe ca fiind existent.

RGB
1. Incarcati in memorie o imagine color folosind functia imread( ).
a) Afisati imaginea (functia image( ) );
b) Observati dimensiunile, tipul de date, memorie ocupata, etc, folosind comanda whos. Generati o
imagine monocroma cu acelasi numar de linii si coloane reprezentand un disc alb pe fond negru.
Comparati memoria ocupata de imaginea color si imaginea monocroma studiati functiile uint8( ) si
double( );
c) Afisati componentele de rosu, verde, albastru ca imagini alb/negru. Pentru schimbarea paletei de culori
se foloseste functia colormap( );
d) Afisati componenta R (Rosu), G (Verde), B (Albastra).
a) Scriem in Command Window:
>> s=imread('floare.jpg');
>> image(s) % imaginea din dreapta
b) Scriem in Command Window:
>> whos
Name
Size
Bytes Class Attributes
s

328x500x3

492000 uint8

Cream fisierul imcerc.m in folderul work care sa


contina urmatoarea functie Matlab:
function a=imcerc(M,N,R,L,F);
for i=1:M;
for j=1:N;
if (i-M/2)^2+(j-N/2)^2<R^2;
a(i,j)=L;
else
a(i,j)=F;
end
end
end
Student: Dragan Sebastian-Ionut, SAT, Anul II

CPV: Codare & Prelucrare Video

Ne intoarcem in Command Window si scriem:


>> c=imcerc(328,500,128,255,0);
>> image(c)
>> colormap(gray(256));

Vom obtine imaginea din dreapta:


Scriem in Command Window:
>> whos
Name
Size
Bytes Class
c
s

328x500
328x500x3

1312000 double
492000 uint8

Observam ca imaginea c, adica cercul pe


fundal negru foloseste mai multi biti decat
imaginea cu floarea policolorata s (floare.jpg),
deoarece c este in format .bmp, adica bitmap harta de biti, iar s (floare.jpg) este in format
comprimat cu extensie .jpg care este un
acronim pentru Joint Photographic Experts
Group.
uint8( ) = Conversie pe 8 biti fara semn in numere intregi;
double( ) = Conversie cu precizie in numere reale.
c) Scriem in Command Window:
>> r=s(1:328,1:500,1);
>> image(r) % imaginea din dreapta =>

>> r=s(1:328,1:500,2);
>> image(r) % <= imaginea din stanga

Student: Dragan Sebastian-Ionut, SAT, Anul II

CPV: Codare & Prelucrare Video

9
Componenta de culoare rosie (fr = floare rosie) a
imaginii sursa (s):

>>
>>
>>

r=s(1:328,1:500,2);
fr(:,:,1)=s(:,:,1);
fr(:,:,2)=0;

>>
>>

fr(:,:,3)=0;
image(fr) % imagine dreapta =>
Componenta de culoare verde (fv = floare verde) a
imaginii sursa (s):
>> r=s(1:328,1:500,2);
>> image(r)
>> fv(:,:,2)=s(:,:,2);
>> fv(:,:,3)=0;
>> fv(:,:,1)=0;
>> image(fv) % <= imagine stanga

Componenta de culoare albastra (fb = blue flower) a


imaginii sursa (s):
>> r=s(1:328,1:500,2);
>> fb(:,:,3)=s(:,:,3);
>> fb(:,:,1)=0;
>> fb(:,:,2)=0;
>> image(fb) % imagine dreapta =>
>> whos
Name
Size
ans
328x500x3
c
328x500
fb
328x500x3
fr
328x500x3
fv
328x500x3
fr
328x500x3
r
328x500
s
328x500x3

Bytes
492000
1312000
492000
492000
492000
492000
164000
492000

Class Attributes
uint8
double
uint8
uint8
uint8
uint8
uint8
uint8

Student: Dragan Sebastian-Ionut, SAT, Anul II

CPV: Codare & Prelucrare Video

10

2. a) Generati si afisati imaginea a 3 cercuri (discuri) de culori rosu, verde, albastru, cercurile (discurile)
avand centrele in varfurile unui triunghi. Alegeti raza astfel incat discurile sa se intersecteze. Ce se va
intampla cand centrele celor 3 discuri coincid. Verificati experimental.
b) Scrieti o functie care sa genereze o sfera;
c) Repetati punctul (a) inlocuind discurile cu sfere. Comentati rezultatele obtinute.
a) Cream fisierul imdisc.m care sa contina functia:
function out=imdisc(N,R,L,F,x,y)
for i=1:N;
for j=1:N;
if (i-x)^2+(j-y)^2<R^2;
out(i,j)=L;
else
out(i,j)=F;
end
end
end
Scriem in Command Window:
>> A(:,:,1)=imdisc(512,100,255,0,192,192);
>> A(:,:,2)=imdisc(512,100,255,0,192,320);
>> A(:,:,3)=imdisc(512,100,255,0,320,255);
>> image(d1)
>> d1=uint8(A);
>> image(d1) % imagine dreapta =>

>> image(d1)
>> A(:,:,1)=imdisc(512,100,255,0,192,255);
>> A(:,:,2)=imdisc(512,100,255,0,320,192);
>> A(:,:,3)=imdisc(512,100,255,0,320,320);
>> d2=uint8(A);
>> image(d2) % imagine dreapta =>
% Observam ca din suprapunerea culorilor
obtinem:
Rosu + Verde = Galben
Rosu + Albastru = Violet (Magenta)
Verde + Albastru = Cyan
Rosu + Verde + Albastru = Alb
>> A(:,:,1)=imdisc(512,100,255,0,192,192);
>> A(:,:,2)=imdisc(512,100,255,0,192,192);
>> A(:,:,3)=imdisc(512,100,255,0,192,192);
>> d3=uint8(A);
>> image(d3) % Observam ca din suprapunerea celor 3 discuri (rosu, verde, albastru reiese albul)
Student: Dragan Sebastian-Ionut, SAT, Anul II

10

CPV: Codare & Prelucrare Video

11

c) Cream fisierul imsfera.m care sa contina urmatoarele linii de cod:


function out=imsfera(N,R,L,F,x,y)
for i=1:N;
for j=1:N;
if (i-x)^2+(j-y)^2<R^2;
out(i,j)=sqrt(R^2+(i-x)^2+(j-y)^2);
out(i,j)=L;
else
out(i,j)=F;
end
end
end
Ne intoarcem in Command Window si scriem:
>> sf=imsfera(512,100,128,0,392,200);
>> image(sf) % imagine dreapta =>
Student: Dragan Sebastian-Ionut, SAT, Anul II

11

CPV: Codare & Prelucrare Video

12

>> A(:,:,1)=imsfera(512,100,128,0,192,192);
>> A(:,:,2)=imsfera(512,100,128,0,192,192);
>> A(:,:,3)=imsfera(512,100,128,0,192,192);
>> sf=uint8(A);
>> image(sf) % <= imagine stanga
>>

A(:,:,1)=imsfera(512,100,128,0,192,192);
>> A(:,:,2)=imsfera(512,100,128,0,192,320);
>> A(:,:,3)=imsfera(512,100,128,0,320,255);
>> sf1=uint8(A);
>> image(sf1)
>> image(sf1) % imagine dreapta =>
>> A(:,:,1)=imsfera(512,100,128,0,192,255);
>> A(:,:,2)=imsfera(512,100,128,0,320,192);
>> A(:,:,3)=imsfera(512,100,128,0,320,320);
>> sf2=uint8(A);
>> image(sf2) % imagine dreapta =>

Student: Dragan Sebastian-Ionut, SAT, Anul II

12

CPV: Codare & Prelucrare Video

13

3. Incarcati in memorie imaginea mandrill folosind comanda load mandrill. La examinarea memoriei
(comanda whos) se constata ca imaginea este memorata sub numele X imagine monocroma si sub
numele map este stocata o paleta de culori.
a) Afisati imaginea mandrill alb/negru;
b) Afisati imaginea color (schimband paleta de culori);
c) Generati o imagine RGB identica. Comentati rezultatele obtinute.
a,b,c) In Command Window scriem:
>> load mandrill
>> whos
Name
Size
Bytes Class
X
480x500
caption
2x1
map
220x3

Attributes

1920000 double
4 char
5280 double

>> image(X) % imagine dreapta =>

>> colormap(gray(256) % imagine dreapta =>

>> r(:,:,1)=X;
>> r(:,:,2)=0;
>> r(:,:,3)=0;
>> r=uint8(r);
>> image(r) % <= imagine stanga

Student: Dragan Sebastian-Ionut, SAT, Anul II

13

CPV: Codare & Prelucrare Video

14

>>
g(:,:,1)=X;
g(:,:,2)=X;
g(:,:,1)=0;
g(:,:,3)=0;
g=uint8(g);
image(g) % => imagine dreapta

>>
>>
>>
>>
>>

>> b(:,:,3)=X;
>> b(:,:,1)=0;
>> b(:,:,2)=0;
>> b=uint8(b);
>> image(b) % <= imagine stanga

Restaurarea imaginilor
Procesul de restaurare reprezint o ncercare de a obine o imagine,
considerat original avnd la dispoziie versiunea sa corupt i informaii
despre procesul care a cauzat corupia. Aceast informaie este esenial deoarece ne
permite s apreciem dac i n ce msur a fost corupt originalul. De o egal
importan este ns i cunoaterea unor detalii despre imaginea original, fie sub
forma unor proprieti statistice, fie sub forma unei cunoateri a priori a
originalului de ctre cel ce face restaurarea. Scopul procesului de restaurare este de
a elimina, prin operaii de filtrare, aceste degradri.
Degradrile imaginii pot fi mprite, dupa originea lor, n patru categorii:
degradri datorate sistemului de captare a imaginii (distorsiuni de apertur,
proast focalizare a camerei, micare relativ obiect-camer);
degradri datorate sistemului de reproducere a imaginii (blurring-ul de
exemplu);
degradri datorate zgomotului prezent n oricare pas al procesului de
prelucrare a imaginii;
degradri datorate efectelor secundare ale operaiilor de restaurare.
Dup modul n care pot fi eliminate, degradrile se pot mpri n:
degradri care se pot elimina printr-o operaie invers;
Student: Dragan Sebastian-Ionut, SAT, Anul II

14

CPV: Codare & Prelucrare Video

15

degradri care nu au operaie invers (apariia zgomotului, aditiv sau


multipicativ).
Exist trei categorii de tehnici de restaurare:
modelarea imaginii i a degradrii;
filtrare liniar n diverse variante (invers i pseodoinvers, Wiener,
interpolri spline);
alte metode cum ar fi: filtrarea neliniar, operaii de reconstrucie statistic,
etc.

Modelarea imaginii i a degradrii


Toi algoritmii de refacere se bazeaz pe exploatarea unor caracteristici ale
semnalului i a degradrii, exactitatea acestei informaii fiind esenial pentru
succesul reconstruciei. Pentru a obine informaia despre degradarea prezent n
imagine exist dou metode: prima se bazeaz pe estimarea funciei de probabilitate
sau a densitii spectrale a zgomotului; cea de-a doua se bazeaz pe studierea
mecanismului care a cauzat degradarea i modelarea acestuia.
Prima metod implic gsirea unei poriuni din imagine ale crei proprieti
s fie cunoscute (de exemplu o zon de intensitate uniform, cum ar fi cerul);
prezena zgomotului n aceast arie poate fi uor pus n eviden i msurat.
Cea de-a doua metod, modelarea mecanismului de degradare, nu presupune
nici o cunotin a priori despre imaginea degradat, dar necesit unele informaii
despre modul n care s-a produs degradarea.

Restaurarea imaginilor prin filtrare (liniar i neliniar)


Filtrarea liniar acioneaz asupra ntregii imagini i, n consecin, este
utilizat doar cnd perturbaia care trebuie eliminat a afectat ntreaga imagine.
Filtrarea neliniar acioneaz selectiv asupra anumitor zone ale imaginii, fiind
utilizat atunci cnd este necesar restaurarea unor poriuni ale imaginii.
Semnalul de la ieirea unui filtru liniar poate fi scris ca o sum ponderat a
eantioanelor semnaluluide la intrare.
n cazul filtrelor neliniare aceast proprietate nu mai este adevrat, deci la
ieirea filtrelor neliniare se pot regsi componente care nu au corespondent n
semnalul de intrare.

Student: Dragan Sebastian-Ionut, SAT, Anul II

15

CPV: Codare & Prelucrare Video

16

Metode de proiectare a filtrelor bidimensionale digitale cu rspuns finit


la impuls
Metoda eantionrii n frecven

Caracteristica de frecven dorit H d ( 1 , 2 ) a filtrului 2D este eantionat


echidistant n punctele:
k1 ( 2 / N1 )k1 , 0 k1 N1 1

(4.1)

k 2 ( 2 / N 2 )k 2 , 0 k 2 N 2 1

(4.2)

H ( k1 , k 2 ) H d ( k1 ,k 2 )

(4.3)

obinndu-se
Funcia Matlab corespunztoare este FSAMP2.

Filtrare Trece Jos

ordin

f. tiere

0.3

0.6

(metoda) fsamp

fwind

11

fwind

ftrans

Metoda de restaurare prin filtrare trece-jos se bazeaz pe faptul c o


categorie larg de imagini sunt constituite n principal din frecvene joase; zgomotul
alb, chiar dac ocup tot spectrul este suprtor doar la frecvene nalte, acolo unde
amplitudinea sa este comparabil cu cea a semnalului util. Dac informaia
coninut n imagine este localizat n special la frecvene joase, se poate aplica un
filtru trece-jos care s pstreze informaia util i s elimine zgomotul. Se remarc
reducerea vizibilitii zgomotului, dar i apariia efectului secundar de estompare
prin atenuarea frecvenelor spaiale nalte din imagine.
Filtrare Trece Sus

ordin

f. tiere

0.3

0.6

fwind

fsamp

11

ftrans

fwind

O imagine estompat are amplitudinea componentelor de frecven nalt


redus, ceea ce provoac estomparea, dispariia detaliilor. O soluie simpl, dar nu
foarte eficient la aceast problem este filtrarea trece-sus.
Pe lnga filtrarea trece-jos sau trece-sus, n unele aplicaii este util i
filtrarea de tip trece-band.

Student: Dragan Sebastian-Ionut, SAT, Anul II

16

CPV: Codare & Prelucrare Video

17

[f1,f2] = freqspace(41,'meshgrid');
r = sqrt(f1.^2 + f2.^2);
% Rspunsul n frecven dorit
Hd = ones(41);
Hd((r<0.1) | (r>0.3)) = 0;
% Rspunsul la impuls obinut
h = fsamp2(Hd);
figure(1),freqz2(h)
% Filtrarea imaginii imag1.tif
A=imread('imag1.tif');
figure(2),imshow(A)
B=filter2(h,A);
B=(B-min(min(B)));
B=B/max(max(B));
figure(3),imshow(B)

Filtre FIR speciale


Sunt filtre cu funcii de transfer speciale folosite la transformarea imaginilor
(gaussian, gaussian invers), analiza i mbuntirea imaginilor (laplacean, unsharp)
sau pentru mediere spaial (average).
Funcia Matlab este FSPECIAL.

Gaussian

Student: Dragan Sebastian-Ionut, SAT, Anul II

Average

17

CPV: Codare & Prelucrare Video

Laplaceanul filtrului gaussian

18

Unsharp

Caracteristica de frecven pentru cteva filtre speciale.


Principalele caracteristici ale ctorva dintre aceste filtre speciale vor fi discutate n
cele ce urmeaz.
Filtrul trece-jos cu caracteristic Gaussian

Principalul neajuns al folosirii filtrrii trece-jos ca metod de atenuare a


zgomotului l constituie apariia efectului secundar de estompare (atenuarea
frecvenelor spaiale nalte din imagine).
O soluie a acestei probleme este folosirea unor caracteristici de frecven
care s atenueze progresiv frecvevenele nalte. Dintre acestea se pot aminti
caracterstica Hanning (cosinusoidal), Gauss (exponenial) sau Butterworth de
ordin n.
Bineneles c parametrii acestor caracteristici vor fi alei astfel nct s
realizeze un compromis acceptabil ntre reducerea zgomotului i estomparea
introdus.
Filtrai imaginea peisaj_g.tif (afectat de zgomot alb) cu filtrele gaussiene
urmtoare:
h1=fspecial(gaussian,3,0.8);
h2=fspecial(gaussian,3,0.5);

Cum este afectat eficiena reducerii zgomotului de valoarea ales pentru


dispersie ? Ce putei spune despre estomparea introdus n cele dou cazuri?
Filtrai imaginea imag1.tif cu funcia pondere:
h3=fspecial(log,3,0.7)
Filtre de gradient

Sunt filtre care se aplic pentru determinarea tranziiior nivelurilor de gri din
imagine (prin calculul derivatei n 2 sau 3 puncte) i se utilizeaz n analiza
imaginilor pentru detecia contururilor.
Filtre de gradient de ordin 1
Student: Dragan Sebastian-Ionut, SAT, Anul II

18

CPV: Codare & Prelucrare Video

19

Pentru o imagine I ( x, y ) gradientul de ordin 1 se poate calcula cu


formulele:
I ( x, y )
I ( x, y ) I ( x 1, y )
x

(4.4)

I ( x, y )
I ( x, y ) I ( x, y 1)
y

(4.5)

Ceea ce conduce la funciile pondere ale filtrelor de gradient


pe direcia x:
pe direcia y:

h1 ( x, y ) 1 1

(4.6)

h 2 ( x, y )

(4.7)

Alte exemple de funcii pondere pentru filtre de gradient de ordin 1 sunt date
n tabelul urmtor:
Numele filtrului

Gradient pe direcia x

Prewitt:

1
1

0
0
0

1
1
1

Sobel:

1
2

0
0
0

1
2
1

Gradient pe direcia y

1
0
1

1
0
1

1
0
1

1
0
1

2
0
2

1
0
1

Exemple de funcii pondere pentru filtre de gradient de ordin 2 sunt date n


tabelul urmtor:
Gradientul de ordin 2
pe direcia x

Gradientul de ordin 2
pe direcia y

Laplaceanul

1
1
1
3
1

2
2
2

1
1
1

1
1
2
3
1

1
2
1

1
2
1

2
1
1
3
2

1
4
1

2
1
2

1
1
2
4
1

2
4
2

1
2
1

1
1
2
4
1

2
4
2

1
2
1

1
1
0
2
1

0
4
0

1
0
1

Filtrai imaginea grad.tif cu filtrele de gradient de ordin 1 i 2 prezentate mai sus.


Filtrai imaginea imag1.tif cu funciile pondere obinute cu funcia FSPECIAL,
pentru filtre de gradient:
h1=fspecial(sobel);
h2=fspecial(prewitt);
Student: Dragan Sebastian-Ionut, SAT, Anul II

19

CPV: Codare & Prelucrare Video

20

Filtrul de mediere (average)

Metoda stabilete valoarea fiecrui pixel ca fiind media ponderat dintre


valoarea sa i valorile vecinilor si. n general, coeficienii de ponderare sunt alei
egali . Operaia corespunde unei filtrri liniare.
n domeniul frecven, filtrul de mediere are o form de tip trece-jos (vezi
Figura 4.1), n consecin medierea spaial este utilizat pentru atenuarea
zgomotului.
Filtrai imaginea imag1.tif cu funcia pondere: h3=fspecial(average,3)

O alt funcie Matlab care realizeaz operaia de mediere este MEDFILT2.


J=MEDFILT2(I,[M N]) realizeaz filtrarea prin mediere a imaginii I,
calculnd media n jurul fiecrui pixel pe o vecintate dat de M i N.
Filtrul median bidimensional

Filtrarea median este o operaie neliniar la nivel de pixel ce ia n


considerare vecintatea acestuia. Pixelul din imaginea de intrare se nlocuiete cu
media pixelilor coninui ntr-o fereastr din jurul pixelului. Algoritmul de filtrare
median necesit aezarea valorilor pixelilor din fereastra W n ordine cresctoare
sau descresctoare i determinarea valorii medii. n general, fereastra se alege astfel
ca numrul de pixeli ai ferestrei, N W, s fie impar. n cazul cnd N W este par, media
se determin ca media celor dou valori din mijlocul irului ordonat.
Filtrul median bidimensional cu fereastr
N 2k 1 este definit de:

de dimensiune

y i, j MED X NN i, j

NN ,

(4.8)

unde operatorul MED realizeaz o ordonare a elementelor matricei X i, j i apoi


reine valoarea central. Matricea X i, j este definit de:
x i k , j k L

X i, j
M
O
x i k , j k L

x i k , j k

x i k , j k

(4.9)

unde x i, j este eantionul de coordonate i, j din imaginea X .


Pentru a realiza un filtru median bidimensional se poate folosi funcia Matlab
ORDFILT2:

Student: Dragan Sebastian-Ionut, SAT, Anul II

20

CPV: Codare & Prelucrare Video

21

Y=ORDFILT2(X,NR,DOMENIU) nlocuiete fiecare element al


imaginii X cu elementul cu numrul NR din fereastra ordonat
specificat de elementele nenule din matricea DOMENIU.
Pentru a realiza un filtru median bidimensional cu fereastra de dimensiune M N ,
parametrii NR i DOMENIU trebuie iniializai astfel:
DOMENIU= ones(M,N);
NR= ceil(M*N/2);

Filtrai imaginea imag1.tif cu un filtru median cu fereastr de dimensiune 5 5 ,


folosind funcia ORDFILT2. Observai efectul acestuia asupra imaginii.
Filtrul median elimin complet detaliile foarte fine, cum ar fi liniile subiri i,
n consecin este util pentru nlturarea liniilor sau pixelilor izolai, cu pstrarea
rezoluiei spaiale; are performane slabe cnd numrul pixelilor afectai de zgomot
este mai mare sau egal cu jumtate din numrul total al pixelilor din fereastr.
Apare efectul "deplasrii marginilor" (edge jitter) n zonele unde liniile
subiri ntlnesc marginile unor zone cu intensiti diferite. Filtrul median nu
atenueaz zonele de tip treapt din imagine. Astfel imaginea filtrat are un contrast
foarte bun.
Imaginile filtrate cu filtrul median au o calitate superioar celor filtrate cu
filtrul de mediere. Filtrul de mediere modific aproape toate eantioanele
semnalului de la intrarea sa, indiferent dac acestea sunt afectate de zgomot sau nu.
n regiunile n care valorile eantioanelor se modific ncet, filtrul median
introduce mici elemente de form ptrat. Acest fenomen este caracteristic filtrului
median i se numete "umbrire". Mecanismul producerii acestui fenomen este
prezentat n continuare.
S considerm un filtru median unidimensional. Dac fereastra se deplaseaz
nainte, un nou eantion va intra n fereastr i unul vechi va iei. Dac se ntmpl
ca ambele eantioane s aib valori mai mici (sau mai mari) dect cea a eantionului
median curent, atunci ieirea filtrului nu se modific. Probabilitatea ca acest lucru s
se ntmple, pentru un semnal afectat de zgomot alb gaussian, este 0,5.
Probabilitatea ca ieirea s rmn neschimbat, pentru un numr mai mare
de eantioane care intr i ies, scade exponenial, fiind totui suficient de mare
pentru ca efectul de umbrire s apar.
Filtre de mediere modificate

Filtrele de mediere modificate realizeaz un compromis ntre filtrarea


median i filtrarea liniar (de mediere). Compromisul const n modul de calcul al
eantionului de ieire. Astfel, ieirea este calculat ca o medie ponderat a
eantioanelor (ordonate) din jurul medianului. Datorit faptului c realizeaz o
Student: Dragan Sebastian-Ionut, SAT, Anul II

21

CPV: Codare & Prelucrare Video

22

ordonare a eantioanelor imaginii (pentru a determina medianul), aceste filtre sunt


filtre neliniare.
Eliminarea estomprii (sharpening)

Estomparea imaginii are mai multe cauze de apariie. Poate s apar n urma
integrrii efectuate de dispozitivul de captare a imaginii sau de cel de redare, poate
fi cauzat de micarea relativ obiect-sistem de achiziie (motion blur) sau de o
filtrare de tip trece-jos. Aceasta din urm poate fi consecina unei operaii de
eliminare a zgomotului sau poate fi rezultatul unei limitri a sistemului de achiziie.
Exist patru metode principale de recuperare a originalului din imaginea
estompat:
Filtrare trece-sus
Unsharp Masking
Deconvoluie
Detecie de contur
n principiu toate aceste metode acioneaz asupra frecvenelor nalte n
sensul accenturii lor. Este inevitabil ca n urma acestei operaii s nu apar i o
cantitate de zgomot situat de frecvene nalte, pn atunci invizibil.
ntruct efectul filtrrii trece-sus a fost studiat n prima parte a acestei lucrri,
iar detecia de contur a fost discutat n lucrarea anterioar, n continuare se vor
studia celelalte dou metode:
Unsharp Masking
Aceasta este o tehnic de punere n eviden a frecvenelor nalte
dintr-o imagine care s evite inconvenientele simplei filtrri trece-sus. Algoritmul
este urmtorul:
1.

Se filtreaz trece-jos imaginea.

2.

Se scade imaginea obinut la punctul precedent din cea de prelucrat.

3.

Se multiplic diferena cu o pondere.

4.

Se adun diferena ponderat la imaginea de prelucrat.

Avantajul major al acestui algoritm este posibilitatea de a selecta fin


amplificarea frecvenelor nalte, lsndu-le nealterate pe cele joase. Totodat,
ponderarea duce la o reducere a cantitii de zgomot ce este amplificat n urma
procesului.
A=imread('zid.tif');
imshow(A)
h4=fspecial('unsharp', 0.5);
B=filter2(h4,A)/255;
imshow(A), figure, imshow(B)
Student: Dragan Sebastian-Ionut, SAT, Anul II

22

CPV: Codare & Prelucrare Video

23

Accentuarea detaliilor fine (unsharp masking)


Deconvoluia (Filtrul invers)
Restaurarea imaginilor prin deconvoluie se bazeaz pe ideea c este
cunoscut funcia pondere/funcia de transfer care a cauzat estomparea i c aceasta
admite o invers sau c cel puin exist o funcie care s o aproximeze ct mai bine.
Zona de aplicabilitate a acestor filtre este corecia imaginilor deteriorate de
caracteristica neliniar a sistemului de achiziie a imaginii.
Problema principal a acestei metode este ns realizabilitatea filtrului invers
i, n caz c acesta poate fi implementat, stabilitatea sa, care nu poate fi garantat.

Accentuarea detaliilor prin deconvoluie

APLICAII ALE MORFOLOGIEI MATEMATICE N


PRELUCRAREA IMAGINILOR
Introducere
Aplicarea elementelor de morfologie matematic n cadrul metodelor de
prelucrare a imaginilor reprezint o extindere relativ recent a acestora care, prin
Student: Dragan Sebastian-Ionut, SAT, Anul II

23

CPV: Codare & Prelucrare Video

24

rezultatele spectaculoase pe care le ofer n aplicaii dintre cele mai diverse, va


deveni probabil n scurt timp indispensabil.
Operatorii morfologici (funcii morfologice) sunt implementai printr-o
familie de filtre discrete neliniare bazate operaiile n structur latice, utile pentru
recunoaterea, segmentarea i analiza cantitativ a imaginilor.
Operatorii morfologici pot fi construii ierarhic utiliznd doi operatori
elementari, denumii dilatare i eroziune. Totui, pentru o mai mare eficien, civa
operatori pot fi implementai folosind algoritmi rapizi speciali. Printre acetia se
numr transformarea distanei, reconstrucia, marcarea i deschiderea unei arii.
Dilatarea i eroziunea sunt definite cu ajutorul unor imagini particulare,
numite elemente structurale. Aceste elemente pot fi imagini binare sau imagini cu
nuane de gri.

Morfologia matematic pentru imaginile binare


Transformrile fundamentale din morfologia matematic se refer la
interaciunea dintre o imagine dat i un element de structurare B. De exemplu, B
poate fi un disc n R2, sau o sfer n R3.

Translaia
Fie B o mulime coninut n spaiul euclidian E i x un punct din E.
Translaia mulimii B cu punctul x, notat Bx, este dat de:
Bx @ b x b B

(5.1)

Dilatarea imaginii X cu elementul structural B, notat X B , este dat


de:
X B @U Bx
xX

(5.2)

Dilatarea se obine centrnd elementul structural n fiecare punct din X i


realiznd apoi reuniunea. Pentru imaginea binar bidimensional, dac B este o
form compact, ce conine originea, atunci dilatarea adaug imaginii X un "strat"
exterior.

Student: Dragan Sebastian-Ionut, SAT, Anul II

24

CPV: Codare & Prelucrare Video

25

Dilatarea imaginii X cu elementul structural B


Funcia Matlab care realizeaz dilatarea unei imagini este DILATE:
B=dilate(A,ES) dilat imaginea binar A folosind elementul
structural ES.
B=dilate(A,ES,ALG) realizeaz dilatarea folosind algoritmul ales.
ALG poate fi:
'spatial' proceseaz imaginea n domeniul spaiu. Aceasta este
opiunea implicit. Acest algoritm este relativ lent i, n consecin,
este recomandabil utilizarea lui pentru imagini i elemente
structurale de dimensiuni mici.
'frequency' - proceseaz imaginea n domeniul frecvven. Acest
algoritm este mai rapid n procesarea imaginilor de dimensiuni mari,
dar necesit mai mult memorie.
Rezultatul obinut folosind oricare dintre aceti algoritmi este acelai,
alegerea unuia sau a altuia fcndu-se n funcie de timpul, respectiv memoria avute
la dispoziie.
B=dilate(A,ES,...,N) realizeaz de N ori operaia de dilatare.

Student: Dragan Sebastian-Ionut, SAT, Anul II

25

CPV: Codare & Prelucrare Video

26

Figura 5.2. Dilatarea imaginii imag5.tif cu un disc de raz R=10 pixeli

Exemple de elemente structurale obinute prin dilatare


Prin aplicarea dilatrii pot s apar conexiuni ntre diferite forme neconectate iniial:

Conexiuni aprute n urma dilatrii cu un disc de raz R=25 pixeli

Student: Dragan Sebastian-Ionut, SAT, Anul II

26

CPV: Codare & Prelucrare Video

27

Eroziunea
Eroziunea imaginii X cu elementul structural B, notat X $ B , este dat de:
X$B

bB

X b

(5.3)

Aplicnd eroziunea unei mulimi se obine acelai rezultat ca i atunci cnd se


aplic dilatarea complementului acesteia.
Eroziunea lui X prin B este mulimea punctelor lui X n care B poate fi centrat
rmnnd inclus complet n X. Dac B este o mulime compact, care conine
originea, eroziunea ndeprteaz "stratul" exterior al lui X:

Eroziunea imaginii X cu elementul structural B


Funcia Matlab care realizeaz dilatarea unei imagini binare este ERODE:
B=erode(A,ES) erodeaz imaginea binar A folosind elementul
structural ES.
B=erode(A,ES,ALG) realizeaz eroziunea folosind algoritmul ales.
ALG poate fi:
'spatial' proceseaz imaginea n domeniul spaiu. Aceasta este
opiunea implicit. Acest algoritm este relativ lent i, n consecin,
este recomandabil utilizarea lui pentru imagini i elemente
structurale de dimensiuni mici.
'frequency' - proceseaz imaginea n domeniul frecvven. Acest
algoritm este mai rapid n procesarea imaginilor de dimensiuni mari,
dar necesit mai mult memorie.

Student: Dragan Sebastian-Ionut, SAT, Anul II

27

CPV: Codare & Prelucrare Video

28

Rezultatul obinut folosind oricare dintre aceti algoritmi este acelai,


alegerea unuia sau a altuia fcndu-se n funcie de timpul, respectiv memoria avute
la dispoziie.
B=erode(A,ES,...,N) realizeaz de N ori operaia de eroziune.

Eroziunea imaginii imag5.tif cu un disc de raz R=10 pixeli

Prin eroziune golurile se mresc


Dei sunt duale, dilatarea i eroziunea nu sunt operaii inverse. Ambele sunt
operaii care ndeprteaz o parte din informaia unei imagini, fr a putea face apoi
reconstituirea.

Deschiderea
Deschiderea lui X prin elementul structural B, notat X B este definit de:
X oB @ X $ B B
(5.4)

Student: Dragan Sebastian-Ionut, SAT, Anul II

28

CPV: Codare & Prelucrare Video

29

Deschiderea
Deschiderea lui X prin B este mulimea punctelor din X care sunt coninute n
acele translaii ale lui B total incluse n X. De obicei aceast operaie ndeprteaz
detaliile imaginii care nu pot fi incluse n elementul structural. Deschiderea este un
filtru binar neliniar, care ndeprteaz din imagine acele caracteristici mai mici
dect o mrime dat (elementul structural).
Deschiderea se poate face prin eroziune urmat de dilatare cu elementul
structural dorit.
Pentru cazul particular n care elementul structural este un ptrat de 3x3
pixeli se poate utiliza funcia Matlab BWMORPH.
B=bwmorph(A,'open') realizeaz deschiderea imaginii binare A
cu un element structural ptrat de 3x3 pixeli.

Deschiderea cu element structural de tip disc

Student: Dragan Sebastian-Ionut, SAT, Anul II

29

CPV: Codare & Prelucrare Video

30

Deschiderea cu element structural de tip ptrat de 3x3 pixeli

4.1.1 nchiderea
nchiderea lui X prin elementul structural B, notat X B , este dat de:
X B @ X B $ B

(5.5)

nchiderea este dualul deschiderii, n acelai sens n care dilatarea este dualul
eroziunii. De obicei nchide golurile, sau caracteristicile de grani ale fondului ce
nu pot fi incluse n elementul structural.

nchiderea
Cu alte cuvinte, i nchiderea este un filtru binar neliniar, care ndeprteaz,
de aceast dat din fundal, caracteristicile mai mici dect o mrime dat, mrimea
fiind dictat de elementul structural.

Student: Dragan Sebastian-Ionut, SAT, Anul II

30

CPV: Codare & Prelucrare Video

31

nchiderea cu element structural de tip disc cu R=10 pixeli


nchiderea se poate face prin dilatare urmat de eroziune cu elementul
structural dorit.
Pentru cazul particular n care elementul structural este un ptrat de 3x3
pixeli se poate utiliza funcia Matlab BWMORPH.
B=bwmorph(A,'close') realizeaz nchiderea imaginii binare A cu
un element structural ptrat de 3x3 pixeli.

nchiderea cu element structural de tip ptrat de 3x3 pixeli


Funcia BWMORPH realizeaz operaii morfologice pe imagini binare.
Sintaxa este B=bwmorph(A,OPERATION),unde OPERATION poate fi : 'bothat',
'bridge', 'clean', 'close', 'diag', 'dilate', 'erode', 'fill', 'majority', 'open', 'shrink', etc.
Student: Dragan Sebastian-Ionut, SAT, Anul II

31

CPV: Codare & Prelucrare Video

32

Lista complet a operaiilor se poate obine cu comanda help bwmorph.


B=bwmorph(A,OPERATION,N) aplic de N ori operaia morfologic
specificat. N poate fi Inf, caz n care operaia este repetat pn
cnd imaginea nu se mai modific.
Exemple de aplicare ale morfologiei matematice n prelucrarea imaginilor
cu nuane de gri
Majoritatea operatorilor morfologici pentru imagini cu nuane de gri au fost
deja implementai sub forma unor funcii Matlab structurate n toolbox-ul SDC
Morphology Toolbox . Cteva dintre funciile din acest toolbox vor fi descrise n
aplicaiile exemplificate n cele ce urmeaz.

Discriminarea elementelor de imagine pe baza dimensiunii


Se dorete ca dintr-o schem a unui circuit electronic ce cuprinde att traseul
propriu-zis ct i notaiile i valorile elementelor din circuit, s se extrag doar
circuitul electronic.
Citirea imaginii

Se citete imaginea binar ce cuprinde circuitul electronic.

a = mmreadgray('circuit_bw.tif');
mmshow(a);

Funcia MMREADGRAY este similar cu funcia IMREAD din Matlab. Ea


citete o imagine dat de utilizator i o memoreaz ca o imagine cu nuane de

Student: Dragan Sebastian-Ionut, SAT, Anul II

32

CPV: Codare & Prelucrare Video

33

gri. Dac imaginea dat este color, ea este convertit tot ntr-o imagine cu
nuane de gri. Formatele suportate sunt tif, hdf, jpg, bmp, pcx, xwd.
Funcia MMSHOW afieaz o imagine binar sau n trepte de gri i opional
o suprapune cu pn la 6 imagini binare cu urmtoarele culori: rou, verde,
albastru, galben, magenta i cyan.
Filtrarea

n aceast etap se ndeprteaz toate obiectele cu o arie mai mic de 200 de


pixeli.

b = mmareaopen(a,200);
mmshow(b);

Funcia MMAREAOPEN nltur dintr-o imagine binar toate elementele


cu o arie mai mic dect o valoare precizat. Aceast funcie poate fi folosit
i pentru imagini cu nuane de gri prin aplicarea succesiv pe imagine a unor
praguri de valori tot mai mici.

Afiarea rezultatului seleciei

n aceast etap imaginea filtrat este suprapus peste imaginea original.

Student: Dragan Sebastian-Ionut, SAT, Anul II

33

CPV: Codare & Prelucrare Video

34

mmshow(a,b);

Prelucrarea elementelor unei imagini cu coninut de tip text


Un text este prelucrat sub form de litere, cuvinte i paragrafe. Aceast
aplicaie folosete numai funcia MMLABEL cu diferii parametri.

Citirea imaginii

f = mmreadgray('stext.tif');
mmshow(f);

Etichetarea literelor

Se vor selecta individual literele din text utiliznd funia MMLABEL:

Student: Dragan Sebastian-Ionut, SAT, Anul II

34

CPV: Codare & Prelucrare Video

35

fl=mmlabel(f,mmsebox);
mmlblshow(fl);

Funcia MMLABEL creaz o imagine y = mmlabel( f, Bc ) prin etichetarea


componentelor de conexiune ale unei imagini binare f, conform
conectivitii definit de ctre elementul de structur Bc. Pixelii din fundal
(cu valoarea 0) nu sunt etichetai. Valoarea maxim a etichetei n imaginea de
ieire furnizeaz numrul componentelor conectate ale acesteia.
Funcia MMSEBOX creaz elementul structural b format prin r adunri
succesive Minkovski ale matricii unitate ( de dimensiune 3 x 3 ) cu ea nsi.
Exemple :
b1 = mmsebox;

mmseshow(b1)

b1 = 1

b2 = 1

b2 = mmsebox(2);
mmseshow(b2)

Funcia MMLBLSHOW afieaz cu diferite culori elementele etichetate ale


imaginii de intrare. Fiecare element este colorat aleator. Pe lng imaginea de
intrare se mai poate folosi ca parametru pentru funcia MMLBLSHOW i
comanda border care are ca efect afiarea unui contur alb n jurul
elementelor etichetate. Imaginea rezultat este afiat ca figur n Matlab
numai dac nu este specificat o variabil de ieire n care s fie scris
rezultatul.
Funcia MMSESHOW realizeaz reprezentarea unui element structural sub
forma unei imagini binare.
Etichetarea cuvintelor

Student: Dragan Sebastian-Ionut, SAT, Anul II

35

CPV: Codare & Prelucrare Video

36

Cuvintele sunt formate din litere apropiate. n acest caz folosim un element
de form dreptunghiular cu nlimea de 7 pixeli i grosimea de 11 pixeli, astfel
inct 2 pixeli care pot fi ncadrai n dreptunghi vor aparine aceluiai cuvnt
(aceleiai componente conectate). Valorile 7 si 11 au fost alese experimental i
depind de mrimea fontului.

sew= mmimg2se(logical(uint8(ones(7,11))));
mmseshow(sew)

Funcia MMIMG2SE creaz un element structural binar (plat) dintr-o


imagine binar sau creaz un element structural non-plat dintr-o imagine
binar i una cu nuane de gri.
Folosind aceast decizie asupra conecticii elementelor de imagine, se obine:
fw=mmlabel(f,sew);
mmlblshow(fw);

Etichetarea paragrafelor

Similar, paragrafele sunt formate din cuvinte apropiate. n acest caz


conectivitatea este dat de un dreptunghi din 35 cu 20 pixeli.
sep = mmimg2se(logical
(uint8(ones(20,35))));
fp=mmlabel(f,sep);
mmlblshow(fp);

Student: Dragan Sebastian-Ionut, SAT, Anul II

36

CPV: Codare & Prelucrare Video

37

Detecia unei aspirine lips dintr-o folie


Acesta este un bun exemplu referitor la segmentarea imaginii fr a folosi
limitarea. Utiliznd aceast metod se va observa c singurul parametru care trebuie
cunoscut este raza elementului structural circular.
Citirea imaginii

Se utilizeaz imaginea astablet.tif a foliei de medicamente:


a = mmreadgray('astablet.tif');
mmshow(a);

Conversia ntr-o imagine topografic

n aceast etap se urmrete eliminarea tuturor neregularitilor ( maximelor


regionale care sunt deranjante). Imaginea cu nuane de gri se transform ntr-o
imagine topografic folosind urmtoarea regul : regiunilor albe le corespunde
nlimea maxim, iar regiunilor negre le corespunde nlimea minim.
d = mmopen(a, mmsedisk(20));
e = mmsurf(d);

Funcia MMSURF modeleaz o imagine n trepte de gri ca un model


topografic al unui teren n care nlimea la coordonatele pixelului este dat
de valoarea pixelului. Imaginea este vzut de sus, iar direcia luminii poate
fi selectat din 8 direcii cardinale N, NE, E, SE, S, SW, W, NW.
Folosirea maximului regional

n aceast etap se urmrete punerea n eviden a zonelor de alb care


reprezint aspirinele existente n folie.
Pentru evidenierea rezultatului, imaginea astfel obinut este suprapus peste
imaginea iniial :

Student: Dragan Sebastian-Ionut, SAT, Anul II

37

CPV: Codare & Prelucrare Video

38

f = mmregmax(d,mmsebox);
mmshow(e,f);

Funcia MMREGMAX determin valoarea maxim dintr-o imagine, iar apoi


creaz o imagine binar care are valoarea 1 pe poziia valorii maxime din
imaginea iniial i zero n rest.
Afiarea final

n aceast etap se afieaz separat imaginea iniial i cea final (n care s-a
evideniat lipsa unei tablete).

mmshow(a);

mmshow(f);

Student: Dragan Sebastian-Ionut, SAT, Anul II

38

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