Aplicat ie a dimensiunii fractale LUCRARE DE LICENT  A Coordonator Absolvent Conf.dr.Liviu Dinu Con acel Elena-Cristina Abstract Lumea noastr a… [619617]

UNIVERSITATEA BUCURES TI
FACULTATEA DE MATEMATIC A S I INFORMATIC A
SPECIALIZAREA INFORMATIC A
Aplicat ie a dimensiunii fractale
LUCRARE DE LICENT  A
Coordonator Absolvent: [anonimizat].dr.Liviu Dinu Con acel Elena-Cristina

Abstract
Lumea noastr a este in nit de complex a din punct de vedere vizual. Geometria frac-
tal a este prima limb a conving atoare a complexit at ii vizuale; ne ofer a un vocabular
potent pentru formele complexe. Prin geometria fractal a putem descrie comple-
xit at i haotice ^ n simple ecuat ii. Studiul de fat a incearc a s a coreleze complexitatea
vizual a cu percept ia frumuset ii prin intermediul dimensiunii fractale. M asurarea
este aplicat a asupra reprezentant ilor expresionismul abstract, ^ n^ ncercarea de a co-
rela  si uni ca conceptele ce de nesc complexitatea vizual a  si percept ia frumuset ii.
2

Cuprins
1 Prezentare general a 5
1.1 Motivarea alegerii temei . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Problematica tratat a . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2 Fractali 10
2.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Dimensiune fractal a . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.2 Dimensiunea Hausdor . . . . . . . . . . . . . . . . . . . . . 11
2.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 Modelare procedural a 16
3.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2 Algoritm grayscale . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 Detect ia de margini . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3.1 Detect ia de margini prin histerezis . . . . . . . . . . . . . . 20
3.4 Corelarea datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5 Box-counting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4 Motivarea alegerii mediilor de programare utilizate 29
4.1 Introducere in limbajul de programare Java . . . . . . . . . . . . . 29
4.1.1 Platforma Java . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.1.2 Limbajul Java . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.3 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2 Librarii folosite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.2 java.util . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.3 java.imageio . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.4 java.awt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3

4.2.5 java.swing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5 Descrierea aplicat iei 40
6 Interpretarea rezultatelor 44
6.1 Rezultate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.2 Analiz a  si interpretare . . . . . . . . . . . . . . . . . . . . . . . . . 44
7 Concluzii 50
8 Anexe 51
8.1 Realizarea gra celor . . . . . . . . . . . . . . . . . . . . . . . . . . 51
8.2 Realizarea interfet ei . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4

Capitolul 1
Prezentare general a
1.1 Motivarea alegerii temei
Judecata estetic a este un dimeniu de interes universal, ^ n sensul ^ n care poate
ajuta la ^ nt elegerea unor concepte geenrale ce determin a lucrurile pe care le g asim
pl acute  si le c aut am. ^In lucrarea de fat a ^ ncerc s a determin, prin mijloace informa-
tice, media  si pragul complexit at ii vizuale ^ n pictur a. Pornind de la informa'c tii
deja existente ce plaseaz a complexitatea ideal a ^ n jurul num arului 1.54 (conform
Sprott, 1996), am aplicat m asur atoarea necesar a ^ n domeniul expresioni stilor, un
domeniu ^ nc a necercetat, din cuno stint ele noastre. Rezultatele obt inute nu sunt
total intuitive doarece num arul preponderent asociat operelor,  si anume de 1.8
dep a seste a sept arile. Aceast a m arime este concludent a pentru curentul analizat,
dar  si pictur a ^ n general, deoarce ofer a informat ii legate de speci citatea  si orienta-
rea artei. Mai exact, este o dovad a a separ arii picturii abstracte de cea tradit ional a,
p astr^ and-o totu si ^ n aria ce o face general apreciat a.
Aprecierea artei este cu sigurant a un domeniu foarte subiectiv  si personal.
St^ and ^ n fat a unei picturi de Pollock sau Giacometti  si urm arind modelele dense
create de imaginar, nimeni nu poate pre-determina dac a acesta va pl acut sau
nu. Un computer calculeaz a parametrii vizualului cu totul diferit fat a de un obser-
vator uman. Oamenii observ a tot i parametrii unui tablou concomitent (m arimea,
culoaream complexitatea, textura), ace stia av^ and un impact total. ^In schimb, in-
formatiz^ and procesul, se relev a o metod a reduct ionist a – ce separ a informat ia  si
calculeaz a ecare parametru izolat. ^In consecint  a, de si o analiz a computerizat a
nu va putea spune dac a o oper a va pl acut a sau nu, poate spune care sunt mode-
lele cu precizie. ^In czul de fat a, aceasta este realizat a prin dimensiunea fractal a,
cuanti care a complexit at ii vizuale, oferind o nou a perspectiv a asupra ce este con-
5

siderat frumos.
Complexitatea vizual a a fost mereu un factor predictor al preferint elor pentru
lucr arile de natur a artistic a. Diferite studii examineaz a m asura ^ n care complexi-
tatea artelor poate previzibil a din punct de vedere automatizat.Actualul studiu
trateaza modalitatea ^ n care dimensiunea fractal a este o m asur a a judec at ilor de
percepere a frumuset ii  si o legatur a direct a cu procesul de creat ie.
Ipoteza ^ n care aplicabilitatea unei legi matematice se poate extinde la o
corelat ie ^ ntre percept ia timpului, complexit at ii  si atractivit at ii subiective este
^ n primul r^ and con rmat a de propriet at ile dinamice aseman atoare fractalilor ale
naturii ^ nconjur atoare(conform Mandelbrot, 1992). ^In perioada anilor 60, cer-
cet atorii au ^ nceput s a examineze cum sistemele naturale, ca de exemplu, vremea,
se schimb a ^ n timp. Descoperirile au ar atat c a aceste sisteme nu sunt guvernate
de legi ale hazardului, ci au un substrat compus din foarte subtile forme de ordine.
Prima etichet a a fost cea de haos, iar un nou domeniu a dezvoltat teoria haosului
pentru a explica dinamica naturii. Apoi, ^ n anii 70, o nou a form a a geometriei
s-a creat pentru a descrie modelele pe care procesele haotice le las a ^ n urm a. Cu
numele de fractali, dat de descoperitorul lor, Benoit Mandelbrot, noile forme erau
complet diferite de formele euclidiane. Contrast^ and cu liniile arti ciale, fracta-
lii consist a din modele ce reapar la nivele din ce in ce mai mici de magni cat ie,
cre^ and forme de complexitate imens a. Se construie ste astfel o nou a modalitate de
a g^ andi ce se bazeaz a pe o vedere intuitiv a a lumii ^ nconjur atoare, ^ n care ordinea
este o replicare a simetriilor, ^ ncopor^ and nepredictibilit at i  si asimetrii, simul^ and
ambiguitatea contrariilor.
Aceast a teorie ar putea prezenta important  a cultural a, ^ n sensul ^ n care ea sub-
liniaz a c a arta  si  stiint a nu sunt componente separate ale unei culturii, ci se a
 a ^ n
stransa dependent a(Marcus, 1982). Putem concepe, ^ n consens cu teoria haosului,
dinamica nelianiar a complex a a proceselor culturale ca pe un sistem
uid interac-
tiv, ^ n care ecare disciplin a contribuie cu propriul
ux, iar ideile interact ioneaz a
 si se in
uent eaz a reciproc. Un asemenea univers se poate auto-ordona, iar evolut ia
sa apare ca o form a de cooperare  si coordonare a componentelor interactive.
Abordarea holistic a a modului de ^ ntelegere a procesului de creat ie presu-
pune o mutat ie de la modelul linear, simplist, mecanist la unul conformist ^ n care

uctuat iile sunt st ari de normalitate corespunz atoare st arilor de ordine ascunse ^ n
haos. ^In acest sens, se poate spune c a nu exist a diferent e notabile^ ntre experient ele
creatoare din lumea artei  si lumea  stiint ei,^ n afar a de evaluare. Modelul de evolut ie
6

a activit at ii creatorului unei opere de art a urmeaz a un curs propriu, individual,
asem an ator unui sistem dinamic neliniar complex. La fel cum prin bifurcat ii  si
salturi, un sistem ^ ncearc a s a ajung a la o stare de echiliru, munca artistului poate
s a evident ieze
uctuat ii ^ n concentrare, salturi peste etape, pendul ari ^ ntre 2 etape
sau revenire la etape anterioare. Privind procesul de creat ie ca un proces haotic,
este posibil s a descoperim  si modul ^ n care acesta se combin a cu alte activit at i.
Arta aduce la o distant  a m asurabila inventivitatea uman a, ^ n raport cu cre sterea
organic a, deoarece, cel put in pentru moment, voint a omului pare s a se identi ce
cu fort ele universale ale universului(conform Marcus, 1982).
Estetica experimental a are o istorie lung a. De exemplu, tat al lui Galileo a
efectuat experimente legate de estetica intervalelor de muzica, ^ n 1588, ^ n funct ie
de diferite sc ari muzicale  si sincroniz ari. Gustav Fechner a fost primul care a
^ nceput investigat iile serioase ^ n acest domeniu, pornind de la dreptiunghiul de
aur, ^ n 1876. ^In 1933, George David Birkho , unul dintre primii matematicieni
americani notabili, a sugerat o formul a pentru complexitatea imaginii  si a propus-o
ca o m asur a a esteticii. Iar ^ n 1938, Rashevsky, fondatorul biologiei matematice,
a sugerat o conexiune ^ ntre estetic a  si neuropsihologie. Munca lui Mandelbrot a
adus deasemenea atent ia asupra relat iei dintre fractalii matematici  si sistemele
dinamice ^ n domeniul esteticii.
Baza esteticii fractalice a ^ nceput cu studiile lui Clint Sprott. Acesta a propus
dimensiunea fractal a ca m asur a a complexit at ii unei imagini fractalice,  si a exa-
minat relat ia sa cu percept ia estetic a. Articolul s au din 1994, arat a o preferint  a
general a ce culmineaz a ^ n jurul dimensiunii de 1.51 pentru sisteme de funct ii ite-
rate, ^ n spat ial 2D, prin calculul mediei dimensiunii a 76 de imagini notate cu
5, pe o scara de la 1 la 5. Experimentul a fost extins de Aks si Sprott ^ n 1996,
m asur^ and judec at ile viz^ and estetica a 24 de subiect i c arora le sunt prezentate 324
de imagini fractalice;  si de Fred Abraham ^ n 2001, respective Mitina  si Abraham
^ n 2003, ace stia din urm a m asur^ and r aspunsul a 18 subiect i ^ n fat a a 16 imagini.
Rezultatele au ar atat o preferint a pentru dimensiunea de 1.54, ^ n fat a celei de
0.59, 1.07 si 2.27.
Lucrarea de fat  a ^  si propune s a computerizeze dimensiunea fractal a, av^ and ca
baz a algoritmul lui Sprott. Ipotezele premerg atoare vor testate prin aplicarea
algoritmului pe o serie de picturi abstracte celebre, ce au dat na stere la dezbateri
 si controverse legate de estetica  si percept ia lor de c atre public.
7

1.2 Problematica tratat a
Pictura, la fel ca restul artelor vizuale, creat ia plastic a  si arhitectura, designul,
gra ca de calculator  si estetica, este potent ial bene ciar a a unui mod de a privi
structura sa ^ ntr-o alc atuire ascuns a, de a-i descoperi libert at ile  si restrict iile, re-
gulile de funct ionare  si izomor smul lor cu universal biologic  si uman.
O practic a milenar a uman a a dezv aluit sincretismul complex al universului
artistic, ^ n care propriet at ile matematice sunt ^ n str^ ans a corelat ie cu efectul artis-
tic. Astfel, se poate discuta de descoperiri f acute ^ n urm a cu secole, ca reaparit ia
 sirului lui Fibonacci ^ n natur a  si cele mai simple structuri ce dau aparent a ordinii
 si frumuset ii, sau descoperiri mai recente, ca regulile morfologice ale eredit at ii.
