2. Komputerowa obróbka danych

2.8. Filtracja morfologii matematycznej

Podstawowa koncepcja morfologii matematycznej zakłada, że istnienie struktury geometrycznej (obiektów) zainteresowania nie jest zjawiskiem całkowicie obiektywnym. Struktura ta ujawnia się (jest odkrywana) dopiero poprzez relację pomiędzy nią a narzędziem badawczym, nazywanym elementem strukturującym. Elementy te modyfikują kształt eksponując strukturę o określonych właściwościach, przy czym zwykle ich rozmiar jest znacząco mniejszy od rozmiaru obiektu badanego. Badanie obrazów za pomocą operacji morfologicznych może łączyć w sobie  zarówno funkcje ulepszania obrazów, np. powiększanie mało widocznych szczegółów, jak też analizy - określenie szkieletu figury, segmentację obiektu itp.  

Podstawy morfologii sięgają do teorii zbiorów, przy czym działania na zbiorach dokonywane są zwykle w przestrzeni dyskretnej \mathbb{R}^N lub \mathbb{Z}^N, jako podzbiory przestrzeni euklidesowej (przestrzeń euklidesowa służy tworzeniu naturalnych modeli świata rzeczywistego, jest ''płaska'' w odróżnieniu od przestrzeni budowanych np. na sferze; n\geq 1 wymiarowa przestrzeń euklidesowa jest uogólnieniem płaszczyzny i przestrzeni trójwymiarowej jako zbiór wszystkich uporządkowanych punktów (x_1, x_2, ..., x_n) \in \mathbb{R}^n wraz z odległością pomiędzy punktami czy wektorami określaną za pomocą iloczynu skalarnego.) \mathcal{E}. Nieco inaczej definiowane operacje podstawowe odnoszą się także do funkcji, w tym dyskretnej funkcji jasności obrazu.

Filtracja morfologiczna jest operacją nieliniową, z binarną maską elementu strukturalnego, której kształt i wymiary określają sąsiedztwo punktu obrazu uwzględniane w procesie przetwarzania - zobacz rys. 4.22. Centralny punkt przemieszczanej maski identyfikuje przetwarzany punkt przestrzeni obrazu (tj. pragmatycznego zawężenia przestrzeni euklidesowej). W zależności od relacji punktu wraz z otoczeniem względem obiektu i jego tła,  według przyjętej funkcji przetwarzania ustalana jest nowa wartość (albo przynależność) punktu. Przyjmuje się też w wersji podstawowej binarny opis obrazu, gdzie ''1'' oznacza piksele obiektu, a ''0'' etykietuje jego tło, czyli zbiór pikseli nie należących do obiektu. w takim przypadku punkty obrazu opisane są przynależnością do obiektu bądź tła oraz współrzędnymi. Obiekt zaś to zbiór punktów o określonych współrzędnych, czyli de facto zbiór współrzędnych wskazujących kolejne punktu obiektu. Operacja na punktach obiektu realizowane są więc jako działania na współrzędnych (punkty rozumiane są więc jako wektory zorientowane względem początku układu współrzędnych).

Rys_el_strukt} . 4.22 po nałożeniu maski na macierz obrazu; na dole logiczny opis nieregularnego kształtu maski na regularnym nośniku.

Wykorzystywane są dwa podstawowe rodzaje operacji: dylacja i erozja, przy czym dylacja w podstawowym rozumieniu jest izotropowym rozszerzeniem obiektu w stopniu określonym przez kształt i rozmiar elementu strukturującego, zaś erozja jest uszczupleniem zarysu obiektu przez narzędzie badawcze. Bardziej złożone operacje tworzone są na bazie tych dwóch przekształceń.

Wykorzystajmy operację sumy Minkowskiego (teoriomnogościowa) dwóch zbiorów: \break A \oplus B = \{a + b:\ a\in A, b\in B\} dla A,B \in \mathcal{E}, gdzie \mathcal{E} to przestrzeń euklidesowa. Istotna jest też translacja (przesunięcie) zbioru A o wektor b: A_b=A+b=\{a + b:\ a\in A\}

