Universitatea "Politehnica"
PRELUCRAREA SI RECUNOASTEREA IMAGINILOR
PROIECT
"Filtru pentru cresterea calitatii si detectarea fronturilor.
Filtre Roberts, Sobel si Prewitt."
Nume:
Tudor Bastea, an V C, H2, gr.1.1
Cosmin Belei, an V C, H2, gr 1.1
1. Analiza
Extragerea contururilor este o etapa necesara pentru a realiza caracterizarea regiunilor din imagine īn vederea identificarii obiectelor din lumea reala. Īn plus aceasta operatie faciliteaza o reducere importanta a volumului de informatie de la sute de mii sau milioane de pixeli la mii de puncte de contur. Vom privi contururile ca pe granitele regiunilor care alcatuiesc imaginile obiectelor. Segmentarea este operatia prin care se pun īn evidenta regiunile din imagine. Daca suprafetele din scena ar primi lumina numai direct de la sursa de lumina, atunci muchiile ar corespunde la variatii ale intensitatii luminoase de tip treapta, impuls, scara, rampa, sau creasta. Daca se ia īn considerare faptul ca pe de o parte, suprafe 14514h720o 355;ele reflecta lumina unele spre altele (reflexii), iar pe de alta parte aceasta reflexie se poate face īntr-o directie unica sau īn toate directiile, atunci pentru muchii pot apare profile de variatie de tipuri mult diferite de cele ideale.
Detectarea conturului unei imagini se poate face calculand gradientul in fiecare punct al imaginii. Aceasta metoda se bazeaza pe presupunerea ca punctele din contur au gradient mare.
In figura de mai sus, este
prezentat un punct de pe contur si vectorul gradientului corespunzator. In acel punct, intensitatea culorii se schimba de la 0 la 255 in
directia gradientului. Daca se calculeaza gradientul in zone uniform
colorate, vom avea un vector nul, care inseamna cu nu
avem puncte de pe contur. Intensitatea conturului este
egala cu marimea gradientului, care se calculeaza folosind cele 2 derivate (pe
orizontala si pe verticala).
Pentru
functiile discrete, gradientul nu poate fi folosit. In acest caz, sunt
folositi operatori, cum ar fi: Roberts, Sobel si Prewitt.
Aceste
metode folosesc convolutia. Convolutia este o
operatie matematica prin care se "inmultesc" doua siruri de numere. Se utilizeaza doua matrice, pentru a detecta schimbarea
intensitatii luminii pe verticala, respectiv pe orizontala. Aceste matrice pot avea dimensiuni diferite, de exemplu 2 (Roberts)
sau 3 (Sobel, Prewitt).
Notam valorile intensitatii in punctele alaturate cu a0..a7, ca in figura de mai jos:
Matricele si formulele de calcul ale derivatelor sunt:
unde c=2
unde c=1
Gradientul se va calcula dupa formula:
Vom calcula valoare lui G pentru fiecare punct al imaginii, iar aceste valori obtinute vor fi alcatui tocmai imaginea de iesire, adica imaginea dupa aplicarea respectivului filtru.
Imagine originala |
Dupa aplicarea filtrului Roberts |
Dupa aplicarea filtrului Sobel |
Dupa aplicarea filtrului Prewitt |
2. Proiectarea
Pentru a implementa cele 3
filtre, vom folosit
Prima linie reprezinta formatul PGM, a doua reprezinta informatii despre aplicatia ce l-a generat, a treia linie contine numarul de pixeli pe orizontala, respectiv verticala, a patra linie contine intensitatea maxima a culorii, iar apoi este informatia propriu-zisa, in codul ASCII (in exemplul de mai sus sunt trecute codurile ASCII corespunzatoare, si nu caracterul propriu-zis). Antetul este citit inainte de a incepe calculul efectiv, pentru a sti dimensiunile imaginii. Imaginea de iesire va contine acelasi header ca si imaginea originala. Dimensiunea maxima a fisierului de intrare este 500 / 500 pixeli, fiindca in program am folosit un array cu aceste dimensiuni.
Fiecare filtru va avea dedicata o procedura in cadrul programului. Sobel si Prewitt folosesc pentru calculul gradientului valoarea pixelilor alaturati, deci nu se poate calcula pe marginile imaginii si am cosiderat gradienul egal cu 0. In continuare vom folosi 2 cicluri "for" prin care vom calcula valoarea derivatelor si a gradientului. La terminarea aplicarii gradientului pe o linie vom scrie linia respectiva in fisierul de iesire.
3. Implementare
unit Unit1;4. Concluzii
Rezultatele obtinute in urma celor 3 filtre permit tragerea unor concluzii despre operatorii de detectie a contururilor.
Filtrul Roberts produce contururi mai fine si mai bine localizate, deoarece este un filtru diferential de talie minima (2*2). Este preferata si pentru ca are o implementare foarte simpla si eficienta. Principalul dezavantaj este sensibilitatea la zgomot si eficacitatea scazuta in cazul contururilor mai putin pronuntate. Aceste dezavantaje recomanda acest filtru pentru prelucrearea imaginilor naturale, unde contururile sunt bine definite si fara zgomot.
Filtrele Sobel si Prewitt produc contururi mai "imprastiate", dar nu sunt atat de sensibile la zgomot ca si Roberts. Prewitt elimina mai putin bine zgomotele ca Sobel. Filtrul Prewitt produce imagini mai clare decat Sobel.
|