Канни оператор матрица в MATLAB: как реализовать / получить?(просто фильтр, без детектора краев) - PullRequest
0 голосов
/ 16 марта 2012

Я делаю проект, используя MATLAB (2011), который дает пользователю возможность фильтровать серое изображение (с сверткой, но без поиска краев). Я знаю, что для ребер есть функция [ребро], и я знаю, что для некоторых операторов (например, sobel) вы можете использовать [fspecial] для получения матрицы.

Я нашел матрицу (или более одного), соответствующую каждому нужному оператору: Собел, Робертс, Робинсон, Лапласиан и т. Д. *

Тогда я применяю фильтр таким образом:

Result_image = conv2(Original_image, matrix_filter);

Но я не могу найти один для оператора Canny ...

Я читал, что canny реализуется в различных вариациях, начиная с применения оператора Лапласа ... но тогда? Каковы следующие шаги? А как мне заставить матрицу подать заявку на изображение?

Я ищу матрицу, или способ ее получения, или хотя бы один пример, чтобы понять "многошаговую процедуру".

Я нашел страницу, рассказывающую о шагах, чтобы получить реализацию граничного оператора. Какие шаги для простой фильтрации? (производная X, производная Y, градиент, не максимальное подавление, гистерезис). Страница Детектор краев Канни (Микел Родригез).

1 Ответ

1 голос
/ 17 января 2014

Как вы указали, Canny Edge Detector - это алгоритм , а не фильтр .Это означает, что у вас нет возможности использовать фильтр «Canny».

Давайте посмотрим, как работает алгоритм ( Википедия или Реализация OpenCV ):

  1. Гауссова фильтрация (с использованием гауссовского фильтра)
  2. Градиент изображения (с использованием какого-либо другого краевого фильтра, например, фильтра Собеля)
  3. Не максимальное подавление (фильтр не используется)
  4. Определение порога (фильтр не задействован)

Как видите, Canny filter нигде нет, поэтому я боюсь, что вы не можете получить такой фильтр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...