Sunteți pe pagina 1din 17

Lucrarea 1

Introducere în Matlab

1.1 Obiectivul lucr rii


Aceast  lucrare îs, i propune familiarizarea student, ilor cu limbajul
de programare Matlab pentru simularea conceptelor denite în Teoria
Informat, iei. Student, ii vor deprinde instruct, iunile condit, ionale s, i de
control, operat, iile uzuale asociate vectorilor s, i matricilor, precum s, i
sintaxele de reprezentare grac . Vor  introduse elemente de baz 
specice prelucr rii imaginilor în Matlab s, i se vor deni not, iunile de
histogram  s, i histogram  normalizat .

1.2 Introducere în Matlab


1.2.1 Descrirea mediului de lucru
Dup  cum sugereaz  numele, programul MATLAB (MATrix LA-
Boratory) are la baza calculul matriceal. Functionalit t, ile sistemului
dezvoltat de MathWorks conduc la utilizarea intensiv  într-o gam 
larg  de domenii: inginerie, s, tiint, e aplicate, economie, matematic  s, i
statistic . Dou  din principalele sale avantaje sunt us, urint, a dezvolt -
rii algoritmilor s, i instrumentele performante de vizualizare grac . În
plus, Matlab are integrat s, i un pachet de funct, ii destinat program rii
grace, denumit Simulink.

Interfat, a grac  (Fig. 1.1) cont, ine urm toarele sect, iuni principale:

1
D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
2

Fig. 1.1: Fereastra principal  a programului Matlab.

1. Command Window : permite execut, ia individual  a liniilor de


comand . Rularea simultan  a mai multor instruct, iuni direct în
aceasta fereastr  se poate realiza ap sând combinat, ia de taste
Shift+Enter între dou  linii de comand  consecutive. Vizua-
lizarea s, i selectarea liniilor de comand  executate anterior se
realizeaz  cu ajutorul tastei ↑;

2. Workspace : Cont, ine variabilele denite de liniile de cod exe-


cutate. S
, tergerea anumitor variabile se poate realiza apelând

comanda clear urmat  de denumirile lor (ex: clear a b).


S
, tergerea tuturor variabilelor memorate în spat
, iul de lucru se

implementeaz  cu instruct, iunea clear all;

3. Current Folder : As, eaz  cont, inutul directorului curent.

Implicit, toate variabilele reale declarate în Matlab sunt stocate în


formatul virgul  mobil  cu precizie dubl  (double). Ele pot  conver-
tite în formate precum virgul  mobil  în precizie simpl  (single), sau
în întregi cu semn sau f r  semn, pe 8, 16, 32, respectiv 64 bit, i (int8,
uint8, int16, uint16 etc). Conversia se realizeaz  apelând funct, ia spe-
cic  formatului, ce are ca argument denumirea variabilei - int64(a)

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
3

pentru a converti variabila a în întreg cu semn pe 64 de bit, i. Alte


tipuri de date uzual folosite sunt caracterele (tipul char), datele de tip
boolean (logical) s, i numerele complexe (formatul complex). Pentru
ultimul tip, unitatea complex  poate  apelat  implicit prin notat, iile
i, j sau i=sqrt(-1).
Rularea s, i salvarea unui set de instruct, iuni (o secvent,   de cod, un
algoritm), implic  introducerea acestuia în s, ierele specice Matlab-
ului, ce au extensia *.m. Crearea unui astfel de s, ier presupune select, ia
din meniul principal a opt, iunii New-M File. Se va deschide astfel o
nou  fereastr  ce permite introducerea setului de instruct, iuni dorit.

Instruct, iunea Run din meniul principal sau tasta F5 init, iaz  exe-
cutarea algoritmului creat cu ment, iunea c  directorul curent trebuie
s  e cel în care a fost salvat s, ierul .m (opt, iunea schimb rii direc-
torului curent apare implicit în momentul execut, iei codului). Exist 
posibilitatea de a rula doar o port, iune din setul de instruct, iuni prin
selectarea acestora s, i ap sarea tastei F9. Pentru a comenta o linie de
cod se va ad uga simbolul %.
Matlab ofer  posibilitatea de a crea funct, ii ce pot  ulterior ape-
late cu us, urint,   în cadrul unor secvent, e de cod. Fis, ierele standard în
care sunt denite funct, iile se creeaz  cu opt, iunea New-Function s, i au
urm toarea structur  general :

function[argumente_iesire]= nume_functie(argumente_intrare)
% prezentare functie
% descriere detaliata functie

set_instructiuni
end

Este recomandat ca denumirea s, ierului în care se salveaz  funct, ia


s  e identic  cu numele funct, iei. Descrierea funct, iei poate  vizuali-
zat  s, i în fereastra de comand  a Matlabului, prin introducerea ape-
lativului help urmat de numele funct, iei create. Funct, iile prelucreaz 
argumentele primite la intrare generând parametrii de ies, ire dorit, i.

Aplicatie 1.1.
, Denirea unei funct, ii ce calculeaz  suma s, i diferent, a
a dou  variabile:

function [ s,d ] = sum_diff( a,b )


% calculeaza suma si diferenta argumentelor de la intrare
s = a+b;

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
4

d = a-b;
end

Apelarea ulterioar  a funct, iei este exemplicat  în linia de co-


mand  de mai jos:

[s,d] = sum_diff(9,3)

Avantajul acestui mediu de programare este num rul mare s, i di-


versitatea pachetelor de funct, ii predenite, cele mai multe dintre ele
reprezentând implementarea optimizat  a unor algoritmi matematici
utilizat, i în domenii diverse. Modul de apelare a funct, iilor predenite
poate  vizualizat împreun  cu descrierea lor în fereastra de comand 
folosind comanda help. Pentru a c uta funct, ii predenite ce îndepli-
nesc anumite caracteristici se va utiliza instruct, iunea lookfor urmat 
de un cuvânt cheie. În cadrul lucr rilor de laborator vor  prezen-
tate s, i utilizate funct, ii predenite din domeniul statisticii s, i teoriei
informat, iei.

1.2.2 Instructiuni conditionale si de control


, , ,

Aceste instruct, iuni sunt universale, având o structur  similar 


în majoritatea limbajelor de programare existente. Instruct, iunile
condit, ionale selecteaz  secvent, a de cod ce va  rulat  funct, ie de valoa-
rea de adev r a unei condit, ii de tip boolean. Cele mai populare expre-
sii din aceast  categorie sunt if (select, ie simpl ) s, i switch (select, ie
multipl ).

Instruct, iunea if evalueaz  o condit, ie boolean  s, i, dac  aceasta


este adev rat , execut  secvent, a de cod imediat urm toare. În caz
contrar se pot evalua s, i condit, ii alternative folosind instruct, iunea
elseif. Sintaxa general  a acestei expresii este:

if conditie
set_instructiuni
elseif conditie
set_instructiuni
else
set_instructiuni
end

Instruct, iunea switch compar  o variabil  cu mai multe valori s, i


execut  secvent, a de cod aferent  cazului de egalitate:

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
5

switch variabila
case valoare
set_instructiuni
case valoare
set_instructiuni
otherwise
set_instructiuni
end

Instruct, iunile de control repetitiv sunt folosite pentru a executa de


mai multe ori o secvent,   a codului, num rul de execut, ii ind constrâns
de un set de condit, ii. Cele mai populare astfel de expresii sunt while
s, i for.
Bucla while execut  secvent, a de cod asociat  atâta timp cât
condit, ia specicat  este adev rat . Condit, ia de adev r este vericat 
dup  ecare execut, ie a secvent, ei. Sintaxa general  a buclei este:

while conditie
set_instructiuni
end

Instruct, iunea for execut  o secvent,   de cod de un num r prede-


nit de ori, num rul execut, iilor ind controlat de o variabil  contor ce
este incrementat  cu un pas constant dup  ecare execut, ie a secvent, ei
de cod.

for cont = val_init:pas:val_fin


set_instructiuni
end

Instruct, iunile de nalizare prematur  a buclelor sunt disponibile s, i


în programul Matlab. Comanda break fort, eaz  ies, irea imediat  dintr-
o bucl  de control repetitiv. Sintaxacontinue nalizeaz  iterat, ia
curent  a buclei, conducând c tre începerea imediat  a iterat, iei urm -
toare. Dac  se dores, te ies, irea complet  dintr-o funct, ie, se poate apela
instruct, iunea return.

1.2.3 Vectori si matrice ,

Generarea explicit  a unei matrice se realizeaz  prin scrierea ele-