Una dintre principalele discut ii ce probabil sunt lipsite de nalitate, este legat a
de m asura^ n care creatorii s-au^ ndreptat instinctiv spre anumite regularit at i mate-
matice sau le-au ales deliberat. Psihologia experimental a a demonstrat ^ nclinarea
oamenilor spre a alege structuri bazate pe reguli simple, generale, prezente la mai
multe nivele de organizare ale universului. Artistul devine din ce ^ n ce mai mult
dublat de un cercet ator  stiint i c,  si ^ n ciuda faptului c a s-a teoretizat  si s-a pledat
pentru ment inerea unui statut esent ial distinct al artei, trebuie acceptat a reali-
tatea, conform c areia granit ele dintre  stiint  a  si art a nu mai este at^ at de clare pe
c^ at se p area ^ ntr-o reprezentare idealizat a. Evolut ia culturii reface astfel, la nivel
superior, o situat ie care era dominant a ^ n perioada Antichit at ii sau Rena sterii .
Artistul supune cu un scop determinat propriet at ile materiei, transform^ and-o
^ n limbaj, prin proiectarea asupra sa a funct iunilor fundamentale ale limbajului
articulat. Era nevoie de descoperirea unor procedee care s a permit a s a se stabi-
leasc a, pentru o structur a vizual a discret a, posibilitatea parcurgerii sale ^ ntr-un
mod organizat.
Procesele de cuanti care  si convergent  a sunt simptomatice pentru modul ^ n
care arta modern a dezvolt a o tendint  a general a de diminuare a funct iilor metafo-
rice  si augmentare a funct iei simbolice. Br^ ancu si spunea despre opera sa : Ceea
ce ei numesc abstract, este de fapt foarte realist, indc a ceea ce e real nu e ex-
terior, ci idea, esent a lucrurilor. Arta modern a este mai put in preocupat a de a
simula realitatea existent a, obsesia ei e mai degrab a instaurarea unei noi realit at i,
a c arei relat ie cu realitatea contingent a devine din ce ^ n ce mai indirect a  si mai
profund a . De la mimesis la simbol, arta s-a esent ializat, a str ab atut un proces de
abstractizare, sinesteziile pe care ea se bazeaz a sunt din ce ^ n ce mai so sticate.
8

^In concluzie, lucrarea de fat a incearc a sa argumenteze c a viziunea matematic a
ofer a o perspectiv a mai clar a a viziunii artistice a creatorilor, explic^ and ^ ntr-o anu-
mit a m asur a procesul de creat ie, prin reguli ce par sa ordoneze haosul din spatele
tr airilor, percept iilor  si s a aduc a la un nivel tangibil raportul dintre reproducerea
realit at ii  si instaurarea unei noi ordini.
Structura lucr arii cont ine descrierea elementelor necesare pentru determinarea
algoritmilor de lucru, dezvoltarea aplicat iei  si interpretarea rezultatelor. Capitolul
1 descrie motivarea general a general a a alegerii temei  si ^ ncadrarea acesteia ^ ntr-
un curent mai larg de semiotic a vizual a, ^ mpreun a cu rezultatele existente deja
din studii anterioare legate de dimensiunea fractal a. Capitolul 2 face trecerea la
not iunile teoretice folosite. Este descris conceptul de fractal  si dimensiune frac-
tal a,  si sunt oferite explicat ii legate de utilitatea acestei dimensiuni, ^ n comparat ie
cu cea topologic a  si vis-a-vis de formele naturale. Se realizeaz a o descriere deta-
liat a a elementelor ce determin a complexitatea vizual a, ^ mpreun a cu exemple din
natur a. Capitolul 3 prezint a algoritmii ce fac posibil a m asur atoarea dimensiunii
fractale. Se prezint a procedural pa sii necesari procesului de analiz a a imaginii  si
interpretare a rezultatelor. Capitolul 4 descrie modul de programare folosit. Se
dau detalii clare despre platforma  si funct iile folosite, ^ mpreuna cu libr arii afe-
rente necesare. ^In capitolul 5 este prezentat a aplicat ia ce permite utilizatorului s a
utilizeze funct iile descrise ^ n capitolele anterioare , oferind o interfat  a gra c a ce
o face u sor de folosit. Capitolul 6 face analiza  si interpretarea rezultatelor. Sunt
prezentate dimensiunile fractale pentru operele selectate din cadrul curentului ex-
presionist  si sunt corelate, oferind explicat ii despre posibilele informat ii  si direct ii
ce rezult a de aici. Capitolul 7 ofer a concluziile licent ei, ar at^ and rezultatul  si uti-
litatea ei. Anexe  si materiale auxiliare se g asesc ^ n interiorul anexelor.
9

Capitolul 2
Fractali
2.1 Introducere
Ce este un fractal ? Un fractal este "o gur a geometric a fragmentat a sau fr^ ant a
care poate divizat a ^ n p art i, astfel ^ nc^ at ecare dintre acestea s a e (cel put in
aproximativ) o copie miniatural a a ^ ntregului". Termenul a fost introdus de Benoit
Mandelbrot ^ n 1975  si este derivat din latinescul fractus, ^ nsemn^ and "spart" sau
"fracturat".
Cuv^ antul "fractal" denot a o form a ce este construit a recursiv sau auto-similar a,
mai exact, o form a ce denot a similaritate la toate sc arile de magni cat ie  si este de
aceea caracterizat a ca "in nit complex a". Fractalii prezint a detalii la toate sc arile,
de la foarte mic la foarte mare, de aceea pot avea o form a prea neregulat a pentru
a descris a ^ n limbajul geometriei euclidiene. La nivel local  si global este ^ n gene-
ral autosimilar (autosimilaritate exact a, quasi-autosimilaritate,  si autosimilaritate
stocastic a),  si autoa n (proprietatea geometric a ce atest a invariant a la scalare).
C^ ateva exemple sunt:
1. Setul Cantor
2. Sierpinski
3. Curba lui Koch: construct ia sa vizual a poate imaginat a ca un segment ce
sufer a recursiv urm atoarele alterat ii:
a. diviziunea segmentului ^ n 3 segmente de lungimi egale.
b. trasarea unui triunghi echilateral ce are segmentul de mijloc din pasul 1
ca baz a.
c.  stergerea segmentului ce reprezint a baza triunghiului de la pasul 2.
10

Curba lui Koch reprezint a forma ce se formeaz a atunci c^ and num arul iterat iilor
pa silor descri si tinde la in nit.
4. Setul lui Mandelbrot:
Exemple de aproxim ari fractalice se g asesc ^ n natura cu u surint a. Aceste
obiecte re
ect a proprietat i de structura auto-similar a la o scar a extins a, dar
nit a. Exemplele includ norii, fulgii de nea, munt ii, ret ele hidrogra ce, sis-
temul vascular  si faimosul exemplu
5. Coasta Marii Britanii
2.2 Dimensiune fractal a
2.2.1 Introducere
O dimensiune topologic a de ne ste diferent a de baz a^ ntre seturi topologice "^ nrudite".
^In ^ ncercarea de a g asi o dimensiune topologic a, se pot int^ alni mai multe obstacole:
spre deosebire de un spat iu vectorial, nu pot i determina dimensiunea ca maximum
de vectori liniar independent i.
De aceea, pentru a g asi o de nit ie intuitiv a a unei dimensiuni topologice trebuie
c autate diferite propriet at i ce au acelea si efecte ca dimensiunea geometric a.
Un exemplu cheie de ^ nt elegere a dimensiunii fractale ^ l reprezint a setul Can-
tor. Acesta are dimensiunea topologic a zero, dar totu si, are aceea si cardinalitate
ca o linie real a – ^ n acest sens a stept^ andu-ne ca dimensiunea sa s a e 1. Dar setul
lui Cantor nu are intervale ^ n interiorul s au, astfel denot^ and o dimensiune egal a
cu zero.
R aspunsul st a atunci undeva la mijloc. Dimensiunea setului Cantor ar trebui
s a aib a dimensiunea mai mare ca zero, dar mai mic a dec^ at unu.
2.2.2 Dimensiunea Hausdor
Introducere
Dimensiunile topologice cunoscute, ca de exemplu dimeniunea Lebesgue, ne ofer a
o not iune ^ n ceea ce prive ste o dimensiune geometric a pentru un spat iu topologic.
A sa cum este de a steptat, dimensiunea topologic a a lui Rnesten. Dar exist a
11

seturi topologice pentru care dimensiunile topologice pot p area naive.
^In acest scop a fost inventat a dimensiunea fractal a. Dimensiunile topologice
au fost construite pe c^ ateva not iuni topologice, ca aceea c a limita unui spat iu are
o dimeniune mai mic a dec^ at 1. Dimensiunea Hausdor (dimensiunea fractal a)
se bazeaz a pe o not iune diferit a, necaracteristic a topologiei(conform Engelking,
1978).
Ne vom uita ^ n continuare la Rnpentru a observa alt a tras atur a ce implic a
dimensiunea geometric a, pentru a ^ nt elege dimensiunea Hausdor . Dac a ne ima-
gin am un patr at^ n R2cu latura de 1, aria sa va , de asemenea 1. Dac a magni c am
 si compar am cele 2 p atrate:
Magni care Latura aria Factorul:log(Arie )
log(Latura )
1 1 1 –
2 2 4 2
3 3 9 2
4 4 16 2
Tabela 2.1
Dac a lu am un cub in R3cu latura de lungime 1, volumul este deasemenea 1.
Dac a magni c am, obt inem urm atoarele rezultate:
Magni care Latura aria Factorul:log(Arie )
log(Latura )
1 1 1 –
2 2 8 3
3 3 27 3
4 4 64 3
Tabela 2.2
Mai general, dac a lu am un cub In, si magni c am spat iul de kori, cubul va
cre ste deknori.
Acesta este un alt efect al dimensiunii geometrice. De nit ia dimensiunii Haus-
dor este bazat a pe aceast a not iune legat a de dimensiune. Din aceste considerente
este nevoie de o metric a (pentru a m asura cre sterea spat iului ). Aceast a dimen-
siune ofer a rezultatele dorite pentru fractali, dup a cum vom demonstra, dar mai
^ nt^ ai este nevoie de o formalizare a de nit iei.
12

^In 1919, matematicianul Hausdor , a introdus o noua dimensiune, dimensiu-
nea fractal a. Aceasta dimensiune m asoar a num arul de diametre mai mici necesare
pentru a acoperi o gur a. Dac a acest num ar este intreg, atunci dimensiunea este
topologic a, altfel, dimensiunea este fractal a.
Besicovitch, dezvolt^ and lucr arile anterioare ale lui Hausdor , a a rmat c a for-
mele ar putea avea ^ ntr-adev ar dimensiuni fract ionare cum ar 1,3 sau 2,5. Curbe
precum cele ale lui Sierpinski  si ale lui Koch ar putea explicate cu ajutorul aces-
tei dimensiuni.
^In mod concret, dimensiunea Hausdor /Besicovitch este de nit a prin rapor-
tul dintre logaritmul num arului de copii  si logaritmul m arimii semint ei cores-
punz atoare unei copii.
De nit ie formal a
Dimensiunea Hausdor este de nit a doar pentru spat ii metrice, folosind concepte
la lungime  si volum, ce necesit a o metric a.
De nitie 1. FieXo metrica  si Co colectie de sub-seturi. Atunci norma lui C
este
norm (C) =supfdiam (B) :B2Cg:
De nit ia dimensiunii Hausdor este dat a folosind o m asur a a spat iului, deci
vom de ni ^ n primul r^ and m asura Hausdor .
De nitie 2. FieAsubset al lui X. AtunciHd(A;e) =inffPdiam (Bi)d:C=
fBig;norm (C)<eg, undeCeste o acoperire num arabil a a lui A.
^Incerc am s a folosim o not iune geomtric a pentru a de ni o noua dimensiune.
SumaPdiam (Bi) poate g^ andit a ca "m arimea" unui segment 1 d^ n spat iu.
SumaPdiam (Bi)deste volumul num arului de cuburi d-dimensionale necesare
pentru a acoperi spat iul.
Pentru a putea folosi Hdcu u surint a, de nim m asura:
De nitie 3. P-dimensiunea Hausdor MdesteMd(A) =supfHd(A;e)g.
Observatie 1. a<b,Hd(A;a)Hd(A;b), de aceeaMd(A) =lime!0(A;e):
Aceast a m asur a ne spune "volumul" lui Adac a ar ^ ntr-un spat iu d-dimensional.
13

