Sunteți pe pagina 1din 7

Ministerul Educației, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatică și Microelectronică
Departamentul Microelectronica și Inginerie Biomedicală

RAPORT
La Lucrarea de Laborator №1
La Disciplina: Imagistică medicală și prelucrarea imaginilor
Tema: Prelucrarea digitală a imaginilor: tehnici de afişare a imaginii

A efectuat: st. gr IBM-181M Zgherea Mihail


A verificat: conf.univ. , dr. Răilean Serghei

Chișinău 2019
2

1. Scopul lucrării
Introducerea unor concepte de bază pentru citirea şi salvarea imaginilor.
2. Noțiuni teoretice
Citirea şi scrierea unei imagini
Este indicat să se şteargă spaţiul de lucru MATLAB şi să se închidă toate ferestrele deschise pentru
figuri:
clear, close all
Pentru a citi o imagine se foloseşte comanda imread. Exemplul care urmează citeşte una din imaginile
conţinute în Biblioteca de Imagini pe care utilizatorul a dezvoltat-o (sau una din imaginile incluse în IPT).
Se citeşte imaginea pout.tif şi se memorează temporar într-un tablou numit I:
I = imread(’pout.tif’);
imread stabileşte că formatul grafic este Tagged Image File Format (TIFF). Pentru lista care include
toate formatele grafice acceptate consultaţi documentaţia de referinţă imread.
În continuare, imaginea citită trebuie să fie afişată. Image Processing Toolbox include două M-funcţii
pentru afişarea unei imagini: imshow şi imtool. imshow este funcţia de bază; imtool declanşează Image
Tool (mediu grafic integrat pentru afişarea imaginilor şi efectuarea unor operaţii simple de procesare). IT
oferă toate posibilităţile de afişare ale imshow dar, în plus, oferă acces la mai multe unelte care pot fi
folosite pentru navigarea în interiorul imaginilor sau explorarea imaginilor: scroll
bars, Pixel Region,
Image Information, Contrast Adjustment.
Pentru afişarea unei imagini se poate folosi oricare din cele două funcţii
amintite mai sus. În acest exemplu vom folosi imshow.
imshow(I).

Memorarea imaginii în spaţiul de lucru MATLAB


Pentru a vedea modul în care funcţia imshow memorează datele imagine în spaţiul de lucru, se deschide
fereastra Workspace în MATLAB. Sunt afişate aici informaţii despre toate variabilele care au fost create
într-o sesiune de lucru MATLAB. Funcţia imread a returnat datele imagine pentru variabila I, care este un
tablou cu 291 x 240 elemente de tipul uint8. MATLAB poate memora imaginile sub forma unor tablouri
uint8, uint16 sau double.
De asemenea, se pot obţine informaţii despre variabilele din spaţiul de lucru prin comanda whos.
whos
Name Size Bytes Class
I 291x240 69840 uint8 array
Grand total is 69840 elements using 69840 bytes

Modificarea contrastului

Imagistică Medicală și Prelucrarea Imaginilor


După cum se poate observa, pout.tif este o imagine cu un contrast
redus. Pentru a vedea distribuţia intensităţii pixelilor în pout.tif se
afişează histograma imaginii prin apelarea funcţiei imhist. Observaţie.
Apelarea funcţiei imhist trebuie să fie precedată de o comandă care să
evite afişarea histogramei peste imaginea afişată anterior.
imhist(I)
Gama în care variază intensitatea pixelilor este destul de îngustă
(majoritatea pixelilor au intensităţi între 76 şi 160). Nu este acoperită
toată gama accesibilă [0, 255] şi lipsesc valorile maximă şi minimă care
ar conduce la un contrast bun.
Sunt mai multe posibilităţi de a îmbunătăţi contrastul unei imagini
folosind IPT. O modalitate este aceea de a egaliza histograma, adică a
repartiza valorile intensităţii peste toată gama posibilă; se realizează prin
apelarea funcţiei histeq:
I2=histeq(I);
Apoi, se afişează noua imagine, I2, într-o nouă fereastră:
figure, imshow(I)
Se poate apela din nou imhist pentru a afişa histograma imaginii I2. Se observă
„împrăştierea” valorilor intensităţii peste toată gama accesibilă de valori.

Scrierea unei imagini într-un fişier


Pentru a salva noua imagine modificată I2 sub forma unui fisier pe disc se foloseşte funcţia imwrite.
Dacă în comandă se include extensia .png, funcţia imwrite va forma un fişier în format Portable Network
Graphics (PNG); se pot specifica şi alte formate.
imwrite (I2, ’pout2.png’);

Obţinerea informaţiilor despre un fişier grafic


