Кто-нибудь знает, какие отличия между операторами Prewitt, Sobel и Laplacian в алгоритмах обнаружения границ?
Некоторые лучше других?
Используются ли разные операторы в разных ситуациях?
Кто-нибудь знает, какие отличия между операторами Prewitt, Sobel и Laplacian в алгоритмах обнаружения границ?
Некоторые лучше других?
Используются ли разные операторы в разных ситуациях?
Оператор лапласа является оператором производной 2-го порядка, два других являются производными от 1-го порядка, поэтому они используются в разных ситуациях. Собель/Превитт измеряет наклон, а лапласиан измеряет изменение наклона.
Примеры:
Если у вас есть сигнал с постоянным наклоном (градиентом):
Gradient signal: 1 2 3 4 5 6 7 8 9
1-й производный фильтр (Sobel/Prewitt) будет измерять наклон, поэтому отклик фильтра
Sobel result: 2 2 2 2 2 2 2
Результат фильтра лапширования для этого сигнала равен 0, поскольку наклон постоянный.
Пример 2: Если у вас есть краевой сигнал:
Edge: 0 0 0 0 1 1 1 1
Результат фильтра sobel имеет один пик; знак пика зависит от направления ребра:
Sobel result: 0 0 0 1 1 0 0 0
Фильтр лапласа дает два пика; расположение края соответствует пересечению нуля результата фильтра лапласа:
Laplace result: 0 0 0 1 -1 0 0 0
Итак, если вы хотите знать направление и край, вы должны использовать фильтр производных 1-го порядка. Кроме того, фильтр Laplace более чувствителен к шуму, чем Sobel или Prewitt.
Фильтры Sobel и Prewitt, с другой стороны, весьма схожи и используются для тех же целей. Важные отличия между фильтрами производных первого порядка
Эти свойства можно измерить с помощью искусственных тестовых изображений (например, знаменитых тестовых шаблонов Jähne, найденных в "Обработка изображений" Берна Яхне). К сожалению, я ничего не нашел в операторе Prewitt в этой книге, поэтому вам придется делать свои собственные эксперименты.
В конце концов, всегда существует компромисс между этими свойствами, и какой из них более важен, зависит от приложения.