
- •Содержание
- •Техническое задание
- •Анализ технического задания
- •2.1. Медианный фильтр. Медианная фильтрация
- •2.1.1 Достоинства и недостатки медианных фильтров
- •2.2 Принцип фильтрации.
- •2.3 Подавление статистических шумов
- •2.4 Импульсные и точечные шумы
- •2.5 Перепад плюс шум.
- •2.6 Фильтрация Винера
- •2.7. Фильтрация изображений.
- •2.7.1 Использование адаптивной фильтрации
- •2.7.2 Использование медианной фильтрации
- •3. Проектирование вспомогательной функции matlab
- •3.1. Считывание изображения и создание его копии.
- •3.2. Добавление шумов к копии исходного изображения.
- •3.3. Обработка зашумленной копии при помощи медианного фильтра.
- •3.4. Обработка зашумленной копии при помощи фильтра Винера %Обработка изображений фильтром Винера.
- •3.5. Расчет ско между фильтрованным изображением и оригиналом.
- •Результаты обработки
- •Список Литературы
2.7.1 Использование адаптивной фильтрации
В основе функции wiener2 лежит винеровский фильтр (один из типов линейного фильтра) для адаптивной локальной обработки изображений. Если значение среднеквадратического отклонения интенсивностей пикселей в данной локальной области большое, то wiener2 выполняет небольшое сглаживание. Если же это отклонение небольшое, то область сглаживания больше.
Этот подход часто бывает более эффективным, чем обычная линейная фильтрация. Преимущество адаптивный фильтра еще заключается в том, что он сохраняет края и другие высокочастотные части объектов изображения. Однако, винеровский фильтр требует большего времени для вычислений, чем линейный фильтр.
Функция wiener2 лучше работает с "белым" шумом, например гауссовским.
2.7.2 Использование медианной фильтрации
Медианная фильтрация похожа на использование усредняющего фильтра, где значение интенсивности каждого пикселя представляет собой усредненное значение интенсивностей пикселей соответствующей окрестности. Во многих случаях использование медианного фильтра при решении задач устранения шума является более эффективным, чем обычное усреднение. Применение медианной фильтрации приводит к меньшим искажениям границ, в сравнении с операцией усреднения. Функция medfilt2 выполняет медианную фильтрацию.
Использование медианного фильтра для удаления шума на изображении и визуализация результата. К преимуществам функции medfilt2 относится то, что удаление шума не приводит к размытию границ объектов изображения.
3. Проектирование вспомогательной функции matlab
3.1. Считывание изображения и создание его копии.
I=imread('breast.tif'); %Запись изображения в переменную I
imwrite(I,'copie_image.tif'); %Создание копии изображения
L=imread('copie_image.tif'); %Чтение копии
subplot(2,3,2), imshow(L); % Вывод изображения
title('Original'); %Подпись изображения
3.2. Добавление шумов к копии исходного изображения.
%Формирование зашумленных изображений.
%1) Добавление к изображению гауссовского белого шума (по умолчанию
%математическое ожидание равно 0, а дисперсия - 0,01):
L1=imnoise(L,'gaussian');
subplot(2,3,4), imshow(L1);
title('Gaussian');
%2) Добавление к изображению импульсного шума (по умолчанию плотность шума
%равна доле искаженных пикселей):
L2=imnoise(L,'salt & pepper', 0.05);
Subplot (2,3,5), imshow(L2);
title('Salt & Pepper');
%3) Добавление к изображению мультипликативного шума (по умолчанию
%математическое ожидание равно 0, а дисперсия 0,04):
L3=imnoise(L,'speckle',0.04);
subplot(2,3,6), imshow(L3);
title('Speckle');
3.3. Обработка зашумленной копии при помощи медианного фильтра.
%Обработка изображений медианным фильтром.
figure;
R1=medfilt2(L1);
subplot(1,3,1), imshow(R1), title('medFilter_Gaussian');
R2=medfilt2(L2);
subplot(1,3,2), imshow(R2), title('medFilter_Salt & Pepper');
R3=medfilt2(L3);
subplot(1,3,3), imshow(R3), title('medFilter_Speckle');
% Тело функции medfilt2
function b = medfilt2(varargin)
[a, mn, padopt] = parse_inputs(varargin{:});
domain = ones(mn);
if (rem(prod(mn), 2) == 1)
order = (prod(mn)+1)/2;
b = ordfilt2(a, order, domain, padopt);
else
order1 = prod(mn)/2;
order2 = order1+1;
b = ordfilt2(a, order1, domain, padopt);
b2 = ordfilt2(a, order2, domain, padopt);
if islogical(b)
b = b | b2;
else
b = imlincomb(0.5, b, 0.5, b2);
end
end
a = varargin{1};
charLocation = [];
for k = 2:nargin
if (ischar(varargin{k}))
charLocation = [charLocation k];
end
end
if (length(charLocation) > 1)
eid = 'Images:medfilt2:tooManyStringInputs';
error(eid,'%s','Too many input string arguments.');
elseif isempty(charLocation)
padopt = 'zeros';
else
options = {'indexed', 'zeros', 'symmetric'};
padopt = iptcheckstrs(varargin{charLocation}, options, mfilename, ...
'PADOPT', charLocation);
varargin(charLocation) = [];
end
if (strcmp(padopt, 'indexed'))
if (isa(a,'double'))
padopt = 'ones';
else
padopt = 'zeros';
end
end
if length(varargin) == 1,
mn = [3 3];
elseif length(varargin) >= 2,
mn = varargin{2}(:).';
if size(mn,2)~=2,
msg = 'MEDFILT2(A,[M N]): Second argument must consist of two integers.';
eid = 'Images:medfilt2:secondArgMustConsistOfTwoInts';
error(eid, msg);
elseif length(varargin) > 2,
msg = ['MEDFILT2(A,[M N],[Mb Nb],...) is an obsolete syntax. [Mb Nb]' ...
' argument is ignored.'];
wid = 'Images:medfilt2:obsoleteSyntax';
warning(wid, msg);
end
end