Обработка изображения бокс-фильтром

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

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

PLANETCALC, Обработка изображения бокс-фильтром

Обработка изображения бокс-фильтром

Исходное изображение
  • Перетащите сюда файлы
Ядро
 
Множитель
 
Исходное изображение
 
Результат
 

Бокс-фильтры

Бокс-фильтры это разновидность фильтров применяемых при обработке изображения. Если описывать бокс-фильтр на бытовом уровне, то его можно описать как вычисление нового значения пикселя на основе значений окружающих его пикселей. Если говорить математически, то каждый фильтр, это частный случай дискретной операции свертки (convolution) двумерной функции по другой двумерной функции.

< f*g > (i,j) = \sum_{l=n_0}^{n_1} \sum_{k=m_0}^{m_1} f(i-l, j-k) \cdot g(l, k)

Если расшифровать формулу выше, то получится, что для того, чтобы вычислить новое значение пикселя с координатами (i, j), берутся все пиксели в некоторой окрестности от i - n0 до i - n1 по горизонтали и от j - m0 до j - m1 по вертикали, значение каждого из них умножается на некоторую функцию g, как правило, константную, результаты умножения суммируются и результат суммирования присваивается пикселю (i, j). Сумма чаще всего нормализуется, например, путем деления на площадь взятой области. Это можно отразить путем введения множителя 1/A перед суммой в формуле выше.

Рассмотрим это на примере самого простого фильтра - усредняющего. Наша задача - усреднить значение пикселя по соседним точкам. В качестве окрестности пикселя берется квадратная область размером 3x3, с центром в самом пикселе. Чтобы усреднить значение пикселя, надо сложить значения всех 9-ти пикселей попадающих в область и нормализовать, поделив на площадь области - 9.

Таким образом, мы можем сказать, что наша функция g является константной:
g=\frac{1}{9}
и записать операцию конволюции следующим образом, вынеся множитель 1/9.

< f*g > (i,j) =\frac{1}{9}\sum_{l=-1}^{1} \sum_{k=-1}^{1} f(i+l, j+k)

Бокс-фильтры обычно записывают в виде матрицы, где саму матрицу называют ядром бокс-фильтра. Для нашего усредняющего фильтра запись будет такой:
\frac{1}{9}\left[\begin{matrix} 1&1&1\\1&1&1\\1&1&1\end{matrix}\right]

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

Ссылка скопирована в буфер обмена
PLANETCALC, Обработка изображения бокс-фильтром

Комментарии