Применить фильтр к фрагменту изображения

Есть фрагмент изображения A = [7 8 4; 8 6 3; 8 5 1], покажите результат применения другого фильтра.

  1. применить средний фильтр 3 * 3
  2. применить лапласианский фильтр 3*3
  3. применить фильтр Собеля 3 * 3, измеряющий градиент в горизонтальном направлении

И ниже мой вопрос:

  1. сумма 9 пикселей равна 50, 50 / 9 = 5, поэтому результат центрального пикселя должен быть 5. Но как насчет пикселей вокруг центра?
  2. В соответствии с функцией легко получить значение центрального пикселя, равное 8 + 5 + 8 + 3 - 4 * 6 = 0, но как насчет пикселей вокруг центра? Могу ли я просто скопировать исходное значение, потому что я думаю, что это просто фрагмент изображения.
  3. Согласно операторам Собеля, Gx = [-1 0 1; -2 0 2; -1 0 1], для вычисления результата мне нужно вычислить Gx * A. Но я перепутал умножение. Это традиционное умножение матрицы? Я не знаю, как выполнить этот шаг.

person 1ang    schedule 04.01.2016    source источник
comment
В этих техниках нет центра. Они вычисляют значение пикселя в определенном месте с рамкой вокруг него. т.е. только для центрального пикселя. Таким образом, пиксели вне центра будут вычислены более поздним (или более ранним) вычислением, где этот конкретный пиксель является центром вычисления.   -  person Adriaan    schedule 04.01.2016


Ответы (1)


Все это свертки изображения с заданным фильтром. Все ваши вопросы касаются обработки краев фрагмента изображения при выполнении этой свертки.

Что касается конкретно MATLAB (как предполагает ваш тег), если вы используете встроенную функцию conv2(), MATLAB обрабатывает любую область, где изображение и фильтр не перекрываются, как 0. Итак, ваш фрагмент изображения дополнен 0.

person RyanL    schedule 04.01.2016