lab ii iopc matlab

8
S.l.dr.ing.Stefan Constantin PETRICEANU Laborator IOPC Anul IV IC + IS 1/8 LABORATORUL NUMĂRUL 2 Paleta de culori, conversia, filtrarea, detecția de contur, colorare și pseudocolorare a imaginilor cu ajutorul MATLAB 1 Introducere Între toate simţurile cu care suntem dotaţi, sistemul vizual ne furnizează cea mai mare cantitate de informaţii referitoare la mediul înconjurător. Cu toate că percepţia vizuală este departe de a fi complet înţeleasă, ingineria modernă se preocupă intens de problema realizării unor sisteme de vedere artificială, capabile să emuleze, fie şi parţial, capabilităţile sistemului vizual uman. Obiectivul prelucrării numerice a imaginilor constă în transformarea imaginii în scopul facilitării interpretării vizuale (ajustare contrast, iluminare, detectare/reprezentare contur etc) sau al reducerii cerinţelor de memorie pentru reprezentare sau stocare, respectiv al debitului de date sau benzii de frecvenţă necesare transmiterii la distanţă. În sensul cel mai larg, prelucrarea poate urmări măsurarea unor parametri de poziţie, viteză de mişcare sau formă al unor obiecte, recunoaşterea obiectelor dintr-un cadru de imagine, interpretarea scenei sau recunoaşterea tipului de activităţi ce sunt surprinse în secvențele înregistrate. 2 Scopul lucrării Această lucrare de laborator propune inițierea studenților în studiul prelucrării imaginilor având ca efect obţinerea de imagini noi cu o paletă de culori modificată, prin extragerea contururilor, filtrare, convoluție, pseudocolorare etc. Pentru aceasta se va pleca de la operațiunea de citire a imaginilor achiziționate de către stundeți prin procedeele de termografiere în infraroșu, ultrasunete în imersie etc urmând ca mai apoi să se treacă la preprocesarea lor în vederea prelucrării ulterioare (eșantionare, cuantizare). 3 Paleta de culori; Conversia Paleta de culori desemnează ansamblul de culori utilizate în definirea imaginii color (profunzimea). Manipularea acesteia are rolul de a reduce timpul de calcul cu atunci când se utilizează imaginea iar anumite detalii nu sunt semnificative. Codul Matlab pentru manipularea imaginilor este prezentat în cele ce urmează: I=imread('IR_1026.jpg'); figure, imshow(I); rgb2gray(I);% transformarea imaginii color în niveluri de gri I2=rgb2gray(I);% imaginea este codată tot pe 8 biți deci are %256 de niveluri de gri figure; imshow(I2); Rezulatul acestor comenzi va fi de felul celei din fig 1. Se poate crea propria paletă de culori utilizând funcția “culorile_mele:

Upload: stefan-o-catalin

Post on 31-Dec-2015

56 views

Category:

Documents


1 download

DESCRIPTION

Matlab2

TRANSCRIPT

Page 1: Lab II Iopc Matlab

S.l.dr.ing.Stefan Constantin PETRICEANU Laborator IOPC Anul IV IC + IS

1/8

LABORATORUL NUMĂRUL 2

Paleta de culori, conversia, filtrarea, detecția de contur, colorare și

pseudocolorare a imaginilor cu ajutorul MATLAB

1 Introducere

Între toate simţurile cu care suntem dotaţi, sistemul vizual ne furnizează cea

mai mare cantitate de informaţii referitoare la mediul înconjurător. Cu toate că

percepţia vizuală este departe de a fi complet înţeleasă, ingineria modernă se

preocupă intens de problema realizării unor sisteme de vedere artificială, capabile

să emuleze, fie şi parţial, capabilităţile sistemului vizual uman.

Obiectivul prelucrării numerice a imaginilor constă în transformarea imaginii

în scopul facilitării interpretării vizuale (ajustare contrast, iluminare,

detectare/reprezentare contur etc) sau al reducerii cerinţelor de memorie pentru

reprezentare sau stocare, respectiv al debitului de date sau benzii de frecvenţă

necesare transmiterii la distanţă. În sensul cel mai larg, prelucrarea poate urmări

măsurarea unor parametri de poziţie, viteză de mişcare sau formă al unor obiecte,

recunoaşterea obiectelor dintr-un cadru de imagine, interpretarea scenei sau

recunoaşterea tipului de activităţi ce sunt surprinse în secvențele înregistrate.

2 Scopul lucrării

Această lucrare de laborator propune inițierea studenților în studiul prelucrării

imaginilor având ca efect obţinerea de imagini noi cu o paletă de culori modificată,

