Dowiedziałem się o wielu algorytmach wykrywania krawędzi, w tym algorytmach takich jak metody Sobela, Laplaciana i Canny'ego. Wydaje mi się, że najpopularniejszym detektorem krawędzi jest detektor krawędzi Canny, ale czy są przypadki, w których nie jest to optymalny algorytm do użycia? Jak zdecydować, którego algorytmu użyć? Dzięki!
algorithms
image-processing
edge-detection
PearsonArtPhoto
źródło
źródło
Odpowiedzi:
Istnieje wiele możliwości wykrywania krawędzi, ale 3 wspomniane przykłady należą do 3 różnych kategorii.
Sobel
To przybliża pochodną pierwszego rzędu. Daje ekstremum w pozycjach gradientu, 0, gdzie nie występuje gradient. W 1D jest to =[−101]
Istnieją inne alternatywy dla Sobela, które mają +/- te same cechy. Na stronie Roberts Cross na wikipedii można znaleźć porównanie kilku z nich.
Laplace
To przybliża pochodną drugiego rzędu. Daje 0 w pozycjach gradientu, a także 0, gdy nie występuje gradient. Daje ekstremum, w którym (dłuższy) gradient zaczyna się lub zatrzymuje.
Wpływ tych 2 na różne rodzaje krawędzi można najlepiej zobaczyć wizualnie:
Sprytny
Nie jest to prosty operator, ale podejście wieloetapowe, w którym Sobel jest jednym z kroków. Tam, gdzie Sobel i Laplace dają ci wynik w skali szarości / zmiennoprzecinkowy, który musisz sam progować, algorytm Canny ma inteligentne progowanie jako jeden ze swoich kroków, więc otrzymujesz binarny wynik tak / nie. Ponadto, na gładkiej krawędzi, prawdopodobnie znajdziesz tylko 1 linię gdzieś pośrodku gradientu.
źródło
Podczas gdy Sobel i Laplacian są po prostu filtrami, Canny idzie dalej niż na dwa sposoby.
Po pierwsze, eliminuje nie maksymalne tłumienie, które pozbywa się szumów wytwarzanych przez różnego rodzaju obiekty i gradienty kolorów na obrazie. Po drugie, faktycznie zawiera krok, który pozwala rozróżnić różne kierunki krawędzi i wypełnić brakujące punkty linii.
Innymi słowy, wykrywacz krawędzi Canny należy do zupełnie innej klasy niż Sobel i Laplacian. Jest znacznie mądrzejszy, ponieważ obejmuje całą masę przetwarzania końcowego, podczas gdy Sobel i Laplacian są po prostu wyjściowymi filtrami górnoprzepustowymi, po których następuje liniowe progowanie binarne.
źródło
Dwie najważniejsze decyzje przy wykrywaniu krawędzi to dla mnie zwykle:
Czy mogę zamiast tego segmentować obiekty, a następnie użyć operatora morfologicznego, aby znaleźć krawędź obrazu binarnego (segmentowanego)? W przypadku zaszumionych danych jest to zwykle bardziej niezawodne.
Jakiego zachowującego krawędź filtra wygładzającego należy użyć w celu zmniejszenia szumów obrazu? Filtry brzegowe opierają się na różnicowaniu, które ucierpi z powodu hałaśliwych danych. Najprostszym wyborem jest filtr środkowy, ale dyfuzja anizotropowa lub nielokalna oznacza, że filtry będą oferować lepszą wydajność kosztem posiadania większej liczby parametrów do poprawienia.
Jeśli chodzi o samą detekcję krawędzi, nie mam dobrego powodu, aby nie używać Canny.
źródło
Podejście SUSAN
Innym podejściem do wykrywania krawędzi i narożników jest podejście SUSAN .
W tym podejściu zamiast aproksymacji pochodnych stosuje się integralną metodę aproksymacji . Ma to tę zaletę, że nie tylko wykrywa krawędzie, ale także wykrywa „cechy dwuwymiarowe” (tj. Narożniki).
Kolejną zaletą zintegrowanego podejścia przybliżającego jest to, że hałas ma mniejszy wpływ na wyniki.
źródło
Canny daje obraz binarny i jest zależny od zewnętrznych progów (które zależą od obrazu / aplikacji).
Filtry oparte na konwolucji dają obraz o „intensywności krawędzi”. Jest to przydatne, gdy ważny jest ciężar lub wytrzymałość krawędzi (np. W ważonej transformacie Hougha).
źródło