МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №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».Як видно із результатів, найякіснішу фільтрацію має медіанний фільтр.