Dylacja obiektów obrazu jest operacją sumowania zbioru wszystkich (logicznych) punktów a obiektu A oraz punktów c maski elementu strukturującego C, przy czym są to punkty z logiczną 1 opisane za pomocą swoich współrzędnych względem punktu centralnego. W efekcie otrzymujemy rozszerzony równomiernie obiekt. Możemy też rozważać dylację jako sumę otoczeń wszystkich punktów obiektu definiując otoczenie (kontekst) punktu a jako C_a=\{a+c: c \in C\} (lub też sumę wszystkich translacji obiektu o punkty maski A_c=\{a+c: a \in A\}), wychodzącą poza obrys A na długość promienia elementu strukturującego. Jeszcze inny sposób to uzupełnienie obiektu A o te dodatkowe punkty przestrzeni, których otoczenie określone symetrycznym C^s=\{t \in \mathcal{E}: -t \in C\} ma punkty wspólne z A.  

Możemy więc określić dylację obiektu A za pomocą elementu strukturującego C jako

D_C(A)=A \oplus C=\bigcup_{a \in A} C_a = \{t \in \mathcal{E}| A \cap (C^s_t) \neq \emptyset\}   %\{t \in E|C_t \subseteq\ A\}

(4.69) 

Erozja ma działanie przeciwne, odwołując się do operacji różnicy Minkowskiego zbiorów obiektu i kontekstu, czyli uszczuplenia obiektu o otoczenie punktów przestrzeni bezpośrednio przylegających do obiektu. Inaczej, operacja erozji wyznacza część wspólną zbiorów A_c, jest sumą punktów obiektu, których otoczenie zawiera się w A.  

Erozja obiektu A za pomocą elementu strukturującego C definiowana jest więc jako

E_C(A)=A \ominus C=\bigcap_{c \in C} A_c=\{a \in A|C_a \subseteq\ A\}=\{t \in E|C_t \subseteq\ A\}

(4.70) 

Liczenie tych operacji morfologicznych na obrazie zawierającym potencjalnie większą liczbę rozdzielnych obiektów odbywa się analogicznie. Wszystkie etykietowane jedynką piksele traktowane mogą być jako punkty umownego, niekiedy niespójnego czy wielospójnego (składającego się z kilku rozdzielnych części) ''obiektu''. 

W bardziej praktycznych rozważaniach, algorytm procedury dylacji może przebiegać następująco:
Algorytm 4.2. Dylacja obrazu 

  • Zakładamy binarny opis obrazu źródłowego z etykietą e(k,l)=\mathbf{1} przypisaną pikselom obiektu, przy wyzerowanych pikselach tła; ustalamy określoną maskę elementu strukturującego c_{i,j}, \break i,j \in \{-I,-I+1,\ldots,I\}, opisaną rozkładem logicznych jedynek na regularnym nośniku kwadratowym o boku 2I+1 (wszystkie przykładowe maski z rys. 4.22 można zdefiniować na kwadracie 5\times 5); ustalamy też obraz wynikowy jako \tilde{e}(k,l)=\textbf{0} dla każdego piksela;
  • Do każdego piksela obrazu przykładamy punkt centralny elementu strukturującego c_{0,0} definiując jego kontekst i wyznaczając logiczne pole kontekstu (włącznie z pikselem, zaś dla fragmentów kontekstów ''wystających'' poza obraz ustalamy etykietę zerową)
\mathcal{C}_e(k,l)=\Big\{e(k+i,l+j) \wedge c_{i,j}:\ i,j \in \{-I,\ldots,I\}  \Big\}

(4.71) 

rozmiaru 2I+1 \times 2I+1

  • Jeśli choć jeden z elementów \mathcal{C}_e(k,l)=\textbf{1}, to przetwarzany piksel odpowiadający punktowi centralnemu przyjmuje wartość 1, czyli 
