- •Санкт-Петербург 2024
- •Краткие теоретические сведения о задачах обработки изображений и их практическом применении, а также об изученных методах фильтрации.
- •Ход работы:
- •Выполнили фильтрацию тестового изображение с целью выделения краев объектов при помощи алгоритмов, реализованных в программах, приведенных в листинге 1.
- •Выполнили фильтрацию изображения усовершенствованным способом реализации метода Фурье-фильтрации. Код представлен в листинге 2.
- •Выполнили фильтрацию изображения при помощи метода Собеля. Код представлен в листинге 3.
- •Список используемых источников
Выполнили фильтрацию изображения усовершенствованным способом реализации метода Фурье-фильтрации. Код представлен в листинге 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): а)
исходное изображение, б) результат фильтрации, в) результат фильтрации с улучшенным качеством, г) амплитудный спектр
Выполнили фильтрацию изображения при помощи метода Собеля. Код представлен в листинге 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 для центрирования спектра облегчает работу с частотными компонентами, позволяя более эффективно применять фильтры высоких и низких частот.
Фильтр высоких частот (ФВЧ) помогает подчеркнуть детали и края объектов, делая их более заметными и улучшая контрастность границ.Фильтр нижних частот (ФНЧ) сглаживает изображение, уменьшая детализацию и шум, что особенно полезно для улучшения визуальной чистоты изображений.
Инверсия изображения улучшает визуальное восприятие границ и контрастов, особенно полезно в задачах компьютерного зрения для выделения важных объектов.
Свойства Полученных Результатов:
Применение фильтра высоких частот значительно улучшило видимость краев, что критически важно для приложений, требующих точного распознавания форм и контуров объектов.
Фильтр нижних частот эффективно уменьшил визуальный шум на изображениях, что делает его идеальным для предварительной обработки в медицинских приложениях и других задачах анализа изображений.
Наблюдалось появление артефактов, таких как "звон" около резких переходов, связанный с использованием резких фильтров. Для минимизации этих артефактов было полезно применять более плавные переходы в функциях фильтрации, как предложено в листингах с использованием фильтров Баттерворта.
Оптимальный выбор параметров фильтра, таких как частота среза, оказал существенное влияние на результаты. Эксперименты с различными значениями позволили определить наилучшие настройки для конкретных задач обработки.
Заключительно, лабораторная работа дала мне ценные знания и опыт работы с фундаментальными техниками обработки изображений, которые могут быть применены в различных реальных сценариях, от улучшения качества фотографий до сложных промышленных и научных приложений.

б)
в)
г)