Sunteți pe pagina 1din 15

UNIVERSITATEA Petrol-Gaze Ploiești

FACULTATEA DE INGINERIE MECANICĂ ȘI ELECTRICĂ

PROIECT PRELUCRAREA IMAGINILOR

Profesor:Adrian Moise
Student:Ion Doru Marius
Grupa 1818,Calculatoare

-2014-
Cuprins:

Introducere………………………………………………………………….pag -

Cap 1).Linii și muchii………………………………………………………pag-


Cap 2).Prezentarea problemei……………………………………………..pag-
Cap 3).Rezolvarea aplicaţiei………………………………………………..pag-
Cap 4) Paşii utilizării cd-ului aplicaţiei........................................................pag-
Bibliografie
Introducere

Prin vedere sunt furnizate informații care pot fi ultilizate fie pentru îndeplinirea unor
sarcini relativ simple(recunoașterea obiectelor),fie pentru sarcini mai complexe(planificarea
acțiunilor,luarea deciziilor sau activitații care conduc la dezvoltarea inteligenței umane).
O imagine este utilă în sensul că ea este purtătoare de informație.Totuși informația dintre
dintr-o imagine este redundantă și vor trebui să se folosească tehnici de procesare care să reducă
această redundanță.

Primele rezultate în acest domeniu au avut loc în anul 1964 în Jet Propulsion Lab.-procesarea
imaginilor de la sateliți.Era vorba despre procesarea imaginilor digitale care însemnau
transformarea unei imagini in format digital și procesarea de către calculator(atât intrarea cât și
ieșirea sunt imagini digitale).

Analiza unei imagini digitale reprezintă descrierea și recunoașterea conținutului acestei


imagini,adică intrarea este o imagine digitală,iar ieșirea este o descriere simbolică a imaginii
respective.

Vederea artificială sau asistată de calculator se folosește ca echivalent ptr analiza imaginilor
digitale.

Formarea imaginilor digitale are loc prin transformarea unei imagini in format
digital.Aceasta se realizează prin intermediul unui sistem alcătuit din:

-sistem optic;

-senzor;

-digitizor;

Fiecare din elementele acestui sistem de procesare introduce o degradare/alterare a imaginii


inițiale.Așadar va fi nevoie de tehnici de restaurare a imaginilor digitale,tehnici prin care se
încearcă recuperarea imaginilor digitale.

Algoritm de accentuare(enhanccement):

-accentuarea contrastului unei imagini;

-eliminarea zgomotului dintr-o imagine;

-accentuarea contururilor obiectelor dintr-o imagine;


Capitolul 1).Linii și muchii

Ideea principală care stă la baza detectoarelor de muchii este aceea că granița dintre două
margini este marcată printr-o schimbare bruscă a nivelurilor de gri.

(i-1,j-1) (i-1,j) (i-1,j+1)

• • •

(i,j-1) (i,j) (i,j+1)

• • •

(i+1,j-1) (i,j) (i+1,j+1)

• • •

O metodă generală pentru detecția muchiilor va trebui să ia in considerare toate direcțiile


posibile fie simultan,sau succesiv,majoritatea algoritmilor folosiți pentru detecția muchiilor
folosesc noțiunea de mască.Aceasta este o matrice de dimensiune 3x3 ale carei elemente se
numesc ponderi și care se aplică peste zone din imaginea dată.Valoarea,ponderea fiecărui
element se înmulțește cu valoarea pixelului corespunzător din imagine.Se obține o nouă valoare
pentru pixelul central obținut prin sumarea acestor produse individuale.

Masca generală 3x3 are ponderile A,B,C,D,E,F,G,H,I:

A B C

D E F

G H I
Și dacă masca se suprapune peste pixelul de coordonate

x(i,j)=A(i-1,j-1)+Bf(i-1,j)+Cf(i-1,j+1)+……. ,

unde f= valorile medii ale pixelilor;

Se calculează o nouă valoare pentru pixelul centrat de coordonate i și j.

Masca se aplică tuturor pixelilor din imagine iar rezultatele sunt acumulate într-o nouă magine.În
această nouă imagine muchiile ar trebui sa fie accentuate.

Acest proces se numește convoluția discretă a măștii cu imaginea dată.

Măștile care corespund celor 2 operatori Δc si Δr sunt:

0 0 0 0 -1 0

-1 1 0 0 1 0

0 0 0 0 0 0

Δc Δr

Se substituie valorile ponderilor in relația generală de calcul pentru x(i,j).

Aceste 2 măști au si un nume:Măștile Elementare KIRSCH.

O muchie va fi detectată într-o anumită direcție,vom avea nevoie de mai multe măști ptr a
localiza toate muchiile în mai multe direcții.Avem nevoie de cel puțin încă 2 măști pentru
detecția muchiilor diagonale.

După ce au fost aplicate măștile imaginii rezultate pot fi combinate aplicând funcția OR
pixelilor corespunzători din toate imaginile individuale.

