
лаб6 / lab6
.pdfГУАП
КАФЕДРА 41
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
доцент, к.т.н. доцент |
|
|
|
О.О. Жаринов |
|
|
|
|
|
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №6
Основы цифровой фильтрации изображений средствами MATLAB. Метод фильтрации в спектральном пространстве
по курсу: МУЛЬТИМЕДИА ТЕХНОЛОГИИ
РАБОТУ ВЫПОЛНИЛ |
|
|
|
|
|
|
СТУДЕНТ гр. № |
4016 |
|
|
|
М.О. Жовтяк |
|
|
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2024
1.Цель.
Изучить основы обработки изображений на примере методов
фильтрации, реализуемых в спектральном пространстве.
2. Краткие теоретические сведения о задачах обработки
мультимедиа цифроых изображений.
Фильтрация является одним из широко применяемых методов обработки изображений. Концептуальные идеи, положенные в основу методов фильтрации изображений, опираются на методологическую базу обработки одномерных сигналов, таких как аудио. Однако в отличие от задач фильтрации одномерных оцифрованных сигналов, которые представляют собой последовательность числовых значений, упорядоченную по времени появления каждого из них, последовательность значений пикселей изображения упорядочена лишь по возрастанию индексов строк и столбцов соответствующих матриц. Соответственно, если для временных сигналов период измеряется в секундах, а частота, соответственно, в Герцах
([Гц]=[1/c]), то применительно к изображениям период повторения группы пикселей и соответствующая периоду повторения пространственная частота
(англ. – space frequency) выражаются в условных безразмерных единицах.
Тем не менее, для обработки изображений также успешно применяются подходы, связанные с избирательным воздействием на определенные частотные компоненты с целью целенаправленного изменения свойств изображения.
Методы фильтрации чаще всего используются для решения задачи улучшения качества изображений (увеличения резкости расфокусированных и смазанных изображений). Кроме того, фильтрация часто является одним из этапов более сложных, многоступенчатых методов обработки изображений,
таких, например, как методы выделения границ объектов на изображениях.
Фильтрация всегда основана на наличии существенных различий в спектральном составе различных компонентов, составляющих исходное
2
изображение. Для получения информации о частотном составе цифровых изображений существует специальный метод и алгоритм – двумерное быстрое преобразование Фурье (2D-БПФ). В результате его применения к массиву {xn,m} образуется массив значений его спектра {Xn,m}. Существует также и алгоритм обратного действия (обратное 2D-БПФ): по массиву значений спектра {Xn,m} можно вычислить массив значений пикселей изображения {xn,m}. В этом смысле концепция выглядит так же, как и в случае одномерного БПФ.
При реализации фильтрации изображений часто применяют метод фильтрации в спектральном пространстве (метод Фурье-фильтрации). Идея метода заключается в вычислении двумерного спектра {Xn,m} исходного изображения {xn,m}, последующей модификации спектра в соответствии заданными частотными характеристиками пространственного фильтра и формировании выходного изображения посредством вычисления обратного двумерного преобразования Фурье модифицированного спектра {Yn,m}.
Для модификации спектра исходного изображения {Xn,m} необходимо задать массив отсчетов двумерной дискретной передаточной функции фильтра {Wn,m}, после чего выполнить преобразование
, = , ∙ , , для всех n и m.
При задании массива {Wn,m} исходят из требований к свойствам,
которые необходимо придать выходному изображению.
В отличие от одномерных сигналов, при обработке изображений практически всегда приходится предварительно оценивать свойства спектра конкретного изображения, чтобы выбрать область для коррекции спектра,
хотя есть и общие рекомендации, основанные на аналогиях с одномерными фильтрами. Фундаментом здесь выступает общая идея о том, что более протяженным объектам на изображении соответствуют более низкие пространственные частоты, а мелким деталям – высокие частоты. Резкая граница между относительно ярких объектом и более темным окружающим
3
фоном по своим частотным свойствам аналогична фронту одномерного импульсного сигнала.
Всегда важно помнить, что свойство симметрии алгоритма двумерного БПФ требует обязательного выполнения условия комплексно-сопряженной симметрии для массива {Wn,m}. Для облегчения реализации этого принципа в MATLAB введена специальная операция центрирования спектра fftshift().
Эта команда осуществляет двумерный циклический сдвиг спектра, так что компоненты спектра с нулевыми индексами сдвигаются в центр матрицы спектра. Тогда при необходимости оставить в изображении только низкие частоты (т.е. оставить неизмененными протяженные объекты и уменьшить заметность мелких объектов), необходимо оставить в спектре только двумерную область, близкую к центру спектра, симметричную относительно центра. Если же, наоборот, требуется выделить края объектов, а сами объекты сделать невидимыми, то нужно оставить только высокие частоты,
для чего следует уменьшить или вовсе сделать равными нулю значения спектра, находящиеся близко к центру матрицы. По окончании модификаций центрированного спектра осуществляется его обратный сдвиг и вычисляется двумерное обратное БПФ, в результате чего формируется отфильтрованное изображение, свойства которого отличаются от исходного.
3.Ход работы
Для работы используется изображение козы на фоне заблюренного поля и неба с облаками. Основная задача заключается в том, что определить границы изображения объекта в центре (козы). Изображение представлено на рисунке 1.
4

Рисунок 1 – Исходное изображение Для определения спектра изображения используется код,
представленный в Листинге 1. Визуализация амплитудного спектра представлена на рисунке 2.
Рисунок 2 – Спектр исходного изображения Листинг 1 - Вычисление двумерного центрированного спектра
изображения и визуализация его амплитудного спектра
5

