Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LR6 / Z9411_КафкаРС_ММТ_ЛР6

.pdf
Скачиваний:
2
Добавлен:
18.06.2024
Размер:
524.76 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

КАФЕДРА 41

ОЦЕНКА

 

 

 

 

ПРЕПОДАВАТЕЛЬ

 

 

 

 

 

доц., канд. техн. наук, доц.

 

 

 

О. О. Жаринов

 

должность, уч. степень, звание

 

подпись, дата

 

инициалы, фамилия

ЛАБОРАТОРНАЯ РАБОТА №6

ОСНОВЫ ЦИФРОВОЙ ФИЛЬТРАЦИИ ИЗОБРАЖЕНИЙ СРЕДСТВАМИ MATLAB. МЕТОД ФИЛЬТРАЦИИ В СПЕКТРАЛЬНОМ ПРОСТРАНСТВЕ

по дисциплине: Мультимедиа технологии

РАБОТУ ВЫПОЛНИЛ

 

 

 

 

 

СТУДЕНТ гр. №

Z9411

 

 

 

Р. С. Кафка

 

номер группы

подпись, дата

 

инициалы, фамилия

 

 

 

 

Студенческий билет №

2019/3603

 

 

 

 

 

 

 

 

 

Шифр ИНДО

Санкт-Петербург 2024

Цель работы: изучить основы обработки изображений на примере

методов фильтрации, реализуемых в спектральном пространстве.

Краткие теоретические сведения о задачах обработки изображений

и их практическом применении, а также об изученных методах

фильтрации.

Обработка изображений — это форма сигнальной обработки, где входной сигнал является изображением, например фотография или видео.

Цели могут включать улучшение изображений для человеческого восприятия, обработку для автономной интерпретации, извлечение информации и создание графических представлений.

Применяется в самых разнообразных областях — от медицинской визуализации и сателлитной фотографии до автоматизированного видеонаблюдения и искусственного интеллекта. Особенно важно в областях,

где необходимо выделение и распознавание объектов, реставрация изображений и преобразования для улучшения визуального восприятия.

Один из методов обработки изображений — фильтрация в спектральном пространстве, часто используемая для улучшения качества изображений (увеличения резкости, уменьшения смазанности) или для выделения границ объектов.

Принципы работы:

Преобразование Фурье: изображение преобразуется из пространственного представления в частотное с помощью двумерного быстрого преобразования Фурье (2D-БПФ).

Модификация спектра: спектр исходного изображения модифицируется путём умножения на передаточную функцию фильтра, которая может действовать как фильтр нижних (ФНЧ),

высоких (ФВЧ) или полосовых частот.

Обратное преобразование: после изменения спектра применяется обратное 2D-БПФ для получения финального изображения.

2

Применение фильтров:

Фильтр нижних частот (ФНЧ): используется для сглаживания изображения, уменьшения детализации и шума.

Фильтр высоких частот (ФВЧ): применяется для усиления или выделения деталей и границ объектов на изображении.

Полосовые и режекторные фильтры: находят применение в задачах, где нужно выделить или подавить определенные частотные составляющие изображения.

Технические аспекты:

Центрирование спектра: используется функция fftshift для центрирования спектра, что упрощает работу с ФНЧ и ФВЧ.

Проблемы и решения: спектральные методы могут вводить искажения,

такие как эффекты "звонов" или "Гиббса", которые могут быть уменьшены с использованием более гладких функций для фильтра.

Практическое применение:

Медицина: обработка рентгеновских снимков, МРТ и УЗИ изображений для более точной диагностики.

Безопасность: распознавание лиц, анализ видеонаблюдения для обеспечения безопасности.

Промышленность: автоматический контроль качества, сортировка и упаковка товаров.

Научные исследования: обработка изображений с космических аппаратов, микроскопических снимков и т.д.

Ход работы:

Тестовое изображение представлено на рисунке 1.

3

Рисунок 1 – Исходное изображение

1. Выполнили фильтрацию тестового изображение с целью выделения краев объектов при помощи алгоритмов, реализованных в программах,

приведенных в листинге 1.

