OpenCV Sobel Обнаружение края для диагонали (вверх-вправо на 45 градусов, вверх на 135 градусов) - PullRequest
4 голосов
/ 26 мая 2011

У меня проблема с детектором кромок opencv Sobel. Судя по документации, он работает только для горизонтального и вертикального краев (с указанием 0,1 или 1,0). У кого-нибудь есть идеи, как получить диагональные ребра 45deg и 135deg с помощью cvSobel (, а не методов Canny ). У Matlab есть подушка с опцией edge (I, 'sobel' ...), но мой код полностью написан на c ++, и я хотел бы сохранить его в таком виде.

Спасибо за предложения и решения.

Ответы [ 2 ]

5 голосов
/ 27 мая 2011

Hei. Обычно вы можете рассчитать любой фильтр в любом направлении следующим образом:

  1. resX = Рассчитать результат по направлению X
  2. resY = Вычислить результат по направлению Y
  3. Выберите нужное направление (угол альфа) * ​​1008 *
  4. Желаемый результат: sqrt ((Y * sin (alpha)) ^ 2 + (X * cos (alpha)) ^ 2)

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

0 голосов
/ 20 декабря 2012

Он обнаруживает диагонали. Вы просто запускаете это дважды. Точка, которая является горизонтальной и вертикальной, по определению является диагональной.

...