Pentru a vedea ceea ce s-a obţinut prin scrierea unui fişier pe disc se foloseşte funcţia iminfo. Această
funcţie returnează informaţia despre imaginea respectivă: formatul ei, mărimea, dimensiunile etc.
imfinfo(‘pout2.png’)
3. Mersul lucrării
1. Se generează și se afișează o imagine binară
BW1 = zeros(20,20);
BW1(2:2:18,2:2:18)=1;
imshow(BW1, 'notruesize');

2. Se cercetează tehnici speciale de afișaj

I = imread('saturn.tif');
h = [1 2 1; 0 0 0; -1 -2 -1];
I2 = filter2(h,I);
imshow(I2,[]), colorbar

3. Se cercetează afișarea imaginii Multiframe


% Initialize an array to hold the 27 frames of mri.tif
mri = uint8(zeros(128,128,1,27));
for frame=1:27
% Read each frame into the appropriate frame in memory
[mri(:,:,:,frame),map] = imread('mri.tif',frame);
end
imshow(mri(:,:,:,13),map);

- Se afișează toate cadrele unei imagini Multiframe:

montage(mri,map);

- Se convertește o imagine Multiframe într-un video:

mov = immovie(mri,map);
colormap(map), movie(mov);

4. Se afişează o imagine la alegerea D-stră utilizînd imshow (prealabil salvati această imagine in:
C:\MATLAB\toolbox\images\imdemos):
I=imread('D:\matlab\toolbox\images\imdemos\image123.jpg');
min(I(:)) %Find the minimum pixel value of the image.
max(I(:)) %Find the maximum pixel value of the image.
imshow(I,[]);

5. Se afișează Imagini multiple


- Se afişează fiecărei imagini într-o figură separată:

[X1,map1]=imread('D:\matlab\toolbox\images\imdemos\saturn.tif');
[X2,map2]=imread('D:\matlab\toolbox\images\imdemos\rice.tif');
imshow(X1,map1),figure,imshow(X2,map2);

- Se afişează imaginile multiple în aceeaşi figură::

subplot(1,2,1), imshow(X1,map2)
subplot(1,2,2), imshow(X2,map2)
6. Se modifică contrastului unei imagini uniforme
Pentru modificarea contrastului folosiţi funcţia imadjust.

Această funcţie afişeayă valorile din intensitatea imaginii I la valori noi în I2 astfel încât valorile dintre
limitele low_in și high_in să fie valori între limitele low_out și high_out. Puteți utiliza o matrice goală ([])
pentru [low_in high_in] sau pentru [low_out high_out] pentru a specifica implicit valoarea [0 1]..

Pentru o imagine alb-negru:

I = imread('rice.tif');
I2 = imadjust(I,[0.3 0.9],[0 1]);
imshow(I)
figure, imhist(I)
figure, imshow(I2)
figure, imhist(I2)

Pentru o imagine color:

RGB1 = imread('flowers.tif');
RGB2 = imadjust(RGB1,[.2 .3 0; .6 .7
1],[]);
imshow(RGB1), figure, imshow(RGB2)
I=imread('flowers.tif');
R=imhist(RGB1(:,:,1));
G=imhist(RGB1(:,:,2));
B=imhist(RGB1(:,:,3));
figure, plot(R,'r')
hold on, plot(G,'g')
plot(B,'b'), legend(' Red channel','Green
channel','Blue channel');
R=imhist(RGB2(:,:,1));
G=imhist(RGB2(:,:,2));
B=imhist(RGB2(:,:,3));
figure, plot(R,'r')
hold on, plot(G,'g')
plot(B,'b'), legend(' Red channel','Green channel','Blue channel');
7. Se modifică contrastului unei imagini alb-negru
Pentru modificarea contrastului folosiţi funcţia histeq
Afişaţi imaginea şi gistograma ei:
I = imread('pout.tif');
figure
subplot(1,2,1)
imshow(I)
subplot(1,2,2)
imhist(I,64)

Egalaţi histograma şi afişaţi imaginea şi gistograma ei:

J = histeq(I);
figure
subplot(1,2,1)
imshow(J)
subplot(1,2,2)
imhist(J,64)

Pentru o imagine color:

RGB1 = imread('flowers.tif');
RGB2 = histeq(RGB1);
imshow(RGB1), figure, imshow(RGB2)

Afişaţi imaginea şi gistograma ei:

R=imhist(RGB1(:,:,1));
G=imhist(RGB1(:,:,2));
B=imhist(RGB1(:,:,3));
figure, plot(R,'r')
hold on, plot(G,'g')
plot(B,'b'), legend(' Red channel','Green channel','Blue channel');
R=imhist(RGB2(:,:,1));
G=imhist(RGB2(:,:,2));
B=imhist(RGB2(:,:,3));
figure, plot(R,'r')
hold on, plot(G,'g')
plot(B,'b'), legend(' Red channel','Green channel','Blue channel');

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