Această lucrare ilustrează două dintre metodele de modificare a histogramei unei imagini cu scopul de a îmbunătăți calitatea acesteia. Imaginile pot… [305108]

UNIVERSITATEA „LUCIAN BLAGA”, SIBIU

FACULTATEA DE INGINERIE

SPECIALIZAREA CALCULATOARE

LUCRARE DE LICENȚĂ

Coordonator științific:

Prof. Dr. Ing. Volovici Daniel

Absolvent: [anonimizat], 2019-

UNIVERSITATEA „LUCIAN BLAGA”, SIBIU

FACULTATEA DE INGINERIE

SPECIALIZAREA CALCULATOARE

METODE DE HISTOGRAME

PE IMAGINI

Coordonator:

Prof. Dr. Ing. Volovici Daniel

Absolvent: [anonimizat], 2019-

PREFAȚĂ

Această lucrare ilustrează două dintre metodele de modificare a histogramei unei imagini cu scopul de a îmbunătăți calitatea acesteia. [anonimizat].

Metodele de procesare a histogramelor ilustrează o tehnică de modificare a contrastului unei imagini. [anonimizat]-am dorit. [anonimizat]-[anonimizat]. [anonimizat]. Astfel, vom obține o imagine de output a cărei histograme va avea o distribuție uniformă a pixelilor. [anonimizat]. Frecvențele de apariție care trec de o anumită limită sunt redistribuite în mod egal în histogramă. Aceste operații se fac la nivel de dreptunghi.

Acest proiect are rolul de a explica cum se calculează și reprezintă o histogramă, cum funcționează egalizarea unei histograme și egalizarea adaptivă cu limită de contrast. Primul capitol al lucrării descrie o introducere în domeniul procesărilor de imagini. [anonimizat] o descriere a istoriei prelucrărilor de imagini digitale. [anonimizat], [anonimizat]. Capitolul IV ilustrează rezultatele experimentale pe 5 imagini de test a celor două metode de modificare a histogramei iar capitolul V prezintă concluziile acestui proiect și posibile îmbunătățiri care pot fi aduse proiectului.

Principalii pași pe care i-am făcut pentru realizarea acestui proiect sunt: [anonimizat] a [anonimizat], implementarea egalizării de histogramă și egalizării adaptive cu limită de contrast.

SUMMARY

The project that I have implemented aims to illustrate some methods of modifying the histogram of an image in order to improve its quality for further processing. Images may be enhanced by different techniques which may alter their contrast and other characteristics.

The histogram processing methods illustrate a technique for changing the contrast of an image. This is achieved by changing images so the histograms of intensity are exactly as we desire. [anonimizat]-monotonic transfer functions make it possible to map between the pixel intensity values in the input and the pixel intensity values in the output images. We also get a [anonimizat] a monotonous image. Also, adaptive histogram equalization method with contrast limitation is implemented and uses liniear and bilinear interpolation. The frequencies that pass a certain threshold are redistributed evenly across the histogram. These operations are made on every square of the image.

This project shows how to compute and represent a histogram, how a histogram equalizes and adaptive equalization with a contrast limit works. The first chapter describes an introduction to image processing. Also, there is a description of the history of digital image processing. The following chapter illustrates the theory on which I have implemented the project, and in the third chapter there are explained the functionality and implementations. Chapter IV shows the experimental results on five test images of the two histogram modification methods, and Chapter V outlines the conclusions of this project and possible improvements that can be made.

The main steps that I have made to carry out this project are: deepening knowledge in the field of image processing, studying histograms and various methods of modeling them, and not least implementing the normal histogram equalisation and adaptive equalisation with contrast limitation.

PROCESAREA IMAGINILOR

Interesul față de metodele de procesare a imaginilor digitale provine din două domenii de aplicabilitate principale, și anume îmbunătățirea informațiilor picturale pentru o mai bună interpretare umană și respectiv prelucrarea datelor din imagini pentru stocarea, transmisia și reprezentarea percepției mașinilor autonome.

CE ESTE PROCESAREA IMAGINILOR

O imagine poate fi definită ca o funcție bidimensională, f(x,y), unde x si y sunt coordonate (plane) spațiale iar amplitudinea lui f pentru orice pereche de coordonate (x,y) se numește intensitatea sau nivelul de gri al imaginii la un anumit moment dat. În cazul în care x,y si valorile intensității lui f sunt finite, cantități discrete, numim imaginea o imagine digitală. Domeniul procesării imaginilor digitale face referire la prelucrarea imaginilor digitale cu ajutorul unui calculator digital. O imagine digitală este compusă dintr-un număr finit de elemente, fiecare element având o locație și o valoare particulară. Aceste elemente se numesc elementele imaginii sau pixeli.

Se pot lua în considerare trei tipuri de procese de computerizare, și anume: procese de nivel scăzut (low-level processes), procese de nivel mediu (mid-level processes) și procese de nivel înalt (high-level processes). Procesele low-level implică operații primitive precum: preprocesarea imaginilor pentru reducerea zgomotului, îmbunătățirea contrastului și accentuarea imaginilor. Aceste tipuri de procese sunt caracterizate prin faptul că, atât input-ul cât și output-ul sunt imagini. Procesarea de nivel mediu a imaginilor presupune task-uri precum: segmentarea (divizarea unei imagini în regiuni sau obiecte), descrierea obiectelor în scopul reducerii lor la o formă potrivită pentru procesare și clasificarea (recunoașterea) individuală a obiectelor. Procesele mid-level sunt caracterizate prin input-uri, care în general sunt imagini, și output-uri, care reprezintă atributele extrase din imagini, spre exemplu margini, contururi sau identitatea obiectelor individuale dintr-o imagine. Procesarea high-level implică redarea unui anumit sens ansamblelor de obiecte recunoscute și îndeplinirea funcțiilor cognitive asociate vederii.

ORIGINILE PROCESĂRII IMAGINILOR

Una dintre primele aplicații ale imaginilor digitale a fost realizată în cadrul industriei ziarelor, când imaginile erau transmise prin cabluri submarine între Londra și New York. Introducerea sistemului de transmisie prin cablu Bartlane la începutul anilor 1920 a redus timpul de transmisie necesar transportului unei imagini de-a lungul Atlanticului de la o săptămână, la mai puțin de trei ore. Echipamentele de tipărire specializate codau fotografii pentru transmisia lor prin cablu, iar apoi la capătul receptorului le refăceau. Imaginea din figura 1.1 a fost transmisă în acest mod și reconstituită pe un telegraf dotat cu fonturi simulând modele de semitonuri.

Unele dintre problemele inițiale în îmbunătățirea calității vizuale ale acestor imagini timpurii erau legate de selecția procedurilor de imprimare și distribuția nivelelor de intensitate. Metoda de imprimare folosită pentru a obține imaginea din figura 1.1 a fost abandonată spre sfârșitul anului 1921 în favoarea unei tehnici care se bazează pe reproducerea fotografică realizată din benzi perforate la terminalul de recepție telegrafic. Figura 1.2 arată o imagine obținută prin această metodă. Îmbunătățirile față de figura 1.1 sunt evidente, atât în calitatea tonală cât și în rezoluție.

Figura 1.1. O imagine digitală produsă în anul 1921 dintr-o bandă codificată de o imprimantă telegrafică cu fonturi speciale.

Figura 1.2. O imagine digitală produsă în 1922 dintr-o bandă perforată după ce semnalul a traversat Atlanticul de două ori.

Sistemele timpurii Bartlane erau capabile să codeze imagini în cinci niveluri de gri distincte. Această capabilitate a fost mărită la 15 niveluri în anul 1929. Figura 1.3 este tipică genului de imagini care pot fi obținute prin folosirea sistemelor cu 15 niveluri de gri. În această perioadă, introducerea unui sistem pentru dezvoltarea plăcilor de film prin fascicule de lumină modulate de banda imaginii codată a îmbunătățit procesul de reproducție a imaginii în mod considerabil.

Figura 1.3. Imagine nereușită prin cablu a generalilor Pershing și Foch, transmisă în 1929 de la Londra la New York de un echipament cu greutatea de 15 tone.

Deși exemplele citate mai sus implică imagini digitale, ele nu sunt cosiderate rezultatele procesării imaginilor digitale în contextul definiției deja menționate deoarece calculatoarele nu au avut nici un rol în crearea acestora. Prin urmare, istoria procesării de imagini digitale este strâns legată de dezvoltarea calculatoarelor digitale. De fapt, imaginile digitale necesită mult spațiu de stocare și putere computațională astfel încât, orice progres în domeniul procesării imaginilor digitale este dependent de evoluția calculatoarelor și de tehnologiile suport care includ spațiu de stocare, afișaj și transmisie.

