МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №3
з курсу: «Системи запису та відтворення інформації»
на тему: «Дослідження методів обробки зображень в MATLAB.»
МЕТА РОБОТИ
  Oзнайомитися з основними можливостями обробки зображень реалізованими в середовищі MATLAB.
ЗАВДАННЯ
1. 	Ознайомитись з теоретичним матеріалом.
2. 	Завантажити файл вказаний в завданні відповідно до свого варіанту.
3. 	Вивести основну інформацію про графічний файл.
4. 	Накласти на зображення шуми gaussian, salt & pepper, speckle.
5. 	Провести лінійну фільтрацію зашумленого зображення фільтрами ‘average’, ‘gaussian’, sobel’, ‘prewitt’, ‘unsharp’. Зробити висновки про ефективність фільтрів.
6. 	Провести медіанну фільтрацію. Зробити висновки про ефективність фільтру.
7. 	Написати програму збереження відфільтрованого зображення у bmp-файлі.
8. 	Переконатися у працездатності програми.
Варіант
Назва файлу
11
cameraman1.tiff
ТЕКСТ ПРОГРАМИ
 A=imread('K:cameraman1.tiff','tiff');
info=imfinfo('K:cameraman1.tiff','tiff');
figure(1);imshow(A)
 info.Filename
 info.FileModDate
 info.FileSize
 info.Format
 info.FormatVersion
 info.Width
 info.Height
 info.BitDepth
 info.ColorType
% Накладання шумів
 B=imnoise(A,'gaussian');
 figure(2);imshow (B);
 B=imnoise(A,'salt & pepper');
 figure(3);imshow (B);
 B=imnoise(A,'speckle');
 figure(4);imshow (B);
% Фільтрування
 h= fspecial('average');
 C=imfilter(B,h);
 figure(5);imshow (C);
 h= fspecial('gaussian');
 C=imfilter(B,h);
 figure(6);imshow (C);
 % 
 h= fspecial('sobel');
 C=imfilter(C,h');
 figure(7);imshow (C);
 % 
 h= fspecial('prewitt');
 C=imfilter(B,h);
 figure(8);imshow (C);
 %
 h= fspecial('unsharp');
 C=imfilter(B,h);
 figure(9);imshow (C);
 C=medfilt2(B,[3,3]);
 figure(10);imshow (C);
% Визначити висоту і ширину зображення 
[m, n] = size(C); 
H_I = m;    % Висота
W_I = n;    % Ширина
% Доповнити кількість байт в рядку до кратних 4 
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('K:cameraman1.bmp', 'wb'); 
% 
% Заголовок файлу (BitMapFileHeader) 
% Заповнити поле Type 
fwrite(d, 'B', 'uchar'); 
fwrite(d, 'M', 'uchar'); 
% Заповнити поле Size 
fwrite(d, File_Size, 'int32'); 
% Заповнити поле Reserved 1 
fwrite(d, 0,    'int16'); 
% Заповнити поле Reserved 2 
fwrite(d, 0,      'int16'); 
% Заповнити поле OffsetBits 
fwrite(d, Offset, 'int32'); 
% 
% Інформаційний заголовок (BitMapInfoHeader) 
% Заповнити поле Size 
fwrite(d, 40, 'int32'); 
% Заповнити поле Width 
fwrite(d, W_I, 'int32'); 
% Заповнити поле Height 
fwrite(d, H_I, 'int32'); 
% Заповнити поле Planes 
fwrite(d, 1, 'int16'); 
% Заповнити поле BitCount 
fwrite(d, 8, 'int16'); 
% Заповнити поле Compression 
fwrite(d, 0, 'int32'); 
% Заповнити поле SizeImage 
fwrite(d, Image_Size, 'int32'); 
% Заповнити поле XpelsPerMeter 
fwrite(d, 0, 'int32'); 
% Заповнити поле YpelsPerMeter 
fwrite(d, 0, 'int32'); 
% Заповнити поле ColorsUsed 
fwrite(d, 256, 'int32'); 
% Заповнити поле ColorsImportant 
fwrite(d, 256, 'int32'); 
% 
% Таблиця кольорів (палітра) (ColorTable) 
for ii = 0 : 255 
   Temp = [ii ii ii 255]; 
   fwrite(d, Temp, 'uchar'); 
end; 
% 
% Дані зображення (BitMap Array) 
Temp = zeros(1, W_Real); 
for ii = H_I : -1 : 1 
  Temp(1:W_I) = C(ii, 1:W_I); 
  fwrite(d, Temp, 'uchar'); 
end; 
% 
fclose(d);
РЕЗУЛЬТАТ ВИКОНАННЯ ПРОГРАМИ
ans  =  K:cameraman1.tiff
ans  =  24-Dec-2012 18:20:00
ans  =  65110
ans  =  tif
ans  =  []
ans  =  256
ans  =  256
ans  =  8
ans  =  grayscale
/
  Оригінальне зображення.			     Накладання шуму ‘gaussian’
/                     /
Накладання шуму ‘salt & papper’  		     Накладання шуму ‘speckle’
 
          /                   /  
              Фільтрування ‘average’  				Фільтрування ‘gaussian’
         /                    /
  		     Фільтрування ‘sobel’				  Фільтрування ‘prewitt’
          /                /  
  Фільтрування ‘unsharp’				  Фільтрування medfilt2
/        	/
                   
РЕЗУЛЬТАТ
ОРИГІНАЛЬНЕ ЗОБРАЖЕННЯ	       ВІДФІЛЬТРОВАНЕ ЗОБРАЖЕННЯ 
         /                    /
ВИСНОВКИ
Головна задача в даній лабораторній роботі була в наступному -  навчитися працювати із зображеннями у середовищі Matlab. Розглянувши методи очистки зображень за допомогою різноманітних фільтрів, можна зробити висновок про відповідність очистки зображення конкретним фільтром в залежності від типу шуму на зображенні: проти шуму типу «сіль і перець» доречно застосовувати медіанну фільтрацію, проти гауссіанськго шуму доречно використовувати фільтр Гаусса і фільтр типу «average», проти мультиплікативного шуму – фільтр «average».Як видно із результатів, найякіснішу фільтрацію має медіанний фільтр.