6 obrazków (numery od 0 do 5 -- ten 0 to wzór wzoru matematycznego) Jak ulepszyê procedurë? (odc. 13.) ---------------------------------- DETEKCJA I WYZNACZANIE KRAWËDZI Zapraszam do lektury ostatniego, trzeciego, odcinka podcyklu: "Detekcja i wyznaczanie krawëdzi". Zajmë sië dzisiaj jednym z lepszych algorytmów detekcji krawëdzi, jakim jest laplasjan. Miklesz/Damage Laplasjan dla obrazu traktowanego jako funkcja dwóch zmiennych I(x,y) moûna zdefiniowaê jako: ****************** TU WZÓR MATEM Z OBRAZKA NR 0 ***************** Laplasjan jest operatorem róûniczkowym, wykorzystujâcym drugâ pochodnâ. Analogicznie jak w wypadku gradientu, jego przybliûenie, które moûemy wyliczyê wykorzystujâc podane niûej w tekôcie macierze, jest sumâ punktu aktualnie analizowanego i róûnic wartoôci punktów leûâcych w sâsiedztwie. Oczywiôcie, aby zachowaê dobre proporcje jasnoôci, naleûy przemnoûyê centralny punkt przez cztery (gdyû laplasjan liczymy w czterech kierunkach): +0 +1 +0 +1 -4 +1 +0 +1 +0 ******** (rys. 1) ****************** Powyûsza macierz ma jednak pewnâ wadë. Liczony w ten sposób laplasjan, uwzglëdnia tylko kierunki: góra, dóî, lewo, prawo. Omija wiëc skosy. Zastosowaê moûemy wiëc ulepszony model macierzy laplasjana, który uwzglëdniaê bëdzie wszystkich osiem kierunków: +1 +1 +1 +1 -8 +1 +1 +1 +1 ********** (rys. 2) ****************** Po przeksztaîceniu obrazu laplasjanem naleûy zabraê sië do detekcji jego krawëdzi. Najprostszym sposobem jest zwykîa binaryzacja. Niestety, okazuje sië, ûe laplasjan jako operator róûniczkowy drugiego stopnia jest niesamowicie czuîy na lokalne szumy, które mogâ zostaê niepotrzebnie zinterpretowane jako krawëdzie. Istnieje jednak wyjôcie z sytuacji. Pamiëtacie moûe opisywanâ przeze mnie dwa miesiâce temu metodë detekcji krawëdzi, opartâ na znajdowaniu przejôcia przez zero, czyli punktów, w których laplasjan zmienia znak. Poniûej przedstawiam schemat dziaîania: 1. Wykonujemy laplasjan. Najlepiej jak najdokîadniejszy. Tu mogâ nam przyjôê z pomocâ wiëksze macierze, o których wspomnë niûej. 2. Binaryzujemy wyjôciowy obraz tak, aby podzieliê nasze punkty na: punkty o jasnoôci mniejszej od zera i punkty o jasnoôci wiëkszej bâdú równej zero. Oznacza to, ûe dolny próg binaryzacji musi wynosiê 0. 3. Nastëpnie musimy znaleúê krawëdzie obrazu binarnego. Najlepiej to zrobiê metodami, które zostaîy opisane w dwóch poprzednich odcinkach. W ten sposób wychwycimy rzeczywiste krawëdzie obrazu. Dziëki zastosowaniu powyûszego algorytmu uzyskamy cienkie (o szerokoôci jednego piksela) krawëdzie. Tak przeksztaîcony obraz wyglâda trochë (co moûecie sprawdziê na ilustracjach), jakby wykonano na nim operacjë "line art". Daje to moûliwoôci stworzenia szybkich i ciekawych efektów do dema. Jeûeli jednak mniej nam zaleûy na efekcie, a bardziej na krawëdziach, moûemy zmniejszyê wpîyw szumów, stosujâc wiëksze macierze. Poniûej przykîady: 5*5 i 7*7: +0.25 +0.50 +0.50 +0.50 +0.25 +0.50 -0.25 -1.00 -0.25 +0.50 +0.50 -1.00 -2.00 -1.00 +0.50 +0.50 -0.25 -1.00 -0.25 +0.50 +0.25 +0.50 +0.50 +0.50 +0.25 ********************* (rys. 3) ************************** +0.25 +0.50 +0.50 +0.50 +0.50 +0.50 +0.25 +0.50 +0.50 +0.00 -0.50 +0.00 +0.50 +0.50 +0.50 +0.00 -0.75 -1.50 -0.75 +0.00 +0.50 +0.50 -0.50 -1.50 -2.00 -1.50 -0.50 +0.50 +0.50 +0.00 -0.75 -1.50 -0.75 +0.00 +0.50 +0.50 +0.50 +0.00 -0.50 +0.00 +0.50 +0.50 +0.25 +0.50 +0.50 +0.50 +0.50 +0.50 +0.25 Okazuje sië, ûe bez wzglëdu na to, jakâ obierzemy metodë detekcji krawëdzi, i tak znaczny wpîyw na ostateczny wynik tego procesu bëdzie miaî sposób wykonania samej binaryzacji obrazu. Osobom szczególnie zainteresowanym tematem detekcji krawëdzi polecam ksiâûkë, z której korzystaîem piszâc ten artykuî, gdyû rozwijajâc dalej ten problem, odbiegîbym zbytnio od tematu kodowania procedur w demach. Piszâc ten odcinek, opieraîem sië czëôciowo na informacjach, zawartych w ksiâûce pt.: "Komputerowa analiza obrazu", (FotoBit Design), autorstwa: Leszka Wojnara i Mirosîawa Majorka.