Ideea de calculator provine de la invenția abacului din Asia Mică în urmă cu 5000 de ani. Mai recent, în ultimele două secole, calculatoarele s-au dezvoltat enorm, însa baza unui calculator modern datează doar din anul 1940 când John von Neumann a introdus două concepte cheie: o memorie, care să stocheze date și programe, și ramificarea condițională. Aceste două concepte sunt fundația unității centrale de procesare (CPU) care este centrul unui calculator din zilele noastre. Începând cu von Neumann, au existat o serie de progrese cheie care au condus la calculatoare suficient de puternice pentru a putea fi folosite la procesarea imaginilor digitale, și anume:

Inventarea tranzistorului în cadrul laboratoarelor Bell în anul 1948;

Dezvoltarea limbajului de programare de nivel înalt COBOL în anii 1950 și 1960;

Inventarea circuitului integrat la Texas Instruments în anul 1958;

Dezvoltarea sistemelor de operare la începutul anilor 1960;

Dezvoltarea microprocesorului (un singur chip care conține unitate centrală de procesare, memorie, controlul dispozitivelor de intrare/ieșire) de către Intel la începutul anilor 1970;

Introducerea calculatorului personal de IBM în anul 1981;

Minimizarea progresivă a componentelor începând cu integrarea la scală largă în 1970, apoi integrarea la scală foarte largă în anul 1980 și utilizarea actuală a integrării la scală ultra largă.

Primele calculatoare destul de puternice încât să execute task-uri ale procesării imaginilor au aparut la începutul anilor 1960. Nașterea a ceea ce noi numim în zilele noastre, procesarea imaginilor digitale a fost realizată prin existența calculatoarelor respective și prin debutul programului spațial din acea perioadă. Lucrul asupra tehnicilor de calcul pentru îmbunătățirea imaginilor primite de la o sondă spațială a început în cadrul laboratoarelor Jet Propulsion (Pasadenia, California) în anul 1964 când imaginile transmise de Roger 7 erau procesate de un calculator cu scopul de a corecta diverse tipuri de deformări ale imaginilor provenite de la camera de pe bord. Figura 1.4 reprezintă prima imagine a lunii făcută de către Roger 7 pe data de 31 iulie 1964 la ora 9:09 A.M. după standardul orei de Est (ETD), înainte cu aproximativ 17 minute de impactul cu suprafața lunară. Această figură este și prima imagine a lunii făcută de către o navă spațială a Americii.

Figura 1.4. Prima imagine a lunii făcută de o navă spațială a Americii. Imaginea a fost făcută de către Ranger 7 pe data de 31 iulie la ora 9:09 în anul 1964 A.M. EDT, cu aproximativ 17 minute înainte de impactul cu luna.

În paralel cu aplicațiile spațiale, tehnicile prelucrării imaginilor digitale au început a fi folosite la sfârșitul anilor 1960 și începutul anilor 1970 în imagistica medicală, în observarea resurselor planetei Pământ de la distanță și în astronomie. Inventarea tomografiei axiale computerizate în anul 1970, tomografie computerizată pe scurt, este unul dintre cele mai importante evenimente în aplicarea prelucrării imaginilor în diagnosticarea medicală. Tomografia axială computerizată este un proces în care un inel de detectoare încercuiește un obiect (sau pacient) concentric cu inelul de detectoare și o sursă de raze X, care se rotesc în jurul obiectului. Razele X trec prin obiect și sunt colectate la capătul opus de către detectoarele corespunzătoare din inel. Pe măsură ce sursa se rotește, această procedură se repetă. Tomografia constă în algoritmi care folosesc informația trimisă pentru a contrui o imagine ce reprezintă o „felie” din obiect. Mișcarea obiectului într-o direcție perpendiculară cu inelul de detectoare produce un set de „felii”, care formează o reconstituire tridimensională a obiectului. Tomografia a fost inventată independent de către Sir Godfrey N. Hounsfield și profesorul Allan M. Cormack, care au împărțit, în anul 1979, premiul Nobel în medicină pentru invenția lor. Interesant este faptul că razele X au fost descoperite în anul 1895 de Wilhem Conrad Roentgen, pentru care, în 1901, a primit premiul Nobel în fizică. Aceste două invenții, la aproape 100 de ani diferență, au condus la unele dintre cele mai importante aplicații în cadrul procesării imaginilor de azi.

Din anii 1960 până în prezent, domeniul procesării imaginilor a crescut riguros. În plus, față de aplicațiile în medicină și programul spațial, tehnicile procesării imaginilor digitale sunt acum folosite într-o gamă largă de aplicații. Tehnicile de calcul sunt folosite pentru a îmbunătății contrastul sau pentru a codifica nivele de intensități în culoare pentru o interpretare mai ușoară a razelor X și a altor imagini folosite în industrie, în medicină și în științele biologice. Geografii folosesc tehnici identice sau asemănătoare pentru a studia pattern-urile poluării din imaginile provenite de la diverși sateliți. Îmbunătățirea imaginilor și procedurile de restaurare sunt folosite pentru procesarea imaginilor degradate ale obiectelor nerecuperabile sau pentru rezultate experimentale prea scumpe pentru a putea fi duplicate. În arheologie, metodele procesării imaginilor au restaurat cu succes imagini blurate care erau singurele consemnări disponibile a unor artefacte rare, pierdute sau deteriorate în urma fotografierii acestora. În fizică și în domeniile asociate cu aceasta, tehnicile de calcul îmbunătățesc în mod curent imaginile experimentelor din domenii precum plasme cu energie mare și microscopie electronică. Aplicații similare de succes ale conceptelor procesării imaginilor pot fi găsite în astronomie, biologie, medicină nucleară, în aplicarea legilor, apărare și industrie.

Aceste exemple ilustrează rezultatele procesării destinate interpretării umane. Domeniul principal de aplicare a tehnicilor procesării imaginilor este rezolvarea problemelor care apar în percepția mașinilor. În acest caz, interesul constă în proceduri de extracție a informațiilor dintr-o imagine într-o formă potrivită procesării. De cele mai multe ori, această informație seamănă puțin cu trăsăturile vizuale pe care oamenii le folosesc în interpretarea conținutului unei imagini. În percepția mașinilor sunt folosite mai multe tipuri de informație, cum ar fi: momente statistice, coeficienți de transformare Fourier și măsuri de distanță multidimensională. Problemele tipice în percepția mașinilor care utilizează în mod obișnuit tehnicile procesării de imagini sunt: recunoașterea caracterelor în mod automat, viziunea mecanismelor industriale pentru asamblarea produselor și inspecție, recunoaștere militară, procesarea automată a amprentelor, redarea razelor X și a mostrelor de sânge, procesarea mecanismelor pentru imagini prin satelit folosite în predicția vremii și evaluarea mediului. Declinul continuu a raportului dintre calculator plus performanța acestuia și extinderea rețelelor plus a benzilor de comunicație prin World Wide Web și Internetul au creat oportunități nemaivăzute pentru dezvoltarea domeniului procesărilor de imagini.

PAȘI FUNDAMENTALI ÎN PROCESAREA DE IMAGINI

Există două mari categorii de metode în procesarea imaginilor, și anume: metode cu input-uri și output-uri imagini, respectiv metode ale căror input-uri sunt imagini dar output-urile sunt atribute extrase din aceste imagini. În continuare sunt prezentate toate procesele fundamentale în prelucrarea de imagini. Achiziția de imagini este primul proces și presupune preprocesarea imaginilor, spre exemplu scalare.

Îmbunătățirea imaginilor este procesul de manipulare a unei imagine pentru a obține un rezultat mai potrivit decât cel original pentru un anumit tip de aplicație. Cuvântul „specific” este important deoarece stabilește de la început faptul că tehnicile de îmbunătățire sunt orientate spre problemă. De exemplu, o problemă care este destul de bună pentru îmbunătățirea imaginilor cu raze X nu poate fi bună pentru îmbunătățirea imaginilor de la sateliți. Nu există o teorie generală despre îmbunătățirea imaginilor. Când o imagine este procesată pentru interpretarea vizuală, privitorul este cel care decide cât de bună este o anumită metodă. Tehinicle de îmbunătățire sunt foarte variate și folosesc multe procese de prelucare a imaginilor.