De nitie 4. Dimensiunea Hausdor a lui Aeste
dimH(A) =supfd: 0<Md(A)<1g:
Observatie 2. Dac apd, atunciMp(A)Md(A).
De nit ia este natural a, dimensiunea lui A ind cea mai mare dimensiune pentru
care volumul lui A este nit.
Teorema 1. Dac a 0<Md(A)<1atuncidimH(A) =d:
Demonstratie. Ar at am^ n primul r^ and c a dac a p<d , atunciMp(A) =1:Md(A)>
0)exist a 1>  > 0,t > 0 astfel ^ nc^ at Hd(A;) =t, din de nit ia lui Hd:
Iar prin de nit ie, pentru orice e <  avemHd(A;e)t:Alegem e astfel ^ nc^ at
edp<t
N;e< , unde N este un num ar arbitrar. Fie C=fBig, cunorm (C)<e.
Amintim c a x<y,x1>y1.Pdiam (Bi)p=Pdiam (Bi)pddiam (Bi)depdPdiam (Bi)d
epdHd(A;e)N
t=N:
Pentru orice n, exist a un e astfel ^ nc^ atPdiam (Bi)pnu converge, pentru orice
setC, cunorm (C)e:Rezult a c a Mp(A) =lime!0Hd(A;e) =1:
Atunci, dac a d < p , din demonstrat ia anterioar a rezult a c a Md(A) =1,
contrazic^ and presupunerea.
Rezult a c a demonstrat ia este complet a.
2.3 Exemple
Pentru fractali simpli, dimensiunea se poate calcula cu u surint  a folosind not iunea
geometric a a dimensiunii Hausdor . Dimensiunea este intuitiv a: raportul dintre
magni care  si num arul de part i auto-similare dup a magni carelog(partiautosimilare )
log(magnificare ).
S a lu am de exemplu setul Cantor:
Magni care Num arul de part i auto-similare Factorul:log(partiautosimilare )
log(magnificare )
1 1 –
3 2 0.630929754
9 4 0.630929754
Tabela 2.3
d=log(N)
log(r)=)d=log(2)
log(3)= 0:63:
14

Putem observa c a m asura setului lui Cantor este ^ ntre un punct (dimensiune
0)  si o dreapt a (dimensiune 1), a sa cum era de a steptat.
Un alt exemplu este curba lui Koch. Putem observa c a lungimea curbei cre ste
la ecare iterat ie, av^ and lungime in nit a. Calcul^ and dimensiunea Hausdor pentru
aceasta obt inem:
d=log(N)
log(r)=)d=log(4)
log(3)= 1:26:
2.4 Rezumat
Cele demonstrate anterior sunt logice ^ n sensul ^ n care pentru a acoperi un p atrat
(o form a geometric a bidimensioanal a) cu linii (o form a geometric a unidimensio-
nal a) avem nevoie de o in nitate de linii. A sa cum am mai spus, m asura ne d a un
"volum" al setului. Dac a dimensiunea este d, atunci, dac a incerc am s a m asur am
un set A cu o dimensiune p < d atunci volumul s au p-dimensional va 1:Ul-
tima teorem a ne ajut a ^ n determinarea m asurii unui spat iu. Atunci c^ and g asim o
m asur a Hausdor dcare nu este 0 inseamn a c a am g asit dimensiunea c autat a.
Din punct de vedere vizual, acest concept ne ofer a un cursor continuu pentru
complexitatea vizual a a unui fractal. Partea ^ ntreag a din dimensiunea fractal a,
adic a 2 spre exemplu, ne arat a ^ n ce dimensiune euclidian a se a
 a fractalul. Iar
partea fract ionar a, de exemplu ,3 din 2,3, se numete incrementul fractalic. ^In
esent  a, cu c^ at acest increment cre ste, fractalul ocup a local din ce ^ n ce mai mult
din dimensiunea euclidian a ^ n care se a
 a, spre exemplu un plan, spre ocuparea
local a a unei p ari din dimensiunea euclidian a imediat urm atoare, adic a spat iu.
Pentru a explica de ce folosesc cuv^ antul local ^ n exemplul de mai sus, ofer
urm atorul exemplu: chiar dac a o minge este un obiect tridimensional, suprafat a
sa nu este, iar cu c^ at m arim sau cu c^ at facem zoom pe acea suprafat  a, ea devine
local planar a. Deci ^ n principiu o suprafat  a nu trebuie s a e neap arat un plan
euclidian plat pentru a avea o dimensiune fractal a de 2.0,  si nici nu trebuie s a
ocupe toate cele trei dimensiuni pentru a avea o dimensiune fractal a de 3.0.
Principala atract ie a geometriei fractale st a ^ n abilitatea acesteia de a descrie
formele iregulate sau fragmentate ce nu pot analizate cu geometria clasic a eu-
clidian a. Conceptul ofer a o modalitate de scalare a sistemelor din planul real  si
ofer a o interpretare geometric a relativ simpl a  si u sor de manipulat prin tehnici
matematice.
15

Capitolul 3
Modelare procedural a
3.1 Introducere
Pentru a computeriza metoda de determinare a dimensiunii Hausdor se folose ste
urm atorul algoritm ce cont ine etapele:
se citeste imaginea original a  si se proceseaz a p^ an a la o form a binar a;
se aplic a procedura de determinare a marginilor pentru a selecta zona de
analiz a;
se determin a punctele curbei "log-log";
se asociaz a dreapta corespunz atoare punctelor obt inute  si se calculeaz a panta;
se determin a dimensiunea fractal a;
3.2 Algoritm grayscale
Prima parte a implement arii o reprezint a transformarea imaginii pe care se va lucra
^ n una grayscale. Pentru aceasta este necesar un algoritm ce urmeaz a urm atorii
pa si:
se iau valorile fundamentale de ro su, verde  si albastru ale ec arui pixel;
se folose ste o formul a matematic a pentru a transforma aceste numere ^ ntr-o
singur a valoare;
se ^ nlocuiesc valorile originale de ro su, verde  si albastru cu valoarea obt inut a
de gri.
16

Metoda cea mai comun a de conversie la grayscale este folosirea mediei. Astfel,
nuant  a de gri reprezint a media aritmetic a a valorilor de ro su, verde  si albastru.
Formula este simpl a  si rapid a  si produce rezultate rezonabile, dar are  si dezavan-
taje. Principalul dezavantaj este c a nu reprezint a optim nuant ele de gri relativ la
percept ia uman a a luminozit at ii. De aceea, este nevoie de o formul a put in mai
complex a, ^ n care valoarea nuant ei de gri se calculeaz a astfel:
gray = (Red0:299 +Green0:587 +Blue0:114)
Algoritmul t ine cont de faptul c a retina uman a nu este uniform a pentru toate
culorile. Oamenii percep culoarea verde mai intens dec^ at ro su, iar culoarea ro sie
mai intens dec^ at pe cea albastr a. Formula de mai sus trateaz a ecare culoare ^ n
parte, a sa cum este perceput a de retina uman a.
^Implementarea algoritmului din cadrul aplicat iei este prezentat ^ n continuare:
1// f u n c t i a de determinare a nuantei de g r i
2 private int luminance ( int r ,int g ,int b)f
3 return (int)Math . round (0.299 r + 0.587g + 0.114b) ;
4g
5// procesarea i ma g i n ii p i x e l cu p i x e l
6 private void readLuminance ( ) f
7 int alpha , red , green , blue , gray ;
8 int grayPixel ;
9 for(int i = 0 ; i <width ; i++)
10 for(int j = 0 ; j <height ; j++)
11 f
12 alpha = new Color ( sourceImage . getRGB( i , j ) ) . getAlpha ( ) ;
13 red = new Color ( sourceImage . getRGB( i , j ) ) . getRed ( ) ;
14 green = new Color ( sourceImage . getRGB( i , j ) ) . getGreen ( ) ;
15 blue = new Color ( sourceImage . getRGB( i , j ) ) . getBlue ( ) ;
16
17 gray = luminance ( red , green , blue ) ;
18
19 grayPixel = new Color ( gray , gray , gray ) . getRGB ( ) ;
20 grayscaleImage . setRGB( i , j , grayPixel ) ;
21 g
22g
17

3.3 Detect ia de margini
Detect ia marginilor este numele dat unui set de metode matematice ce t intesc
spre a de ni punctele dintr-o imagine digital a ^ n care luminozitatea imaginii se
schimb a brusc, sau mai formal, are discontinuit at i. Punctele ^ n care imaginea ^  si
schimb a luminozitatea brusc sunt ^ n mod general organizate ^ ntr-un set de seg-
mente de linii curbe numite margini. Aceea si problem a poate aplicat a pentru
g asirea discontinuit at ilor ^ n semnale 1D, cunoscut a  si sub numele de detect ie de
pa si; sau ^ n g asirea discontinuit at ilor ^ n funct ie de timp, denumit a  si detect ia de
schimbare. Scopul general al detect iei de margini este de a reduce cantitatea de
date din image, conserv^ and propriet at ile structurale ce sunt necesare proces arii
urm atoare.
Detectorul de margini Canny este un operator ce folose ste un algoritm ^ n mai
mult i pa si pentru a detecta o varietate larg a de margini ^ n studiul imaginilor. A
fost dezvoltat de John F. Canny ^ n 1986. Canny a oferit  si o teorie computat ional a
de detect ie a marginilor explic^ and cum funct ioneaz a tehnica. Scopul cre arii algo-
ritmul a fost optimalitatea ^ n relat ie cu urm atoarele caracterisitici:
detect ie – probabilitatea ca o margine real a s a e detectat a ar trebui s a e
maximizat a, ^ n timp ce probabilitatea ca puncte ce nu apart in marginii s a
e localizate s a e minim a;
localizare – marginile detectate trebuie s a e c^ at mai apropiate de marginile
reale;
num arul de r aspunsuri – o margine real a nu trebuie s a aib a mai mult de un
corespondent detectat.
Pentru rularea algoritmului este nevoie de 5 pa si:
Netezire – inl aturarea zgomotului;
Determinarea gradient ilor – marginile ar trebui marcate acolo unde gradient ii
imaginii au magnitudine mare;
Suprimarea non-maximal a – doar maximele locale trebuie marcate ca mar-
gini;
Dublu m arginirea – marginile potent iale sunt determinate prin determinarea
pragurilor de limitare;
18

Detect ia de margini prin histerezis – marginile nale sunt determinate prin
suprimarea tuturor marginilor ce nu sunt conectate la o margine tare.
Netezire
Este inevitabil ca toate imaginile s a aib a o anumite cantitate de zgomot. Pentru
a evita riscul ca acest zgomot s a e confundat cu margini, el trebuie redus. Prin
urmare, imaginea este ^ n primul r^ and trecut a printr-un ltru gaussian(conform
Canny, 1986). Nucleul unui ltru Gaussian cu o deviat ie standard de = 1:4 este
:
B=1
1592
66666642 4 5 4 2
4 9 12 9 4
5 12 15 12 5
4 9 12 9 4
2 4 5 4 23
7777775
Determinarea gradient ilor
^In principiu, algoritmul Canny gase ste margini acolo unde intensitatea nuant elor
de gri se schimb a brusc. Aceste zone sunt g asite prin determinarea gradient ilor
imaginii. Gradient ii sunt determinat i pentru ecare pixel al imaginii netezite
aplic^ and operatorul Sobel. Primul pas ^ l reprezint a aproximarea gradientului in
direct ia x si y prin aplicarea nucleelor(conform Canny, 1986):
KGX=2
641 0 1
2 0 2
1 0 13
75
KGY=2
641 2 1
0 0 0
1213
75
Gradient ii de magnitudine poti determinat i ca distant  a euclidian a aplic^ and
teorema lui Pitagora:
jGj=q
G2
x+G2
y
undeGx siGysunt gradient ii pe direct ia x, respectiv y. Dup a acest pas,
marginile sunt late si nu indic a ^ n mod exact unde sunt mariginile reale. Pen-
tru a determina aceasta va nevoie s a e calculate direct iile marginilor, folosind
19

urm atoarea formul a:
= arctanjGyj
jGxj
Suprimarea non-maximal a
Scopul acestui pas este de converti marginile netezite ale imaginii ^ n margini
ascut ite. ^In principiu asta se realizeaz a prin p astrarea tuturor maximelor locale
din imaginea gradient ilor, si sterg^ and totul ^ n rest. Algoritmul este utilizat pentru
ecare pixel din imaginea gradient ilor:
1. Se aproximeaza direct ia gradientului, notat a cu la cel mai apropiat 45
2. Se compar a puterea marginii pixelului curent cu puterea pixelului ^ n direct ia
gradientului pozitiv, respectiv negativ. De exemplu, dac a direct ia gradien-
tului este nord ( theta = 90), se compar a cu pixelii de la nord  si sud.
3. Dac a puterea marginii pixelului curent este cea mai mare, se p astreaz a va-
loarea, altfel se  sterge(conform Canny, 1986).
Dublu-m arginirea
Pixelii ce fac parte din margine dup a suprimarea non-maximal a sunt marcat i cu
valoarea lor individual. Majoritatea vor margini adev a rate ale imaginii, dar alt ii
pot cauzat i de zgomot sau variat ii de culori din cauza suprafet elor aspre. Cea
mai simpl a modalitate de a le diferent ia este folosind praguri, astefel inc^ at doar
valorile ce trec peste aceast a limit a s a e p astrate. Algoritmul de detect ie Canny
folose ste dubl a m arginire. Pixelii ce fac parte din margine  si au valoarea mai mare
dec^ at pragul superior sunt marcat i ca puternici; iar cei ce sunt sub pragul inferior
sunt suprimat i.
3.3.1 Detect ia de margini prin histerezis
Marginile puternice sunt interpetate ca margini sigure  si sunt incluse imediat ^ n
imaginea nal a. Marginile slabe sunt incluse dac a  si numai dac a sunt conectate
la margini puternice. Logica din spatele acestei rat iuni se bazeaz a pe faptul ca
zgomotul sau alte deviat ii sunt put in probabile ^ n margini puternice (cu ajust arile
necesare ^ n setarea limit arilor). Astfel, marginile puternice vor datorate aproape
sigur doar marginilor reale. Marginile slabe ce sunt distribuite independent de alte
margini ^ n cadrul imaginii  si neadiacente vor reduse. Marginile slabe reale sunt
cel mai probabil conectate la margini puternice.
20

Prezint ^ n continuare implementarea din cadrul aplicat iei, ce are la baz a algo-
rimtul oferit de Tom Gibara([17]):
1// f u n c t i a de procesare
2public void process ( )f
3 width = sourceImage . getWidth ( ) ;
4 height = sourceImage . getHeight ( ) ;
5 p i c s i z e = width height ;
6 i n i t A r r a y s ( ) ;
7 readLuminance ( ) ;
8i f( contrastNormalized ) normalizeContrast ( ) ;
9 computeGradients ( gaussianKernelRadius , gaussianKernelWidth ) ;
10int low = Math . round ( lowThreshold MAGNITUDE SCALE) ;
11int high = Math . round ( highThreshold MAGNITUDE SCALE) ;
12 performHysteresis ( low , high ) ;
13 writeEdges ( data ) ;
14g
15// f u n c t i a de determinare a h i s t e r e z i s u l u i
16 private void performHysteresis ( int low , int high )f
17 Arrays . f i l l ( data , 0) ;
18 int o f f s e t = 0 ;
19for (int y = 0 ; y <height ; y++) f
20 for (int x = 0 ; x <width ; x++)f
21 i f( data [ o f f s e t ] == 0 && magnitude [ o f f s e t ] >= high )f
22 f o l l o w (x , y , o f f s e t , low ) ;
23g
24 o f f s e t ++;
25g
26g
27g
28
29private void f o l l o w ( int x1 , int y1 , int i1 , int threshold )f
30 int x0 , x2 , y0 , y2 ;
31
32 i f( x1 == 0) x0 = x1 ;
33 else x0 = x11 ;
34 i f( x1 == width 1) x2 = x1 ;
35 else x2 = x1 + 1 ;
36
37 i f( y1 == 0) y0 = y1 ;
38 else y0 = y11 ;
39 i f( y1 == height 1) y2 = y1 ;
40 else y2 = y1 + 1 ;
41
42
21

