Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR6 / Z9411_КафкаРС_ММТ_ЛР6.docx
Скачиваний:
2
Добавлен:
18.06.2024
Размер:
1.94 Mб
Скачать
  1. Выполнили фильтрацию изображения усовершенствованным способом реализации метода Фурье-фильтрации. Код представлен в листинге 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-БПФ ярк. составляющей

% **************************************************

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.

а)

б)

в)

г)

Рисунок 4 – Результат усовершенствованного способа Фурье-фильтрации изображения (см. программу на листинге 2): а)

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

  1. Выполнили фильтрацию изображения при помощи метода Собеля. Код представлен в листинге 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); % координаты центра

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

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

ВЫВОД

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

Основа метода двумерного преобразования Фурье – преобразование изображения из пространственного представления в частотное, позволяющее анализировать частотные составляющие и модифицировать их для достижения желаемого результата. Использование функции fftshift для центрирования спектра облегчает работу с частотными компонентами, позволяя более эффективно применять фильтры высоких и низких частот.

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

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

Свойства Полученных Результатов:

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

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

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

Оптимальный выбор параметров фильтра, таких как частота среза, оказал существенное влияние на результаты. Эксперименты с различными значениями позволили определить наилучшие настройки для конкретных задач обработки.

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

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