Refacerea imaginilor este un domeniu care, de asemenea, se ocupă cu îmbunătățirea aparențelor unei imagini. Însă, spre deosebire de îmbunătățirea imaginilor, care este subiectivă, restaurarea imaginilor este un proces obiectiv, în sensul în care tehnicile de restaurare tind să se bazeze pe modele matematice sau probabilistice de degradare a imaginilor. Metoda anterioară, pe de altă parte, se bazează pe preferințele subiective umane în ceea ce privește cât de bun este rezultatul unei îmbunătățiri.

Prelucrarea imaginilor colore este un domeniu care a câștigat importanță datorită creșterii semnificative a utilizării imaginilor digitale în Internet. Culoarea este folosită ca bază pentru extragerea anumitor trăsături de interes pentru o imagine.

Oscilațiile de tip val (wavelet) sunt funcții matematice folosite în compresia imaginilor și semnalelor digitale. Ele sunt fundația pentru reprezentarea imaginilor în diferite grade de rezoluție. Oscilațiile sunt folosite în compresia datelor și în reprezentarea piramidală, în care imaginile sunt subdivizate succesiv în regiuni mai mici.

Compresia , așa cum sugerează și numele, se ocupă cu tehnicile de reducere a spațiului necesar salvării unei imagini, sau lățimea de bandă necesară pentru transmiterea imaginii. Deși tehnicile de stocare s-au îmbunătățit semnificativ în ultimul deceniu, același lucru nu poate fi spus și pentru capacitatea de transmitere. Acest lucru este adevărat în special în utilizarea Internetului, care se caracterizează printr-un conținut pictural semnificativ. Compresia imaginilor este familiară utilizatorilor de calculatoare sub forma extensiilor de fișiere, precum extensia de fișier jpg folosită în standardul de compresie a imaginilor JPEG (Joint Photographic Experts Group).

Prelucrarea morfologică se ocupă de tool-uri pentru extragerea componentelor imaginilor utile în reprezentarea și descrierea formei acestora.

Procedurile de segmentare împart o imagine în părțile sale constitutive sau obiecte. În general, segmentarea autonomă este unul dintre cele mai grele task-uri ale procesării de imagini. O procedură solidă de segmentare aduce procesul spre o soluție reușită a problemelor imaginisticii care necesită ca obiectele să fie identificate individual. Pe de altă parte, un algoritm de segmentare slab aproape întotdeauna va garanta un eventual eșec. În general, cu cât o segmentare este mai precisă cu atât este mai probabil ca recunoașterea să reușească.

Reprezentarea și descrierea, în cele mai multe cazuri, urmează output-ului etapei de segmentare, care conține de obicei date brute despre pixeli, constituind o limită a unei regiuni (de exemplu, setul de pixeli care separă o regiune de alta) sau toți pixelii care reprezintă regiunea. În orice caz, convertirea datelor într-o formă potrivită pentru procesare este necesară. Prima decizie care trebuie luată este în legătură cu reprezentarea datelor, dacă acestea vor fi interpretate ca fiind granița dintre regiuni sau ca fiind o regiune completă. Reprezentarea datelor prin graniță este potrivită în cazul în care se pune accentul pe caracteristicile formei exterioare, precum colțuri sau inflexiuni. Reprezentarea datelor prin regiune este potrivită doar atunci când accentul se pune pe proprietățile interne, cum ar fi textura sau forma scheletică. În unele aplicații, aceste două reprezentări se completează una pe alta. Alegerea unei reprezentări este doar o parte a soluției pentru a transforma date brute într-o formă potrivită pentru o prelucrare ulterioară a acestora pe calculator. De asemenea, trebuie specificată o metodă pentru descrierea datelor pentru a sublinia caracteristicile de interes. Descrierea, denumită și selecția caracteristicilor, se ocupă cu extragerea atributelor care rezultă în unele informații cantitative de interes sau sunt bază pentru diferențierea claselor de obiecte.

Până acum nu s-a spus nimic despre nevoia unor cunoștințe anterioare sau despre interacțiunea dintre cunoștințele de bază și modulele de procesare. Cunoștințele unui domeniu problematic sunt codate într-un sistem de procesare a imaginilor sub forma unei baze de date. Această cunoaștere poate fi la fel de simplă ca detalierea regiunilor unei imagini unde informația de interes este cunoscută ca fiind localizată, limitând astfel căutarea care trebuie făcută în căutarea acestei informații. Baza de cunoștințe poate fi, de asemenea, destul de complicată cum ar fi o listă interconectată a tuturor defectelor majore posibile într-o problemă de inspecție materială sau o bază de date care să conțină imagini de înaltă rezoluție provenite de la sateliți a unei regiuni, conectată cu aplicații de modificare. În plus, față de ghidarea operațiilor fiecărui modul de procesare, cunoașterea de bază controlează interacțiunea dintre module.

Vizualizarea rezultatelor prelucrărilor de imagini poate avea loc la ieșirea oricărei etape. Nu toate aplicațiile de procesare a imaginilor necesită complexitate la nivelul interacțiunilor dintre module. De fapt, în multe cazuri nu sunt necesare toate aceste module. De exemplu, îmbunătățirea imaginilor pentru interpretarea vizuală umană necesită rar folosirea altor module. Deși, în general, cu cât crește complexitatea unui task de procesare cu atât va crește și numărul de module necesar rezolvării problemei.

PROCESAREA DE HISTOGRAME

REPREZENTAREA HISTOGRAMELOR

Histograma unei imagini digitale cu nivelele de intensitate în intervalul [0, L-1] este o funcție discretă h() =, unde este valoarea intensității k și este numărul de pixeli a imaginii cu intensitatea . Este o practică obișnuită să normalizezi o histogramă prin divizarea fiecarei componente cu numărul total de pixeli din imagine, indicată de produsul dintre M și N, unde M și N sunt dimensiunile rândului și coloanei imaginii. În plus, o histogramă normalizată este dată , unde k=0, 1, 2, …, L – 1. p() este o estimare a probabilității de apariție a nivelului de intensitate într-o imagine. Suma tuturor componentelor unei histograme normalizate este egală cu 1.

Histogramele sunt bază pentru numeroase tehnici de procesare. Manipularea histogramei poate fi folosită pentru îmbunătățirea imaginilor. În plus, față de furnizarea statisticilor utile pentru o anumită imagine, informațiile provenite din histograme sunt folositoare și în alte aplicații de procesare, cum ar fi compresia imaginilor și segmentarea. Histogramele sunt ușor de calculat în software și se pretează la implementări hardware economice, făcându-le astfel un instrument popular pentru procesarea imaginilor în timp real.

Ca o introducere a procesării histogramelor pentru transformări de intensitate, se consideră patru caracteristici de bază a intensitătii: contrast întunecat, contrast luminat, contrast scăzut și contrast ridicat. În figura 2.1 sunt ilustrate histogramele unor imagini cu contrast ridicat, respectiv scăzut iar în figura 2.2 se află histogramele unor imagini cu luminozitate mare, respectiv scăzută.

În partea din dreapta a fiecărei imagini din figuri sunt reprezentate histogramele lor. Axa orizontală a fiecărei histograme reprezintă valorile intensității . Axa verticală corespunde valorii lui , sau dacă valorile sunt normalizate. În plus, histogramele pot fi vizualizate ușor din punct de vedere grafic ca reprezentări de versus sau versus .

Figura 2.1. Două tipuri de imagini de bază: cu contrast înalt, respectiv cu contrast scăzut, și histogramele corespondente.

O imagine cu un contrast scăzut are o histogramă îngustă în care componentele sunt situate de obicei în mijlocul scalei de intensitate. Pentru o imagine monocromă, acest lucru implică un aspect plictisitor de gri pierdut. Componentele histogramei aparținând imaginii cu contrast înalt acoperă o mare parte din scala de intensitate iar distribuția pixelilor este aproape uniformă, cu excepția câtorva linii care sunt mai înalte față de celelalte. În mod intuitiv, o imagine a cărei pixeli tind a ocupa toate nivelurile de intensități posibile și a avea o distribuție uniformă, va avea un aspect de contrast ridicat și va expune o varietate largă a tonurilor de gri.

Figura 2.2. Două tipuri de imagini de bază: întunecată, respectiv luminoasă, și histogramele corespondente.

Este de observat faptul că, în imaginea întunecată componentele histogramei sunt concentrate în partea inferioară a scalei de intensitate. Similar, componentele histogramei care corespunde imaginii luminoase sunt concentrate în partea superioară a scalei.

