МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра ЗІ
З В І Т
до лабораторної роботи №3
з курсу: «Системи запису та відтворення інформації»
на тему: «Дослідження методів обробки зображень в Matlab»
Варіант № 15
Львів – 2010
Мета роботи – ознайомитися з основними можливостями обробки зображень реалізованими в середовищі MatLab.
ЗАВДАННЯ
1. Ознайомитись з теоретичним матеріалом.
2. Завантажити файл вказаний в завданні відповідно до свого варіанту.
3. Вивести основну інформацію про графічний файл.
4. Накласти на зображення шуми gaussian, salt & pepper, speckle.
5. Провести лінійну фільтрацію зашумленого зображення фільтрами ‘average’, ‘gaussian’, ‘sobel’, ‘prewitt’, ‘unsharp’. Зробити висновки про ефективність фільтрів.
6. Провести медіанну фільтрацію. Зробити висновки про ефективність фільтру.
7. Написати програму збереження відфільтрованого зображення у bmp-файлі.
8. Переконатися у працездатності програми.
Варіант
Назва файлу
15
chess.tiff
Лістинг програми:
A = imread ('D:\Documents\Photo\chess.tiff');
info = imfinfo('D:\Documents\Photo\chess.tiff');
J = imnoise(A, 'gaussian');
imwrite (J,'D:\Documents\Лаброб 3\Gaus.jpeg');
h1 = fspecial ('average');
h2 = fspecial ('gaussian');
h3 = fspecial ('sobel');
h4 = fspecial ('prewitt');
h5 = fspecial ('unsharp');
J1 = imfilter(J,h1);
imwrite (J1,'D:\Documents \Лаброб 3\Gaus_Av.jpeg');
J2 = imfilter(J,h2);
imwrite (J2,'D:\Documents \Лаброб 3\Gaus_Gu.jpeg');
J3 = imfilter(J,h3);
imwrite (J3,'D:\Documents \Лаброб 3\Gaus_So.jpeg');
J4 = imfilter(J,h4);
imwrite (J4,'D:\Documents\Лаброб 3\Gaus_Pr.jpeg');
J5 = imfilter(J,h5);
imwrite (J5,'D:\Documents\Лаброб 3\Gaus_Un.jpeg');
I = imnoise(A,'salt & pepper');
imwrite (I,'D:\Documents \Лаброб 3\S&P.jpeg');
h6 = fspecial ('average');
h7 = fspecial ('gaussian');
h8 = fspecial ('sobel');
h9 = fspecial ('prewitt');
h10 = fspecial ('unsharp');
J6 = imfilter(I,h6);
imwrite (J6,'D:\Documents\Лаброб 3\S&P_Av.jpeg');
J7 = imfilter(I,h7);
imwrite (J7,'D:\Documents \Лаброб 3\S&P_Gu.jpeg');
J8 = imfilter(I,h8);
imwrite (J8,'D:\Documents \Лаброб 3\S&P_So.jpeg');
J9 = imfilter(I,h9);
imwrite (J9,'D:\Documents\Лаброб 3\S&P_Pr.jpeg');
J10 = imfilter(I,h10);
imwrite (J10,'D:\Documents\Лаброб 3\S&P_Un.jpeg');
Y= imnoise(A,'speckle');
imwrite (Y,'D:\Documents\Лаброб 3\Sp.jpeg');
h11 = fspecial ('average');
h12 = fspecial ('gaussian');
h13 = fspecial ('sobel');
h14 = fspecial ('prewitt');
h15 = fspecial ('unsharp');
J11 = imfilter(Y,h11);
imwrite (J11,'D:\Documents\Лаброб 3\Sp_Av.jpeg');
J12 = imfilter(Y,h12);
imwrite (J12,'D:\Documents\Лаброб 3\Sp_Gu.jpeg');
J13 = imfilter(Y,h13);
imwrite (J13,'D:\Documents\Лаброб 3\Sp_So.jpeg');
J14 = imfilter(Y,h14);
imwrite (J14,'D:\Documents\Лаброб 3\Sp_Pr.jpeg');
J15 = imfilter(Y,h15);
imwrite (J15,'D:\Documents\Лаброб 3\Sp_Un.jpeg');
B = medfilt2(J, [2,4]);
imwrite (B,'D:\Documents\Лаброб 3\Lin_Ga.jpeg');
B2 = medfilt2(I, [2,4]);
imwrite (B2,'D:\Documents\Лаброб 3\Lin_S&P.jpeg');
B3 = medfilt2(Y, [2,4]);
imwrite (B3,'D:\Documents \Лаброб 3\Lin_Sp.jpeg');
I = imread('D:\Documents\Лаброб 3\Photo\chess.tiff');
[m,n] = size(I);
H_I = m;
W_I = n;
W_Real = W_I+(W_I-fix(W_I/4)*4);
File_Size = 54+W_Real*H_I+256*4;
Image_Size = W_Real*H_I;
Offset = 54+256*4;
d = fopen('D:\Documents \Лаброб 3\SAV.bmp','wb');
fwrite(d,'B','uchar');
fwrite(d,'M','uchar');
fwrite(d,File_Size,'int32');
fwrite(d,0, 'int16');
fwrite(d,0, 'int16');
fwrite(d,Offset, 'int32');
fwrite(d,40,'int32');
fwrite(d,W_I,'int32');
fwrite(d,H_I,'int32');
fwrite(d,1,'int16');
fwrite(d,8,'int16');
fwrite(d,0,'int32');
fwrite(d,Image_Size,'int32');
fwrite(d,0,'int32');
fwrite(d,0,'int32');
fwrite(d,256,'int32');
fwrite(d,256,'int32');
for ii = 0:255
Temp = [ii ii ii 255];
fwrite(d,Temp,'uchar');
end;
Temp = zeros(1,W_Real);
for ii = H_I:-1:1
Temp(1:W_I) = I(ii,1:W_I);
fwrite(d,Temp, 'uchar');
fclose(d);
Графіки:
а) Оригінальне зображення б) Накладання шуму «gaussian»
в) Накладання шуму «salt&pepper» г) Накладання шуму «speckle»
Медіанна фільтрація зашумленого зображення:
а) З накладанням шуму «gaussian» б) З накладанням шуму «salt&pepper» в) З накладанням шуму «speckle»
Лінійна фільтрація зашумленого зображення фільтрами ‘average’, ‘gaussian’, ‘sobel’, ‘prewitt’, ‘unsharp’:
З накладанням шуму «gaussian»:а) ‘average’; б) ‘gaussian’; в) ‘sobel’; г) ‘prewitt’; д) ‘unsharp’;
а) б) в)
г) д)
З накладанням шуму «salt&pepper»:а) ‘average’; б) ‘gaussian’; в) ‘sobel’; г) ‘prewitt’; д) ‘unsharp’;
а) б) в)
г) д)
З накладанням шуму «speckle»:а) ‘average’; б) ‘gaussian’; в) ‘sobel’; г) ‘prewitt’; д) ‘unsharp’;
а) б) в)
г) д)
Висновки: На цій лабораторній роботі я ознайомився з основними можливостями обробки зображень, реалізованими в середовищі MatLab. Завдання лабораторної роботи полягало в тому, щоб спочатку зашумити зображення різними видами шумів («gaussian», «salt&pepper», «speckle»), а потім відфільтрувати зображення за допомогою медіанної та лінійної фільтрації. В лінійній фільтрації використовувались фільтри:‘average’, ‘gaussian’, ‘sobel’, ‘prewitt’, ‘unsharp’. Отже, медіанну фільтрацію найкраще використовувати тоді, коли зображення зашумлене шумом «salt&pepper»; для шуму «gaussian» при лінійній фільтрації найбільше підходить фільтр «gaussian», для шуму «salt&pepper» - ‘gaussian’ або ‘unsharp’, для шуму «speckle» - ‘gaussian’. Для фільтрування зображень найкраще використовувати комплексні фільтрації.