Вы здесь

Пространственные фильтры (основы)

Идея пространственных фильтров очень проста маска размерами mxn перемешаться по изображению и коэффициент маски умножается на значение яркости соответствующего пикселя, сумма произведений называется откликом маски. В дальнейшем рассуждения будут касаться масок нечетных размеров. Для примера выведем формулу отклика маски размером 3x3. Значение отклика маски определяется как f(y,x) = w(-1,-1) * g(y-1,x-1) + w(-1,0) * g(y-1,x) + w(-1,1) * g(y-1,x+1) + w(0,-1) * g(y,x-1) + w(0,0) * g(y,x) + w(0,1) * g(y,x+1) + w(1,-1) * g(y+1,x-1) + w(1,0) * g(y+1,x) + w(1,1) * g(y+1,x+1). В общем случае формула имеет следующий вид Рис.1. Где :a=(m-1)/2; b=(n-1)/2; w(i,j) - i,j коэффициент в фильтре; g(y+i,x+j)- значение яркости входящего изображения в точке y+i, x+j.

Отклик фильтра на маску размером mxn
Рис.1 Отклик фильтра на маску размером mxn.

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

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

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