Pixelul reprezintă cel mai mic element dintr-o imagine. Informațiile unei imagini sunt stocate în calculator cu ajutorul sistemului binar. Formatul unei imagini alb negru este de 8 biți per pixel, adică o imagine poate avea 256 () de nuanțe de gri per pixel și are un singur canal de culoare. O imagine color este reprezentată de o combinație de 3 imagini, fiecare având formatul pixelilor de 8 biți si propriul său canal de culoare, și anume roșu (red), verde (green) și albastru (blue). Prin urmare, o imagine color este pe 24 de biți si poate avea 16.7 milioane de culori. Histograma unei imagini color poate fi reprezentată prin calcularea mediei celor 3 canale de culoare. De asemenea, fiecare canal se poate reprezenta prin propria sa histogramă. În figura 2.3. este un exemplu în care avem o imagine de tip RGB pe 24 de biți. În partea dreaptă sus a figurii se află histograma canalului R, în partea dreaptă jos este histograma canalului G iar în partea stânga jos este reprezentată histograma canalului B. Prin combinarea celor trei histograme se va obține histograma imaginii.

Figura 2.3. Imagine de tip RGB pe 24 de biți, și histogramele corespondente celor 3 canale de culoare ale imaginii.

EGALIZAREA HISTOGRAMELOR

Egalizarea unei histograme se realizează în scopul obținerii unei distribuții uniforme a intensităților dintr-o imagine și ilustrează operația de accentuare a contrastului. Să considerăm că avem valori de intensitate continuă și că variabila r reprezintă intensitățile unei imagini care urmează a fi procesată. Vom presupune faptul că r aparține intervalului și că reprezintă negru iar reprezintă alb. Pentru ca r să satisfacă aceste condiții, ne vom concentra asupra transformărilor de forma

s = T(r) 0 ≤ r ≤ L – 1 (1)

care produc un nivel de intensitate s pentru fiecare pixel din imaginea de intrare având intensitatea r. Presupunem că:

T(r) este o funcție monotonă crescătoare în intervalul 0 ≤ r ≤ L – 1;

0 ≤ T(r) ≤ L – 1 pentru 0 ≤ r ≤ L – 1.

În unele formulări se folosește inversa

r = 0 ≤ s ≤ L – 1 (2)

caz în care condiția (a) se va schimba în

T(r) este o funcție strict crescătoare monotonă în intervalul 0 ≤ r ≤ L – 1.

Cerința din condiția (a) ca T(r) să fie o funcție monotonă crescătoare garantează faptul că valorile intensității de ieșire nu vor fi niciodată mai mici ca valorile de intrare corespondente, prin urmare se previn artefactele create prin inversarea intensităților. Condiția (b) garantează faptul că intervalul intensităților de ieșire este același cu cel de intrare. În cele din urmă, condiția (c) garantează că maparea de la s înapoi la r va fi one-to-one, prevenind astfel ambiguitățile. Figura 2.4 de mai jos reprezintă o funcție care satisface condițiile (a) și (b).

Figura 2.4. Funcție crescătoare monotonă, care arată cum multiple valori pot mapa la o singură valoare.

Putem observa faptul că este posibil ca multiple valori să fie mapate la o singură valoare și să fie, în același timp, respectate condițiile (a) și (b). Aceasta este o funcție de transformare monotonă care efectuează mapări one-to-one sau many-to-one. Însă, figura 2.4. reprezintă o problemă în cazul în care dorim să recuperăm valorile unice ale lui r din valorile mapate (maparea inveră poate fi vizualizată inversând direcția săgeților). Acest lucru este posibil pentru maparea inversă a lui din figura 2.4 , însă maparea inversă a lui este un interval de valori , care, ne împiedică în general, să recuperăm valoarea unică a lui r ce a rezultat în . Așa cum putem vedea în figura 2.5, T(r) este strict monotonă, fapt ce garantează că mapările inverse vor fi valori unice (spre exemplu, mapările sunt one-to-one în ambele direcții). Deoarece în practică avem de a face cu valori întregi ale intensității, rezultatele vor fi rotunjite la cele mai apropiate valori întregi. Prin urmare, în cazul în care nu este satisfăcută cerința monotonicității stricte, va fi abordată problema unei transformări inverse non unice prin căutarea celor mai apropiate perechi cu valori întregi.

Figura 2.5. Funcție strict crescătoare monotonă. Mapare one-to-one în ambele direcții.

Nivelurile de intensitate dintr-o imagine pot fi văzute ca valori aleatoare aparținând intervalului Un descriptor fundamental a unei variabile aleatoare este funcția densitate de probabilitate (PDF – probability density function). Să considerăm că și reprezintă PDF-urile lui r, respectiv s, unde indicii lui p sunt folosiți pentru a indica faptul că și sunt, în general, funcții diferite. Un rezultat fundamental din teoria de bază a probabilității este că, în cazul în care și T(r) sunt cunoscute iar T(r) este continuă și diferențiată în intervalul valorilor de interes, atunci PDF-ul variabilei convertite (mapate) s poate fi obținută folosind formula:

(3)

Prin urmare, se poate observa că PDF-ul variabilei intensității de ieșire, s, este determinată de PDF-ul intensităților de intrare și de funcția de transformare folosită (r și s sunt legate de T(r)).

O funcție de transformare de o importanță deosebită în procesarea de imagini are forma de mai jos,

(4)

unde w este o variabilă „dummy”. Partea dreaptă a ecuației este funcția de distribuție cumulativă (CDF – cumulative density function) a variabilei aleatoare r. Deoarece PDF-urile sunt întotdeauna pozitive, și integrarea unei funcții este aria de sub funcție, rezultă că funcția de transformare a ecuației de mai sus satisface condiția (a) deoarece aria de sub funcție nu poate scădea pe măsura creșterii lui r. Atunci când limita superioară a aceste ecuații este , integrarea este evaluată la 1 (aria de sub o curbă PDF este întotdeauna 1), deci valoarea maximă a lui s este și condiția (b) este de asemenea satisfăcută.

Pentru a găsi corespunzător transformării discutate anterior, vom folosi ecuația 1. Știm din regula lui Leibniz în calculul de bază faptul că, derivarea unei integrale definite având în vedere limita sa superioară, este integrata evaluată la aceea limită.

(5)

Substituind acest rezultat pentru în ecuația 3 și tinând cont de faptul că toate probabilitățile sunt pozitive, rezultă:

(6)

Observăm faptul că forma lui este ca o funcție de probabilitate uniformă a densității. T(r) depinde de , însă, conform ecuației de mai sus, este întotdeauna uniformă, independentă de forma lui . Figurile 2.7 și 2.8 ilustrează conceptele de mai sus.

Figura 2.6. Reprezentarea unei funcții densitate de probabilitate aleatoare

Figura 2.7. Rezultatul aplicării transformării descrise prin ecuația 4 tuturor nivelurilor de intensitate r din figura 2.6. Intensitățile rezultate, s, au un PDF uniform, independent de forma PDF-ului intensităților de intrare r.

EGALIZAREA ADAPTIVĂ CU LIMITĂ DE CONTRAST A HISTOGRAMELOR

Egalizarea adaptivă de histogramă este o metodă de procesare a imaginilor folosită pentru îmbunătățirea contrastului. Diferența dintre egalizarea normală de histogramă și egalizarea adaptivă de histogramă constă în faptul că, metoda adaptivă împarte imaginea originală în secțiuni distincte și calculează histogramele fiecăreia, ele fiind folosite pentru a redistribui valorile de luminozitate ale imaginii secționate. Această metodă este potrivită pentru îmbunătățirea contrastului local. Însă, modificarea adaptivă de histogramă are tendința de a amplifica zgomotul. O variantă a acestei metode este egalizarea adaptivă de histogramă cu limită de contrast care împiedică amplificarea zgomotului.

Egalizarea normală de histogramă folosește aceeași transformare derivată din histograma imaginii pentru a transforma toți pixelii. Acest lucru are rezultate bune atâta timp cât distribuția valorilor pixelilor este similară în întreaga imagine. Dacă o imagine conține regiuni care sunt mai întunecate sau mai luminoase decât celelalte regiuni ale imaginii, contrastul regiunilor respective nu va fi îmbunătățit destul de bine. Egalizarea adaptivă de histogramă îmbunătățește acest aspect prin transformarea fiecărui pixel cu o funcție de transformare derivată dintr-o regiune vecină. Fiecare pixel este transformat pe baza histogramei regiunii din care face parte. Determinarea funcțiilor de transformare se face la fel ca în cazul egalizării normale de histogramă.

Figura 2.8. Ilustrarea vecinătății pixelilor pentru egalizarea histogramei adaptive.

