МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
ІНСТИТУТ КОМП’ЮТЕРНИХ ТЕХНОЛОГІЙ, АВТОМАТИКИ ТА МЕТРОЛОГІЇ
КАФЕДРА ”ЗАХИСТ ІНФОРМАЦІЇ”
Звіт
до лабораторної роботи № 3
з курсу: "Системи запису та відтворення інформації"
на тему: “ ДОСЛІДЖЕННЯ МЕТОДІВ ОБРОБКИ ЗОБРАЖЕНЬ В MATLAB ”
Варіант 4.
Мета роботи:
Ознайомитися з основними можливостями обробки зображень
реалізованими в середовищі MatLab.
Повний текст завдання:
Ознайомитись з теоретичним матеріалом.
Завантажити файл вказаний в завданні відповідно до свого варіанту.
Вивести основну інформацію про графічний файл.
Накласти на зображення шуми gaussian, salt & pepper, speckle.
Провести лінійну фільтрацію зашумленого зображення фільтрами ‘average’, ‘gaussian’, sobel’, ‘prewitt’, ‘unsharp’. Зробити висновки про ефективність фільтрів.
Провести медіанну фільтрацію. Зробити висновки про ефективність фільтру
Написати програму збереження відфільтрованого зображення у bmp-файлі.
Переконатися у працездатності програми.
Варіант
Назва файлу
4
belmont1.tiff
Лістинг програми:
I = imread('D:\Політех\С-ми запису і відтворення інф\Photo\belmont1.tiff');
figure(1);
imshow(I);
J1=imnoise(I,'salt & pepper');
figure(2);
subplot(1,2,1); imshow(I);title('Original');
subplot(1,2,2); imshow(J1);title('Salt & Pepper');
J2=imnoise(I,'gaussian');
figure(3); title('Gaussian');
subplot(1,2,1); imshow(I);
subplot(1,2,2); imshow(J2);
J3=imnoise(I,'speckle');
figure(4);
subplot(1,2,1); imshow(I);
subplot(1,2,2); imshow(J3);
%//////////////////////////////////////////////////////////////////
B = medfilt2(J1);
figure(5);
subplot(1,2,1); imshow(J1); title('Noised salt & pepper');
subplot(1,2,2); imshow(B); title('Filtered');
B = medfilt2(J2);
figure(6);
subplot(1,2,1); imshow(J2); title('Noised Gaussian');
subplot(1,2,2); imshow(B); title('Filtered');
B = medfilt2(J3);
figure(7);
subplot(1,2,1); imshow(J3); title('Noised speckle');
subplot(1,2,2); imshow(B); title('Filtered');
%////////////////////////////////////////////////////////////////////
h=fspecial('average');
J4 = imfilter(J1, h);
figure(8);
subplot(1,2,1); imshow(J2); title('Noised salt & pepper');
subplot(1,2,2); imshow(J4); title('Filtered Average');
J4 = imfilter(J2, h);
figure(9);
subplot(1,2,1); imshow(J2); title('Noised Gaussian');
subplot(1,2,2); imshow(J4); title('Filtered Average');
J4 = imfilter(J3, h);
figure(10);
subplot(1,2,1); imshow(J2); title('Noised speckle');
subplot(1,2,2); imshow(J4); title('Filtered Average');
h=fspecial('gaussian');
J4=imfilter(J1,h);
figure(11);
subplot(1,2,1); imshow(J2); title('Noised Gaussian');
subplot(1,2,2); imshow(J4); title('Filtered ');
J4=imfilter(J2,h);
figure(12);
subplot(1,2,1); imshow(J2); title('Noised Gaussian');
subplot(1,2,2); imshow(J4); title('Filtered');
J5=imfilter(J3,h);
figure(13);
subplot(1,2,1); imshow(J3); title('Noised unsharp');
subplot(1,2,2); imshow(J5); title('Filtered');
h=fspecial('unsharp');
J4=imfilter(J1,h);
figure(14);
subplot(1,2,1); imshow(J2); title('Noised salt & pepper');
subplot(1,2,2); imshow(J4); title('Filtered ');
J4=imfilter(J2,h);
figure(15);
subplot(1,2,1); imshow(J2); title('Noised Gaussian');
subplot(1,2,2); imshow(J4); title('Filtered');
J5=imfilter(J3,h);
figure(16);
subplot(1,2,1); imshow(J3); title('Noised unsharp');
subplot(1,2,2); imshow(J5); title('Filtered');
% Визначити висоту і ширину зображення
[m, n] = size(I);
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('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');
7
% Заповнити поле 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) = I(ii, 1:W_I);
fwrite(d, Temp, 'uchar');
end;
%///////////////////////////////////////////////////////////////////////////
fclose(d);
Оригінал:
Фільтрація зображення з шумом типу «сіль і перець» медіанною фільтрацією
Фільтрація зображення з шумом типу Гауса фільтром Гауса
Фільтрація зображення з шумом типу Гауса фільтром «average»
Фільтрація зображення з мультиплікативним шумом фільтром «average»
Висновок:
Виконуючи дану лабораторну роботу, ми навчилися працювати із зображеннями у середовищі Matlab. Ми розглянули методи очистки зображень за допомогою різноманітних фільтрів. Можна зробити висновок шодо відповідності очистки зображення контректним фільтром в залежності від типу шуму на зображенні. Проти шуму типу «сіль і перець» доречно застосовувати медіанну фільтрацію. Проти шуму Гаусса доречно використовувати фільтр Гаусса і фільтр типу «average». Проти мультиплікативного шуму – фільтр «average».