Вы находитесь на странице: 1из 18

МИНОБРНАУКИ РОССИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ


ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
(ФГБОУ ВО «ВГУ»)

Факультет прикладной математики, информатики и механики


Кафедра математических методов исследования операций

Отчёт
по лабораторной работе на тему:
«Реализация фильтров высоких частот»

Направление 01.03.02 – Прикладная математика и информатика

Обучающийся 3к. 7 гр. Арсёнов Д.Н.

Преподаватель кандидат физико-математических наук,


доцент Медведев С.Н.

Воронеж 2020
2
Оглавление
1.Теоретическая часть…………………………………………………………………3

2.Практическая часть………………………………………………………………….7
● Постановка задачи…………………………………………………………...7
● Ход работы……………………………………………………………………7

4.Вывод…………………………………………………………………………………17

5.Список литературы…………………………………………………………………..17
3
Теоретическая часть
Линейная фильтрация изображений может осуществляться как в
пространственной, так и в частотной области. При этом считается, что "низким"
пространственным частотам соответствует основное содержание изображения -
фон и крупноразмерные объекты, а "высоким" пространственным частотам -
мелкоразмерные объекты, мелкие детали крупных форм и шумовая компонента.
Традиционно для перехода в область пространственных частот используются
методы, основанные на преобразовании Фурье. В последние годы все большее
применение находят также методы, основанные на вейвлет-
преобразовании (wavelet-transform).

Преобразование Фурье позволяет представить практически любую функцию или


набор данных в виде комбинации таких тригонометрических функций, как синус и
косинус, что позволяет выявить периодические компоненты в данных и оценить
их вклад в структуру исходных данных или форму функции. Традиционно
различаются три основные формы преобразования Фурье: интегральное
преобразование Фурье, ряды Фурье и дискретное преобразование Фурье.
Интегральное преобразование Фурье переводит вещественную функцию в пару
вещественных функций или одну комплексную функцию в другую.
Вещественную функцию f(x) можно разложить по ортогональной системе
тригонометрических функций, то есть представить в виде:

где A(ω)и B(ω) называются интегральными косинус- и синус-преобразованиями:

Ряд Фурье представляет периодическую функцию f(x), заданную на


интервале [a,b], в виде бесконечного ряда по синусам и косинусам. То есть
периодической функции f(x) ставится в соответствие бесконечная
4
последовательность коэффициентов Фурье

где

Кроме тригонометрической формы записи дискретного преобразования Фурье


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

Если входная последовательность представляет собой N комплексных чисел, то ее


дискретное преобразование Фурье будет иметь вид

а обратное преобразование

Если входная последовательность представляет собой массив вещественных


чисел, то для нее существует как комплексное, так и синусно-косинусное
дискретное преобразование. Взаимосвязь этих представлений выражается
следующим образом:
5
остальные N/2 значений преобразования являются комплексно сопряженными и не
несут дополнительной информации. Поэтому график спектра мощности
дискретного преобразования Фурье симметричен относительно N/2.
Быстрое преобразование Фурье
Простейший способ вычисления дискретного преобразования Фурье (ДПФ) -
прямое суммирование, оно приводит к N операциям на каждый коэффициент.
Всего коэффициентов N, так что общая сложность O(N2). Такой подход не
представляет практического интереса, так как существуют гораздо более
эффективные способы вычисления ДПФ, называемые быстрым преобразованием
Фурье (БПФ), имеющее сложность O(NlogN). БПФ применяется только к
последовательностям, имеющим длину (число элементов), кратную степени 2.
Наиболее общий принцип, заложенный в алгоритм БПФ, заключается в разбиении
входной последовательности на две последовательности половинной длины.
Первая последовательность заполняется данными с четными номерами, а вторая -
с нечетными. Это дает возможность вычисления коэффициентов ДПФ через два
преобразования размерностью N/2.

Обозначим

тогда

Для m<N/2 тогда можно записать

Учитывая, что элементы ДПФ с индексом большим, чем N/2, являются комплексно
сопряженными к элементам с индексами меньшими N/2, можно записать

Таким образом, можно вычислить БПФ длиной N, используя два ДПФ длиной N/2.
Полный алгоритм БПФ заключается в рекурсивном выполнении вышеописанной
процедуры, начиная с объединения одиночных элементов в пары, затем в четверки
и так до полного охвата исходного массива данных.
6

Двумерное преобразование Фурье


Дискретное преобразование Фурье для двумерного массива чисел размера M×N
определяется следующим образом:

а обратное преобразование

В случае обработки изображений компоненты двумерного преобразования Фурье


называют пространственными частотами.

Важным свойством двумерного преобразования Фурье является возможность его


вычисления с использованием процедуры одномерного БПФ:

Здесь выражение в квадратных скобках есть одномерное преобразование строки