Pixelii care sunt aproape de marginile imaginii trebuiesc a fi tratați special, astfel că se extinde imaginea prin oglindirea liniilor și coloanelor pixelilor având în considerare mărimea imaginii. În figura 2.8 de mai sus, se poate observa vecinătatea unor anumiți pixeli.

În metoda de egalizare adaptivă cu limită de contrast (CLAHE), amplificarea de contrast din vecinătatea unui anumit pixel este dată de panta funcției de transformare, care este proporțională cu panta funcției de distribuție cumulativă a vecinătății, și, prin urmare, cu valoarea histogramei la aceea valoare a pixelilor. CLAHE limitează amplificarea zgomotului prin tăierea histogramei la o valoare predefinită înainte de a calcula funcția cumulativă, lucru care limitează panta funcției cumulative, respectiv panta funcției de transformare. Valoarea la care este tăiată histograma, numită și limită de tăiere, depinde de normalizarea histogramei și de dimensiunea regiunii vecine. Această redistribuire va împinge niște valori ale histogramei peste limita de tăiere, rezultând o limită de tăiere mai eficientă decât valorea predefinită și valoarea exactă a acesteia depinde de imagine. Dacă nu dorim acest lucru, procedura de redistribuire poate fi repetată recursiv până excesul este neglijabil. Este avantajos a nu îndepărta partea din histogramă care depășește limita de tăiere ci a o redistribui în mod egal printre valorile histogramei. Această procedură de redistribuire a excesului poate fi vizualizată în figura 2.9.

Figura 2.9. Redistribuire excesivă în egalizarea histogramei adaptive limitate de contrast.

Egalizarea adaptivă de histogramă cu limitare de contrast sau nu, necesită calcularea unei histograme vecine diferite și funcție de transformare pentru fiecare pixel în parte fapt pentru care această metodă este foarte scumpă din punct de vedere computațional.

Interpolarea permite o îmbunătățire semnificativă din punct de vedere al eficienței fără a compromite calitatea rezultatului. Imaginea este împărțită în dreptunghiuri de dimensiuni egale. Această împărțire este ilustrată de partea din dreapta a figurii 2.10, unde o imagine este reprezentată de 64 de dreptunghiuri în opt coloane și opt rânduri. Următorul pas constă în calcularea unei histograme, a unei funcții de distribuție cumulativă și o funcție de transformare pentru fiecare dreptunghi în parte. Funcțiile de transformare sunt potrivite pentru pixelii centrali ai dreptunghiurilor așa cum putem observa în partea stângă a figurii 2.9. Toți ceilalți pixeli sunt transformați cu până la patru funcții de transformare ale dreptunghiurilor cu pixelii centrali cei mai apropiați de ei și sunt asignate valori interpolate. Pixelii din cea mai mare parte a imaginii din figura 2.9, adică pixelii care sunt colorați cu albastru, sunt interpolați bilinear iar cei colorați cu verde, care sunt mai apropiați de limitele imaginii, sunt interpolați linear. Pixelii de lângă cele patru colțuri ale imaginii care sunt colorați în roșu sunt transformați cu funcția de transformare al dreptunghiului din colț. Coeficienții interpolării reflectă locația pixelilor dintre pixelii cei mai apropiați de centrul dreptunghiului, astfel încât rezultatul să fie continuu pe măsură ce se apropie de centrul unui dreptunghi.

Figura 2.10. Ilustrarea interpolării pe bază de dreptunghiuri pentru calculul eficient al egalizării histogramei adaptive.

O alternativă la secționarea imaginilor este de a "aluneca" dreptunghiul cu un pixel la un moment dat și de a actualiza incremental histograma fiecărui pixel adăugând noul rând de pixeli și scăzând rândul lăsat în urmă. Complexitatea computațională a calculului histogramei ar fi redusă de la O () la O (N), unde N reprezintă lățimea pixelilor dreptunghiului înconjurător, și deoarece nu există nici un dreptunghi, nu este necesară o etapă de interpolare finală.

IMPLEMENTARE

CLASELE PROIECTULUI

Proiectul aceasta a fost realizat în mediul de programare Visual Studio 2017 în limbajul de programare orientat pe obiect C# și conține 3 clase: clasa ProcessingForm, clasa Program.cs și clasa Image.cs.

Clasa ProcessingForm.cs este de tipul WindowsFormApplication. Această clasă este o formă (fereastră) care conține controale pentru intefața cu utilizatorul. Controalele adăugate și folosite în acest proiect sunt: un meniu, 8 panel-uri, 11 label-uri, un buton, 3 textbox-uri și 7 picturebox-uri. Meniul permite utilizatorului să aleagă opțiunea dorită. Picturebox-urile conțin imaginile originale, imaginile rezultate, histogramele imaginilor originale și rezultate împreună cu funcțiile lor cumulative. Label-urile descriu conținutul picturebox-urilor și textbox-urilor. Panel-urile încadrează elementele formei cu descrierile lor. Cele 3 textbox-uri permit introducerea a 3 parametrii folosiți pentru modificarea histogramei prin metoda egalizării adaptive cu limită de contrast. Butonul formei permite aplicarea acestor parametrii metodei. Fiecare control de pe formă are evenimente care sunt activate în momentul în care utilizatorul interacționează cu elementele de pe formă.

În figurile 3.1 a), 3.1 b) și 3.1 c) sunt enumerate toate controalele formei și obiectele create de mine. În figura 3.2 sunt ilustrate metodele implementate de mine și evenimentele controalelor formei ProcessingForm. Majoritatea metodelor au ca scop manipularea caracteristicilor elementelor din formă deoarece, la acționarea unei opțiuni din meniu doar unele controale apar pe formă. Evenimentele sunt declanșate la acționarea, de către utilizator, a controalelor formei. Evenimentele conțin apeluri de metode care aparțin clasei Image. De exemplu, la declanșarea evenimentului IntensityToolStripMenuItem_Click_1 prin alegerea opțiunii Intensities din meniu se vor apela metodele care calculează și afișează histograma unei imagini și funcția cumulativă a histogramei. În cazul alegerii altor opțiuni, se vor declanșa evenimentele aferente opțiunilor alese care vor apela metode atât ale clasei Image cât și a formei ProcessingForm.

Figura 3.1 a). Controale ale formei ProcessingForm.

Figura 3.1 b). Controale ale formei ProcessingForm.

Figura 3.1 c). Controale ale formei ProcessingForm.

Figura 3.2. Metodele și evenimentele formei ProcessingForm.

Program.cs este o clasă prezentă în toate proiectele de tipul Windows Form Application și este creată odată cu proiectul. Această clasă este punctul de pornire al proiectului atunci când se dorește rularea acestuia și reprezintă un fel de main din care se creează o formă nouă de tipul clasei ProcessingForm prin apelarea constructorului acestei clase.

Clasa Image.cs reprezintă o clasă implementată de mine. Conține metode care calculează sau afișează histograma unei imagini, funcția cumulativă a unei histograme, modificarea de histogramă. Figura 3.2 reprezintă diagrama acestei clasei, în care sunt enumerate obiectele și metodele clasei. Am declarat 3 obiecte. Primul obiect, numit block_area, este de tipul Rectangle și reprezintă porțiunea din imagine ce va fi blocată pentru prelucrare, în acest caz block_area reprezintă toată imaginea. Obiectul image este de tipul Bitmap și este folosit la convertirea imaginilor din picturebox-uri în bitmap-uri pentru prelucrarea acestora. Image_data este de tipul BitmpaData și reprezintă porțiunea din imagine pe care o blochează. Metodele Block și Unblock au fost create pentru a bloca și debloca imaginea atunci când se lucrează cu pixelii acesteia. Metoda Draw_Histogram calculează histograma unei imagini și o afișează într-un picturebox. Metoda HE și CLAHE au rolul de a uniformiza histograma unei imagini pentru îmbunătățirea contrastului. Cumulative_histogram afișează funcția de distribuție cumulativă. Metodele computeHistogram, clipContrast, computeEqualizationLUT, transformPixelIntensity și bilinear_interpolation sunt folosite în procesul de modificare a histogramei prin metoda de egalizare adaptivă cu limită de contrast.

Figura 3.3. Diagrama clasei Image.

INTERFAȚA PROIECTULUI

Interfața grafică a fost realizată pe o singură formă care conține un meniu principal de unde se pot alege acțiunile dorite de utilizator. Spre exemplu încărcarea unei imagini, oprirea execuției programului, afișarea histogramei unei imagini și așa mai departe.

MENIU