În afară de funcția OR se mai poate aplica si sumarea efectivă a valorilor pixelilor corespunzători
dar în acest caz va fi nevoie ca pixelii din noua imagine sa fie rescalați astfel încat sa nu
depășească gama de niveluri de gri.
Cap 2).Prezentarea problemei

Elaborați in C și testate pe imaginile de test procedura edge_kirsch de accentuare a muchiilor.

Procedura edge_kirsch:

Măștile care corespund celor 2 operatori Δc si Δr sunt:

0 0 0 0 -1 0

-1 1 0 0 1 0

0 0 0 0 0 0

Δc Δr

Se substituie valorile ponderilor in relația generală de calcul pentru x(i,j).

Aceste 2 măști au si un nume:Măștile Elementare KIRSCH.

O muchie va fi detectată într-o anumită direcție,vom avea nevoie de mai multe măști ptr a
localiza toate muchiile în mai multe direcții.Avem nevoie de cel puțin încă 2 măști pentru
detecția muchiilor diagonale.

După ce au fost aplicate măștile imaginii rezultate pot fi combinate aplicând funcția OR
pixelilor corespunzători din toate imaginile individuale.

În afară de funcția OR se mai poate aplica si sumarea efectivă a valorilor pixelilor corespunzători
dar în acest caz va fi nevoie ca pixelii din noua imagine sa fie rescalați astfel încat sa nu
depășească gama de niveluri de gri.

O altă cale de detecție este folosirea unor măști ale căror ponderi sunt astfel încât să
accentueze simultan adunând măștile ptr Δc și Δr se obține masca:
0 -1 0

-1 2 0

0 0 0

Aceasta este folosită pentru detecția și accentuarea muchiilor orizontale si verticale.

Cu această mască,valoarea maximă care se poate obține cu pixelii noii imagini este de 2x255 iar
cea mai mică valoare este de -2x255 astfel încât pentru a mai putea fi observată noua imagine va
trebui sa fie supusă unei transformări liniare.

De obicei se precizează masca specifică astfel încât cea mai mare valoare posibilă să fie 255.
Astfel că masca de mai sus se poate folosi sub forma normalizată:

0 -1/2 0

-1/2 1 0

0 0 0

De această dată,valoarea maximă este 255,iar valoarea minimă este -255.

Sumând 8 măști individuale direcționale pe direcții diagonale,verticale,orizonatale-se poate


obține o mască care poate fi folosită singură pentru detecția tuturor muchiilor dintr-o imagine
dată.Aceasta se numește mască de netezire și va trebui să fie scalată cu 1/8.

Efectul aplicarii acestei măști este acceptabil,rezultatul poate avea anumite efecte secundare.

Să consideram o muchie verticală :

0 0 0 8 8 8

0 0 0 8 8 8

0 0 0 8 8 8

După aplicarea măștii de netezire se obține următoarele valori :

0 0 -3 -3 0 0

0 0 -3 -3 0 0
0 0 -3 -3 0 0

Deoarece acest rezultat nu se încadrează în gama admisă de niveluri de gri,imaginea va trebui să


fie rescalată printr-o transformare liniară :

3 3 0 8 3 3

3 3 0 8 3 3

3 3 0 8 3 3

În acest exemplu la muchia initială se manifestă printr-o variație a nivelurilor de gri de la nivelul
3 la nivelul 0 apoi la nivelul 8 și iar la 3.Muchia nu se manifestă printr-o singură trecere de la
negru la alb sau invers.Acest tip de efecte secundare complică procesarea ulterioară a imag.

Deduceti expresia analitică a transformării liniare care conduce la modificarea nivelurilor de


gri in gama admisă.

Măștile Kirsch sunt :

-1 0 1 1 1 1 0 1 1 1 1 0

-1 0 1 0 0 0 -1 0 1 1 0 -1

-1 0 1 -1 -1 -1 -1 -1 1 0 -1 -1

Cazul particular este reprezentat de operatorii Δc și Δr.

Răspunsul la orice pixel este media sau valoarea maxima a răspunsului celor 4 măști
individuale.

Se aplică fiecare mască tuturor pixelilor din imaginea dată după care noua imagine cu muchiile
accentuate se obține făcând media valorilor celor 4 imagini sau luând valoarea maxima dintre
toate aceste valori.
Cap 3).Rezolvarea aplicaţiei

Elaborați in C și testați pe imaginile de test procedura edge_kirsch de accentuare a muchiilor.

OBSERVAȚIE!

După cum se vede si in cerința problemei se cere elaborarea si testarea pe imaginilile de test a
procedurii edge_kirsch de accentuare a muchiilor in programul C.Aplicația realizată de mine este
implementată in programul Matlab 2011b.