prin extragerea contururilor, filtrare, convoluție, pseudocolorare etc.

Pentru aceasta se va pleca de la operațiunea de citire a imaginilor

achiziționate de către stundeți prin procedeele de termografiere în infraroșu,

ultrasunete în imersie etc urmând ca mai apoi să se treacă la preprocesarea lor în

vederea prelucrării ulterioare (eșantionare, cuantizare).

3 Paleta de culori; Conversia

Paleta de culori desemnează ansamblul de culori utilizate în definirea imaginii

color (profunzimea). Manipularea acesteia are rolul de a reduce timpul de calcul cu

atunci când se utilizează imaginea iar anumite detalii nu sunt semnificative.

Codul Matlab pentru manipularea imaginilor este prezentat în cele ce

urmează: I=imread('IR_1026.jpg');

figure, imshow(I);

rgb2gray(I);% transformarea imaginii color în niveluri de gri

I2=rgb2gray(I);% imaginea este codată tot pe 8 biți deci are

%256 de niveluri de gri

figure;

imshow(I2);

Rezulatul acestor comenzi va fi de felul celei din fig 1.

Se poate crea propria paletă de culori utilizând funcția “culorile_mele”:

Page 2: Lab II Iopc Matlab

S.l.dr.ing.Stefan Constantin PETRICEANU Laborator IOPC Anul IV IC + IS

2/8

r=0:1/256:1;

g=0:1/256:1;

b=0:1/256:1;

culorile_mele=[r',g',b'];%crearea propriei palete de culori

cu 257 x 3 elemente

colormap(culorile_mele);

figure;

imagesc(I2);

Rezultatul acestei transformări se prezintă în figura 2. Se cere intrepretarea

acestuia de către studenți. Ce reprezintă variabilele r,g,b? De ce au valori

subunitare? De ce paleta de culori este tridimensională?

Fig. 1 Imaginea in format uint8 transformată cu funcția rgb2gray din matlab

Conversia unei imagini se realizează prin utilizarea unor multiplicatori

scalari pentru fiecare vector al matricei imaginei (pentru o imagine color există 3

vectori R,G,B).

Codul sursă se prezintă mai jos:

J=rgb2gray(I);

figure,imshow(J);

coeff1=0.25;

coeff2=0.25;

coeff3=0.5;

Igray=I(:,:,1)*coeff1+I(:,:,2)*coeff2+I(:,:,3)*coeff3;

Page 3: Lab II Iopc Matlab

S.l.dr.ing.Stefan Constantin PETRICEANU Laborator IOPC Anul IV IC + IS

3/8

figure;

imshow(Igray);

Fig. 2 Crearea propriei palete de culori

Rezultatul acestei transfromări se prezintă în figura 3. Se observă o corecție a

nuanțelor de gri, conform operațiilor de multiplicare cu scalari efectuate de

programator. Se cere studenților să modifice valorile scalarilor și să observe ce se

întâmpla cu imaginea prelucrată. Se va reține imaginea care evidențiază maximul

de detalii interesante pentru operatorul de control nedistructiv.

Page 4: Lab II Iopc Matlab

S.l.dr.ing.Stefan Constantin PETRICEANU Laborator IOPC Anul IV IC + IS

4/8

Fig. 3 a) Imaginea înainte și b) după conversie (multiplicarea cu scalari)

Observație: modificarea valorilor coeficienților coeff1, coeff2 și coeff3

conduce la modificarea valorilor corespunzătoare ale culorilor roșu (coeff1), verde

(coeff2) și albastru coeff (3). Dacă se egalează cu zero unul sau mai mulți

coeficienți atunci pentru culorile respective se va obține pe imagine negru.

Verificare: să se egaleze toți cei 3 coeficienți cu zero. Ce se obține?

4 Filtrarea; detecția de contur

Pentru filtrare trebuie creat un filtru care poate fi de tipul 2x2, 3x3 sau mai

complex 5x5.

Se exemplifica pe cazul cel mai general cu filtru 5x5.

Codul sursă matlab cu explicații se prezintă în cele ce urmează:

h=ones(5,5)/25;%masca de filtrare 5x5 pixeli

I2=imfilter(I,h);% filtrarea imaginii cu masca anterioară

imshow(I);%afisarea imaginii initiale

title('Imaginea Initiala');% denumirea imaginii initiale

figure;

imshow(I2);%afisarea imaginii cu filtru 5x5,imagina devine

%flu

title('Imagine Filtrata');% denumirea imaginii modificate

Rezultatul obținut este reprezentat comparativ în figura 4.