mentelor componente între paranteze p trate, [ ]. Elementele se com-
pleteaz  în ordinea liniilor (cele de pe prima linie, urmate de cele de
pe a doua linie, etc), trecerea de la o linie la alta ind marcat  prin se-

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
6

paratorul punct s, i virgul   ;. Elementele unei linii sunt separate prin
spat, ii sau prin virgule. De exemplu, o matrice cu 3 linii s, i 3 coloane
se poate declara în felul urm tor:

A = [1 3 5; 7 9 11; 13 15 17];

Vectorii reprezint  cazuri particulare ale matricelor. Ei sunt


alc tuit, i dintr-o succesiune unidimensional  de elemente, ind practic
o matrice cu una din dimensiuni egal  cu unitatea (vectori linie s, i vec-
tori coloan ). Vectorii linie ale c ror elemente reprezint  o progresie
aritmetic  pot  generat, i prin sintaxa:

V = start:pas:stop;

unde start s, i stop reprezint  limita inferioar , respectiv limita su-


perioar  a progresiei, iar variabila pas indic  rat, ia progresiei.

Matrice speciale se pot genera în programul Matlab prin apelarea


funct, iior predenite, argumentele ind reprezentate de dimensiunile
matricei: num rul de linii m si num rul de coloane n.
, Cele mai uzuale
matrice predenite sunt:

1. zeros(m,n): matrice cu toate elementele nule;

2. ones(m,n): matrice cu toate elementele egale cu 1;

3. eye(n): matricea unitate, ce cont, ine n elemente numai pe dia-


gonala principal ;

4. rand(m,n): matrice cu valori aleatorii, distribuite uniform în


intervalul [0; 1].

Sintaxa operat, iilor aritmetice uzuale cu matrice:

- adunarea matriceal  (+) −→ C = A + B, realizeaz  suma ma-


tricelor. Dimensiunile matricelor A si B trebuie s  e identice;
,

- sc derea matriceal  (−) −→ C = A - B, implementeaz 


diferent, a matricelor. Dimensiunile matricelor A s, i B trebuie
s  e identice;

- înmult, irea matriceal  (∗) −→ C = A * B, calculeaz  produsul


celor dou  matrice. Num rul de coloane al lui A trebuie s  e
egal cu num rul de linii al lui B;

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
7

- împ rt, irea matriceal  (/) −→ C = A / B, înmulteste matricea , ,

A cu inversa matricei B . Matricele A si B trebuie s  aib  acelasi


, ,

num r de coloane;

- înmult, irea element cu element (.∗) −→ C = A .* B, înmulteste , ,

ecare element al matricei A cu elementul corespunz tor din ma-


tricea B. Cele dou  matrice trebuie s  aib  dimensiuni identice;

- împ rt, irea element cu element (.\) −→ C=A.\ B, realizeaz 


împ rt, irea ec rui element al matricei A la elementul corespun-
z tor din matricea B. Dimensiunile celor dou  matrice trebuie
s  e identice;

- înmult, irea cu o constant  −→ C = c * A, înmult, es, te ecare


element al matricei A cu constanta c.

Alte operat, ii specice aplicabile unei matrice A sunt:

ˆ accesarea unui element (situat pe linia i, coloana j ) - A(i,j);

ˆ vizualizarea dimensiunilor - [m,n] = size(A);

ˆ urma matricei (suma elementelor de pe diagonala principal ),


t = trace(A);

ˆ transpunerea matricei - B = transpose(A) sau B = A.';

ˆ operatorul Hermitian (complex conjugata transpusei),

B = ctranspose(A) sau B = A';

ˆ determinantul - d = det(A);

ˆ rangul - r = rank(A);

ˆ inversa - Ai = inv(A);

ˆ descompunerea în valori singulare (coloanele matricelor U s, i V


reprezint  vectorii proprii, elementele de pe diagonala matricei
S reprezint  valorile proprii): [U,S,V] = svd(A).

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
8

1.2.4 Elemente de grac  în Matlab


Semnalele unidimensionale pot  stocate în Matlab în form  di-
gital , sub form  de vectori. Fiecare element al vectorului reprezint 
un es, antion al semnalului. Pentru o reprezentare complet  a variat, iei
semnalelor în domeniul timp este recomandat  denirea unui vector
(având aceeas, i lungime cu cea a semnalului) ce stocheaz  momentele
de timp aferente ec rui es, antion. În cazul es, antion rii uniforme vec-
torul timp poate  denit sub forma unei progresii aritmetice:

t = tst:ts:tend;

unde tst reprezint  momentul de timp pentru primul es, antion al


semnalului, tend momentul de timp al ultimului es, antion, iar ts 
perioada de es, antionare. Evident, între aceste m rimi exist  relat, ia:

tend = tst + (N − 1)ts (1.1)

m rimea N ind num rul de es, antioane ale semnalului (implicit


dimensiunea vectorului în care este memorat).

Pentru reprezentarea în Matlab a semnalelor reale unidimensio-


nale, cele mai utilizate instruct, iuni sunt plot s, i stem. Funct, ia plot
realizeaz  o interpolare a es, antioanelor semnalului (unes, te amplitu-
dinile stocate în vectorul asociat) în urma reprezent rii semnalul c -
p tând aspect de semnal analogic. Instruct, iunea stem as, eaz  sem-
nalul sub forma sa digital , prin reprezentarea individual  a ec rui
es, antion.

Pentru ambele funct, ii precizate, primele dou  argumente sunt vec-


torul momentelor de timp s, i vectorul alc tuit din es, antioanele sem-
nalului (ex: plot(t,s)). Cei doi vectori trebuie s  aib  aceeas, i
dimensiune. Vectorul momentelor de timp indic  valorile ce vor 
as, ate pe axa Ox a gracului. Dac  acest vector nu se specic 
(funct, iile de as, are grac  ment, ionate pot s  primeasc  doar vec-
torul es, antioanelor ca parametru de intrare), pe axa Ox va  as, at 
numerotarea es, antioanelor semnalului.

Urm toarele argumente de intrare ale funct, iilor plot s, i stem mo-


dic  aspectul vizual al reprezent rii grace. Pentru setarea lor, se
introduce numele parametrului între ghilimele, separat prin virgul  de
valoarea sa (Aplicat, ia 1.2). Aceste argumente sunt opt, ionale s, i se pot
introduce în orice ordine:

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
9

- Color: seteaz  culoarea în care va  as, at  funct, ia. Valoarea


culorii este simbolizat  printr-o liter  reprezentativ , de exemplu
r pentru ros, u (red), g pentru verde (green), y pentru galben
(yellow) etc. Gracele sunt implicit as, ate în culoarea albastr ;

- LineWidth: modic  grosimea liniilor gracului. Valoarea im-


plicit  a acestui parametru este 0.5;
- LineStyle: seteaz  stilul as,  rii grace. Implicit gracele sunt
reprezentate prin linie continu , caz în care valoarea parametru-
lui este -.

- Marker: parametru folosit în special în cazul reprezent rii sem-


nalelor în form  discret  (funct, ia stem). Indic  simbolul ce se
as, eaz  în vârful ec rui es, antion. Valoarea sa implicit  este o
(cerc), îns  se pot as, a s, i puncte - ., asteriscuri  *, etc.

As, area ec rui grac într-o fereastr  proprie impune apelarea


indicativului figure înaintea funct, iilor de as, are. Astfel, se evit 
suprascrierea gracelor as, ate anterior. Celor dou  axe li se pot aso-
cia denumiri cu ajutorul funct, iilorxlabel (pentru abscis ), respectiv
ylabel (pentru ordonat ), iar titlul gracului poate  setat folosind
funct, ia title. Denumirile axelor s, i titlul se introduc ca argumente la
funct, iile asociate. În cazul în care nu se dores, te reprezentarea integral 
a semnalului, cele dou  axe ale gracului pot  limitate cu ajutorul sin-
taxelor xlim, respectiv yliml. Pe fundalul gracului poate  as, at 
o gril  prin apelarea instruct, iunii grid.
Aplicatie 1.2. S  se reprezinte functia cosinus folosind sintaxele plot
, ,

s, i stem. Perioada functiei va  egal  cu 5s, valorile sale vor  calculate


în intervalul [−5; 5]s iar durata de esantionare este 0.1s.
,

T = 5; % perioada functiei sinusoidale


t = -5:0.1:5;% momentele de timp in care se calculeaza
semnalul
c = cos(2*pi*t/T);% esantioanele semnalului
figure, plot(t,c,'Color','r','LineWidth',1,'LineStyle','--'
),
xlabel('time (s)'), ylabel('amplitude'),
title('cosinus function - represented with plot'), grid;