Подобрали значения параметра space_freq, при котором результат работы получился субъективно наилучшим. Сохранили несколько изображений,

полученных при различных значениях параметра space_freq.

Листинг 1 - MATLAB-программа, реализующая простейший способ реализации метода Фурье-фильтрации изображения с целью выделения краев объектов

clc, clear, close all %очистка памяти I = imread('image.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); % амплитудный спектр

4

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 = 1;

%массив из единиц для маски фильтрации в частотной области mask=ones([M, N]);

%задание маски ФВЧ (обнуляем элементы

%в прямоугольной области в окрестности центра): 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_image.jpg');

Результат фильтрации методом Фурье представлен на рисунке 2.

5

Рисунок 2 – Результат Фурье-фильтрации изображения при помощи фильтра, выделяющего края объектов (см. программу на листинге 1): слева исходное изображение, справа – результат фильтрации, под каждым визуализирован амплитудный спектр

Попробовали разные значения параметра space_freq в диапазоне от 2 до

100 и заметили, что при слишком большом значении изображение выцветает и грани становятся нечёткими, а при малых появляется больше артефактов.

Эмпирически пришли к оптимальному для нашего изображения значению равному 1, при котором получается изображение с оптимальным количеством деталей и без артефактов.

Неудачные варианты параметра space_freq при значениях 10, 50 и 100

соответственно представлены на рисунке 3.

6

а)

б)

 

 

 

 

в)

Рисунок 3 – Неудачные результаты обработки при space_freq равным:

а) 10, б) 50, в)100

2.Выполнили фильтрацию изображения усовершенствованным способом реализации метода Фурье-фильтрации. Код представлен в листинге 2.

Листинг 2 – MATLAB-программа, реализующая усовершенствованный способ реализации метода Фурье-фильтрации изображения с целью выделения краев объектов с использованием пространственного ФВЧ Баттерворта

clc, clear, close all

I = imread('image.jpg');

if (size(I,3) == 3) I = rgb2gray(I); end I = im2double(I);

S_I = fftshift(fft2(I)); % 2D-БПФ ярк. составляющей % **************************************************

7

D_up = 45; K=4; 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; % инверсия

% output_image = imbinarize(output_image, 'global'); imshow(output_image)

imwrite(output_image, 'edge_image.jpg');

Также попробовали улучшить качество результата, получаемого в программе, приведенной в листинге 2, с помощью раскомментирования строчки «% output_image = imbinarize(output_image, 'global');».

Результат фильтрации усовершенствованным методом Фурье представлен на рисунке 4.

8

а)

в)

б)

г)

Рисунок 4 – Результат усовершенствованного способа Фурье-

фильтрации изображения (см. программу на листинге 2): а)

исходное изображение, б) результат фильтрации, в) результат фильтрации с улучшенным качеством, г) амплитудный спектр

3.Выполнили фильтрацию изображения при помощи метода Собеля. Код представлен в листинге 3.

Листинг 3 – MATLAB-программа фильтрации изображения при

помощи метода Собеля, выделяющего края объектов

clc, clear, close all

I = imread('image.jpg');

if (size(I,3) == 3) I = rgb2gray(I); end I = im2double(I);

S_I = fftshift(fft2(I)); % 2D-БПФ ярк. составляющей % **************************************************

D_up = 45; K=4; deg = 2*K;

[M, N] = size(I); W = zeros([M N]); %пустой массив для W Cn = round(N/2); Cm = round(M/2); % координаты центра

9

%формируем массив 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; % инверсия

% output_image = imbinarize(output_image, 'global'); imshow(output_image)

imwrite(output_image, 'edge_image.jpg');

Рисунок 5 – Результат фильтрации изображения при помощи метода Собеля, выделяющего края объектов: слева исходное изображение, справа –

результат фильтрации

В MATLAB реализованы многие другие алгоритмы, предназначенные для выделения границ объектов, такие как "Prewitt" "Roberts", "log",

"zerocross", "Canny", "approxcanny". Проверил алгоритм "zerocross" в

программе, приведенной в листинге 3, написав это слово вместо метода 'Sobel'.

Получившийся результат представлен на рисунке 6.

10

Соседние файлы в папке LR6