Есть ли метод обнаружения края, который работает значительно лучше, чем Canny Edge Detector?
Метод обнаружения края лучше, чем обнаружение Canny Edge
Ответы (5)
Есть разные виды «ребер», это зависит от вашей задачи. Взгляните на недавнюю статью "Какие края имеют значение?" от ICCV-2013, со сравнением нескольких методов:
- ультраметрическая контурная карта - «Обнаружение контуров и иерархическая сегментация изображений» от P Арбелаес, М. Мэйр, К. Фаулкс и Дж. Малик - лучшие результаты по сравнению с приведенным выше.
- нормализованные разрезы - "Нормализованные разрезы и сегментация изображения" Дж. Ши и Дж. Малик.
- средний сдвиг - «Средний сдвиг: надежный подход к анализу пространства признаков» Д. Команику и П. Меер.
- Подход Felzenszwalb и Huttenlocher - «Эффективная сегментация изображений на основе графов "Авторы: Felzenszwalb и Huttenlocher.
- BiCE - «Бинарные когерентные дескрипторы границ» от CL Zitnick .
- N4-Fields - "N4-Fields: поля ближайшего соседа нейронной сети для преобразования изображения" Ганин и др.
- RDS - «Обучение более расслабленному глубокому контролю для лучшего обнаружения границ» Лю и Лью
- COB - "Сверточно-ориентированные границы" от Maninis et.al.
Надеюсь, это поможет будущему читателю
Active Canny: обнаружение и восстановление границ с помощью открытых моделей активного контура
Вот изображение, показывающее его производительность
Осуществлять это - боль. Я пытаюсь реализовать это с помощью OpenCV и Python
Вот еще один документ, который я нашел.
Анизотропные аэрозольные эйкональные активные контуры на основе краев
Метод обнаружения кромок - один из наиболее часто используемых методов обнаружения кромок. Как сказал old-ufo, нет хорошего или плохого метода обнаружения края.
Я хотел бы представить вам еще два метода обнаружения краев, помимо ответа old-ufo.
Sobel - метод обнаружения краев на изображении может быть выполнено путем определения местоположения пикселей, где градиент выше, чем его соседи.
методы на основе Гаусса - методы обнаружение краев с использованием гауссиана.
Если вы спросите меня, мне очень нравится DoG (разница гауссовского), особенно когда я пытаюсь получить очертания / форму объекта (когда объект шумный) и т. Д. Очень полезно.
Но в целом это действительно основано на том, чего вы пытаетесь достичь. Canny - тоже очень хороший метод обнаружения краев. Поиграйте (:
Термин лучше требует пояснения. Я лично считаю детектор контуров Canny медленным и ... нестабильным по простой причине: он использует набор крайне нелинейных алгоритмов, которые выполняют слишком много сложных операций (сегментация, подавление не-max и т. Д.), Что делает его чрезвычайно нестабильным и чувствительным к шум. Да, он может вытаскивать слабые края, но «мигание» и шум слишком велики, чтобы работать, скажем, с соответствующим приложением. С другой стороны, такая простая операция, как Sobel, является линейной и стабильной, поэтому для сопоставления я бы использовал Sobel, а не Canny. Например, если вас интересует обнаружение текста, вместо краев вы можете использовать связанные компоненты или MSER для извлечения ваших функций. Дело в том, что термин «лучше» сильно зависит от вашего приложения.
И последнее, но не менее важное - неправильно начинать думать о своем проекте с точки зрения алгоритма, но ведь это делается так часто! Подумайте об оперативном определении вашей цели, характеристик, вероятностей и только потом о реализации. «Мы записываем не шаги по решению проблемы, а саму проблему», - красноречиво выразился Саймон Принс. Так что, если у вас есть вопрос о лучшем алгоритме, но вы действительно хотите лучше понять компьютерное зрение, я настоятельно рекомендую вам купить его книга (эта действительно читабельная, хорошо иллюстрированная и мотивирующая, и это лучшее мягкое введение в компьютерное зрение, которое я когда-либо знал). На противоположной стороне спектра находится классическая геометрия множественного просмотра Хартли и Зиссермана, которая является отличным источником формул, но, к сожалению, очень нечитаема.
Целостно вложенное обнаружение краев (HED), использующее глубокое обучение, теперь интегрировано в модуль глубокого обучения OpenCV. Это намного лучше, чем обнаружение Canny on Edge, но немного медленнее. Вот цифра из статьи, которая сравнивает результаты с хитростью. Замечательно, что если вы хотите запустить этот метод в OpenCV сейчас, вы можете сделать это с помощью всего нескольких строк кода. В этом сообщении блога есть более подробная информация: Запуск обнаружения границ на основе глубокого обучения в OpenCV а>