figure,stem(t,c,'Color','r','LineWidth',1,'Marker','*'),
xlabel('time (s)'), ylabel('amplitude'),
title('cosinus function - represented with stem'), grid;

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
10

Fig. 1.2: Reprezentarea functiei cosinus folosind sintaxele


,

plot si stem. ,

În Matlab, pe aceeas, i grac se pot reprezenta mai multe funct, ii:


se deschide o gur  nou  înaintea as,  rii primului semnal (figure),
urm toarele sintaxe de as, are vor  precedate de instruct, iunea hold
on. Pentru a deosebi gracele as, ate în aceeas, i gur  este util 
ad ugarea unei legende. Astfel, dup  reprezentarea grac  a ultimei
funct, ii se va apela sintaxa legend, ce are ca argumente de intrare
denumirile semnalelor, în ordinea în care au fost reprezentate.

Aplicatie 1.3. , S  se reprezinte semnalele sinus s, i cosinus pe acelas, i


grac, folosind parametrii din Aplicat, ia 1.2.

figure, plot(t,c,'Color','r','LineWidth',1),
xlabel('time (s)'), ylabel('amplitude');
s = sin(2*pi*t/T);
hold on, plot(t,s,'Color','g','LineWidth',1),
title('cosinus and sinus functions'), grid, legend('cos','
sin');

Exist  posibilitatea ca o fereastr  s  e divizat  în subsect, iuni


multiple, astfel încât ea s  cont, in  mai multe reprezent ri grace in-
dependente. Divizarea ferestrei se controleaz  folosind instruct, iunea
subplot. Aceast  sintax  va  apelat  înaintea ec rei funct, ii de
as, are, primind ca parametri de intrare num rul de linii s, i num rul de
coloane în care este împ rt, it  fereastra, respectiv indicele subsect, iunii
în care se va as, a urm torul grac. Subsect, iunile se numeroteaz  în
ordinea liniilor; de exemplu dac  o fereastr  este împ rt, it  în dou 
linii s, i dou  coloane, pozit, iile 1 s, i 2 se a  pe prima linie, iar pozit, iile
3 s, i 4 pe cea de-a doua linie.

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
11

Fig. 1.3: Reprezentarea functiilor sinus si cosinus pe acelasi


, , ,

grac.

Aplicatie 1.4.
, S  se reprezinte grac funct, iile cosinus, sinus, tan-
gent , cotangent  în aceeas, i fereastr , ce se va diviza în patru sect, iuni
(dou  linii s, i dou  coloane). Parametri funct, iilor trigonometrice vor 
identici cu cei din Aplicat, ia 1.2. Intervalul temporal de reprezentare
a cotangentei se va limita în intervalul [−2.4; 2.4]s.

c = cos(2*pi*t/T); % functia cosinus


s = sin(2*pi*t/T); % functia sinus
tg = tan(2*pi*t/T); % functia tangenta
ctg = cot(2*pi*t/T); % functia cotangenta

figure,subplot(2,2,1), plot(t,c,'Color','r'),
xlabel('time (s)'), ylabel('amplitude'),
title('cosinus'), grid;
subplot(2,2,2), plot(t,s,'Color','r'),
xlabel('time (s)'), ylabel('amplitude'),
title('sinus'), grid;
subplot(2,2,3), plot(t,tg,'Color','r'),
xlabel('time (s)'), ylabel('amplitude'),
title('tangent'), grid;
subplot(2,2,4), plot(t,ctg,'Color','r'),
xlabel('time (s)'), ylabel('amplitude'),
title('cotangent'),grid, xlim([-2.4, 2.4]);

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
12

Fig. 1.4: Asarea mai multor functii în aceeasi fereastr .


, , ,

As, area funct, iilor ce depind de doi parametri se realizeaz  folosind


instruct, iunile mesh sau surf. În acest caz es, antioanele funct, iei sunt
stocate sub form  de matrice, gracul ei reprezentând o suprafat,  .
Sintaxa mesh reprezint  liniile ce conecteaz  punctele în care funct, ia
este denit , în timp ce sintaxa surf evident, iaz  s, i suprafat, a denit 
de funct, ie. Aceste dou  sintaxe primesc ca parametri de intrare doi
vectori s, i o matrice: cei doi vectori cont, in m rimile ce vor  reprezen-
tate pe axele Ox s, i Oy (argumentele x y ale functiei), iar matricea
s, i ,

cont, ine valorile funct, iei în ecare pereche (x, y). Functiile aditionale
, ,

ment, ionate în cazul reprezent rii gracelor bidimensionale sunt apli-


cabile s, i în acest caz; în plus axei Oz i se poate asocia o denumire
folosind instruct, iunea zlabel s, i poate  limitat  cu sintaxa zlim.

Aplicatie 1.5.
, Folosind instruct, iunile mesh s, i surf s  se reprezinte
grac variat, ia funct, iei:

f : R2 → R f (x, y) = xy (1.2)

pentru x s, i y ∈ [0; 10].

x = 0:0.3:10;
y = 0:0.3:10;
f = x'*y;

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
13

Fig. 1.5: Reprezentarea unei suprafete folosind sintaxele mesh


,

si surf. ,

figure, mesh(x,y,f), xlabel('x'), ylabel('y'),


zlabel('function values'), title('representation with mesh'
);
figure, surf(x,y,f), xlabel('x'), ylabel('y'),
zlabel('function values'), title('representation with surf'
);

1.2.5 Prelucrarea imaginilor


Programul Matlab cont, ine un pachet de funct, ii dedicate prelucr rii
imaginilor. Citirea acestora se realizeaz  cu ajutorul funct, iei imread,
toate formatele uzuale (.tif, .jpeg, .bmp, etc.) ind recunoscute. Ima-
ginile color sunt stocate în structuri tridimensionale (m × n × 3) ce
cont, in cele 3 benzi: R (ros, u), G (verde), B (albastru). Fiecarui pi-
xel din imagine i se asociaza coordonate spatiale (linia i, coloana j) si
valorile intensitatii pentru ecare banda.

I(i,j,:) - red  valorile intensit t, ii pixelului (R,G,B) ce se


g ses, te pe linia i s, i coloana j;
I(i,j,1) - red  valoarea intensit t, ii în banda R;

Imaginile în tonuri de gri sunt stocate într-o matrice (m × n).


Uzual, acestea sunt reprezentate pe 8 biti- valorile intensit tii pixelilor
,

sunt între [0 : 255].


Structura tridimensional  a imaginilor color poate  redus  la o
matrice folosind sintaxa rgb2gray, ecare pixel al imaginii având

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
14

Fig. 1.6: Asarea unei imagini înainte si dup  reducerea


, ,

num rului de benzi (stânga-3 benzi, RGB; dreapta-o singur 


band , nivele de gri.)

asociat  în acest caz o singur  valoare, ce reprezint  un nivel de gri


(practic imaginea color este transformat  în imagine cu tonuri de gri).
Funct, ia imshow as, eaz  orice tip de imagine, color sau pe nivele de
gri.

Analiza distribut, iei nivelelor de intensitate (histograma imaginii)


în ecare band  se realizeaza folosind funct, ia imhist. Aceast  sin-
tax  primes, te doi parametri de intrare  banda ce se analizeaz  s, i
num rul de subintervale (de lungime egal ) în care se împarte gama
intensit t, ilor. Prin calculul histogramei ec rui subinterval denit i se
asociaz  num rul de puncte în care valoarea intensit t, ii se încadreaz 
între limitele subintervalului. Dac  num rul de subintervale denite
este egal cu num rul valorilor posibile ale intensit t, ii, histograma h va
cont, ine num rul de aparit, ii a ec rei valori din gama intensit t, ilor:

h(rk ) = nk , k=1:N (1.3)

unde: N este num rul de elemente a multimii valorilor intensit tii


, ,

(uzual N = 256), rk , valorile intensit tii iar nk , num rul de aparitii a


, ,

valorii rk în banda analizat .


Histograma normalizat  se obt, ine prin împ rt, irea tuturor valorilor
histogramei la num rul total de pixeli din imagine. În acest caz, e-
care punct al histogramei normalizate indic  probabilitatea de aparit, ie
a valorii intensit t, ii asociate (raportul dintre num rul de pixeli ce pre-
zint  valoarea respectiv  a intensit t, ii s, i num rul total de pixeli din
imaginii):

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
15

h(rk )
p(rk ) = (1.4)
N
Suma tuturor valorilor ce denesc histograma normalizat  este
egal  cu unitatea.

Aplicatie 1.6. Pentru imaginea color asat  în Fig.


, , 1.6-stânga, s  se
calculeze s, i s  se reprezinte în aceeas, i gur  histogramele normalizate
ale celor trei benzi R G B.

img = imread('parrots.jpg'); % citirea imaginii

[sx,sy,sz] = size(img); % dimensiunile imaginii


s = sx*sy; % numarul de pixeli

hr = imhist(img(:,:,1)); % generarea histogramelor,


hg = imhist(img(:,:,2)); % individual pentru fiecare
banda
hb = imhist(img(:,:,3));

pr = hr/s; % normarea histogramelor


pg = hg/s;
pb = hb/s;

I = 0:255; % vectorul valorilor


intensitatilor

figure,
subplot(1,3,1), stem(I,pr,'Marker','none'), ylim([0 0.1]),
xlabel('intensity values'), ylabel('probabilities'),
title('normalized histogram - R band'), grid;
subplot(1,3,2), stem(I,pg,'Marker','none'), ylim([0 0.1]),
xlabel('intensity values'), ylabel('probabilities'),
title('normalized histogram - G band'), grid;
subplot(1,3,3), stem(I,pb,'Marker','none'), ylim([0 0.1]),
xlabel('intensity values'), ylabel('probabilities'),
title('normalized histogram - B band'), grid;

Imaginea este citit  cu sintaxa imread, iar dimensiunile ei, nece-


sare pentru a calcula num rul total de pixeli, sunt memorate folosind
funct, ia size. Histogramele benzilor se genereaz  cu instruct, iunea
imhist s, i se normalizeaz  ulterior prin împ rt, irea valorilor lor la nu-
m rul total de pixeli ai imaginii. Reprezentarea grac  a histogramelor
se realizeaz  în aceeas, i gur , folosind funct, ia subplot.

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
16

Fig. 1.7: Histogramele normalizate ale benzilor R G B ce


alc tuiesc imaginea cu papagali.

1.3 Exercit, ii propuse


1. S  se genereze urm toarele dou  funct, ii:

2πt 2πt
f1 (t) = cos( ) + sin( )
T T
2πt 2πt
f2 (t) = cos( ) − sin( )
T T

Variabila t va lua valori cuprinse între 0 si 15 secunde, cu un


,

pas de 0.1s, iar perioada T a functiilor sinusoidale va  de 5


,

secunde. Cele dou  funct, ii se vor reprezenta pe acelas, i grac, în


culori diferite.

2. S  se genereze un s, ier-funct, ie ce calculeaz  urm toarea funct, ie


de dou  variabile:
f (x, y) = x2 + y 2 (1.5)

Folosind dou  instruct, iuni for, s  se apeleze funct, ia creat  pen-


tru a calcula s, i memora valorile ei pentru ecare pereche (x, y),
variabilele x s, i y ind variate între limitele 0 s, i 5 cu pas de 0.3.

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
17

S  se reprezinte grac, în aceeasi gura, valorile calculate ale


funct, iei folosind instruct, iunile mesh s, i surf.

3. S  se genereze dou  matrice cu 5 linii s, i 5 coloane, conform


urm toarelor criterii:

ˆ prima matrice: ecare element este egal cu suma dintre


indexul liniei s, i indexul coloanei aferente (se vor folosi dou 
instruct, iuni de control for)
ˆ a doua matrice: elementele de pe diagonala principal  s, i de
deasupra ei sunt egale cu 1, iar elementele de dedesubtul
diagonalei principale sunt egale cu −1 (se vor folosi dou 
instruct, iuni for s, i o instruct, iune condit, ional  if-else)

S  se înmult, easc  element cu element cele dou  matrice, s, i s  se


calculeze rangul s, i determinantul matricei rezultate.

4. S  se converteasc  o imagine color într-o imagine în tonuri de gri.


Asati imaginea si reprezentati grac histograma normalizata a
acesteia.

5. S  se genereze primii 10 termeni ai sirului lui Fibonacci F, denit


,

astfel:

(
1, pentru i = 1, 2
Fi =
Fi−2 + Fi−1 , dac  i≥3

D. Faur, C.Pătrașcu, A. Popescu, C.Dănișor - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016

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