Нам Нужно Больше Разных Размытий

Размытие изображения с помощью фильтра «Размытие по Гауссу» широко применяется в самых разных задачах.

Но иногда хочется немного большего разнообразия, чем один фильтр на все случаи жизни, в котором можно регулировать только один параметр – его размер.

В этой статье мы рассмотрим несколько других реализаций размытия.



Нам нужно больше разных размытий



Введение

Эффект «Размытие по Гауссу» представляет собой линейную операцию и математически представляет собой свертку изображения с матрицей фильтра.

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

Фильтр называется гауссовским, потому что он построен на основе функции, известной как гауссова,

Нам нужно больше разных размытий

:

Нам нужно больше разных размытий

двумерная версия которого получается вращением ее вокруг оси ординат,

Нам нужно больше разных размытий

:

Нам нужно больше разных размытий

Здесь для каждой пары координат

Нам нужно больше разных размытий

Расстояние до центра рассчитывается по формуле

Нам нужно больше разных размытий

, который передается в качестве аргумента функции Гаусса - и, как легко видеть,

Нам нужно больше разных размытий

уменьшено до

Нам нужно больше разных размытий

.

Матрица, построенная на сегменте

Нам нужно больше разных размытий

и при некотором уровне выборки это будет выглядеть так:

Нам нужно больше разных размытий

Или, если считать значения элементов матрицы уровнем яркости, вот так:

Нам нужно больше разных размытий

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

Первоначально гауссиан определяется на бесконечном интервале.

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

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

Нам нужно больше разных размытий

(читается как «сигма») — рассматривать аргумент в диапазоне

Нам нужно больше разных размытий

, А

Нам нужно больше разных размытий

определяет степень сжатия гауссиана:

Нам нужно больше разных размытий

Нормализующий делитель

Нам нужно больше разных размытий

здесь получено аналитически через определенный интеграл на бесконечности:

Нам нужно больше разных размытий

Ввиду того, что равенство выполняется

Нам нужно больше разных размытий

, размытие по Гауссу можно реализовать последовательно сначала по строкам, а затем по столбцам — что позволяет довольно сильно сэкономить на вычислениях.

В этом случае необходимо использовать формулу с нормировкой для одномерного случая –

Нам нужно больше разных размытий



Начинать

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

Нам нужно больше разных размытий

, из которого функция двух переменных получается вращением путем замены

Нам нужно больше разных размытий

на

Нам нужно больше разных размытий

, Где

Нам нужно больше разных размытий

И

Нам нужно больше разных размытий

это координаты матричного элемента в диапазоне

Нам нужно больше разных размытий

, и который затем используется для заполнения элементов матрицы.

Будем рассматривать нормализацию не аналитически, а как прямое суммирование всех элементов матрицы – это и проще, и точнее – так как после дискретизации функция оказывается «прореженной», и значение нормализации будет зависеть от уровень дискретности.

Если элементы матрицы нумеруются с нуля, координата

Нам нужно больше разных размытий

или

Нам нужно больше разных размытий

рассчитывается по формуле

Нам нужно больше разных размытий

Где

Нам нужно больше разных размытий

— порядковый номер элемента в строке или столбце, а

Нам нужно больше разных размытий

— общее количество элементов.

Например, для матрицы 5 на 5 это будет выглядеть так:

Нам нужно больше разных размытий

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

Нам нужно больше разных размытий

и матрица соответственно примет вид

Нам нужно больше разных размытий

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

Например, если у нас есть матрица

Нам нужно больше разных размытий

то сумма всех его элементов будет равна 40 и после нормализации примет вид

Нам нужно больше разных размытий

и сумма всех его элементов становится 1.

Линейное затухание

Для начала возьмем самую простую функцию — строку:

Нам нужно больше разных размытий



Нам нужно больше разных размытий

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

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

В результате мы получаем:

Нам нужно больше разных размытий



Мягкий линейный затухание

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

Устранить ее нам поможет функция

Нам нужно больше разных размытий

в которой

Нам нужно больше разных размытий

определяет «жесткость» стыковки,

Нам нужно больше разных размытий

.

Например,

Нам нужно больше разных размытий

мы получаем

Нам нужно больше разных размытий