43 data [ i 1 ] = magnitude [ i 1 ] ;
44 for (int x = x0 ; x <= x2 ; x++)f
45 for (int y = y0 ; y <= y2 ; y++)f
46 int i 2 = x + ywidth ;
47 i f( ( y != y1jjx != x1 )
48 && data [ i 2 ] == 0
49 && magnitude [ i 2 ] >= threshold ) f
50 f o l l o w (x , y , i2 , threshold ) ;
51 return ;
52g
53g
54g
55g
56// f u n c t i a de dublu marginire
57 private void thresholdEdges ( ) f
58 for (int i = 0 ; i <p i c s i z e ; i++) f
59 i f( data [ i ] >0) data [ i ] = 1;
60 else data [ i ] = 0 xff000000 ;
61g
62g
3.4 Corelarea datelor
Scopul acestei proceduri este de a transforma datele statistice ^ n ecuat ii ce pot
folosite mai departe ^ n analiz a. Orice algoritm de potrivire la dreapta sau curba de
p atrate minim a optimizeaz a constantele unei ecuat ii de potrivire prin minimizarea
sumelor p atratelor deviat iei datelor actuale de la cele prezise de ecuat ie.
Se d a un set de date experimentale :
x1;y1
x2;y2
:
xn;yn
undexeste variabila independent a (cea considerat a x a ^ n momentul m sur atorii),
iaryeste variabila dependent a (cea care trebuie determinat a). Valorile xisunt
listate in ordine cresc atoare.
Consider am ^ n continuare c a relat ia dintre x siyeste una liniar a (^ n caz contrar
22

incercarea de a potrivi punctele pe o dreapt a este zadarnic a). Fie
y=ax+b
ecuat ia. Vrem s a determin am valorile ce reprezint a panta a si intercept ia b. Dac a
presupunem ca ecare punct are pondere egal a, adica ecare yiare aceea si eroare
ata sat a, atunci putem determina a sibminimiz^ and suma p atratelor deviat iei va-
lorilor actuale ale yide la valoarea liniei calculat a a lui y. Formulele pentru a sib
sunt urm atoarele:
a=(nPn
i=1xiyi)(Pn
i=1xi)(Pn
i=1yi)
(nPn
i=1×2
i)(Pn
i=1xi)2
b=(Pn
i=1×2
i)(Pn
i=1yi)(Pn
i=1xi)(Pn
i=1xiyi)
(nPn
i=1×2
i)(Pn
i=1xi)2
^In cadrul lucr arii de fat  a algoritmul este folosit ^ n determinarea tangentei ne-
cesare calculului dimensiunii fractale. Prezint ^ n continuare implementarea ^ n ca
drul aplicat iei:
1// f u n c t i a de determinare a pantei s i i n t e r c e p t i e i
2 void f i t ( double [ ] x , double [ ] y )f
3 showVector ( x ) ;
4 showVector ( y ) ;
5 i f( x . length != y . length ) System . out . p r i n t l n ( " S i r u r i l e t r e b u i e sa
aiba a c e e a s i dimensiune " + x . length +" "+y . length ) ;
6 elsef
7 int n = x . length ;
8 double sumx , sumy , sumxy , sumx2 ;
9 sumx = sumy = sumxy = sumx2 = 0 ;
10 for(int i = 0 ; i <n ; i++)f
11 sumx += x [ i ] ;
12 sumy += y [ i ] ;
13 sumxy += x [ i ] y [ i ] ;
14 sumx2 += x [ i ] x [ i ] ;
15g
16 slope = ( ( n sumxy)(sumxsumy) ) /(( nsumx2)(sumxsumx) ) ;
17 i n t e r c e p t = ( ( sumx2 sumy)(sumxsumxy) ) /(( nsumx2)(sumx
sumx) ) ;
18g
19g
23

3.5 Box-counting
Metoda box-count str^ ange si analizeaz a date din modele complexe prin spargerea
imaginii ^ n piese din ce ^ n ce mai mici, ^ n general cu forma patrat a. Procesul
poate asem anat cu magni carea  si mic sorarea folosind metode ce examineaz a ^ n
ce mod detaliile se schimb a odat a cu scara la care sunt m asurate. ^In practic a, se
schimb a m asura elementului cu care se inspecteaz a modelul.
Teoretic, algoritmul are rolul de a cuanti ca dimensiunea fractal a, dar din per-
spective practice, aceasta presupune ca scalare s a e cunoscuta ^ naintea analizei.
^In practica, factorul de scalare nu poate cunoscut ^ n precedent  a, de aceea algo-
ritmul box-count ^ ncearc a s a g aseasc a ^ n mod optim o metod a de a t aia imaginea
pentru a descoperi factorul de scalare. Metoda fundamental a de implementare
^ ncepe cu un set de masur atori – dimensiuni ale p atratelor – notat cu N,  si calibre,
notat cu. Apoi p atratele de m arime sunt transpuse pe model  si num arate.
Pentru a face aceasta, pentru ecare elemente de la 1 la N, se ia un p atrat de
latur asi se folose ste pentru a scana un set de date (parte a imaginii) prestabilit
printr-un plan de acoperire; iar la ecare pas se m asoar a num arul de caracteristici
relevante.
Datele relevante colectate ^ n cadrul procesului depinde de subiectul investigat
si de tipul de analiz a realizat. ^In cadrul lucr arii de fat a algoritmul a fost aplicat
pe imagini binare (ce au doar 2 culori: alb  si ngru). Informat ia prelucrata este
bazat a pe informat ia bruta dat a de pixeli cu privire la natura lor. Atunci c^ and
se aplic a algoritmul, la ecare num arare pentru a determina dimensiunea frac-
tal a, se ^ nregistreaz a dac a p atratul cont ine sau nu parte din pixelii de culoare alb a
determinat i prin detect ia de margini.
Algoritmul necesit a un plan de scanare care s a descrie cum datele vor adu-
nate, mai exact, cum se va mi sa p atratul peste spat iul ce cont ine modelul. Metoda
folosit a este cea tradit ional a prin care se scaneaz a folosind o gril a standard ce nu
are suprapuneri. Se simuleaz a ^ n mod repetat a sezarea de p atrate in cadrul grilei
ce acoper a imaginea, astfel ^ nc^ at niciun p^ atrat s a nu se suprapun^ a. Operat iunea
se termin a atunci c^ and se termin a de acoperit ^ ntreaga imagine. La pasul urm ator
se porne ste cu urm atoarea masur a din cadrul seriei de m arimi xat a la ^ nceput.
Datele obt ine sunt apoi corelate, cre^ andu-se 2 vectori: primul reprezent^ and
m arimea p atratelor, iar al doilea rezultatul num ar atorii pentru m arimea cores-
punz atoare. Pentru a determina dimensiunea Hausdor , datele sunt logaritmizate
 si apoi corelate pentru a determina panta curbei ce descrie relat ia dintre cei 2
vectori(conform [18]).
Descris^ n mod formal: dimensiunea fracta a DFdepinde de 2 tr as aturi: num ar atoarea
24

pentru ecare calibrare  si m arimea pentru ecare element. A  m notat cu Ndetaliul
 siscalarea. Pentru a determina cum detalierea se schimb a in funct ie de scalare
trebuie determinat a linia regresiei logaritmice pentru N si. Adic aDFeste panta
funt ieilnN
ln.
^In continuare prezint implementarea din cadrul aplicat iei:
1// f u n c t i a de procesare a i m a gi n i i binare s e l e c t a t e s i determinarea
m a t r i c i i de 1 s i 0 pe care se va l uc r a in continuare pentru timp
optim de r u l a r e
2 void processCountMatrix ( ) f
3
4 int i n d i c e ;
5 data = s e l e c t B l o c k (0 ,0 , width , height ) ;
6
7 for(int i = 0 ; i <height ; i++)f
8 for(int j = 0 ; j <width ; j++)f
9 i n d i c e = i width + j ;
10 i f( data [ i n d i c e ] == 1)f
11 countMatrix [ i ] [ j ] = 1 ;
12 g
13 elsef
14 countMatrix [ i ] [ j ] = 0 ;
15 g
16
17 g
18 g
19g
20 // f u n c t i a de determinare a a c c e p t a r i i p a t r a t u l u i a n a l i z a t
21 public int f l a g ( int startx , int starty , int width1 , int
height1 )f
22 for(int i = s t a r t y ; i <s t a r t y + height1 ; i++ ) f
23 for(int j = s t a r t x ; j <s t a r t x + width1 ; j++) f
24 i f( countMatrix [ i ] [ j ] == 1) return 1 ;
25 g
26 g
27 return 0 ;
28g
29 // f u n c t i a de logaritmare
30 double [ ] toLog ( int[ ] x )f
31 int i ;
32 int n= x . length ;
33 double [ ] logx = new double [ n ] ;
34 for( i =0; i <n ; i++)f
25

35 logx [ i ] = Math . log ( x [ i ] ) ;
36 g
37 return logx ;
38 g
39 // f u n c t i a de procesare a d a t e l o r
40 public void process ( )f
41 processCountMatrix ( ) ;
42 showCountMatrix ( ) ;
43
44 int s i z e , count ;
45 int nx , ny ;
46 int startx , s t a r t y ;
47 int[ ] dataToFlag ;
48 sizeOfBoxes = stringToInt ( s i z e s ) ;
49 double [ ] l o g S i z e = new double [ sizeOfBoxes . length ] ;
50 double [ ] logCount = new double [ sizeOfBoxes . length
] ;
51 numberOfBoxes = new int [ sizeOfBoxes . length ] ;
52
53 for(int k = 0 ; k <sizeOfBoxes . length ; k++) f
54 s i z e = sizeOfBoxes [ k ] ;
55 count = 0 ;
56 nx = ( int )Math . f l o o r ( width/ s i z e ) ;
57 ny = ( int )Math . f l o o r ( height / s i z e ) ;
58 for(int i = 0 ; i <nx ; i++)f
59 for(int j = 0 ; j <ny ; j++)f
60 s t a r t x = i s i z e ;
61 s t a r t y = j s i z e ;
62 count = count + f l a g ( startx , starty , s i z e ,
s i z e ) ;
63 g
64 g
65 numberOfBoxes [ k ] = count ;
66 g
67
68 l o g S i z e = toLog ( sizeOfBoxes ) ;
69 logCount = toLog ( numberOfBoxes ) ;
70
71 StraightLine sampleLine = new StraightLine ( ) ;
72 sampleLine . f i t ( logSize , logCount ) ;
73 sampleLine . show ( ) ;
74 g
26

Figura 3.1: Imaginea initiala
(a) Imaginea grayscale
(b) Imaginea cu margini
Figura 3.2: Procesarea imaginii
27

Figura 3.3: Reprezentarea schematic a a tehnicii utilizate pentru detect ia calit at ii
fractale. O ^ ntindere de p atrare generate algoritmic e folosit a pentru a acoperi
suprafat a tabloului. Apoi m arimea p atratelor scade treptat. De la st^ anga la
dreapta, m arimea p atratelor scade, iar la ecare pas se num ar a c^ ate p atrate sunt
ocupate.
28

Capitolul 4
Motivarea alegerii mediilor de
programare utilizate
4.1 Introducere in limbajul de programare Java
Java este un limbaj de programare computerizat, orientat pe obiecte, bazat pe
clase, concurent  si de scop general, ce este proiectat s a aib a c^ at mai put ine
dependent e de implementare. Este intent ionat s a ofere programatorilor posibi-
litatea s a "scrie odat a, ruleze de oriunde", ceea ce ^ nseamn a c a un cod ce ruleaz a
pe o platform a nu trebuie recompilat pentru a rula  si pe alta. Aplicat iile java sunt
general compilate ^ n bitcod s a poat a rula pe orice ma sin a virtual a Java, indiferent
de arhitectura calculatorului. ^Incep^ and cu anul 2012, Java este unul dintre cele
mai populare limbaje ^ n folosint a, mai ales pentru aplicat iile bazate pe structura
client-server, cu un raport de 10 milioane de utilizatori(conform [15]).
Java a fost init ial creat de James Gosling pentru Sun Microsystems,  si a fost
mai t^ arziu integrat ^ n cadrul Corporatiei Oracle. A fost lansat ^ n 1995 ca o com-
ponent a de baz a a platformei Java. ^In decursul dezvolt arii proiectului, inginerii
proiectului Sun au putut integra multe din valori legate de calit at i ca sigurant a,
cost, standard  si simplitate – priorit at i de top ^ n orice piat  a de consum. Majori-
tatea consumatorilor cer produse la pret uri mici, f ar a defecte  si relativ simplu de
folosit.
Limbajul deriv a ^ n mare parte din sintaxa C  si C++, dar are mai put ine
facilit at i de nivel mic dec^ at ele. A ^ nceput ca un proiect mic, de ^ ncredere  si in-
dependent de arhitectur a. Odat a cu aparit ia World Wide Web ^ n cadrul Internet,
echipa a continuat dezvoltarea limbajului ^ ntr-unul neutru din punct de vedere
29

arhitectural, ce ar ideal pentru programarea pe Internet, pentru c a un program
ar putea rula pe mai multe tipuri de calculatoare, at^ ata timp c^ at ele erau conec-
tate la Internet. P^ an a ^ n toamna anului 1994, Patrick Naughton  si colegul s au
de la Sun, Jonathan Payne au terminat de scris WebRunner, un browser scris in
limbajul Java.
Doi factori au contribuit major la succesul limbajul Java: strategia de marke-
ting  si sincronizarea. Sun a realizat important a gener arii interesului  si accept arii
de produse  si a oferit gratis codul sursa pentru concepte cheie Java prin Inter-
net. Istoric, sistemul p-code UCSD a fost cel mai bun interpretor de cod binar
ce a reu sit s a ^ ndeplineasc a condit iile de portabilitate independent de platforma
de lucru. Java a venit la momentul potrivit, atunci c^ and se inregistra o cre stere
exploziv a a cererii pe Internet de aplicat ii independente de platform a.
Ast azi, Java nu mai este doar un limbaj de programare. E o platform a ^ n
sine. Prin cl adirea platformei peste alte platforme sau harware, aplicat iile scrise
^ n limbajul Java pot rulate oriunde e prezenta platforma Java.
4.1.1 Platforma Java
Platforma Java este o platform a software diferit a de alte platforme ca Microsoft
Windows, Macintosh, UNIX  si NetWare, creat a pentru a furniza si rula apleturi  si
aplicat ii interactive, dinamice  si securizate ^ n cadrul unui sistem de computere in
ret ea. Platforma Java st deasupra celorlalte sisteme de operare. Aplicat iile scrise
in limbajul Java sunt compilate ^ n cod neutru din punct de vedere arhitectural
pentru Masina Virtual a Java, spre deosebire de codul normal de ma sin a. Un
interpretor Java execut a apoi codul translatat. Primul avantaj al acestei abordari
este faptul ca permite ca o aplicat ie Java s a poat a rula pe orice sistem, at^ ata timp
c^ at sistemul implementeaz a Ma sina Virtuala Java(conform [15]).
Platforma Java consista din 2 parti :
1. Ma sina Virtual a Java – este o ma sin a abstracta creata pentru a implemen-
tat a in procesoarele existente. Ascunde sistemul de operare care st a la baza
aplet-urilor  si aplicat iilor Java. Ma sina virtual a poate implementat a in
software sau ^ n hardware.
2. Java API (Interfata de programare a aplicat iei) const a din funct iile si va-
riabilele pe care programatorii le pot folosi ^ n aplicat iile lor. Furnizeaz a o
30

interfat  a standard pentru aplet-uri si aplicat ii, indiferent de sistemul de ope-
rare ce st a la baz a. API-ul Java este o colect ie mare de componente software
utile, create pentru diferite sarcini. Aceste componente sunt grupate ^ n
libr arii ce cont in clase cu utilit at i asem an atoare, cunoscute sub numele de
pachete.
4.1.2 Limbajul Java
Limbajul  si mediul de programare Java sunt create pentru a rezolva un num ar de
probleme din practica programatic a modern a. Are mai multe tr as aturi interesante
ce ^ l fac un limbaj ideal pentru dezvoltare de software. ^In continuare vor des-
crise tr as aturile Java comparate cu cele C  si C++, introduse clasele prede nite  si
discutate unele dintre limit arile limbajului Java  si cum sunt acestea adresate.
^In "White Paper(1999)", corporat ia Sun descrie Java ca un limbaj simplu,
orientat pe obiecte, distribuit, robust, sigur, neutru arhitectural, portabil, inter-
pretat, de mare performant a, multi-thread  si dinamic.
Java este simplu. Prin "simplu" se ^ nt elege c a este mic  si familiar (pentru
un programator C sau C++). Sun a creat Java c^ at mai apropiat de modelul
C++ pentru a face sistemul mai u sor de ^ nt eles, dar a ^ nl aturat multe part i
put in folosite, greu ^ ntelese sau confuze. Printre acestea se num ar a supras-
crierea de operatori  si mo stenirea multipl a. De exemplu, Java nu accept a
comanda "go to"; ^ n locul acesteia sunt folosite instruct iunile "break", "con-
tinue"  si tratarea except iilor.
Cea mai important a simpli care pe care o ofer a Java este nefolosirea po-
interilor (unul dintre cele mai di cile aspecte din limbajul de programare
C/C++, predispus la erori)  si introduce preluare automat a a reziduurilor,
astfel ^ nc^ at programatorul nu trebuie s a ^  si fac a griji ^ n leg atur a cu pointeri
l asat i alocat i, referint e invalide, scurgeri de memorie sau managementul me-
moriei.
Pentru a p astra limbajul la un nivel mic, unul din scopurile sale a fost
contruct ia de software care poate rula independent pe ma sini mici. M arimea
interpretatorului de baz a  si a claselor este de aproximativ 40k de bit i; libr ariile
31

standard  si cele destinate lucrului cu threaduri necesit a 175k adit ionali.
Java este orientat pe obiect. Asta ^ nseamn a c a programatorul se poate fo-
cusa pe datele din aplicat ia sa  si interfat a c atre ele. Spre deosebire de C++,
Java este mai strict ^ n ce prive ste natura orient arii sale c atre obiect. ^In Java,
totul trebuie realizat prin invocarea unei metode dintr-un obiect Java. Toat a
aplicat ia trebuie v azut a ca un obiect de o anumit a clas a. Deasemenea, codul
de C  si C++ nu poate folosit direct, nici m acar pentru apeluri sistem. ^In
C++, pot i ajunge la proceduri existente de C++, inclusiv apeluri sistem, de-
clar^ and procedura C ^ n afar a spat iului de declarare normal al C++, folosind
sintaxa C. ^In java, multe dintre funct iile de utilitate sistem sunt asigurate
prin metode din clasa System din pachetul java.lang.
Java este distribuit. Java este programat s a suporte aplicat ii pe ret ea. Java
suport a diferite nivele de conectivitate prin ret ea prin clasele oferite de pa-
chetul java.net. De exemplu, clasa URL asigur a o interfat a foarte simpl a
pentru ret ea – pot i deschide  si accesa un obiect referit de URL pe un site
separat cu accea si u surint a cu care programatorii sunt obi snuit i atunci c^ and
deschid  si acceseaz a un obiect local. Dac a se vrea mai mult control peste
datele ce sunt downloadate dec^ at cel oferit de metodele simple URL, se poate
folosi obiectul URLConnection ce este returnat de un UTRL prin metoda
URL.openConnection(). Deasemenea, it i pot i crea propria ret ea cu clasele
Socket  si ServerSocket. Aceste clase it i permit s a te conectezi la un anumit
port pe un anumit host de Internet, unde pot i s a scrii  si s a cite sti date; sau
pot i implementa un server ce accept a conexiuni de la client i.
Java este robust. Java este creat pentru a scrie software de ^ ncredere  si pu-
ternic. Java pune un mare accent pe veri carea din timp a posibilelor erori,
veri carea dinamic a ^ n timpul rul arii  si eliminarea situat iilor predispuse la
erori. Eliminarea pointerilor elimin a posibilitatea suprascrierii memoriei  si
coruperii datelor. Colectarea automat a a reziduurilor previne scurgeri de
memorie. Tratarea except iilor  si tipurile tari de obiecte sunt deasemenea
tr as aturi din Java ce fac programele puternice. De si Java nu poate asigura
calitatea software-ului, ^ nlene ste procesul.
Java este sigur. Java este un limbaj intent ionat s a e folosit ^ n medii
32

relat ionate. ^In acest scop, Java are implementate mai multe mecanisme de
asigurare a securit at ii pentru a proteja cod malit ios ce poate ^ ncerca s a intre
^ n  siere de sistem. De exemplu, Java nu are pointeri. Asta face imposibil a
folosirea ^ n aplicat ii a falsi c arii pointerilor sau artimetic a pe memorie, ce
ar putea da acces la o ma sin a din nivelurile inferioare ale arhitecturii. Alt
exemplu este c a Java are o clasa denumit a ClassLoader ce de ne ste cum cla-
sele Java sunt ^ nc arcate ^ n ret ea. Una dintre funct iile importante ale acestei
clase este asigurarea c a reziduurile sunt p astrare ^ ntr-un spat iu de lucru se-
parat, prevenind appleturi malit ioase din a ^ nlocui clase Java cu propriile
sale clase. O alt a funct ie important a a clasei de ^ nc arcare este c a orice cod
ce nu este de ^ ncredere este trecut printr-o veri care Java byte-code pentru a
veri ca violarea restrict iilor de spat iu de lucru, cod invalid pentru Java Vir-
tual Machine, stack over
ow sau under
ow, folosirea incorect a a regi strilor
 si conversie ilegala de tipuri de date.
Java este neutru arhitectural. Programale Java sunt compilate ^ ntr-un for-
mat de cod binar netru arhitectural. Principalul avantaj al acestei abord ari
este faptul c a permite unei aplicat ii Java s a ruleze pe un sistem ce are imple-
mentat a Java Virtual Machine. Aceast a tr as atur a este folositoare nu doar
pentru ret ele, dar  si pentru distribut ia software^ ntr-un singur sistem. Pentru
a obt ine acela si nivel de compatibilitate cu baza lor de date, Oracle a avut
o speci cat ie de 40 de pagini pentru versiunea lor de C – o variant a ce a fost
scris intr-un limbaj diferit. Eu au conformat sursa lor de 80 de platforme
Unix, plus calculatoarele personale, minicomputerele  si mainframe-urile. ^In
prezent, pe piat a calculatoarelor personale, dezvoltatorii de aplicat ii trebuie
s a produc a variante ale aplicat iilor lor compatibile cu IBM PC  si Apple Ma-
cintosh. Se poate spune c a devine din ce ^ n ce mai greu de produs software
ce ruleaz a pe toate platformele.
Java este portabil. Portabilitatea vine din faptul c a este neutru din punct de
vedere arhitectural. Dar se ajunge mai departe de at^ at, speci c^ and ^ n mod
explicit m arimea ec arui tip de date primitiv pentru a elimina dependent a
de implementare. De exemplu, "int" ^ nseamn a complementul unui integer
pe 32 de biti cu semn, iar "
oat" ^ nseamn a un num ar 32-bitIEEE 754. Sis-
temul Java ^ n sine este destul de portabil. Compilatorul de Java este scris
^ n Java, iar sistemul din timpul rul arii este scris ^ n ANSI C cu o limit a clar a
de portabilitate.
33

Java este interpretat. Compilatorul Java genereaz a coduri byte. Interpre-
tatorul JAva execut a codurile byte translatate direct pe sistemul de imple-
menteaz a Java Virtual Machine. Partea de creare de leg aturi este doar o
parte din procesul de ^ nc arcare a claselor ^ n mediu.
Java este performant. Comparat cu limbajele encriptive de nivel ^ nalt  si
complet interpretate, Java este foarte performant. Dac a sunt folosite compi-
latoarele just-in-time, corporat ia Sun pretinde c a performant ele codului byte
convertit la cod ma sina este aproape la fel de bun ca C sau C++ nativ.
Java este multi-thread. Nu este greu de ^ nt eles de ce multi-threadingul a
devenit vital pentru un limbaj ca Java. O aplicat ie trebuie s a fac a ceva
^ n timp ce a steapt a pentru intr ari din partea clientului. ^Intr-o aplicat ie de
ret ea bazat a pe GUI a sa cum sunt browser-e web, exist a de obicei mai multe
act iuni ce au loc ^ n acela si timp. Java furnizeaz a sprijin pentru thread-uri
multiple la execut ie, ce pot trata diferite sarcini cu o clas a Thread din pa-
chetul java.lang. Clasa de thread suport a metode necesare pentru a porni un
thread, a rula un thread, a opri un thread,  si a veri ca statusul unui thread.
Acestea fac programarea ^ n Java folosind thread-uri mult mai usoar a dec^ at
programarea convent ioanal a cu un singur r de execut ie ^ n stilul C sau C++.
Java este dinamic. Limbajul Java a fost creat pentru a putea adaptat la
un mediu ^ n schimbare. Este un limbaj mai dinamic dec^ at C sau C++. Java
^ ncarc a clasele pe m asur a ce sunt folosite, chiar  si ^ n cadrul unei ret ele. Asta
face ca upgrade-ul software-ului s a e mult mai simplu  si e cient. Clasele ^ n
Java au deasemenea  si reprezentare ^ n timpul rul arii. ^In C sau C++, ai un
pointer la un obiect, dar nu  stii ce fel de obiect este  si nu exist a o modalitate
de a a
a. ^In Java, c^ and unui program ^ i este necesar un obiect, acesta poate
a
a clasa c areia apart ine veri c^ and informat ia din timpul rul arii.
4.1.3 Rezumat
De la debutul s au, Java a luat lumea prin surprindere. Ast azi, Java nu mai
reprezint a doar un limbaj de programare, ci  si o platform a ^ n sine. Platforma
34

Java prezint a bene cii at^ at pentru utilizatorii s ai c^ at  si pentru programatori  si
personalul de suport. Este disponibil ^ ntr-o varietate larg a de sisteme de operare
 si hardware. Cererea pentru performant  a creste cu Java, JavaOS si JavaChip
Family din cadrul JavaSoft, ce ofer a mai mare claritate ^ n acest domeniua. Este
posibil ca Platforma Java s a devin a un mediu ideal de dezvoltare software.
35

4.2 Librarii folosite
4.2.1 Introducere
Pachetele Java sunt entit at i logice care permit organizarea claselor. Ele asigur a
structurarea aplicat iilor  si sprijin a modularizarea unei aplicat ii. Ajut a la evitarea
con
ictului de nume ^ ntre clase  si la reunirea claselor si interfet elor ce denot a p art i
ale unui concept comun in cadrul unei aplicat ii.
Pachetul sistem java.lang este importat implicit ^ n orice aplicat ie. Acest lucru
are ca explicat ie faptul ca acest pachet cont ine clase fundamentale, utilizate prac-
tic ^ n orice aplicat ie (conform Fr asinaru, 2008).
4.2.2 java.util
Pachetul java.util contine o serie de clase  si interfet e de baz a din Java. De si numele
sugereaz a c a acestea sunt strict clase de utilitate, funct ionalitatea lor dep a se ste
acest domeniu. Importarea acestei libr a rii face posibil lucrul cu structuri de date
de baz a, eventimente  si colectii.
4.2.3 java.imageio
Sistemul de intrare/ie sire oferit de Java este bazat pe stream-uri. Un stream este
un obiect abstract care e produce informat ii, e le consum a. Stream-urile sunt
conectate la dispozitive zice de intrare/ie sire. De si aceste dispozitive pot diferi,
comportamentul stream-urilor ram^ ane acela si. De exemplu, acelea si operat ii pot
folosite pentru a scrie un mesaj pe ecran sau ^ ntr-un  sier. Ierarhiile de clase
care implementeaza ^ n Java stream-urile sunt de nite ^ n pachetul java.io.
Pentru interpretarea imaginilor s-a folosit clasa imageio ce ofer a metode simple
pentru codarea  si decodarea obiectelor ImageReaders  si ImageWriters. In cadrul
proiectului, a fost necesar lucrul cu  siere de imagini, facilitat de aceast a libr arie.
Crearea unui stream de citire dintr-un  sier a presupus crearea unui obiect de tipul
File, ca ^ n urmatorul exemplu:
1 // f u n c t i e ce apeleaza rutina de transformare a i m a g in i i o r i g i n a l e
in g r a y s c a l e s i s a l v e a z a imaginea creata
2 void transformToGrayscale ( ) f
3 Grayscale gr = new Grayscale ( ) ;
36

4 gr . setSourceImage ( image ) ;
5 gr . process ( ) ;
6 g r a y s c a l e = gr . getGrayscaleImage ( ) ;
7 tryf
8 ImageIO . write ( grayscale , "PNG" , new F i l e ( " Pollock6 . png" ) ) ;
9g
10 catch ( Exception e ) f
11 System . out . p r i n t l n ( " eroare l a s c r i e r e a i m a g i n i i " ) ;
12g
13g
4.2.4 java.awt
Interfat a gra c a cu utilizatorul (GUI) este o particularizare a interfet ei cu utiliza-
torul (UI), prin care se ^ ntelege conceptul generic de interact iune dintre program
 si utilizator. Limbajul Java pune la dispozit ie numeroase clase pentru implemen-
tarea diverselor funct ionalit at i UI ce permit realizarea interfet ei cu utilizatorul.
Biblioteca de funct ii folosita ^ n cadrul lucr arii de fat a este java.awt (Abstract
Windowing Toolkit). Crearea unei aplicat ii gra ce presupune
1. design – crearea unei suprafet e de a  sare pe care vor a  sate obiectele gra ce
care servesc la comunicarea cu utilizatorul, crearea  si a sezarea componente-
lor pe suprafat a de a  sare la pozit iile corespunz atoare;
2. funct ionalitate – de nirea unor act iuni care trebuie s a sa se execute ^ n mo-
mentul c^ and utilizatorul interact ioneaz a cu obiectele gra ce ale aplicat iei
 si "ascultarea" evenimentelor generate de obiecte ^ n momentl interact iunii
cu utilizatorul si executarea act iunilor corespunz atoare, a sa cum au fost ele
de nite.
Pachetul java.awt ofera componentele AWT necesare dezvoltarii interfet ei gra-
ce. Obiectele gra ce sunt derivate din clasa Component, iar meniurile descind din
clasa MenuComponent. Prin component a se intelge orice obiect ce poate avea o
reprezentare gra c a  si poate interact iona cu utilizatorul, de exemplu ferestrele, bu-
toanele, listele, etc. Toate componentele AWT sunt de nite de clase proprii, clasa
Component ind superclasa abstract a a tuturor acestor clase (conform Fr asinaru,
2008).
Crearea obiectelor gra ce nu realizeaz a automat  si a  sarea lor pe ecran. Mai
^ nt^ ai ele trebuie a sezate pe o suprafat a de a  sare, care poate o fereastr a sau un
aplet,  si vor deveni vizibile ^ n momentul ^ n care suprafat a pe care sunt plasate va
37

vizibil a. O astfel de suprafat  a pe care sunt plasate componente se mai nume ste
container  si reprezint a o instant  a unei clase derivate din Container.
Interfat a gra c a serve ste interact iunii cu utilizatorul. Programul trebuie s a
fac a o prelucrare in momentul ^ n care utilizatorul a efectuat o act iune,  si prin
urmare, componentele trebuie s a genereze evenimente ^ n funct ie de act iunea pe
care au suferit-o. Evenimentele sunt instant e ale claselor derivate din AWTEvent.
Un eveniment este produs de o act iune a utilizatorului asupra unui obiect gra-
c, deci evenimentele nu trebuie generate de programator. ^In schimb, ^ n cadrul
programului trebuie speci cat codul care se execut a la aparit ia unui eveniment.
Tratarea evenimentelor se realizeaz a prin intermediul unor clase de tip listener,
clase care sunt de nite in pachetul java.awt.event.
1
2 // f u n c t i a de atasare a evenimentului corespunzator unui buton
3 jButton2 . addActionListener ( new java . awt . event . ActionListener ( ) f
4 public void actionPerformed ( java . awt . event . ActionEvent evt ) f
5 jButton2ActionPerformed ( evt ) ;
6g
7g) ;
8
9 // codul se ce executa l a a p a r i t i a evenimentului
10 private void jButton2ActionPerformed ( java . awt . event . ActionEvent
evt )f
11 tryf
12 im . transformToGrayscale ( ) ;
13 BufferedImage gray = im . getGrayscaleImage ( ) ;
14 BufferedImage scaledImage = scaleImage (400 ,400 , gray ) ;
15 ImageIcon i i = new ImageIcon ( scaledImage ) ;
16 drawingPanel . s e t I c on ( i i ) ;
17g
18 catch ( Exception e ) f
19 System . out . p r i n t l n ( " Eroare l a transformarea in g r a y s c a l e " ) ;
20g
21g
4.2.5 java.swing
Modelul swing extinde modelul AWT ad aug^ andu-i noi componente care e^ nlocuiesc
unele vechi, e sunt cu totul noi. O convent ie general acceptat a este pre xarea unei
clase AWT cu litera "J" pentru a denumi o clas a corespondent a din Swing. Ast-
fel, ^ n locul clasei java.awt.Button putem folosi javax.swing.JButton. Aplicat ia
38

GUI are nevoie in continuare de pachetul java.awt deoarece acolo sunt de nite
unele clase utilitare cum ar Color, Font, Dimension, etc ce nu au fost rescrise in
Swing. De asemenea, pachetul java.awt.event r^ am^ ane ^ n continuare esent ial pen-
tru tratarea evenimentelor generate de componente AWT, c^ at si de cele din Swing.
Implementarea componenetelor Swing necesare^ n dezvoltarea interfet ei aplicat iei
sunt descrise ^ n cadrul anexelor.
39

Capitolul 5
Descrierea aplicat iei
Scopul aplicat iei este de a calcula dimensiunea fractal a a unei imagini pornind
de la modelarea algoritmic a prezentat a anterior. Aplicat ia este realizat a folosind
mediul de programare Eclipse.
Figura 5.1 reprezint a ecranul de select ie a imaginii. Setul de butoane din
partea dreapt a descrie posibilele act iuni. Prin "Attach" se poate alege un nou
 sier, realiz^ andu-se urcarea acestuia pe suprafat a de a  sare a imaginii. La baza
imaginii se a
 a opt iunile de "Zoom in"  si "Zoom out", ce realizeaz a magni carea,
respectiv mic soarea imaginii uploadate.
Figura 5.2 arat a ecranul a  sat dupa act ionarea butonului de "Grayscale". ce
apeleaz a rutina de transformare a imaginii,  si urcare a rezultatului pe suprafat a
de a  sare.
Figura 5.3 descrie aplicat ia dup a apelarea rutinei de detect ie a marginilor ,
declan sat a de butonul "Edges", ce realizeaz a interschimbarea imaginii precendente
cu cea binar a obt inut a ^ n urma rutinei de procesare prin algoritmul Canny.
^In ultimul pas, descris ^ n gura 5.4, se reprezint a gra c rezultatele obt inute ^ n
urma algoritmului de box-count, iar datele sunt corelate, determin^ andu-se panta
funct ie ce leag a punctele. Computarea dimensiunii este a  sata ^ n colt ul dreapta-
jos.
Pentru descrierea funt iilor din aplicat ie este oferit un meniu minimal de ajutor,
ce ofer a detalii despre folosire.
40

Figura 5.1: Aplicatie – selectarea imaginii
Figura 5.2: Aplicatie – transformarea grayscale
41

Figura 5.3: Aplicatie – detect ia marginilor
Figura 5.4: Aplicatie – meniu help
42

Figura 5.5: Aplicatie – corelarea datelor si determinarea pantei
43

Capitolul 6
Interpretarea rezultatelor
6.1 Rezultate
Aplicat ia descris a ^ n paginile anterioare a fost folosit a ^ n analizarea unui set de
picturi, selectate prin ^ ncadrarea ^ n acela si curent artistic,  si anume expresionismul
abstract. Se poate considera c a percept ia vizual a a complexit at ii unei imagini
este mai clar a ^ n acest caz, deoarece leg atura direct a cu obiecte reale este taiat a.
Percept ia uman a a frumuset ii ^ n acest caz se bazeaz a pe factori ^ nca necunoscut i
in totalitate. Ipoteza lui Berlyne sust ine ca frumuset ea poate m asurat a, iar
preferint a pentru un obiect cre ste in funct ie de complexitatea vizual a p^ ana la
un punct, ca apoi s a descreasc a. M asur a complexit at ii luat a ^ n cazul de fat a,  si
anume dimensiunea fractal a ^ ncearc a s a demostreze aceast a ipotez a,pun ^ and ^ n
aceea si zon a opere recunoscute mondial.
Select ia a fost efectuat a prin alegerea curentului artistic  si a reprezentant ilor
recunoscut i mondial al acestuia. ^In ciuda elementelor fundamental diferite, arti s tii
fondului expresionist abstract par s a aib a ^ n comun aceeas si dorint a de a transmite
prin art a ceea ce nu se putea prin metode tradit ionale. Opera lor continu a s a
stimuleze spectatorului, fac^ andu-l s a- si pun a ^ ntreb ari legate de viziunea asupra
lumii.
^In continuarea prezint rezultatele obt inute ^ n urma analizei fractale. Operele
pe care s-a realizat calculul dimensiunii sunt ata sate la nalul capitolului.
6.2 Analiz a  si interpretare
Rezultatele prezentate arat a o preferint a pentru dimensiunea fractal a de 1.8, su-
ger^ and c a modelele fractale contribuie la percepit ia complexit at ii vizuale, si a frumuset ii.
44

Autor Opera Dimensiunea fractala
Augusto Giacometti Fantasia coloristica 1.8148
Matin de mai 1.8060
Arshile Gorki Liver is the cock's bomb 1.7209
Untitled 1.7973
Hans Ho man Fantasy 1.8004
Afterglow 2 1.8025
Willem de Kooning Untitled 1.7607
Gotham news 1.8103
Lee Krasner Untitled 1 1.8185
Untitled 2 1.7685
Norman Lewiss Twilight sounds 1.8036
Barnett Newman Genesis 1.6060
Jackson Pollock Blue poles 1.8592
Autumn rhythm 1.8260
Math Rothko Untitled 1 1.7845
Untitled 2 1.7900
Cly ord Still Untitled 1 1.7152
Tabela 6.1: Rezultatele obtinute
Studiul aprecierii estetice umane este ^ n continuare un domeniu ^ n formare, iar cu-
anti carea preferint elor vizuale fat a de un cont inut fractal este un punct de plecare.
^In termeni de explorare intrinsec a, pare potrivit ca examinarea suprarealit ilor si
expresionit ilor s a se fac a dintr-o perspectiv a ce ^ ncearc a s a uni ce considerente ce
trec de nivelul con sitentului sau familiarului.
Nu exist a nici un argument care s a sust in a c a ^ n momentul cre arii pictorii au
fost con stient i de incorporarea structurilor fractale ^ n cadrul operelor. Cu toate
acestea, pare un fapt general valabil, picturile put^ and apreciate ca o recreare a
realit at ii, ce ^ n ciuda abstractiz arii ^ ncearca s a p astreze armonia.
Studii extinse efectuate asupra operelor lui Pollock, ^ n odmeniul dimensiunii
fractale au rezultat^ n stabilirea autenticit at ii pe baza acestui criteriu. Am^ ncercat
s a a
u ^ n studiul de fat a dac a aceast a caracteristic a determin a un ^ ntreg curent
artistic. Rezultatele relev a ^ n principiu acest lucru, preferint a ce pare mai departe
de logic a a pictorilor expresioni sti pentru complexitatea cunati cat a de m arimea
aproximativ a de 1.8. Studiul nu pretinde c a aceast a caracteristic a este singura
concludent a ^ n domeniul concretiz arii matematice a picturilor, dar o consider a ca
ind una relevant a  si prezent a la nivel extins.
Rezultatele obt inute pentru picturile lui Pollock sunt aliniate la celelalte stu-
dii(conform Taylor, 2002)  si opere ale sale. ^In privint a celorlalt i pictori nu exist a
^ nc a studii particulare care s a le testeze complexitatea vizual a. Cu toate aces-
tea, se observ a c a pentru ecare pictor individual se p atreaz a o constant a, astfel
45

pentru Ho man rezultatele sunt aproape identice pentru opere ce nu par s a re-
leve acelea si tr s aturi ^ n mod con stient. Acela si lucru se poate spune  si despre
Rothko, ce ram^ ane ^ n aria 1.78-1.79 ^ n cadrul operelor sale, sau Giacometti cu
1.80-1.81. Masura ^ n care complexitatea lucr arilor este pre-stailit a de pictori sau
un act natural nu se poate spune. Dar, cum metodele expresioni stilor se separ a de
cele tradit ionale, se poate spune c a dimensiunea fractal a relev a cel mai probabil o
tr as atur a incon stient a, at^ at pentru creator, c^ at  si pentru spectator.
Puse ^ n cadrul operelor universale, cele selectate ^ n cadrul proiectului surprind
prin ceea ce pare o dezorganizare  si aglomerare nespeci ce. S-ar putea spune c a
se ^ ncearc a a se recrea haosul, except ie f ac^ and, de exemplu pictura lui Barnett
Newman-Genesis, ce are o dimensiune de 1.6,  si las a impresia unei ordini diferite.
Rezult a c a picturile abstracte respect a teoria haosului prin structura lor, comple-
xitatea lor tinz^ and spre limita a ceea ce percept ia uman a g ase ste frumos. R am^ ane
^ n continuare de studiat m asura ^ n care aceast a tr s atur a poate explorat a  si din
alte puncte de vedere.
46

(a) Augusto Giacometti –
Fantasia coloristica
(b) Augusto Giacometti –
Matin de mai
(a) Arshile Gorki-Liver is the
cock's bomb
(b) Arshile Gorki – Untitled
(a) Hans Ho man – Fantasy
(b) Hans Ho man – After-
glow
(a) Willem de Kooning – Un-
titled 1
(b) Willem de Kooning – Go-
tham news
47

(a) Lee Krasner – Untitled 1
(b) Lee Krasner – Untitled 2
(a) Jackson Pollock – Au-
tumn rhythm
(b) Jackson Pollock – Blue
poles
(a) Math Rothko – Untitled
1
(b) Math Rothko – Untitled
2
(a) Cly ord Still – Untitled 1
(b) Cly ord Still- Untitled 2
Figura 6.8
48

(a) Norman Lewis – Twilight
sounds
(b) Barnett Newman – Gene-
sis
49

Capitolul 7
Concluzii
Analiza din cadrul proiectului de fat a a dezv aluit c a metoda sistematic a de creare
a modelelor abstracte ^ n domeniul artei respect a modalitatea de scalare fractal a
cu precizie  si consistent  a. Rezultatele obt inute pun ^ n contextul percept iei reguli
matematice, cuanti c^ and factorul de complexitate vizual a, apreciat a ^ n cadrul cu-
rentului expresionist, ^ n jurul valorii de 1.8.
Informatiz^ and procesul de analiz a a unui tablou, se separ a informat ia  si calcu-
leaz a izolat parametrii. ^In consecint  a, de si o analiz a computerizat a nu va putea
spune dac a o oper a va pl acut a sau nu, poate spune care sunt modele ce pre-
cizie. ^In cazul de fat  a, aceasta este realizat a prin dimensiunea fractal a, ce ofer a
detalii legate de densitatea  si autosimilaritatea modelelor create. Analiza arat a o
consistent a ^ n domeniul picturii abstracte.
^In concluzie, sper c a studiul de fat  a va stimula discut ia dintre cercet atori, psi-
hologi  si critici de art a ^ n leg atur a cu semni cat ia artistic a a naturii fractale  si
concretizarea acesteia ^ n ceea ce ne ^ nconjoar a  si ceea ce consider am frumos.
50

Capitolul 8
Anexe
8.1 Realizarea gra celor
1 // c l a s a pe care se r e p r e z i n t a g r a f i c u l
2 public class Grafic extends JPanelf
3 private static final int MAX SCORE = 20;
4 private static final int PREF W = 800;
5 private static final int PREF H = 650;
6 private static final int BORDER GAP = 30;
7 private static final Color GRAPH COLOR = Color . green ;
8 private static final Color GRAPH POINT COLOR = new Color (150 ,
50 , 50 , 180) ;
9 private static final Stroke GRAPH STROKE = new BasicStroke (3 f ) ;
10 private static final int GRAPH POINT WIDTH = 12;
11 private static final int YHATCH CNT = 10;
12
13 private List<Integer >s c o r e s = new ArrayList <Integer >() ;
14 private List<Integer >c a l i b r e s = new ArrayList <Integer >() ;
15
16 private Functie f u n c t i e ;
17
18 public Grafic ( List <Double >scores , List <Double >c a l i b r e s ,
Functie function ) f
19 int x , y ;
20 // t r e b u i e sa aiba ace easi lungime
21 for (int i = 0 ; i <s c o r e s . s i z e ( ) ; i++) f
22 x = ( int) Math . f l o o r ( c a l i b r e s . get ( i ) 10) ;
23 y = ( int) Math . f l o o r ( s c o r e s . get ( i ) 10) ;
24 this . s c o r e s . add ( y ) ;
25 this . c a l i b r e s . add ( x ) ;
26 System . out . p r i n t l n ( x + " " + y ) ;
27 g
51

28 this . f u n c t i e = function ;
29g
30
31
32 protected void paintComponent ( Graphics g ) f
33 super . paintComponent ( g ) ;
34 Graphics2D g2 = ( Graphics2D ) g ;
35 g2 . setRenderingHint ( RenderingHints .KEY ANTIALIASING,
RenderingHints .VALUE ANTIALIAS ON) ;
36
37 double xScale = ( ( double ) getWidth ( ) 2BORDER GAP) / 5 ;
38 double yScale = ( ( double ) getHeight ( ) 2BORDER GAP) / 10;
39
40 System . out . p r i n t l n ( " x s c a l e "+ xScale + " y s c a l e "+ yScale ) ;
41 // adaugarea punctelor in l i s t a de puncte a l e g r a f u l u i
42 List <Point >graphPoints = new ArrayList <Point >() ;
43 for (int i = 0 ; i <s c o r e s . s i z e ( ) ; i++) f
44 int x1 = ( int) ( c a l i b r e s . get ( i ) xScale /10 + BORDER GAP)
;
45 int y1 = ( int) ( ( getHeight ( ) ( s c o r e s . get ( i ) yScale / 10
+ BORDER GAP) ) ) ;
46 graphPoints . add ( new Point ( x1 , y1 ) ) ;
47g
48
49 g2 . drawLine (BORDER GAP, getHeight ( ) BORDER GAP, BORDER GAP,
BORDER GAP) ;
50 g2 . drawLine (BORDER GAP, getHeight ( ) BORDER GAP, getWidth ( )
BORDER GAP, getHeight ( ) BORDER GAP) ;
51
52 for (int i = 0 ; i <10; i++)f
53 int x0 = BORDER GAP;
54 int x1 = GRAPH POINT WIDTH + BORDER GAP;
55 int y0 = getHeight ( ) ( ( ( i + 1)( getHeight ( )
BORDER GAP2) ) / 10 + BORDER GAP) ;
56 int y1 = y0 ;
57 g2 . drawLine ( x0 , y0 , x1 , y1 ) ;
58 g2 . drawString ( ( i +1) 10 + " " , x135, y1+10) ;
59g
60
61 for (int i = 0 ; i <5 ; i++)f
62 int x0 = ( i + 1) ( getWidth ( )BORDER GAP2) / 5 +
BORDER GAP;
63 int x1 = x0 ;
64 int y0 = getHeight ( ) BORDER GAP;
65 int y1 = y0GRAPH POINT WIDTH;
66 g2 . drawLine ( x0 , y0 , x1 , y1 ) ;
52

67 g2 . drawString ( ( i +1) 10 + " " , x15, y1+25 ) ;
68g
69
70 Stroke oldStroke = g2 . getStroke ( ) ;
71
72 g2 . setStroke ( oldStroke ) ;
73 g2 . setColor (GRAPH POINT COLOR) ;
74 System . out . p r i n t l n ( getHeight ( ) + " " + getWidth ( ) ) ;
75 for (int i = 0 ; i <graphPoints . s i z e ( ) ; i++) f
76 int x = graphPoints . get ( i ) . x GRAPH POINT WIDTH / 2 ;
77 int y = graphPoints . get ( i ) . y GRAPH POINT WIDTH / 2 ; ;
78 int ovalW = GRAPH POINT WIDTH;
79 int ovalH = GRAPH POINT WIDTH;
80 g2 . f i l l O v a l (x , y , ovalW , ovalH ) ;
81 System . out . p r i n t l n ( x+ " "+y ) ;
82g
83
84 double punct1x = 0 . 5 ;
85 double punct2x = 4 . 5 ;
86
87 double punct1y = punct1x f u n c t i e . slope + f u n c t i e . i n t e r c e p t ;
88 double punct2y = punct2x f u n c t i e . slope + f u n c t i e . i n t e r c e p t ;
89
90 int x1 = ( int) ( punct1xxScale + BORDER GAP) ;
91 int y1 = ( int) ( ( getHeight ( ) (punct1yyScale + BORDER GAP) )
) ;
92
93 int x2 = ( int) ( punct2xxScale + BORDER GAP) ;
94 int y2 = ( int) ( ( getHeight ( ) (punct2yyScale + BORDER GAP) )
) ;
95
96 g2 . drawLine ( x1 , y1 , x2 , y2 ) ;
97g
98
99 // s e t a r e a dimensiunii
100 public Dimension g e t P r e f e r r e d S i z e ( ) f
101 return new Dimension (PREF W, PREF H) ;
102g
103 // crearea s i a f i s a r e a i n t e r f e t e i
104 private static void createAndShowGui ( ) f
105
106 List <Double >s c o r e s = Arrays . a s L i s t
(7.794411205726601 ,7.392647520721623 ,
107 7.0431599159883405 ,6.447305862541213 ,5.958424693029782 ,
108 5.241747015059643 ,4.74493212836325 ,3.4657359027997265 ,
109 2.1972245773362196) ;
53

110 List <Double >c a l i b r e s = Arrays . a s L i s t
(0.6931471805599453 ,1.0986122886681098 ,
111 1.3862943611198906 ,1.791759469228055 , 2.0794415416798357 ,
112 2.4849066497880004 ,2.772588722239781 ,3.4657359027997265 ,
113 4.1588830833596715) ;
114 Functie f c t = new Functie (1.6515168964468077 ,
9.244731313751782) ;
115
116 Grafic mainPanel = new Grafic ( scores , c a l i b r e s , f c t ) ;
117
118 JFrame frame = new JFrame ( "DrawGraph" ) ;
119 frame . setDefaultCloseOperation ( JFrame .EXIT ONCLOSE) ;
120 frame . getContentPane ( ) . add ( mainPanel ) ;
121 frame . pack ( ) ;
122 frame . setLocationByPlatform ( true ) ;
123 frame . s e t V i s i b l e ( true ) ;
124g
8.2 Realizarea interfet ei
1// f u n c t i a de creare a f e r e s t r e i s i meniului
2private static void createGUI ( )f
3
4 GUI imageUpload = new GUI( ) ;
5 imageUpload . s e t V i s i b l e ( true ) ;
6 imageUpload . s e t T i t l e ( " Imagine " ) ;
7 imageUpload . s e t S i z e (800 ,600) ;
8 JMenuBar menuBar = new JMenuBar ( ) ;
9 imageUpload . setJMenuBar (menuBar) ;
10
11 JMenu f i l e = new JMenu( "Help" ) ;
12 menuBar . add ( f i l e ) ;
13
14 JMenuItem about = new JMenuItem ( "About" ) ;
15 JMenuItem help = new JMenuItem ( "Help" ) ;
16 JMenuItem e x i t = new JMenuItem ( " Exit " ) ;
17
18 f i l e . add ( about ) ;
19 f i l e . add ( help ) ;
20 f i l e . add ( e x i t ) ;
21
22 e x i t . addActionListener ( imageUpload . new exitAction ( ) ) ;
23 about . addActionListener ( imageUpload . new aboutAction ( ) ) ;
24 help . addActionListener ( imageUpload . new aboutAction ( ) ) ;
54

25
26g
27
28// f u n c t i a de creare a s u p r a f e t e i de a f i s a r e , impreuna cu elementele
a f e r e n t e
29public class GUI extends javax . swing . JFrame f
30
31 Grafic g r a f i c = new Grafic ( scores , c a l i b r e s , f c t ) ;
32
33 Imagine im = new Imagine ( ) ;
34 private JButton jButton1 , jButton2 , jButton3 , jButton4 , zoomIn ,
zoomOut ;
35 private JLabel jLabel1 ;
36 private JTextField jTextField1 ;
37
38 private JLabel drawingPanel ;
39
40 GroupLayout layout = new GroupLayout ( this . getContentPane ( ) ) ;
41
42 public GUI( )f
43 initComponents ( ) ;
44g
45 private void initComponents ( ) f
46
47 this . getContentPane ( ) . setLayout ( layout ) ;
48
49 jButton1 = new JButton ( ) ;
50 jButton2 = new JButton ( ) ;
51 jButton3 = new JButton ( ) ;
52 jButton4 = new JButton ( ) ;
53
54 zoomIn = new JButton ( ) ;
55 zoomOut = new JButton ( ) ;
56
57 drawingPanel = new JLabel ( ) ;
58 drawingPanel . s e t S i z e ( 500 , 300 ) ;
59
60 tryf
61 BufferedImage uploadedImage = ImageIO . read ( new F i l e ( " Untitled . jpg
" ) ) ;
62 BufferedImage scaledImage = scaleImage (400 , 400 , uploadedImage ) ;
63 im . setSourceImage ( uploadedImage ) ;
64 ImageIcon i i = new ImageIcon ( scaledImage ) ;
65 drawingPanel . s e t I c on ( i i ) ;
66g
67 catch ( Exception e ) f
55

68 System . out . p r i n t l n ( " Eroare " ) ;
69g
70 jTextField1 = new JTextField ( ) ;
71 jLabel1 = new JLabel ( ) ;
72
73 setDefaultCloseOperation ( javax . swing . WindowConstants .
EXIT ONCLOSE) ;
74 s e t P r e f e r r e d S i z e ( new java . awt . Dimension (600 , 480) ) ;
75
76 jButton1 . setText ( "Attach " ) ;
77 jButton1 . addActionListener ( new java . awt . event . ActionListener
( )f
78 public void actionPerformed ( java . awt . event . ActionEvent
evt )f
79 jButton1ActionPerformed ( evt ) ;
80 g
81g) ;
82
83 jButton2 . setText ( " Grayscale " ) ;
84 jButton2 . addActionListener ( new java . awt . event . ActionListener
( )f
85 public void actionPerformed ( java . awt . event . ActionEvent
evt )f
86 jButton2ActionPerformed ( evt ) ;
87 g
88g) ;
89
90 jButton3 . setText ( "Edges " ) ;
91 jButton3 . addActionListener ( new java . awt . event . ActionListener
( )f
92 public void actionPerformed ( java . awt . event . ActionEvent
evt )f
93 jButton3ActionPerformed ( evt ) ;
94 g
95g) ;
96
97 jButton4 . setText ( "Box counting " ) ;
98 jButton4 . addActionListener ( new java . awt . event . ActionListener
( )f
99 public void actionPerformed ( java . awt . event . ActionEvent
evt )f
100 jButton4ActionPerformed ( evt ) ;
101 g
102g) ;
103
56

104 jTextField1 . addActionListener ( new java . awt . event .
ActionListener ( ) f
105 public void actionPerformed ( java . awt . event . ActionEvent
evt )f
106 jTextField1ActionPerformed ( evt ) ;
107 g
108g) ;
109
110 jLabel1 . setText ( "Dimensiune f r a c t a l a " ) ;
111
112 zoomIn . setText ( "Zoom In " ) ;
113 zoomOut . setText ( "Zoom Out" ) ;
114
115 layout . setHorizontalGroup (
116 layout . createSequentialGroup ( )
117 . addGroup ( layout . createParallelGroup ( GroupLayout .
Alignment .LEADING)
118 . addComponent ( drawingPanel )
119 . addGroup ( layout . createSequentialGroup ( )
120 . addComponent ( zoomIn )
121 . addComponent (zoomOut)
122 )
123 )
124 . addGroup ( layout . createParallelGroup ( GroupLayout .
Alignment .LEADING)
125 . addComponent ( jButton1 )
126 . addComponent ( jButton2 )
127 . addComponent ( jButton3 )
128 . addComponent ( jButton4 )
129 . addComponent ( jLabel1 )
130 )
131 ) ;
132 layout . setVerticalGroup (
133 layout . createParallelGroup ( )
134 . addGroup ( layout . createSequentialGroup ( )
135 . addComponent ( drawingPanel )
136 . addGroup ( layout . createParallelGroup ( )
137 . addComponent ( zoomIn )
138 . addComponent (zoomOut)
139 . addComponent ( jLabel1 ) )
140 )
141 . addGroup ( layout . createSequentialGroup ( )
142 . addComponent ( jButton1 )
143 . addComponent ( jButton2 )
144 . addComponent ( jButton3 )
145 . addComponent ( jButton4 )
57

146 . addComponent ( jLabel1 ) )
147
148 ) ;
149
150g
58

Bibliogra e
[1] Abraham, F. D. (1995). A Chaos theory in psychology. Westport: Greenwoo-
d/Praeger.
[2] Aitken, P. P. (1974). Judgments of pleasingness and interestingness as func-
tions of visual complexity. Journal of Experimental Psychology, 103, 240244
[3] Aks, D., Sprott, J. (1996). Quantifying aesthetic preference for chaotic pat-
terns. Empirical Studies of the Arts, 14, 116.
[4] Barnsley, M. (1993). Fractals everywhere (2nd ed.). Boston, MA: Academic
Press.
[5] Berlyne, D. E. (1971). Aesthetics and psychobiology. New York: Appleton-
Century-Crofts.
[6] Cain,G.L. (1993). Introduction to general Topology.
[7] Canny, John (1986). A computational approach to edge detection. Pattern
Analysis and Machine Intelligence, IEEE Transactions .
[8] Engelking,R. (1978). Dimension theory.
[9] Fr asinaru, Cristian (2008) Curs practic de Java.
[10] Mandelbrot,B.B Peitgen, H., Jurgens H., Saupe D. (1992). Chaos and Frac-
tals, Springer.
[11] Mandelbrot, B. B. (1977). The fractal geometry of nature. New York: Free-
man.
[12] Marcus, S. (1982) Semiotica matematic a a artelor vizuale, ed S tiint i c a  si
Enciclopedic a
[13] Pollock, Jackson (1947). My Painting. Possibilities 1, 79.
[14] Taylor, R. P. (2002). Order in Pollocks chaos. Scienti c America, 116121.
59

[15] http://docs.oracle.com/javase/6/docs/api/overview-summary.html
[16] http://ei.cs.vt.edu/ wwwbtb/book/chap21/javaplatform.html
[17] http://www.tomgibara.com/computer-vision/canny-edge-detector
[18] http://rsbweb.nih.gov/ij/plugins/fraclac/FLHelp/BoxCounting.htm
60

Similar Posts