| |
Właściwie wszystkie koncepcje detekcji krawędzi zmierzają do
znalezienia kompromisu pomiędzy wygładzaniem obrazu i jego następnym
różniczkowaniem.
Zajmę się teraz zagadnieniem splatania funkcji, gdyż, jak się
okazuje, jest ono przydatne przy detekcji krawędzi. Splot dwóch
funkcji f i h można zdefiniować jako nową funkcję g, taką, że: |
|

|
Podstawiając u=x-t można łatwo wykazać, że
f*h=h*f |
|

|
Granice całkowania są w nieskończoności, ale funkcja
h może mieć
ograniczoną dziedzinę, czyli przyjmować niezerowe wartości w
ograniczonym przedziale. Funkcja h jest nazywana filtrem albo
matrycą.
Omówioną wyżej funkcję splatania można wykorzystać do detekcji
krawędzi, wprowadzając taki operator, który równocześnie wygładza i
różniczkuje funkcję. Załóżmy, że f jest przekształcaną funkcją
(obrazy, jak pamiętamy można traktować jako funkcje) a h filtrem
wygładzającym. Wygładzanie prowadzi do funkcji g, zdefiniowanej
wyżej. Ponieważ wygładzony obraz chcemy różniczkować, sprowadza się
to do poszukiwania funkcji: |
|

|
Zakładając, że w nieskończoności funkcja h i jej pochodne osiągają
wartość zero, otrzymujemy po całkowaniu przez części: |
|

|
Zatem cykl operacji wygładzania przez funkcję h i następnego
różniczkowania można zredukować do wygładzania za pomocą pochodnej
funkcji h ze znakiem minus: „-h”. Powyższe spostrzeżenie ma istotne
znaczenie, gdyż wszystkie omawiane teraz przekształcenia wymagają
znacznej liczby obliczeń i, w konsekwencji czasu.
Omówię teraz bliżej jeden
z bardziej zaawansowanych filtrów do detekcji krawędzi. |
| |
Gradient Canny-Deriche |
Canny zaproponował sposób detekcji krawędzi wykorzystujący
zoptymalizowane filtry oparte na gradientach (gradientach! nie na laplasjanach). Wychodząc z teorii sygnałów zaproponował trzy
kryteria charakteryzujące ilościowo własności filtru: |
- Pierwszym kryterium jest stosunek sygnału do szumu filtru
zastosowanego do jednowymiarowego progu zakłóconego szumem – a ta
cecha mówi nam, jak czuły na zakłócenia jest sam filtr.
- Drugim kryterium jest odchylenie standardowe miejsca
lokalizacji krawędzi przy tym samym, co wyżej, modelu – ten
wskaźnik określa dokładność filtru.
- Trzeci wskaźnik podaje liczbę krawędzi wykrytych w białym szumie i
jest używany do ustalenia najmniejszej odległości pomiędzy
wykrywanymi punktami krawędzi.
Wszystkie te parametry mogą być wprowadzone na podstawie znajomości
filtru i jego pochodnych.
Naturalnie, pierwsze dwa kryteria stanowią swoje przeciwieństwo:
radykalne wygładzenie da wprawdzie duży stosunek sygnału do szumu,
ale może spowodować duże błędy przy lokalizacji krawędzi. W wyborze
odpowiedniego optymalnego rozwiązania pomaga trzecie kryterium,
które musi być minimalizowane w celu uniknięcia wielokrotnej
detekcji jednej i tej samej krawędzi.
Canny wprowadził optymalne filtry o ograniczonej dziedzinie,
natomiast, Deriche rozszerzył zakres filtrów na zbiór funkcji o
nieograniczonej dziedzinie. Stąd też zwykle omawiany algorytm
detekcji krawędzi jest nazywany filtrem Canny-Deriche.
Filtr Canny-Deriche ma postać: |
|

|
Natomiast pochodna: |
|

|
h’ jest optymalnym filtrem z punktu widzenia kryteriów Canny. |
|

|
W przypadku funkcji dwóch zmiennych (a taką funkcją jest właśnie
obraz) filtr Canny-Deriche przyjmuje postać: |
|

|
Omawiany filtr wymaga ogromnej liczby obliczeń. Dla filtru o
rozmiarze n dla każdego punktu trzeba n2 operacji. Liczbę tę można
zredukować do 2n, jeżeli ograniczymy się do dwóch liniowych filtrów:
poziomego i pionowego. Ostateczny wynik otrzymujemy jako maksimum z
tych dwóch cząstkowych obrazów. Obserwacja powyższego rysunku
wskazuje, że taka aproksymacja daje poprawne wyniki.
Odrębnym praktycznym
problemem jest tutaj obliczanie wartości całki w granicach od minus
do plus nieskończoności. Zamiast zawężania przedziału całkowania, co
nieuchronnie prowadzi do utraty dokładności, stosuje się iteracyjne
algorytmy, wykorzystujące technikę kolejnych przybliżeń.
|
Na zakończenie rozważań o detekcji krawędzi warto wspomnieć o
jeszcze jednym etapie analizy, który jest niekiedy stosowany, a
mianowicie o wektoryzacji. Wektoryzacja polega na zamianie formy
zapisu krawędzi: zamiast zbioru punktów traktuje je jako ciąg
wektorów (ich długość zależy od stopnia uproszczenia obrazu). Taka
zamiana pozwala na wykorzystanie do analizy na przykład metod
geometrii analitycznej i jest przydatna m.in. przy:
- analizie stereoskopowej,
- rozpoznawaniu obiektów (np. sterowanie robotów),
- rozpoznawaniu pisma.
Jednocześnie wektoryzacja ułatwia rozwiązywanie niektórych zagadnień
pomiarowych, w szczególności pomiar długości.
|
Podsumowując podane informacje o detekcji krawędzi, można
zaproponować następujący tok postępowania przy tej czynności:
- wstępna obróbka obrazu (normalizacja, kontrast, itp.),
- wygładzanie i różniczkowanie (mamy do dyspozycji dwie podstawowe
drogi: gradienty i laplasjany),
- wybór punktów należących do krawędzi (poprzez wyszukiwanie miejsc
zerowych, binaryzacje lub binaryzacje z histerezą),
- szkieletyzacja grubych linii (nie dotyczy to przypadku, gdy
stosujemy detekcję miejsc zerowych),
- ewentualna wektoryzacja.
Niestety taki tok postępowania nie gwarantuje dobrych wyników dla
wszystkich analizowanych obrazów. Poprawna detekcja krawędzi w dużym
stopniu zależy od właściwego doboru nie tylko sekwencji
przekształceń, ale też i parametrów. Nawet przy sporym doświadczeniu
zwykle będzie konieczne zastosowanie metody prób i błędów. Zwykle,
mimo naszych starań, nie uda nam się otrzymać ciągłego obrazu
krawędzi (albo będzie on niezbyt dokładnym odzwierciedleniem
rzeczywistości). Problem ten szczególnie mocno dotyka automatyzacji
algorytmów detekcji krawędzi.
|
| |
|
|
|