Sunteți pe pagina 1din 17

Lucrarea 1

Introducere n Matlab

1.1 Obiectivul lucrrii


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 prelucrrii 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. Functionalitt, 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 programrii
grace, denumit Simulink.

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

1
D. Faur, C.Ptracu, A. Popescu, C.Dnior - 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 apsnd 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 apelnd

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 fr semn, pe 8, 16, 32, respectiv 64 bit, i (int8,
uint8, int16, uint16 etc). Conversia se realizeaz apelnd funct, ia spe-
cic formatului, ce are ca argument denumirea variabilei - int64(a)

D. Faur, C.Ptracu, A. Popescu, C.Dnior - 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 schimbrii 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 apsarea tastei F9. Pentru a comenta o linie de
cod se va aduga 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
urmtoarea 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 genernd 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.Ptracu, A. Popescu, C.Dnior - 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 numrul mare s, i di-


versitatea pachetelor de funct, ii predenite, cele mai multe dintre ele
reprezentnd 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 cuta funct, ii predenite ce ndepli-
nesc anumite caracteristici se va utiliza instruct, iunea lookfor urmat
de un cuvnt cheie. n cadrul lucrrilor 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, avnd 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 adevr 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 adevrat, execut secvent, a de cod imediat urmtoare. 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.Ptracu, A. Popescu, C.Dnior - 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, numrul de execut, ii ind constrns
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 atta timp ct
condit, ia specicat este adevrat. Condit, ia de adevr 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 numr prede-


nit de ori, numrul 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, conducnd ctre 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 ptrate, [ ]. 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.Ptracu, A. Popescu, C.Dnior - 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 urmtor:

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

Vectorii reprezint cazuri particulare ale matricelor. Ei sunt


alctuit, 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 cror 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: numrul de linii m si numrul 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;
,

- scderea 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. Numrul de coloane al lui A trebuie s e
egal cu numrul de linii al lui B;

D. Faur, C.Ptracu, A. Popescu, C.Dnior - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
7

- mprt, irea matriceal (/) C = A / B, nmulteste matricea , ,

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


, ,

numr de coloane;

- nmult, irea element cu element (.) C = A .* B, nmulteste , ,

ecare element al matricei A cu elementul corespunztor din ma-


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

- mprt, irea element cu element (.\) C=A.\ B, realizeaz


mprt, irea ecrui element al matricei A la elementul corespun-
ztor 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.Ptracu, A. Popescu, C.Dnior - 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
(avnd aceeas, i lungime cu cea a semnalului) ce stocheaz momentele
de timp aferente ecrui es, antion. n cazul es, antionrii 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 mrimi exist relat, ia:

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

mrimea N ind numrul 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 reprezentrii semnalul c-
ptnd aspect de semnal analogic. Instruct, iunea stem as, eaz sem-
nalul sub forma sa digital, prin reprezentarea individual a ecrui
es, antion.

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


torul momentelor de timp s, i vectorul alctuit 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.

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


dic aspectul vizual al reprezentrii 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.Ptracu, A. Popescu, C.Dnior - 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 reprezentrii sem-


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

As, area ecrui 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.Ptracu, A. Popescu, C.Dnior - 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),
urmtoarele sintaxe de as, are vor  precedate de instruct, iunea hold
on. Pentru a deosebi gracele as, ate n aceeas, i gur este util
adugarea 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 nct ea s cont, in mai multe reprezentri grace in-
dependente. Divizarea ferestrei se controleaz folosind instruct, iunea
subplot. Aceast sintax va  apelat naintea ecrei funct, ii de
as, are, primind ca parametri de intrare numrul de linii s, i numrul de
coloane n care este mprt, it fereastra, respectiv indicele subsect, iunii
n care se va as, a urmtorul grac. Subsect, iunile se numeroteaz n
ordinea liniilor; de exemplu dac o fereastr este mprt, 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.Ptracu, A. Popescu, C.Dnior - 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.Ptracu, A. Popescu, C.Dnior - 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 reprezentnd 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 mrimile 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 reprezentrii 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.Ptracu, A. Popescu, C.Dnior - 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 prelucrrii
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 intensitt, ii pixelului (R,G,B) ce se


gses, te pe linia i s, i coloana j;
I(i,j,1) - red valoarea intensitt, ii n banda R;

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


Uzual, acestea sunt reprezentate pe 8 biti- valorile intensittii pixelilor
,

sunt ntre [0 : 255].


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

D. Faur, C.Ptracu, A. Popescu, C.Dnior - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
14

Fig. 1.6: Asarea unei imagini nainte si dup reducerea


, ,

numrului de benzi (stnga-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
numrul de subintervale (de lungime egal) n care se mparte gama
intensitt, ilor. Prin calculul histogramei ecrui subinterval denit i se
asociaz numrul de puncte n care valoarea intensitt, ii se ncadreaz
ntre limitele subintervalului. Dac numrul de subintervale denite
este egal cu numrul valorilor posibile ale intensitt, ii, histograma h va
cont, ine numrul de aparit, ii a ecrei valori din gama intensitt, ilor:

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

unde: N este numrul de elemente a multimii valorilor intensittii


, ,

(uzual N = 256), rk , valorile intensittii iar nk , numrul de aparitii a


, ,

valorii rk n banda analizat.


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

D. Faur, C.Ptracu, A. Popescu, C.Dnior - 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-stnga, 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 numrul total de pixeli, sunt memorate folosind
funct, ia size. Histogramele benzilor se genereaz cu instruct, iunea
imhist s, i se normalizeaz ulterior prin mprt, irea valorilor lor la nu-
mrul total de pixeli ai imaginii. Reprezentarea grac a histogramelor
se realizeaz n aceeas, i gur, folosind funct, ia subplot.

D. Faur, C.Ptracu, A. Popescu, C.Dnior - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016
16

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


alctuiesc imaginea cu papagali.

1.3 Exercit, ii propuse


1. S se genereze urmtoarele dou funct, ii:

2t 2t
f1 (t) = cos( ) + sin( )
T T
2t 2t
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 urmtoarea 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.Ptracu, A. Popescu, C.Dnior - 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


urmtoarelor 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 =
Fi2 + Fi1 , dac i3

D. Faur, C.Ptracu, A. Popescu, C.Dnior - Teoria Transmisiunii Informatiei- Aplicatii, Printech 2016

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