Meniul principal al proiectului se află pe singura formă existentă în acesta, ProcessingForm. Așa cum putem observa în figura 3.4, meniul are patru elemente, și anume: File, Examples, Histogram representation și Histogram Equalization.

Figura 3.4. Meniul principal al formei ProcessingForm.

În figura 3.5 se pot observa elementele opțiunii File din meniu. Acționând asupra elementului New prin click, vom avea o formă care conține doar meniul, celelalte toolbox-uri fiind nevisibile. Elementul Browse va încarca imaginea aleasă de utilizator într-un picturebox pentru prelucrarea ei iar elementul Exit va opri execuția programului.

Figura 3.5. Elementele opțiunii File din meniul formei ProcessingForm.

În figurile 3.6, 3.7 și 3.8 sunt afișate restul opțiunilor din meniu cu elementele lor. Opțiunea Example are două elemente: Contrast și Luminosity. Acestea se referă la cele patru tipuri de imagini de bază, și anume imagini cu contrast scăzut, respectiv înalt și imagini cu luminozitate scăzută, respectiv mare. Elementul Contrast afișează pe formă două imagini, o imagine cu contrast înalt și o alta cu contrast scăzut, și histogramele lor împreună cu funcțiile de distribuție cumulativă. În cazul elementului Luminosity, sunt tot două imagini însă, o imagine are luminozitate scăzută iar cealaltă are luminozitate mare. La fel ca la elementul Contrast, se afișează imaginile date drept exemplu, histogramele lor și funcțiile cumulative.

Figura 3.6. Elementele opțiunii Examples din meniul formei ProcessingForm.

Histogram Representation, reprezentat de figura 3.7 de mai jos are 2 elemente. Elementul Intensities va afișa histograma și funcția cumulativă a imaginii alese de utilizator prin elementul Browse al meniului. Elementul RGB va afișa trei histograme și funcțiile cumulative ale acestora. Fiecare histogramă corespunde unui canal de culoare, de aceea această reprezentare este mai potrivită pentru imagini color.

Figura 3.7. Elementele opțiunii Histogram Representation din meniul formei ProcessingForm.

Opțiunea meniului Histogram Equalization are două elemente: HE și CLAHE. Elementul HE va afișa histograma egalizată și funcția cumulativă a acesteia împreună cu imaginea rezultată în urma procesului de egalizare. Elementul CLAHE va afișa rezultatele în urma egalizării adaptive cu limită de contrast. În figura 2,8 se pot observa aceste două elemente.

Figura 3.8. Elementele opțiunii Histogram Equalization din meniul formei ProcessingForm.

AFIȘAJ

La începerea rulării programului, forma ProcessingForm va aparea exact ca în figura 3.9, sau la acționarea elementului New din meniu.

Figura 3.9. Forma ProcessingForm în urma acționării elementului New din meniu.

Figura 3.10. Forma ProcessingForm în urma acționării elementului Browse din meniu și alegerii unei imaginii.

Pentru a alege o image utilizatorul trebuie să acționeze elementul Browse a meniului. Acesta va încărca imaginea într-un picturebox și o va afișa, exact ca în Figura 3.10. Însă, înainte de afișare, se va deschide o fereastră asemănătoare cu figura 3.11 pentru alegerea imaginii din locația dorită de utilizator.

Figura 3.11. Fereastră deschisă pentru încărcarea unei imagini din locația dorită la acționarea elementului Browe din meniul formei ProcessingForm.

La acționarea elementelor Contrast și Luminosity din meniu se vor afișa patru exemple de imagini. Aceste imagini reprezină cele patru tipuri de imagini de bază: imagini cu contrast scăzut, respectiv înalt și imagini cu luminozitate mare, respectiv mică. Aceste imagini nu pot fi schimbate din interfață, ele fiind date doar ca exemple. Pentru a afișa o imagine dorită de utilizator trebuie acționat elementul Browse din meniu. Figurile 3.12 și 3.13 ilustrează efectele acționării elementelor Contrast sau Luminosity. Se poate observa histogramele fiecărei imagini și funcțiile de distribuție cumulativă.

Figura 3.12. Forma ProcessingForm în urma acționării elementului Contrast din meniu.

Figura 3.13. Forma ProcessingForm în urma acționării elementului Luminosity din meniu.

Figura 3.14. Forma ProcessingForm în urma acționării elementului Intensities din meniu.

Figura 3.15. Forma ProcessingForm în urma acționării elementului RGB din meniu.

În Figurile 3.14 și 3.15 de mai sus pot fi observate efectele acționării elementelor Intensities și RGB din opțiunile meniului. Butonul Intensities afișează histograma imaginii alese de utilizator și funcția cumulativă a acesteia. Elementul RGB afișează histogramele fiecărei culori din imagine împreună cu funcțiile lor cumulative. În cazul imaginilor grayscale, aceste histograme vor fi identice.

Figura 3.16. Forma ProcessingForm în urma acționării elementului HE din meniu.

Figura 3.17. Forma ProcessingForm în urma acționării elementului CLAHE din meniu.

În figurile 3.16 și 3.17 de mai sus sunt reprezentate aspectele formei în cazul opțiunilor HE și CLAHE din meniu. Dacă utilizatorul dorește să egalizele histograma unei imagini, el trebuie să acționeze elementul HE, astfel se va efectua egalizarea histogramei dorite și se va afișa rezultatul împreună cu funcția cumulativă a histogramei. Se poate observa diferența dintre histograma originală si cea rezultată dar și diferența dintre funcțiile acestora. În cazul acționării de către utilizator a elementului CLAHE, se vor afișa 3 textbox-uri unde utilizatorul va trebui să introducă parametrii doriți. Dacă acesta nu completează toate textbox-urile, mesajul din figura 3.18 va apărea pe ecran. Dacă valorile nu sunt cele corecte, va apărea mesajul din figura 3.19. Primii doi parametrii pot lua doar valorile 1, 2, 4 și 8 iar cel de-al treilea parametru poate avea valorea cuprinsă între 0 și 2,5.

Figura 3.18. Mesajul afișat în cazul în care nu sunt introduși toți parametrii pentru a efectua egalizare adaptivă de histgramă cu limită de contrast.

Figura 3.19. Mesajul afișat în cazul în care unul sau mai mulți parametrii nu au valorile corespunzătoare pentru a efectua egalizare adaptivă de histgramă cu limită de contrast.

FUNCȚIONARE PROIECT

Proiectul funcționează după următorul principiu: primele opțiuni pe care le are un utilizator atunci când pornește aplicația sunt de a opri rularea acesteia, de a încărca o imagine pentru prelucrare sau de a afișa exemplele cu cele 4 tipuri de imagini de bază. Până nu se încarcă o imagine nu se permite accesul la celelalte elemente ale meniului. Dacă utilizatorul dorește să afișeze exemplele iar după aceea vrea să încarce o imagine, mai întâi trebuie să acționeze butonul New din meniu și, de abia după aceea este permisă încărcarea imaginii dorite. La fel și în cazul în care utilizatorul dorește să prelucreze o nouă imagine, mai întâi trebuie să acționeze butonul New. Acest buton va reseta propietățile controalelor existente în formProcessing. În figura 3.20 este ilustrat evenimentul datorită căruia se poate alege imaginea dorită dintr-o anumită locație. Imaginea aleasă este convertită într-un obiect de tip Bitmap care este plasat într-un picturebox.

Figura 3.20. Evenimentul browseToolStripMenuItem_Click a elementului Browse din meniul formei ProcessingForm.

Figura 3.21. Metodele Block și Unblock ale clasei Image.

Figura 3.22. Evenimentul contrastToolStripMenuItem_Click a elementului Contrast din meniul formei ProcessingForm.

La apăsarea butoanelor Contrast sau Luminosity se vor afișa cele două exemple, în funcție de opțiunea aleasă. În cazul butonului Contrast, se va activa evenimentul contrastToolStripMenuItem_Click reprezentat de figura 3.22. Aceast eveniment va obține căile celor două imagini prin apelarea metodei Path_Initialisation. Pentru a putea prelucra imaginile, metodele Block și Unblock ale clasei Image se vor apela de asemena, codul lor fiind prezent în figura 3.21. Între apelurile acestor două funcții, se aplelează metodele care prelucrează imaginile, în cazul de față se apelează metodele Draw_Histogram care va calcula histogramele fiecărei imagini și le va afișa pe ecran și Cumulative_histogram care va afișa funcțiile cumulative ale histogramelor. Metoda Draw_Histogram are trei parametrii: picturebox-ul unde se află imaginea originală, picturebox-ul unde se va desena histograma rezultată și un parametru de tipul Color care va specifica cu ce culoare se va desena histograma imaginii originale. Parametrul de tipul Color este necesar atât pentru a putea reprezenta histograma unei imagini cât și pentru a reprezenta histogramele fiecărui canal în cazul imaginilor color. Exact la fel se procedează și în cazul butonului Luminosity, care spre deosebire de butonul Contrast, va afișa alte imagini cu caracteristi diferite față de cele afișate de primul buton.