Нам нужно больше разных размытий

и сам фильтр будет выглядеть так

Нам нужно больше разных размытий



Гиперболическое демпфирование

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



Нам нужно больше разных размытий

После всех вычислений и упрощений получаем формулу

Нам нужно больше разных размытий

в котором параметр

Нам нужно больше разных размытий

определяет характер затухания:

Нам нужно больше разных размытий

а сам фильтр будет выглядеть так (для

Нам нужно больше разных размытий

) Как

Нам нужно больше разных размытий



Имитировать эффект боке

Можно пойти другим путем – сделать верх фильтра не острым, а тупым.

Самый простой способ реализовать это — определить функцию демпфирования как константу:

Нам нужно больше разных размытий



Нам нужно больше разных размытий

Но в этом случае мы получаем сильную пикселизацию, которая контрастирует с ощущением красоты.

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

Нам нужно больше разных размытий

Изменение параметра

Нам нужно больше разных размытий

, вы можете получить широкий спектр параметров фильтра:

Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий

А немного видоизменив функцию затухания можно сделать кольца по краям фильтра более выраженными, например так:

Нам нужно больше разных размытий

Вот параметр

Нам нужно больше разных размытий

определяет высоту центра, а

Нам нужно больше разных размытий

— резкость перехода к краям.

Для

Нам нужно больше разных размытий

мы получаем

Нам нужно больше разных размытий

и для

Нам нужно больше разных размытий



Нам нужно больше разных размытий



Вариации гауссова

Вы также можете изменить саму функцию Гаусса.

Самый очевидный способ сделать это — параметризовать показатель степени — мы его сейчас рассматривать не будем, а возьмем более интересный вариант:

Нам нужно больше разных размытий

В связи с тем, что когда

Нам нужно больше разных размытий

знаменатель стремящийся к единице

Нам нужно больше разных размытий

стремится к нулю, дробь

Нам нужно больше разных размытий

стремится к минус бесконечности, да и сама экспонента также стремится к нулю.

Таким образом, деление на

Нам нужно больше разных размытий

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

Нам нужно больше разных размытий

до

Нам нужно больше разных размытий

.

В то же время с

Нам нужно больше разных размытий

из-за деления на ноль (

Нам нужно больше разных размытий

) значение функции не определено, но имеет два предела — предел с одной стороны (изнутри) равен нулю, а с другой стороны равен бесконечности:

Нам нужно больше разных размытий



Нам нужно больше разных размытий

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

Интересно, что это свойство распространяется на все производные этой функции, что обеспечивает идеальную стыковку с нулем.

Параметр

Нам нужно больше разных размытий

определяет сходство с гауссовой - чем оно больше, тем сильнее сходство - за счет того, что чем больше и линейнее участок

Нам нужно больше разных размытий

находиться в центре функции.

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



Нам нужно больше разных размытий

Теперь вы можете увидеть, что произошло:

Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Вариации формы

Изменив функцию перехода от двух координат к одной

Нам нужно больше разных размытий

, вы можете получить и другие формы, а не только диск.

Например:

Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий

Перейдя к комплексным числам, можно строить более сложные фигуры:

Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий

В этом случае нужно следить за тем, чтобы при преобразовании координат вы не выходили за интервал

Нам нужно больше разных размытий

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



Некоторые конкретные примеры

Статья была бы не полной без практического тестирования на конкретных изображениях.

Поскольку наша работа не является научной, изображение Лена Не возьмем, а возьмем что-нибудь мягкое и пушистое:

Нам нужно больше разных размытий

Гауссовский

Нам нужно больше разных размытий



Нам нужно больше разных размытий

Гиперболическое демпфирование

Нам нужно больше разных размытий



Нам нужно больше разных размытий

Крест

Нам нужно больше разных размытий



Нам нужно больше разных размытий

Кольцо

Нам нужно больше разных размытий



Нам нужно больше разных размытий

Одностороннее затухание

Нам нужно больше разных размытий



Нам нужно больше разных размытий

Те же фильтры, но для текста:

Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий



Нам нужно больше разных размытий

Теги: #математика #Обработка изображений #Wolfram Mathematica #blur #blur #размытие по Гауссу

Вместе с данным постом часто просматривают: