lab ii iopc matlab
DESCRIPTION
Matlab2TRANSCRIPT
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”:
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;
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.
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 ....).
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
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ă
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
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ă.