Metoda Block din figura 3.21 blochează pixelii pe care dorim să îi procesăm prin crearea unei ferestre de mărimea imaginii. Atfel, nu se pot face alte modificări asupra imaginii cât timp ea este deja procesată. După ce am terminat de procesat ceea ce ne-am propus, vom debloca pixelii imaginii pentru a putea fi folosiți și de alte evenimente sau metode. Această acțiune se efectuează prin apelarea metodei Unblock care este descrisă tot în figura 3.21 după metoda Block.

După ce a fost încărcată imaginea pe care utilizatorul dorește să o prelucreze, accesul la celelalte elemente ale meniului este permisă. Pentru a reprezenta histograma unei imagini, trebuie acționat butonul Intensities. Evenimentul acestui buton apelează o altă metodă care setează proprietățile controalelor. Metodele Block, Unblock și Draw_Histogram sunt de asemenea apelate pentru a putea calcula histograma și a o reda pe ecran. Metoda Histogram

s-a apelat cu culoarea Black pentru a specifica faptul că utilizatorul dorește să se afișeze pe formă histograma frecvențelor de apariție a nivelurilor de gri din imagine. În cazul în care este apăsat butonul RGB evenimentul RGBChToolStripMenuItem_Click va apela funcțiile Block, Unblock și Draw_Histogram. Evenimentul acestui buton va afișa histogramele fiecărei culori din imagine, singura diferență dintre aceast eveniment și evenimentul butonului Intensities este faptul că se apelează Draw-Histogram de trei ori. Prima apelare va fi cu parametrul de tip Color egal cu Red, indicând faptul că se dorește calcularea și afișarea histogramei nivelurilor de roșu din imagine, a doua apelare va avea ultimul paramtru egal cu Green iar ultima, Blue. Astfel, pe ercan vor fi afișate cele trei histograme ale unei imagini color, fiecare reprezentând frecventa de apariție a nivelurilor de roșu, verde, respectiv albastru ale imaginii și funcțiile lor cumulative.

Metoda Draw_Histogram calculează histogramele și le afișează. Calcularea unei histograme este descrisă în figura 3.23. Primul pas este blocarea pixelilor, după care se poate parcurge imaginea pentru a obține intensitatea fiecărui pixel în parte. Intensitatea unui pixel este reprezentată prin media componentelor acestuia. Prin medie, o imagine color va fi convertită într-o imagine grayscale. În funcție de valoarea parametrului color, vectorul histogram va conține frecvențele de apariție ale intensităților de roșu, de verde, respectiv de albastru. Componentele pixelilor se obțin prin metoda GetPixel care returnează valoarea acestora. După aflarea histogramei, respectiv a histogramelor, se deblochează imaginea pentru procesări ulterioare. Butonul Intensities este, de preferință, folosit pentru imagini grayscale iar butonul RGB pentru imagini color.

Figura 3.23. Calcularea frecvențelor de apariție a nivelurilor de gri, de roșu, de verde, respectiv de albastru dintr-o imagine îm funcție de parametrul color al metodei Draw_Histogram.

După calcularea histogramei, valorile vectorului care reprezintă histograma vor trebui afișate grafic. În figura 3.24 este descris codul care face posibil acest lucru. Mai întâi se obține valoarea maximă a vectorului, după care se trasează axele X, respectiv, Y după care se desenează histograma.

Figura 3.24. Codul pentru desenarea unei histograme aparținând metodei Draw_Histogram.

Opțiunea HE din meniu se acționează pentru a egaliza o histogramă a unei imagini. La fel ca în celelate cazuri, evenimentul butonului apelează metodele Block, Unblock, Draw_Histogram însă, pe lângă, mai apelează și metoda HE. Metoda HE realizează egalizarea unei histograme. În primul rând, se obțin frecvențele de apariție a nivelurilor de gri din imagine (se convertește imaginea din color în grayscale). Pe baza vectorului care reprezintă histograma, se calculează funcția de distribuție cumulativă. Acest pas este ilustrat în figura 3.25.

Figura 3.25. Calcularea funcției de distribuție cumulativă pentru fiecare histogramă în parte.

Figura 3.26. Calcularea funcției de transformare și setarea noilor valori.

În figura 3.26 este ilustrat codul care calculează funcția de transformare după care se modifică pixelii imaginii. Această modificare se face cu metota SetPixel care va seta fiecare pixel cu valoarea corespondentă din vectorul de transformare.

La acționarea butonului CLAHE din meniul formei ProcessingForm, după introducerea parametrilor, se va afișa rezultatul egalizării adaptive de histogramă cu limită de contrast.

Figura 3.27. Calcularea dreptunghiurilor dintr-o imagine.

Primul pas al acestei metode este de a împărți imaginea originală în dreptunghiuri egale. Numărul dreptunghiurilor este dat de primii doi parametrii ai metodei CLAHE, numărul de dreptunghiuri pe axa X și numărul de dreptunghiuri pe axa Y. De exemplu, dacă utilizatorul dorește să introducă valorile 2 și 4 imaginea va avea 2 dreptunghiuri pe axa X și 4 pe axa Y iar în total imaginea se va secționa în 8 dreptunghiuri. Se calculează histograma fiecărui dreptunghi. Acest procedeu se poate observa în figura 3.25 unde nr_x și nr_y sunt cei doi parametrii iar x_size și y_size reprezintă dimensiunile unui dreptunghi. Următorul pas este de a aplica limita de contrast fiecărui dreptunghi în parte. Apoi se calculează funcția de distribuție cumulativă și se efectuează egalizare normală de histogramă pentru fiecare dreptunghi în parte.

Figura 3.28. Calcularea diferenței (valorile histogramei ce trec de limita de contrast).

Figura 2.29. Redistribuirea în mod egal a excesului de valori care depășesc limita de contrast.

Figura 2.30. Setarea noilor valori pentru fiecare dreptunghi în parte.

În figurile 2.28 și 2.29 de mai sus se poate observa cum se calculează diferenta (excesul) și se distribuie în mod egal în histogramă. În figura 2.30 este ilustrat codul care setează noile valori ale pixelilor. Pixelii din colțul imaginii sunt transformați cu funcția de transformare a fiecărui dreptunghi, pixelii din dreptunghiurile de pe marginea imaginii sunt interpolați linear iar restul bilinear.

REZULTATE EXPERIMENTALE

IMAGINI DE TEST

Toate imaginile de test sunt grayscale pentru a se putea observa diferențele dintre imaginile originale și imaginile rezultate.

Figura 4.1. Imaginea de test „Airplane”.

Figura 4.2. Imaginea de test „Baboon”.

Figura 4.3. Imaginea de test „Lena”.

Figura 4.4. Imaginea de test „Crowd”.

Figura 4.5. Imaginea de test „Bridge”.

EGALIZARE NORMALĂ DE HISTOGRAMĂ

Figura 4.6. Rezultatul imaginii de test „Airplane” în urma egalizării normale de histogramă.

Figura 4.7. Rezultatul imaginii de test „Baboon” ” în urma egalizării normale de histogramă.

Figura 4.8. Rezultatul imaginii de test „Lena” ” în urma egalizării normale de histogramă.

Figura 4.9. Rezultatul imaginii de test „Crowd” în urma egalizării normale de histogramă.

Figura 4.10. Rezultatul imaginii de test „Bridge” în urma egalizării normale de histogramă.

EGALIZARE ADAPTIVĂ DE HISTOGRAMĂCU LIMITA DE CONTRAST

Figura 4.11. Rezultatul imaginii de test „Airplane” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×1 și limita de contrast între 0 și 2,5).

Figura 4.12. Rezultatul imaginii de test „Baboon” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×1 și limita de contrast între 0 și 2,5).

Figura 4.13. Rezultatul imaginii de test „Lena” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×1 și limita de contrast între 0 și 2,5).

Figura 4.14. Rezultatul imaginii de test „Crowd” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×1 și limita de contrast între 0 și 2,5).

Figura 4.15. Rezultatul imaginii de test „Bridge” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×1 și limita de contrast între 0 și 2,5).

