МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №3
з курсу: «Системи запису та відтворення інформації»
на тему: «Дослідження методів обробки зображень в MATLAB.»
Мета роботи – ознайомитися з основними можливостями обробки зображень реалізованими в середовищі MATLAB.
ЗАВДАННЯ:
Ознайомитись з теоретичним матеріалом.
Завантажити файл вказаний в завданні відповідно до свого варіанту.
Вивести основну інформацію про графічний файл.
Накласти на зображення шуми gaussian, salt & pepper, speckle.
Провести лінійну фільтрацію зашумленого зображення фільтрами ‘average’, ‘gaussian’, sobel’, ‘prewitt’, ‘unsharp’. Зробити висновки про ефективність фільтрів.
Провести медіанну фільтрацію. Зробити висновки про ефективність фільтру
Написати програму збереження відфільтрованого зображення у bmp-файлі.
Переконатися у працездатності програми.
Варіант
Назва файлу
19
detfingr.tiff
ЛІСТИНГ ПРОГРАМИ
clear all;
A=imread('D:\lab3\ detfingr.tiff','tiff');
info=imfinfo('D:\lab3\ detfingr.tiff','tiff');
figure(1);imshow(A)
info.Filename
info.FileModDate
info.FileSize
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(5);imshow (C);
C=medfilt2(B,[3,3]);
figure(5);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('D:\lab3\1\my.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);
РИСУНКИ
Фільтрація зображення з шумом типу «сіль і перець» медіанною фільтрацією
/ /
Фільтрація зображення з шумом типу Гауса фільтром Гауса
Noised Gaussian Filtred Gaussian
/ /
Фільтрація зображення з шумом типу Гауса фільтром «average»
Noised Gaussian Filtred Average
/ /
Фільтрація зображення з мультиплікативним шумом фільтром «average»
Noised speckle Filtred Average
/ /
Висновок: Виконуючи дану лабораторну роботу, я навчився працювати із зображеннями у середовищі Matlab. Розглянув методи очистки зображень за допомогою різноманітних фільтрів. Можна зробити висновок про відповідність очистки зображення конкретним фільтром в залежності від типу шуму на зображенні: проти шуму типу «сіль і перець» доречно застосовувати медіанну фільтрацію, проти гауссіанськго шуму доречно використовувати фільтр Гаусса і фільтр типу «average», проти мультиплікативного шуму – фільтр «average». Як видно із результатів, найякіснішу фільтрацію має медіанний фільтр.