I = imread('koza.jpg');
if (size(I,3) == 3) I = rgb2gray(I); end I = im2double(I);
S = fftshift(fft2(I)); % 2D-БПФ изображения, центрирован
A = abs(S); % амплитудный спектр
A_max = max(max(A));
eps = A_max*10^(-6); %добавка, чтобы не вычислить lg(0)
A_dB = 20*log10(A + eps); % перевод в дБ figure('Name','Спектр изображения, в псевдоцвете'); imagesc(A_dB) % вывод двумерного спектра изображения colorbar
Реализуем простейший способ выделения краёв объекта с помощью метода Фурье-фильтрации. Код для работы с ним представлен в Листинге 2.
Листинг 2 - MATLAB-программа, реализующая простейший способ реализации метода Фурье-фильтрации изображения с целью выделения краев объектов
clc, clear, close all %очистка памяти
I = imread('koza.jpg');
%перевод изображения в оттенки серого
%(получение матрицы яркости):
if (size(I,3) == 3) I = rgb2gray(I); end I = im2double(I);
% Вычисление 2D-БПФ изображения:
%(получение матрицы центрированного спектра):
Spectr_input_image = fftshift(fft2(I));
A = abs(Spectr_input_image); % амплитудный спектр
A_max = max(max(A));
eps = A_max*10^(-6); %добавка, чтобы не вычислить lg(0)
A_dB = 20*log10(A + eps); % перевод в дБ figure(1)
% вывод графика спектра изображения imagesc(A_dB)
[M,N] = size(Spectr_input_image); % получение размера массива
%*********************************************************
%настраиваем пространственную частоту среза фильтра:
space_freq = 40;
% массив из единиц для маски фильтрации в частотной области
mask=ones([M, N]);
% задание маски ФВЧ (обнуляем элементы
6

% в прямоугольной области в окрестности центра):
mask(round(M/2) - space_freq : round(M/2) + space_freq, ...
round(N/2) - space_freq : round(N/2) + space_freq)=0;
%**********************************************************
%изменение спектра по формуле (1):
Spectr_output_image = Spectr_input_image.* mask; figure(2)
%визуализация измененного спектра: imagesc(20*log10(abs(Spectr_output_image)+eps))
%обратное 2D-БПФ:
J = (ifft2(ifftshift(Spectr_output_image), ...
'symmetric')); %обратное 2D-БПФ
% нормировка значений пикселей: max_J = max(max(J));
output_image = im2uint8((J./max_J));
%инверсия яркостей пикселей,
%чтобы получить черные границы на белом фоне
output_image = 255 - output_image; figure(3), imshow(I)
figure(4), imshow(output_image) imwrite(output_image, 'edges_koza.jpg');
Изменяя настройку пространственной частоты можно получить разные результаты. Например, на рисунке 3, представлена Фурье-фильтрация с пространственной частотой среза 40. Амплитудный спектр представлен на рисунке 4.
7

Рисунок 3 – Результат Фурье-фильтрации с частотой среза 40
Рисунок 4 – Амплитудный спектр Фурье-фильтрации с частотой среза 40
8

Можно заметить, что силуэт козы видно: есть глаза, нос и даже очертания шерсти. При этом облака пропали, а трава превратилась в «кашу».
Из всех вариантов такая пространственная частота среза мне показалась наиболее оптимальнее. При этом если существенно увеличить такой параметр, то силуэт будет тоже виден, но при этом границы объекта пропадут.
Проводим Фурье-фильтрацию изображения с помощью метода Фурье-
фильтрации с использованием пространственного ФВЧ Баттерворта. Код работы представлен в Листинге 3.
clc, clear, close all
I = imread('koza.jpg');
if (size(I,3) == 3) I = rgb2gray(I); end I = im2double(I);
S_I = fftshift(fft2(I)); % 2D-БПФ ярк. составляющей
%**************************************************
D_up = 300; K=1; deg = 2*K;
[M, N] = size(I); W = zeros([M N]); %пустой массив для W Cn = round(N/2); Cm = round(M/2); % координаты центра
%формируем массив W
for n = 1:N for m = 1:M
d = sqrt((m - Cm)^2 + (n - Cn)^2);
W(m,n) = (d/D_up)^K/sqrt(1+(d/D_up)^deg); end
end
%**************************************************
S_J = S_I.* W; %изменение спектра фильтром
%визуализируем полученный спектр. вых. изобр.:
A = abs(S_J); % амплитудный спектр
A_max = max(max(A));
eps = A_max*10^(-6); %добавка, чтобы не вычислить lg(0)
A_dB = 20*log10(A + eps); % перевод в дБ imagesc(A_dB)
J = (ifft2(ifftshift(S_J), 'symmetric')); %2D-ОБПФ figure('Name','Изобр. на вых. фильтра');
max_J = max(max(J));
output_image = im2uint8(J./max_J); output_image = 255 - output_image; % инверсия
9

% output_image = imbinarize(output_image, 'global');
imshow(output_image)
imwrite(output_image, 'edge_koza.jpg');
После множества попыток самыми оптимальными параметрами стали
Dup= 300 ед., K=1. Результат обработки представлен на рисунке 5.
Амплитудный спектр на рисунке 6.
Рисунок 5 – Результат Фурье-фильтрации с ФВЧ, Dup= 300 ед., K=1
Рисунок 6 – Амплитудный спектр Фурье-фильтрации с частотой среза 40
10