Figura 4.16. Rezultatul imaginii de test „Airplane” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×2 și limita de contrast 2,5).

Figura 4.17. Rezultatul imaginii de test „Baboon” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×2 și limita de contrast 2,5).

Figura 4.18. Rezultatul imaginii de test „Lena” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×2 și limita de contrast 2,5).

Figura 4.19. Rezultatul imaginii de test „Crowd” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×2 și limita de contrast 2,5).

Figura 4.20. Rezultatul imaginii de test „Bridge” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×2 și limita de contrast 2,5).

Figura 4.21. Rezultatul imaginii de test „Airplane” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×4 și limita de contrast 2,5).

Figura 4.22. Rezultatul imaginii de test „Baboon” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×4 și limita de contrast 2,5).

Figura 4.23. Rezultatul imaginii de test „Lena” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×4 și limita de contrast 2,5).

Figura 4.24. Rezultatul imaginii de test „Crowd” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×4 și limita de contrast 2,5).

Figura 4.25. Rezultatul imaginii de test „Bridge” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×4 și limita de contrast 2,5).

Figura 4.26. Rezultatul imaginii de test „Airplane” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×8 și limita de contrast 2,5).

Figura 4.27. Rezultatul imaginii de test „Baboon” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×8 și limita de contrast 2,5).

Figura 4.28. Rezultatul imaginii de test „Lena” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×8 și limita de contrast 2,5).

Figura 4.29. Rezultatul imaginii de test „Crowd” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×8 și limita de contrast 2,5).

Figura 4.30. Rezultatul imaginii de test „Bridge” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=1×8 și limita de contrast 2,5).

Figura 4.31. Rezultatul imaginii de test „Airplane” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×2 și limita de contrast 2,5).

Figura 4.32. Rezultatul imaginii de test „Baboon” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×2 și limita de contrast 2,5).

Figura 4.33. Rezultatul imaginii de test „Lena” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×2 și limita de contrast 2,5).

Figura 4.34. Rezultatul imaginii de test „Crowd” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×2 și limita de contrast 2,5).

Figura 4.35. Rezultatul imaginii de test „Bridge” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×2 și limita de contrast 2,5).

Figura 4.36. Rezultatul imaginii de test „Airplane” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×4 și limita de contrast 2,5).

Figura 4.37. Rezultatul imaginii de test „Baboon” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×4 și limita de contrast 2,5).

Figura 4.38. Rezultatul imaginii de test „Lena” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×4 și limita de contrast 2,5).

Figura 4.39. Rezultatul imaginii de test „Crowd” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×4 și limita de contrast 2,5).

Figura 4.40. Rezultatul imaginii de test „Bridge” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×4 și limita de contrast 2,5).

Figura 4.41. Rezultatul imaginii de test „Airplane” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×8 și limita de contrast 2,5).

Figura 4.42. Rezultatul imaginii de test „Baboon” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×8 și limita de contrast 2,5).

Figura 4.43. Rezultatul imaginii de test „Lena” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×8 și limita de contrast 2,5).

Figura 4.44. Rezultatul imaginii de test „Airplane” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×8 și limita de contrast 2,5).

Figura 4.45. Rezultatul imaginii de test „Bridge” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=2×8 și limita de contrast 2,5).

Figura 4.46. Rezultatul imaginii de test „Airplane” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=4×4 și limita de contrast 2,5).

Figura 4.47. Rezultatul imaginii de test „Baboon” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=4×4 și limita de contrast 2,5).

Figura 4.48. Rezultatul imaginii de test „Lena” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=4×4 și limita de contrast 2,5).

Figura 4.49. Rezultatul imaginii de test „Crowd” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=4×4 și limita de contrast 2,5).

Figura 4.50. Rezultatul imaginii de test „Bridge” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=4×4 și limita de contrast 2,5).

Figura 4.51. Rezultatul imaginii de test „Airplane” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=4×8 și limita de contrast 2,5).

Figura 4.52. Rezultatul imaginii de test „Baboon” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=4×8 și limita de contrast 2,5).

Figura 4.53. Rezultatul imaginii de test „Lena” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=4×8 și limita de contrast 2,5).

Figura 4.54. Rezultatul imaginii de test „Crowd” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=4×8 și limita de contrast 2,5).

Figura 4.55. Rezultatul imaginii de test „Bridge” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=4×8 și limita de contrast 2,5).

Figura 4.56. Rezultatul imaginii de test „Airplane” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=8×8 și limita de contrast 2,5).

Figura 4.57. Rezultatul imaginii de test „Baboon” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=8×8 și limita de contrast 2,5).

Figura 4.58. Rezultatul imaginii de test „Lena” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=8×8 și limita de contrast 2,5).

Figura 4.59. Rezultatul imaginii de test „Crowd” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=8×8 și limita de contrast 2,5).

Figura 4.60. Rezultatul imaginii de test „Bridge” în urma egalizării adaptive de histogramă cu limitare de contrast (window size=8×8 și limita de contrast 2,5).

CONCLUZII FINALE ȘI ÎMBUNĂTĂȚIRI

În ziua de astăzi imaginile au un rol important în majoritatea domeniilor. O imagine poate avea diferite caracteristi. În funcție de aceste caracteristici percepția vizuală umană poate observa sau nu detalii prezente în imagini. Imaginile ale căror caracteristici nu fac posibilă observarea detaliilor trebuiesc îmbunătățite.

Prin urmare, acest proiect a avut ca scop îmbunătățirea contrastului imaginilor astfel încât detaliile acestora să fie mai ușor de vizualizat. Așa cum se poate observa în capitolul IV, egalizarea normală de histogramă a îmbunătățit mult contrastul însă imaginile conțin regiuni care nu trebuiesc îmbunătățite. Aceste regiuni vor avea luminozitatea prea mare. Acest lucru este un dezavantaj major al egalizării normale de histogramă. Egalizarea adaptivă cu limită de contrast rezolvă acestă problemă prin îmbunătățirea contrastului regiunilor imaginilor nu a suprafeței totale a acestora. Diferența dintre metodele implementate în acest proiect este mare. Egalizarea adaptivă cu limită de contrast scoate în evidență detaliile din imagini mult mai bine decât egalizarea normală iar imaginea rezultată este mult mai clară. Cu toate acestea, egalizarea adaptivă cu limită de contrast evidențiază, pe lângă detalii, și zgomotul din imagini.

În concluzie, ar putea fi aduse multe dezvoltări acestui proiect. O posibilă dezvoltare ar fi eliminarea zgomotului din imaginile rezultate în urma egalizării adaptive prin implementarea unor filtre pentru zgomot. Acest proiect prelucrează doar imagini convertite în grayscale. O altă îmbunătățire ar putea fi dezvoltarea acestor metode astfel încât să opereze și pe imagini color.

ANEXE

TABEL DE FIGURI.

BIBLIOGRAFIE

https://en.wikipedia.org/wiki/Image_histogram

https://stackoverflow.com/questions/20055024/draw-histogram-from-points-array;

http://savvash.blogspot.com/p/c-tutorials.html;

https://en.wikibooks.org/wiki/Cg_Programming/Unity/Computing_Color_Histograms;

https://www.youtube.com/watch?v=GWCB3pKi2ko;

https://tel.archives-ouvertes.fr/tel-00470545/document;

https://iopscience.iop.org/article/10.1088/1742-6596/1019/1/012026/pdf;

http://webspace.ulbsibiu.ro/arpad.gellert/html/PI.pdf;

https://en.wikipedia.org/wiki/Adaptive_histogram_equalization#Contrast_Limited_AHE;

https://en.wikipedia.org/wiki/Linear_interpolation;

https://en.wikipedia.org/wiki/Bilinear_interpolation;

Rafael C. Gonzalez, Richard E. Woods, Digital Image Processing, ediția a III -a, Editura Pearson International;

Navneet Dalal, Bill Triggs, Histograms of Oriented Gradients for Human Detection, 2005;

Tom M. Mitchell, Machine Learning, McGraw-Hill Science/Engineering/Math, March 1, 1997, ISBN 0070428077;

Ethem Alpaydin, Introduction to machine Learning, editura The MIT Press Cambridge, ISBN 0-062-01211-1;

Rafael C. Gonzales, Richard E. Woods, Steven L. Eddins, ediția a II -a editura Gatesmark Publishing, 2009, ISBN 978-0-9820854-0-0;

RemusBrad -Procesareaimaginilorsielementede computer vision, EdituraUniversitatii"Lucian Blaga", Sibiu 2003, ISBN 973-651-739-X.

Similar Posts