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

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

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


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

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


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

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

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

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

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


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

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

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

3.Код программы(листинг)……………………………………………………………11

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

5.Список литературы…………………………………………………………………..15
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: NumPy, SciPy, Pandas, OpenCV
-встроенные функции преобразований Фурье
-теоретический материал
Выходные данные:
-исходное изображение
-изображение после применения фильтра высоких частот
Реализовать оба способа создания фильтра высоких частот, провести
сравнительный эксперимент, зафиксировать промежуточные результаты.
Сделать вывод по проделанной работе.

Ход работы:

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


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

Получаем изображение, выводим его на экран, проводим первичную обработку,а


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

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


функций):

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


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

На этом частотное преобразование завершено. Промежуточные результаты


выводим на экран.

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


закрыть низкие частоты.
Далее, с помощью ф-ций ifftshift и ifft2 возвращаем нулевую частоту в верхний
левый угол и применяем встроенное обратное двумерное преобразование Фурье.
Затем берем его абсолютное значение.
Результаты выводим на экран.
9
Второй вариант реализации фильтра высоких частот(методом
имплементации встроенных ф-ций, используя теоретические материалы):

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

БПФ будем строить рекурсивно, используя ДПФ. Стоит обратить внимание на то,
что с объединением одиночных элементов сначала в пары, потом в четверки, и так
до полного охвата, второй вариант фильтра будет работать с изображениями с
разрешением, параметры которого будут степенями двойки.
10
Далее реализуем двумерное преобразование Фурье посредством изменения строк
матрицы, используя одномерные БПФ.
Аналогично прошлому варианту реализации фильтра высоких частот, используем
маску размером 60х60, не забываем об использовании имплементированных ф-ций
вместо встроенных. Промежуточные и итоговые результаты выводим на экран.
11
Код программы(листинг)
12
13
14
15
Вывод
В ходе лабораторной работы я изучил теоретические основы преобразований
Фурье и их использование в фильтрации изображений. Конвертировал
математические формулы в код, имплементировал встроенные функции, сравнил
полученные результаты. Они очень похожи из за математической основы
алгоритма, который опуская множество операций, является набором простых
линейных операций. Также приобрел первичные навыки обработки изображений в
среде Python.

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

Оценить