zabika.ru 1

1. Введение. Гауссов фильтр и его применения к сглаживанию цифровых сигналов. Проблема быстродействия на больших данных.


2. Различные реализации Гауссова фильтра.

3. Методы параллелизации OpenCL - использование OpenCL для реализации гауссова фильтра. 

4. Сравнительный анализ: условия тестирования, результаты, выводы.

Приложения. Исходный код, инструкции пользователя.


Введение

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

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

Размытие изображений играет большую роль в современных областях компьютерной графики. Размытие изображений часто бывает направлено на имитацию близорукости (в тех случаях, когда близорукость становится желательной или даже необходимой). Так, размытие отдельных частей изображения часто используют из соображений цензуры. В ряде случаев размытие является неотъемлемой частью различных техник коррекции изображения, направленных на устранение специфических дефектов (излишняя детализация, дефекты сканирования, царапины, пыль). Известно, что фотомодели и их фотографы используют специальные процедуры размытия фотографических изображений для достижения эффекта устранения морщин. Размытые изображения также лучше поддаются сжатию (так, при сохранении в формате JPEG графический файл имеет меньший размер, а также менее выраженные артефакты компрессии). Различные техники размытия изображения доступны во всех современных графических редакторах. Одним из наиболее важных алгоритмов размытия изображений является т. н. размытие по Гауссу.


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

Побольше про обработку сигналов и ресемплинг

Фильтры

Цифровой фильтр — любой фильтр, обрабатывающий цифровой сигнал с целью выделения и/или подавления определённых частот этого сигнала. В отличие от цифрового, аналоговый фильтр имеет дело с аналоговым сигналом, его свойства не дискретны, соответственно передаточная функция зависит от внутренних свойств составляющих его элементов. Особую роль среди цифровых фильтров играют фильтры нижних частот (ФНЧ). ФНЧ –фильтр, эффективно пропускающий частотный спектр сигнала ниже некоторой частоты (частоты среза), и уменьшающий (или подавляющий) частоты сигнала выше этой частоты. Степень подавления каждой частоты зависит от вида фильтра. Широко применяется как аппаратная (на основе специализированных микросхем или FPGA), так и программная (на базе процессоров общего назначения или сигнальных процессоров) реализация фильтров нижних частот. Мы же будем рассматривать различные варианты программной реализации одного из ФНЧ - фильтра Гаусса.

Фильтр Гаусса

В электронике и обработке сигналов, фильтром Гаусса называют фильтр, чья импульсная характеристика является функцией Гаусса. Импульсная характеристика - выходной сигнал динамической системы как реакция на входной сигнал, то есть наши данные (импульс). Гауссов фильтр спроектирован таким образом, чтобы свести к минимуму отклонения от входных данных переходной функции, реакцию системы на входное ступенчатое воздействие при нулевых начальных условиях во время нарастания и спада. 


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


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



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

Базовый случай фильтра Гаусса

Гауссова функция. - надо ли?

Импульсная характеристика одномерного фильтра Гаусса может быть представлена в виде



А со среднеквадратичным отклонением



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



где x -  расстояние от центра по горизонтальной оси, y - расстояние от центра по вертикальной оси, σ- среднеквадратичное отклонение распределения гаусса.

 Рассмотрим более общий случай. Результирующая формула будет иметь следующий вид для n-мерного случая:



Однако для реализации данное определение может быть нецелесообразным в виду непрерывности. Поэтому в дальнейшем можем сделать некоторые упрощения.

Так как гауссовское ядро обладает свойствами отделимости 



то n-мерная операция свёртки может быть разбита на множество одномерных применений гауссова ядра для каждого измерения:


где



и где t является корнем дисперсии и равно σ2.  Свойство отделимости на практике имеет большое значение, так как позволяет упростить вычисления и привести их к одномерному случаю. Далее будем рассматривать именно его.

Для реализации одномерного шага сглаживания наиболее простым способом является операция свёртки  дискретного сигнала и гауссового ядра:



где



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



для M выбрано достаточно большим, что

.

Общий выбор выбора M заключается в создании зависимости её от дисперсии, к примеру:



где С зачастую выбирается где-то между 3 и 6.

Использование заданного гауссова ядра может привести к проблемам точности в случаях, когда важны точность и надёжность. При незначительной роли погрешности при вычислениях (10 - 6 до 10 - 8) , ошибки вносимые ограничением ядра незначительны. Однако если точность важна, то есть более лучшие альтернативы гауссову ядру как оконной функции, к примеру оконные функции Хэмминга, Блэкмана Кайзера будут меньше изменять спектр, чем это сделает ядро гаусса. А так как функция Гаусса быстро убывает на концах, то рассматривание значений на epsilon больше 10 - 8 не является целесообразным.


