@slavavicharev

Как использовать матрицу 5х5, 7х7, ... в фильтрации Собеля?

Добрый день!
Не могу понять откуда берутся коэффициенты в матрицах:
www.cim.mcgill.ca/~image529/TA529/Image529_99/assi...
объясните пожалуйста.
И как расширить матрицу до размера 7х7 9х9 и тд?
  • Вопрос задан
  • 3978 просмотров
Решения вопроса 1
@Eddy_Em
В википедии же прекрасно расписано: оператор Собеля — обычный градиент с весовыми коэффициентами. Получается сверткой двух матриц: градиента в нужном направлении (скажем, [-1/2 0 1/2] — Dx_{x,y} = (M_{x+1,y} - M_{x-1,y})/2) и весовых коэффициентов (скажем, [1; 2; 1]/4 = [1/4;1/2;1/4]) → [-1/8 0 1/8; -1/4 0 1/4; -1/8 0 1/8]. Естественно, строгого градиента здесь нет — вы вольны выбирать какие угодно весовые коэффициенты.
Можно и расширить матрицу градиента. Если мы возьмем ядро 5x1, получим: Dx_{x,y} = [(M_{x+1,y} - M_{x-1,y})/2) + (M_{x+2,y} - M_{x-2,y})/4)]/2 → [-1/8 -1/4 0 1/4 1/8]. Весами можем взять, например, матрицу [1;2;4;2;1].
Аналогично для матриц 7x7, 9x9 и больше.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Это называется ядром свертки. https://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D1%91%D...

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

Вообще оператор собеля, насколько я помню, использует ядра только 3x3.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы