Documente Academic
Documente Profesional
Documente Cultură
construirea de sisteme capabile să realizeze funcţii ale intelectului uman: învăţarea prin
experienţă, înţelegerea limbajului natural, utilizarea unui raţionament pentru rezolvarea
unor probleme sau luarea unor decizii. Toate aceste presupun însă şi acumularea unei
anume cantităţi de informaţie (baza de cunoştinţe, informaţii din mediu etc.).
Această informaţie este preluată de sistemele inteligente prin senzori şi crează o
imagine a mediului în momentul preluării datelor (snapshot). Din imaginea astfel obţinută
trebuie extrase informaţiile utile. Toate acestea ţin de domeniul vederii artificiale
(Computer Vision, Robot Vision).
Histograma
Histograma este un grafic ce indică numarul de pixeli (un pixel este reprezentat pe
1 byte) corespunzători unui canal de culoare. În funcţie de tipul imaginii (respectiv
spaţiul de culori - RGB - mod de culoare bazat pe culorile roşu, verde şi albastru; HSV -
mod de culoare bazat pe tentă, saturaţie şi luminozitate; LaB - mod de culoare
independent de dispozitiv; HDRI - imagini în care culorile pot avea orice valoare) se pot
afişa graficele corespunzătoare fiecărui canal al unei imagini. Pentru o imagine pe 8 biţi,
histograma va afişa pe numărul de pixeli pentru fiecare valoare de culoare posibilă (256
valori).
Utilitatea histogramei este cea mai evidentă în prelucrarea imaginilor (sau
filmelor) care sunt digitizate după peliculă sau sunt capturate direct in format digital.
Fiecare metodă de a transforma o imagine reală în una digitală are neajunsurile ei, de aici
apărând necesitatea unei caracterizări mai precise decât observarea cu ochiul liber (care
implică şi un anumit talent). Evaluând o imagine cu ajutorul histogramei permite o
apreciere rapidă a paşilor necesari pentru a imbunătăţii calitatea imaginii, adică la o
corecţie a culorilor de calitate.
Pentru cei veniţi din lumea fotografiei tradiţionale, se poate spune că histograma
permite corectarea problemelor de expunere. În lumea digitală ajustarea expunerii este de
cele mai multe ori automată (putând fi eventul modificaţi parametrii de gain), iar în cazul
imaginilor renderizate este practic inexistentă. În special în ultimul caz sunt necesare
multe imagini de test pentru a reuşi o potrivire a luminilor care să cuprindă întregul
spectru.
În principiu, aceeaşi corecţie a unei imagini se poate face în mai multe feluri.
Histograma şi Curves (Curves - ajustarea imaginii cu ajutorul unei curbe care reprezintă
relaţia între input şi output) duc cam la aceleaşi rezultate, diferenţa fiind ca în cazul al
doilea spline-urile care permit o ajustare mult mai fină.
Unele aparate foto digitale de nivel avansat calculează distribuţia pixelilor dintr-o
imagine si afişeaza un grafic de frecvenţa pe 256 nivele (fiecărui pixel din imagine i se
calculeaza nivelul - de la 0 = negru absolut, la 255 = alb pur). O histogramă este deci un
grafic ce ilustrează modul în care sunt distribuţi intr-o imagine pixelii grupaţi după
intensitatea de culoare. Analizind aspectul curbei, putem sa determinam amploarea
detaliilor in umbre (in partea stanga), la nivelul gri-mijlociu (in mijlocul graficului) şi în
lumini (in partea dreapta a graficului). Histograma permite fotografului ca, dintr-o analiza
3
Nesteriuc Alexandru
Grupa 1143A
simplă, sa decidă dacă rezultatul este mulţumitor sau dacă trebuie să repete fotografia cu
alte valori ale indicelui de expunere (EV).
Programele avansate de prelucrare a fotografiilor dispun de analiza prin
histograma a imaginilor (de ex. Photoshop, chiar 3D Studio Max prin introducerea unor
scripturi) şi oferă utilizatorului metode precise şi fine de corectare. Identificarea zonelor
celor mai luminoase, respectiv cele mai intunecoase zone dintr-o imagine este, de
asemenea importantă in procesul de imprimare. Putem astfel stabili, in procesul de
fotoeditare, amploarea ajustărilor, pentru a nu expanda inutil tonalităţile si la nivelul unor
zone izolate, unde nu avem detalii care sa poata fi imprimate. Trebuie menţionat aici ca
imprimantele nu pot printa detalii la nivele foarte inalte de alb, si nici de negru (cuprind
nivele de la 10 până la 245 sau chiar mai puţin, in funcţie de model).
Histograma unei imagini este o funcţie care indică câţi pixeli au un anume nivel
de gri. Pe axa orizontala este reprezentat nivelul de strălucire, de la stânga (negru) la
dreapta (alb); fiecare pixel este analizat din acest punct de vedere şi i se atribuie o
valoare. Se numără apoi toţi pixelii cu o anumită valoare de strălucire iar numărul lor se
afişeaza pe axa verticală. Cu cât se inregistrează mai multi pixeli de un anumit nivel de
strălucire, cu atat graficul va urca mai sus in dreptul acelui nivel.
Ca idee generală putem să ne dăm seama imediat că o imagine corect expusa
prezintă o distribuţie relativ uniformă a pixelilor pe intreaga scală de strălucire, în timp ce
o imagine cu contrast redus va arăta aglomerări pronunţate ale pixelilor la anumite valori,
simultan cu zone întinse, slab populate.
4
Nesteriuc Alexandru
Grupa 1143A
Tema acestui proiect este realizarea unui program care să mărească contrastul
unei imagini cu ajutorul metodei histogramei. Modelarea histogramei este de obicei
introdusă folosind funcţii de proces continue în locul celor discrete. Aşadar, vom
presupune că imaginile care ne interesează vor avea nivele de intensitate continue (în
intervalul [0,1]) şi că funcţia de transformare f care mapează o imagine de intrare A(x,y)
într-o imagine de ieşire B(x,y) este continuă în acest interval. Vom mai presupune că
funcţia de transfer (care mai poate fi scrisă în termeni ai nivelului de intensitate a
densităţii, de exemplu: DB = f ( D A ) este monoton crescătoare şi cu o singură valoare
(cum este cazul în egalizarea histogramei) deci este posibil să definim funcţia inversă
D A = f −1 ( DB ) . Un exemplu al unei astfel de funcţie de transfer este ilustrată în figura 1:
df ( x)
hB ( DB ) = h A ( D A ) ÷ d ( D A ) unde d ( x ) =
dx
Acest rezultat poate fi scris în limba teoriei probabilităţii dacă histograma h este
considerată o funcţie a densităţii cu probabilitate continuă p ce descrie distribuţia
nivelelor de intensitate (presupuse random):
5
Nesteriuc Alexandru
Grupa 1143A
p B ( DB ) = p A ( D A ) ÷ d ( D A )
f ( D A ) = max( 0, round [ DM * n K / N 2 ] − 1)
Exemple de Histograme
6
Nesteriuc Alexandru
Grupa 1143A
supraexpusă aglomereză pixelii in zona din dreapta, iar una subexpusă in zona din stânga
(o astfel de fotografie este fotografia 4 - foto-04-interval-redus.bmp).
Analiza histogramei arată absenţa pixelilor cu grad ridicat de alb, şi deci o
reducere marcată a intervalului dinamic.
Corectarea acestui aspect se poate face in mai multe feluri, dar cel prezentat aici
este cel al întinderii histogramei. Desigur corectarea pe această cale nu este cea mai
impresionantă dar există programe specializate de prelucrare a imaginilor care pot duce la
un rezultat final mult mai bun decât originalul.
Histograma fotografiei ajustate arată acum un interval dinamic „mai” corect
(histograma fotografiei 4 corectate - foto-04-interval-redus-Corectata.bmp). Un alt
exemplu de corectare a unei imagini este si extinderea liniară a histogramei fotografiei 5
care iniţial aproape ca nici nu se pot distinge formele din poză. (foto-05-
scara_de_gri.bmp).
Extinderea liniară a histogramei este folosita îndeosebi la mărirea contrastului
imaginilor cu nuanţe de gri (dar si la cele color) iar rezultatele sunt mai interesante şi mai
vizibile la fotografiile cu nuanţe de gri. Folosirea acestei metode la imaginile color duce
la un rezultat ce constă într-o imagine cu contrastul ridicat dar de cele mai multe ori va
schimba culorile în moduri nedorite; de exemplu când va fi aplicată metoda întinderii
histogramei la o imagine cu contrastul slab cu o pară galbenă cu frunze verzi rezultatul
va fi o para galbenă dar frunzele vor fi (foarte probabil) albastre. Se poate urmari
histograma fotografiei 5 (foto-05-scara_de_gri-Corectata.bmp) pentru vizualizarea
schimbărilor. Deasemenea următorul exemplu evidenţiaza schimbarea histogramei unei
imagini cu nuanţe de gri (foto-06-scara_de_gri_2.bmp -> foto-06-scara_de_gri_2-
Corectata.bmp).
Egalizarea Histogramei
În timp ce egalizarea histogramei a mărit contrastul în regiunea cerului din imagine, poza
arată acum artificială pentru că este prea puţină varietate în regiunea de mijloc a nivelelor
de gri. Asta se întâmplă deoarece funcţia de transfer este bazată pe panta puţin adâncă a
histogramei cumulative în regiunea de mijloc a nivelelor de gri şi duce la maparea multor
pixeli din această regiune a imaginii originale în nivele de gri similare în imaginea de
output. Acest lucru poate fi rezolvat dacă se defineşte o mapare bazată pe sub-secţiuni ale
imaginii care conţin o distribuţie mai bună a intensităţii densităţii din partea de jos si
mijloc a nivelelor de gri. Dacă tăiem o bucată din imagine care conţine mai multă clădire
decât cer (foto-08-Monument-Taiat.bmp), se poate folosi histograma cumulativă (Figura
3) a acelei bucăţi pentru egalizarea întregii poze care va duce la un rezultat final mult mai
natural.
b −a
Pout = ( Pin − c ) +a
d −c
Problema în acest caz este că un singur pixel cu o valoare foarte mică sau foarte
mare poate afecta în mod drastic valoarea lui c sau d şi asta poate duce la o imagine de
output greşită. Astfel o abordare mai interesantă ar fi ca în primul rând să se facă o
histogramă a imaginii, şi apoi se selectează c şi d la, să zicem, 5% si 95% din histogramă
(adică 5% din pixelii din histogramă vor avea valori mai mici decât c şi 5% din pixeli vor
avea valori mai mari decât d). Acest lucru va împiedica acei pixeli „rebeli” să afecteze
rezultatul întinderii.
Alt mod prin care scăpa de acei pixeli este folosirea unei histograme de intensitate
pentru găsirea celui mai comun nivel de intensitate intr-o imagine (cum ar fi vârful
histogramei) şi apoi o fracţie de tăiere care este de fapt intervalul minim al magnitudinii
vârfului sub care datele vor fi ignorate. În alte cuvinte, toate nivelele de intensitate cu
date în histogramă sub valoarea acestei fracţii de tăiere vor fi „tăiate” (duse la valoarea
9
Nesteriuc Alexandru
Grupa 1143A
Această tehnică este folosită de obicei pentru a îmbunătăţi contrastul unei imagini
fără a modifica intensităţile relative a nivelelor de gri într-un mod prea semnificant.
Vom lua pentru exemplu o poză (foto-09-Woman.bmp) care poate fi uşor
îmbunătăţită chiar şi de unele implementări foarte simple de mărire a contrastului pentru
că histograma intensităţii formează o grupare strânsă dar subţire cum se vede prin
observarea histogramei. După extinderea histogramei, folosind o simpla interpolare
liniară vom obţine o imagine îmbunătăţită (foto-09-Woman-Corectata.bmp) şi daca vom
compara histogramele vom vedea de asemenea o schimbare radicală. Dar deşi imaginea
rezultată este o imbunătăţire faţă de original, imaginea intensificată arată cam plată. Daca
folosim egalizarea histogramei în acest caz, contrastul imaginii va fi mărit considerabil
dar rezultatul (foto-09-Woman-Egalizata.bmp) lasă de dorit.
10
Nesteriuc Alexandru
Grupa 1143A
Manual de Utilizare
11
Nesteriuc Alexandru
Grupa 1143A
Cerinţe Minime
Cerinţe Hardware:
- procesor: Intel Pentium sau AMD Duron/Athlon de la 400Mhz în sus;
- spaţiu ocupat pe hard disk: 2MB (executabil + surse);
- spaţiu ocupat de imagini (în format *.bmp de 24 biti): 61MB
- memorie: minim 32MB RAM;
- VGA display cu rezoluţie de macar 800*600 (de preferat 1024*768) în
high/true color display mode;
Cerinţe Software:
- sistem de operare: Windows 95/98/NT/2000/XP;
- programul este stand-alone dar şi sursele au fost incluse pe CD-ul ataşat;
- pentru recompilare este nevoie de Borland C++ Builder 6.0 sau mai nou;
- programul a fost creat cu ajutorul lui Borland C++ Builder 6.0 (Build 10.57)
instalat sub Windows XP Professional, SP 1 (V. 5.1 - 2600);
- ca menţiune aş vrea să adaug că nu s-a folosit nimic în plus faţă de instalarea
standard a builderului adică nu s-a instalat nici un pachet în plus
12
Nesteriuc Alexandru
Grupa 1143A
Concluzii
13
Nesteriuc Alexandru
Grupa 1143A
Bibliografie
http://www.cee.hw.ac.uk/hipr/html/
http://terraweb.wr.usgs.gov/software/mips/link/table.html
http://www.canr.uconn.edu/nrme/nrme238/Exercise3.htm
http://www.ece.arizona.edu/~dial/tclsadie
http://supportweb.cs.bham.ac.uk/documentation/visilog5/html/refguide/chap4.html
http://www.olympusmicro.com/primer/digitalimaging/imageprocessingintro.html
http://www.netnam.vn/unescocourse/computervision/22.htm
http://homepages.inf.ed.ac.uk/rbf/HIPR2
14