Применение фильтра гаусса с помощью преобразования фурье

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

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



Эта новая функция описывает коэффициенты («амплитуды») при разложении исходной функции на элементарные составляющие — гармонические колебания с разными частотами.

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


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



  1. Теорема о свёртке. Свёртка функций — операция, показывающая «схожесть» одной функции с отражённой и сдвинутой копией другой. Пусть   — две функции вещественной переменной, интегрируемые относительно меры Лебега. Тогда их свёрткой называется функция



Тогда теорема о свёртке гласит: если , тогда



Так как мы работаем с изображениями, то представим перечисленные выше высказывания в дискретном виде. Прямое преобразование примет вид:


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




Теорема о свёртке:

НАПИСАТь!

Таким образом мы можем выполнть частотную фильтрацию изображения в частотной области. Это означает, что при частотной фильтрации выполняются прямое и обратное пространственно-частотное преобразование, в нашем случае двумерное дискретное преобразование Фурье (ДПФ) преобразует изображение, заданное в пространственной координатной системе (x, y) , в двумерное дискретное преобразование изображения, заданное в частотной координатной системе (u, v). В соответствии с теоремой о свертке, свертка двух функций в пространственной области может быть получена ОДПФ произведения их ДПФ.

Таким образом, горитм фильтрации по Гауссу в частотной области будет выглядеть следующим образом:


  • выполнить двумерное ДПФ входного изображения f(x,y) (подвергаемого фильтрации) размером (NxM), получить F(u,v);

  • вычислить передаточную характеристику фильтра Гаусса в частотной области



H(u, v) = exp(−r2(u, v) /(2 *σ 2 ))
размер матрицы (N*M); выполнить децентрирование характеристики

H(u,v);

  • выполнить поточечное умножение

S(u,v) = F(u,vH(u,v) ∀(u∈[0,N −1],v∈[0,M −1]).

  • выполнить ОДФП

На практике ДПФ крайне не эффективно, так как имеет сложность O(N2), поэтому обычно применяют быстрое преобразование Фурье (БПФ).

Описание БФП, вывод нужен?

Быстрое преобразование Фурье

Алгоритм быстрого преобразования Фурье (БПФ) - это оптимизированный по скорости способ вычисления ДПФ. Основная идея заключается в двух пунктах.


  1. Необходимо разделить сумму (1) из N слагаемых на две суммы по N/2 слагаемых, и вычислить их по отдельности. Для вычисления каждой из подсумм, надо их тоже разделить на две и т.д.

  2. Необходимо повторно использовать уже вычисленные слагаемые.

Применяют либо "прореживание по времени" (когда в первую сумму попадают слагаемые с четными номерами, а во вторую - с нечетными), либо "прореживание по частоте" (когда в первую сумму попадают первые N/2 слагаемых, а во вторую - остальные). Оба варианта равноценны. В силу специфики алгоритма приходится применять только N, являющиеся степенями 2. Рассмотрим случай прореживания по времени.

Введём определение поворачивающегося множителя:



Определим еще две последовательности: {x[even]} и {x[odd]} через последовательность {x} следующим образом:

X[even]n = X2n
X[odd]n = X2n+1,     (6) 


n = 0, 1,..., N/2-1

Пусть к этим последовательностям применены ДПФ и получены результаты в виде двух новых последовательностей {X[even]} и {X[odd]} по N/2 элементов в каждой.

Утверждается, что элементы последовательности {X} можно выразить через элементы последовательностей {X[even]} и{X[odd]} по формуле:

    (7).

Согласно второй части формулы (7), получим:

 

ДПФ можно вычислить также по формуле:


Также по этой теореме видно, что отпадает необходимость хранить вычисленные X[even]k и X[odd]k после использования при вычислении очередной пары и одно вычисление  можно использовать для вычисления двух элементов последовательности {X}.

На этом шаге будет выполнено N/2 умножений комплексных чисел. Если мы применим ту же схему для вычисления последовательностей  {X[even]} и {X[odd]}, то каждая из них потребует N/4 умножений, итого еще N/2. Продолжая далее в том же духе log2N раз, дойдем до сумм, состоящих всего из одного слагаемого, так что общее количество умножений окажется равно (N/2)log2N, что явно лучше, чем N2 умножений по формуле (2).

Рекурсивный фильтр Гаусса

Методы параллелизации. OpenCL

рукурсивный фильтр и оценка точности

OpenCL