În cele ce urmeaza vom prezenta codul programului împreună cu anumite comentarii care
vor face ca programul sa fie înțeles mult mai ușor:
close all
clear
j=imread('numeimg.jpg'); %se preia imaginea 'numeimg.jpg' in variabila j
i=rgb2gray(j); %acasta functie transforma imaginea din RGB in grayscale
si o depune in variabila i

%determinarea dimensiunilor imaginii


[nr_lin,nr_col]=size(i);

%masti pentru accentuarea muchiilor Kirsch


k1=[-1,0,1;-1,0,1;-1,0,1]
k2=[1,1,1;0,0,0;-1,-1,-1]
k3=[0,1,1;-1,0,1;-1,-1,0]
k4=[1,1,0;1,0,-1;0,-1,-1]

a=double(i); %transformarea imaginii din uint8 in double

%aplicarea mastilor pentru accentuarea muchiilor Kirsch


for l=1:nr_lin
for c=1:nr_col
if(l==1 || l==nr_lin || c==1 || c==nr_col)
x(l,c)=a(l,c); %daca pixelul apartine perimetrului imaginii
atunci el ramane neschimbat
else
i1(l,c)=k1(1,1)*a(l-1,c-1)+k1(1,2)*a(l-1,c)+k1(1,3)*a(l-
1,c+1)+k1(2,1)*a(l,c-1)+k1(2,2)*a(l,c)+k1(2,3)*a(l,c+1)+k1(3,1)*a(l+1,c-
1)+k1(3,2)*a(l+1,c)+k1(3,3)*a(l+1,c+1); %aplicarea primei masti salvarea in
i1
i2(l,c)=k2(1,1)*a(l-1,c-1)+k2(1,2)*a(l-1,c)+k2(1,3)*a(l-
1,c+1)+k2(2,1)*a(l,c-1)+k2(2,2)*a(l,c)+k2(2,3)*a(l,c+1)+k2(3,1)*a(l+1,c-
1)+k2(3,2)*a(l+1,c)+k2(3,3)*a(l+1,c+1); %aplicarea celei de-a doua masti si
salvarea in i2
i3(l,c)=k3(1,1)*a(l-1,c-1)+k3(1,2)*a(l-1,c)+k3(1,3)*a(l-
1,c+1)+k3(2,1)*a(l,c-1)+k3(2,2)*a(l,c)+k3(2,3)*a(l,c+1)+k3(3,1)*a(l+1,c-
1)+k3(3,2)*a(l+1,c)+k3(3,3)*a(l+1,c+1); %aplicarea celei de-a treia masti si
salvarea in i3
i4(l,c)=k4(1,1)*a(l-1,c-1)+k4(1,2)*a(l-1,c)+k4(1,3)*a(l-
1,c+1)+k4(2,1)*a(l,c-1)+k4(2,2)*a(l,c)+k4(2,3)*a(l,c+1)+k4(3,1)*a(l+1,c-
1)+k4(3,2)*a(l+1,c)+k4(3,3)*a(l+1,c+1); %aplicarea mastii a patra si salvarea
in i4
x(l,c)=(i1(l,c)+i2(l,c)+i3(l,c)+i4(l,c))/4; %in x se salveaza media
aritmetica a celor 4 masti
end
end
end

%obtinerea imaginilor cu muchiile accentuate

y=mat2gray(x); %rescaleaza imaginea x in domeniul [0.0 , 1.0]


z=im2uint8(y); %transforma imaginea y in uint8
figure,imshow(z),title('Imagine grayscale cu muchii accentuate'); %afiseaza
noua imagine intr-o figura

imwrite(z,'noua_img.png'); %salveaza noua imagine in directorul curent

Capitolul 4.Paşii utilizării cd-ului aplicaţiei

1.Primul pas ar fi introducerea unui CD/DVD in CD-Rom/Writer sau DVD-Rom/Writer.

2.În cea de-a doua fază pe display ne va apărea un mesaj cu mai multe obțiuni asemantor cu cel
din imaginea de mai jos.Pentru a afla conținutul CD/DVD-ului putem selecta “OPEN FOLDER
TO VIEW FILES”, după care apăsăm butonul “OK”.
3.În conținutul CD-ului descoperim un Folder cu programul respectiv,denumit “edge_kirsch.m”,
pe care o să-l copiem in folderul “Bin” al programului Matlab.
4.Rularea aplicației se va face apăsând click-dreapta pe fișierul “edge_kirsch.m” urmând apoi să
se selecteze comanda “Open with” dupa care selectam programul “Matlab” și apăsam pe butonul
“OK” conform imaginii de mai jos :

5.Odată ajunși in programul Matlab acesta ne intâmpină cu o interfață prietenoasă,prezentându-


ne codul programului din interiorul fișierului “edge_kirsch.m”.
6.La rularea programului,putem observa imaginea modificată.

Imaginea inițială:
Imaginea modificată:
Bibliografie:

A. Moise ”Reţele neuronale”

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