\tilde{e}(k,l)= \bigvee \mathcal{C}_e(k,l)

(4.72) 

  • Uzyskany binarny, poszerzony obraz obiektu jest wynikiem końcowym. 

 Algorytm erozji obrazu przebiega analogicznie, przy korekcie sposobu przetwarzania punktów obrazu.

Algorytm 4.3. Erozja obrazu 

  • Założenia jak w algorytmie 4.2;
  • Do każdego piksela obrazu należącego do obiektu przykładamy punkt centralny elementu strukturującego c_{0,0} definiując jego kontekst i wyznaczając logiczne pole kontekstu według (4.71);  
  • Jeśli choć jeden z elementów \mathcal{C}_e(k,l)=\textbf{0}, to przetwarzany piksel odpowiadający punktowi centralnemu przyjmuje wartość 0, czyli 
\tilde{e}(k,l)= \bigwedge \mathcal{C}_e(k,l)

(4.73) 

  • Uzyskany binarny, poszerzony obraz obiektu jest wynikiem końcowym. 

Przyglądając się powyższym algorytmom i wynikającym z nich prostym implementacjom podstawowych operacji morfologicznych, nasuwa się nieco prostsza interpretacja erozji i dylacji - jako transformacji typu trafi-nie trafi (hit or miss). Według przyjętej konwencji logicznej, piksele oznaczone definiują aktywne sąsiedztwo piksela centralnego (o szarym kolorze na rys. 4.22), jakby wzorzec przesuwający się po obrazie. Postać aktywnych pikseli sąsiedztwa decyduje o efekcie filtracji, czyli wartości przypisywanej pikselowi centralnemu. 

W przypadku dylacji, jeśli choć jeden z pikseli sąsiedztwa ma etykietę \textbf{1}, wtedy wartość piksela centralnego ustawiana jest również na \textbf{1}. Przekształcenie to należy do grupy operatorów addytywnych, powodujących rozszerzenie obiektów (na zewnątrz lub do wewnątrz) zależnie od postaci maski sąsiedztwa. Bardziej subtelnym operatorem tej grupy jest wypełnienie wewnętrzne (interior fill), kiedy to dopiero zapalone (z etykietą 1)  wszystkie piksele sąsiedztwa ustawiają \tilde{e}(k,l)=\textbf{1}, czyli \tilde{e}(k,l)= e(k,l) \vee \bigwedge \Big(\mathcal{C}_e(k,l)-e(k,l)\Big). Można w ten sposób bardziej precyzyjnie kształtować proces uzupełniania brakujących fragmentów obiektów. 

Erozja zaś należy do grupy operatorów subtraktywnych, uszczuplających obiekty w określonych lokalnie okolicznościach. Logiczny iloczyn etykiet pikseli sąsiedztwa oraz piksela centralnego pozwala restrykcyjnie usunąć wszystkie piksele z sąsiedztwem nie mieszczącym się w obiekcie - (4.73). Można tę operację ograniczyć np. jedynie do usuwania pikseli izolowanych (np. stanowiących szum), wtedy \tilde{e}(k,l)= e(k,l) \wedge \bigvee\Big( \mathcal{C}_e(k,l)-e(k,l)\Big).    

Wspomniane operacje podstawowe mają swoje odpowiedniki dla obrazów wielopoziomowych, z wielowartościową skalą danego komponentu funkcji jasności jako operatory maksimum i minimum liczone w kontekstach określonych przez element strukturujący. Dylacja realizowana jest za pomocą filtru maksymalnego, erozja zaś - minimalnego, przy założeniu konwencji jaśniejszego obiektu na ciemniejszym tle (w konwencji odwrotnej należy zamienić to przyporządkowanie -- erozja z filtrem maksymalnym, a dylacja - minimalnym). 