Comentați pierderea clarității imaginii (vezi curs; indicație: la operațiile de

transformare în spectru trebuie utilizată înainte o transformare de tipul ....).

Page 5: Lab II Iopc Matlab

S.l.dr.ing.Stefan Constantin PETRICEANU Laborator IOPC Anul IV IC + IS

5/8

Fig. 4 Imaginea inițială (stânga) și filtrată cu masca de filtrare 5x5 (dreapta)

Se poate manipula funcția matlab “imfilter” pentru a obține rezultatele dorite.

Pentru detalii help imfilter.

Un exemplu se prezintă în codul sursă următor:

close all;h=ones(5,5)/25;%masca de convolutie 5x5 pixeli

I2=imfilter(I,h);% filtrarea imaginii cu masca anterioară

imshow(I);%afisarea imaginii initiale

title('Imaginea Initiala');% denumirea imaginii initiale

figure;

imshow(I2);%afisarea imaginii cu filtru 5x5,imagina devine

%flu

title('Imagine Filtrata');% denumirea imaginii modificate

h=ones(5,5)/25;% masca de filtrare 5x5

I2=imfilter(I,h);% utilizarea functiei de filtrare

figure;

imshow(I2);% afisarea imaginii modificate

title('Imagine Modificata margini Negre');% Titlu imagine

I3=imfilter(I,h,'circular');% adaugarea unui nou filtru; help

%imfilter

figure;

imshow(I3);% afisarea imaginii modificate cu filtrul numarul

%2

title('Imagine modificata Ultima');% titlul imaginii

Detecția de contur

Pentru detectarea conturului se utilizează funcții matematice specifice de

derivare sau filtre de imagine de tipul trece-sus, trece-jos sau bandă.

Funcția matlab cea mai utilizată pentru detecția de contur este “edge”.

În codul sursă următor se arată modul de utilizare al acesteu funcții pentru

două moduri prestabilite de detectare a conturului:

cont1 = edge(J,'prewitt');%utilizarea functiei pentru

%detectie contur

Page 6: Lab II Iopc Matlab

S.l.dr.ing.Stefan Constantin PETRICEANU Laborator IOPC Anul IV IC + IS

6/8

cont2 = edge(J,'canny');%se foloseste alt parametru (filtru)

%al functiei edge

figure(1); imshow(J);% reprezentare imagine initiala

figure(2); imshow(cont1);% imaginea cu filtrare "prewitt"

figure(3); imshow(cont2);% imaginea cu filtrare "canny"

Rezultatul palicării acestor funcții se prezintă în figurile 5, 6 și 7.

Studenții vor utiliza toate cele 6 metode de dectare ale conturului conform

matlab help.

Fig. 5 Imaginea inițială

Page 7: Lab II Iopc Matlab

S.l.dr.ing.Stefan Constantin PETRICEANU Laborator IOPC Anul IV IC + IS

7/8

Fig. 6 Detectarea conturului cu metoda prewitt

Fig. 7 Detectarea conturului cu metoda canny

Page 8: Lab II Iopc Matlab

S.l.dr.ing.Stefan Constantin PETRICEANU Laborator IOPC Anul IV IC + IS

8/8

5 Colorarea și pseudocolorarea

Colorarea și pseudocolorarea se utilizează pentru imagini mai ales din

domeniile imagisticii în infraroșu și biomedicale.

Mai jos se prezintă codul sursă pentru diferite trasformări ale sistemelor de

colorare aditivă (RGB) și substractivă (hsv) utilizând funcții matlab specifice. img=I;

figure;imshow(img);

imghsv=rgb2hsv(img);

figure;imshow(imghsv);

imghsv(100:200,300:400,1)=0.7;

imgrgb=hsv2rgb(imghsv);

figure;imshow(imgrgb);

imghsv=rgb2hsv(img);

figure;imshow(imghsv);

imghsv(100:200,300:400,2)=0;

imgrgb=hsv2rgb(imghsv);

figure;imshow(imgrgb);

imghsv=rgb2hsv(img);

figure;imshow(imghsv);

imghsv(100:200,300:400,3)=0.3;

imgrgb=hsv2rgb(imghsv);

figure;imshow(imgrgb);

Se cere ca studenții să interpreteze fiecare imagine obținută precizând modul

de transformare și relația matematică utilizată.

Exercițiu: urmând instrucțiunile prelucrați imaginile preluate de

dumneavoastră și trageți concluzii pertinente cu privire la modul de punere în

evidență a problemelor constatate în imaginea prelucrată față de imaginea

originală.