матрицы данных, которое может быть выполнено с одномерным БПФ. Таким
образом, для получения двумерного преобразования Фурье нужно сначала
вычислить одномерные преобразования строк, записать результаты в исходную
матрицу и вычислить одномерные преобразования для столбцов полученной
матрицы. При вычислении двумерного преобразования Фурье низкие частоты
будут сосредоточены в углах матрицы, что не очень удобно для дальнейшей
обработки полученной информации. Для перевода получения представления
двумерного преобразования Фурье, в котором низкие частоты сосредоточены в
центре матрицы, можно выполнить простую процедуру, заключающуюся в
умножении исходных данных на
7
Практическая часть
Постановка задачи:
Необходимо реализовать фильтр высоких частот двумя способами:
1)используя встроенные функции языка программирования Python,
2)имплементированием кода встроенных функций, используя теоретические
знания о преобразованиях Фурье.
Входные данные:
-изображение в формате JPEG
Выходные данные:
-изображения после применения фильтра высоких частот, реализованных двумя
способами.
Реализовать оба способа создания фильтра высоких частот, провести
сравнительный эксперимент, зафиксировать промежуточные результаты.
Сделать вывод по проделанной работе.

Ход работы:

В качестве средства разработки использовался язык Python, поддержка которого


реализована в IDE Jupyter Notebook (Python 3.6). Средства Python 3.6, в их числе
библиотеки NumPy, SciPy, Pandas, OpenCV, необходимы для первичной подготовки
изображения, а также для одной из реализаций фильтра высоких частот.

Подключаем необходимые библиотеки и инструменты:


8
Получаем изображение, выводим его на экран, проводим первичную обработку,а
именно меняем цветовую карту, делая изображение черно-белым. Выводим
промежуточные результаты на экран.

Получаем черно-белое изображение, готовое к работе.

Первый вариант фильтра высоких частот(с использованием встроенных


функций):

Делаем двумерное преобразование с помощью функции fft2, которое является


массивом комплексных чисел.

С помощью ф-ции fftshift выравниваем нулевую частоту по центру.

Так как у нас комплексный массив, главная проблема в том, что, чтобы посчитать
такую сумму N элементов,
надо совершить N^2 операций с комплексными числами. Но есть алгоритм,
открытый еще самим Гауссом, который позволяет нам сократить
время вычислений. Используем его и получаем спектр изображения:
9
Черно-белое изоображение и его спектр выводим на экран.

В качестве фильтра выбираем прямоугольную маску с размерами 60х60. Для этого


делим длину и ширину изображения на 2, создаем маску с заданными размерами и
закрываем низкие частоты.

Далее, с помощью ф-ции ifftshift применяем обратный сдвиг, тем самым


возвращаем нулевую частоту в левый верхний угол.

С помощью ф-ции ifft2 применяем встроенное обратное двумерное


преобразование Фурье. Затем берем его абсолютное значение(действительное).

Результаты выводим на экран.


10

Наблюдаем изменение изображения. Остались только ярко выраженные границы


изображения. При использовании маски 20х20 появляется больше мелких границ
изображение становится детальнее.

При использовании маски 100х100 наоборот ухудшается детализация изображения


остается все меньше границ.
11

Второй вариант реализации фильтра высоких частот(методом


имплементации встроенных ф-ций, используя теоретические материалы):

Для того, чтобы реализовать двумерное быстрое преобразование Фурье, нам будет
необходимо начать с самого начального, а именно дискретного преобразования
Фурье и обратного ему.

Напишем обычное ДПФ и обратное ему:


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

Чтобы сделать обратное двумерное БПФ, нужно сначала реализовать обратное


двумерное ДПФ, используя обратные одномерные ДПФ. Затем реализуем обратное
двумерное БПФ:

Применяем реализованный метод двумерного БПФ к черно-белому изображению,


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

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


маску размером 60х60, не забываем об использовании имплементированных ф-ций
вместо встроенных. Промежуточные и итоговые результаты выводим на экран.
15
При использовании маски 20х20:

При использовании маски 100х100:

Теперь сравниваем результаты работы встроенных ф-ций и написанных вручную:

При использовании маски 60х60:

с помощью встроенных ф-ций с помощью написанных вручную


16
При использовании маски 20х20:

с помощью встроенных ф-ций с помощью написанных вручную

При использовании маски 100х100:

с помощью встроенных ф-ций с помощью написанных вручную

Судя по изображениям, можно сделать вывод, что ф-ции, написанные вручную с


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

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

Список литературы
1.Кэмпбелл, М. Компьютерная графика / М. Кэмпбелл. - М.: АСТ, 2014. - 714 c.
2. Гонсалес Р. Цифровая обработка изображений / Р. Гонсалес, Р. Вудс. - М.:
Техносфера, 2005. - 1072 с.
3. Хейфец, А. Л. Инженерная компьютерная графика. AutoCAD / А.Л. Хейфец. -
М.: Диалог-Мифи, 2015. - 432 c.
4. Роджерс Д., Адамс Дж. Математические основы компьютерной графики. М.:
Машиностроение, 1980.
5. Майкл Ласло. Вычислительная геометрия и компьютерная графика на С++. /М.:
БИНОМ, 1997.

Вам также может понравиться