Я узнал о ряде алгоритмов обнаружения краев, включая такие алгоритмы, как методы Собеля, Лапласа и Канни. Мне кажется, самый популярный детектор контуров - детектор контуров Canny, но есть ли случаи, когда этот алгоритм не является оптимальным для использования? Как я могу решить, какой алгоритм использовать? Благодарность!
algorithms
image-processing
edge-detection
PearsonArtPhoto
источник
источник
Ответы:
Существует множество возможностей обнаружения краев, но три упомянутых вами примера попадают в 3 различные категории.
Собела
Это приближает производную первого порядка. Дает экстремумы в положениях градиента, 0, где градиента нет. В 1D это =[ - 101]
Есть другие альтернативы Собелу, которые имеют +/- те же характеристики. На странице Робертс Кросс в Википедии вы можете найти сравнение некоторых из них.
Лаплас
Это приближает производную второго порядка. Дает 0 в позициях градиента, а также 0, где градиента нет. Это дает экстремумы, где (более длинный) градиент начинается или останавливается.
Эффект этих 2 на различных типах краев лучше всего увидеть визуально:
благоразумный
Это не простой оператор, но многоэтапный подход, который использует Sobel в качестве одного из шагов. В тех случаях, когда Собел и Лаплас дают вам результат в градациях серого / с плавающей запятой, который вам нужно пороговить самостоятельно, алгоритм Canny имеет интеллектуальное пороговое значение в качестве одного из своих шагов, поэтому вы просто получаете двоичный результат да / нет. Кроме того, по гладкому краю вы, вероятно, найдете только 1 линию где-то посередине градиента.
источник
В то время как Собель и Лапласиан - просто фильтры, Кэнни идет дальше, чем двумя способами.
Во-первых, он делает не максимальное подавление, которое избавляет от шума, создаваемого всевозможными объектами и цветовыми градиентами в изображении. Во-вторых, он на самом деле включает в себя шаг, который позволяет различать разные направления ребер и заполнять недостающие точки линии.
Другими словами, детектор края Кэнни относится к совершенно другому классу, чем Собел и Лапласиан. Это намного умнее, так как включает в себя целую кучу постобработки, в то время как Sobel и Laplacian являются просто выходными фильтрами верхних частот, за которыми следует линейное двоичное пороговое значение.
источник
Для меня обычно наиболее важны два решения при определении краев:
Могу ли я вместо этого сегментировать объекты, а затем использовать морфологический оператор, чтобы найти край двоичного (сегментированного) изображения? С шумными данными это имеет тенденцию быть более надежным.
Какой сохраняющий края фильтр сглаживания следует использовать для уменьшения шума на изображении? Краевые фильтры основаны на разнице, которая пострадает от зашумленных данных. Простейшим выбором является медианный фильтр, но анизотропные диффузионные или нелокальные средние фильтры предложат лучшую производительность за счет увеличения параметров для настройки.
Что касается самого обнаружения краев, я не могу по уважительной причине не использовать Canny.
источник
Сьюзан подход
Другой подход к обнаружению краев и углов подход SUSAN .
В этом подходе, а не производных приближений, используется подход интегрального приближения . Преимущество этого заключается не только в возможности обнаружения краев, но также в возможности обнаружения «двумерных элементов» (то есть углов).
Другое преимущество подхода интегральной аппроксимации состоит в том, что шум имеет тенденцию оказывать меньшее влияние на результаты.
источник
Canny дает двоичное изображение и зависит от внешних заданных пороговых значений (которые зависят от изображения / приложения).
Фильтры на основе свертки дают изображение с «краевой интенсивностью». Это полезно, если важны вес или прочность кромки (например, при взвешенном преобразовании Хафа).
источник