Zwiększając efekt filtracji można dobierać elementy strukturujące o większym nośniku, można także sekwencyjnie powtarzać operacje erozji czy dylacji, zmieniając przy tym maskę kontekstu. Przykładowo, iteracyjne stosowanie erozji przy odpowiednich maskach dobieranych warunkowo i bezwarunkowo aż do uzyskania linii o jednopikselowej szerokości pozwala uzyskać przybliżenie szkieletu figury, czyli służy szkieletyzacji. Szkieletem figury nazywamy jej zbiór wszystkich punktów osiowych, tj. równoodległych od co najmniej dwóch punktów brzegowych figury.

Różnice pomiędzy efektem filtracji operatorem dylacji oraz erozji, uwydatniające zmiany rozszerzania i przycinania obiektów, a także odniesienie efektów dylacji i erozji do obrazu oryginalnego \mathbf{e} definiuje klasę morfologicznych operatorów gradientowych:

  • gradient morfologiczny:  GM_C(\mathbf{e}) = D_C(\mathbf{e}) - E_C(\mathbf{e}),
  • gradient wewnętrzny:     GW_C(\mathbf{e}) = \mathbf{e} - E_C(\mathbf{e}),
  • gradient zewnętrzny:     GZ_C(\mathbf{e})= D_C(\mathbf{e}) - \mathbf{e}.

Ponadto stosowanych jest szereg operatorów będących złożeniem, niekiedy kilkukrotnym tych dwóch podstawowych operacji. Wymienić tutaj należy przede wszystkim otwarcie i domknięcie, czyli przekształcenia stanowiące łagodniejszą wersję erozji i dylacji. Generalnie zachowują one kształt i wielkość obiektów o znaczących kształtach (tj. wyraźnie większych od elementu strukturującego), wygładzają kontury zapewniając bardziej naturalny efekt przetwarzania obrazów. Mamy więc definicje

  •  otwarcie:  O_C(\mathbf{e}) = D_C(E_C(\mathbf{e}))
  • zamknięcie (domknięcie):       Z_C(\mathbf{e}) = E(D(S), S),

przy czym otwarcie  usuwa drobne fragmenty figury, w których nie mieści się element strukturujący, drobne połączenia czy wypukłości. Domknięcie zaś wypełnia mniejsze od elementu strukturującego wklęsłości, wcięcia czy dziury. Uwypuklenie zmian dokonywanych przez otwarcie lub domknięcie, dające również bardziej naturalny efekt od operacji gradientowych uzyskuje się za pomocą dwóch operatorów  

  • white top-hat:    WTH = \mathbf{e} - O_C(\mathbf{e}),
  • black top-hat:    BTH = Z_C(\mathbf{e}) - \mathbf{e},

Przykładowe efekty filtracji morfologicznej na obrazach binarnych oraz wielopoziomowych pokazano odpowiednio na rys.4.23 oraz rys.4.24.

Rys. 4.23 Przykładowe efekty filtracji morfologicznej obrazu binarnego, kolejno (od lewej do prawej, góra--dół): obraz źródłowy, po erozji, dylacji, otwarciu, domknięciu, gradiencie morfologicznym, gradiencie wewnętrznym, gradiencie zewnętrznym, operatorze WTH, BTH, pięciokrotnej erozji oraz szkieletyzacji; przyjęto stały element strukturujący -- eliptyczny o promieniu 4 pikseli.

Rys. 4.24 Przykładowe efekty filtracji morfologicznej obrazu testowego Lena, kolejno (od lewej do prawej, góra--dół): obraz źródłowy, po erozji za pomocą trzech masek  (blokowej z promieniem 1 piksela, eliptycznej 3 pikseli, blokowej 4 pikseli, ukazanych w powiększeniu w górnym roku obrazków), dylacji, otwarciu, domknięciu, gradiencie morfologicznym, gradiencie wewnętrznym, gradiencie zewnętrznym, operatorze WTH, BTH, pięciokrotnej erozji oraz szkieletyzacji; dla pozostałych operacji zastosowano stały element strukturujący -- eliptyczny o promieniu 3 pikseli.