Filtracja
Transkrypt
Filtracja
Natalia Kolasa Analiza obrazów - sprawozdanie nr 2 Filtracja obrazów Filtracja obrazu polega na obliczeniu wartości każdego z punktów obrazu na podstawie punktów z jego otoczenia. Każdy sąsiedni piksel ma wagę, która jest wykorzystywana podczas obliczania nowej wartości danego punktu. Wagi te są zapisywane w postaci maski. Typowe rozmiary masek to między innymi 3x3, 5x5 oraz 7x7. Środkowa wartość maski reprezentuje piksel, dla którego przeprowadzana jest operacja filtracji. Dlatego maski mają z reguły nieparzysty rozmiar. Metody filtracji obrazu można podzielić na filtrację w dziedzinie częstotliwości oraz w dziedzinie przestrzennej, która zawiera filtry liniowe i nieliniowe. Głównymi zadaniami filtracji są usunięcie niepożądanego szumu z obrazu, poprawa ostrości i usunięcie określonych wad obrazu. Możliwe jest również zrekonstruowanie obrazu w przypadku jego degradacji lub poprawienie obrazu o złej jakości technicznej. 1. Filtracja w dziedzinie przestrzennej Implementacja przykładów znajduje się w folderze: Filtry w dziedzinie przestrzennej. Filtry w dziedzinie przestrzennej można podzielić na liniowe i nieliniowe. My zajmujemy się głównie filtrami liniowymi. Bazują one na operacjach liniowych, dzięki czemu są łatwiejsze do realizacji, w przeciwieństwie do filtrów nieliniowych. Filtr jest liniowy, jeśli funkcja go realizująca spełnia dwa warunki; jest addytywna i jednorodna. Dwuwymiarowa operacja splotu przy filtracji liniowej dla tak zwanej maski h oraz macierzy określającej obraz wygląda następująco: g ( x, y ) = M M ∑ ∑ f (x + i, y + j )h(i, j ) i =− M j =− M Aby zachować wartość średnią obrazu suma elementów maski przy filtrach w dziedzinie przestrzennej musi być równa 1, tak jak w niżej przedstawionych przykładach. Problemem przy filtracjach tego typu są również efekty brzegowe. Wszystkie punkty na brzegach mają bowiem mniejszą ilość sąsiadów niż pozostałe. Nie można więc w ich przypadku zastosować takiej samej maski. Istnieje kilka możliwych rozwiązań tego problemu. Jednym z nich jest pominięcie pierwszych i ostatnich kolumn oraz wierszy obrazu oryginalnego, czyli innymi słowy pominięcie punktów brzegowych. W efekcie jednak obraz po filtracji będzie mniejszy, co również da się zauważyć w poniższych przykładach. a) Filtr dolnoprzepustowy i górnoprzepustowy Implementacja przykładu znajduje się w pliku FiltrDolnoprzepustowyIGornoprzepustowy.m. Filtr dolnoprzepustowy przepuszcza tylko elementy obrazu, które nie mają wysokiej częstotliwości szczegółów, takich jak na przykład duże różnice w kolorach pomiędzy pikselami, które ze sobą sąsiadują. Większość szumów znajdujących się w obrazach znajduje się w wysokich 1 Natalia Kolasa częstotliwościach, dlatego filtr ten można zastosować właśnie do eliminacji zakłóceń. Jeśli właściwie dopasuje się maskę można usuwać zakłócenia o różnej wielkości, ale ograniczając przy tym utratę potrzebnych szczegółów. W poniższym przykładzie została użyta maska: = 1 1 1 1 1 9 1 1 1 1 1 Jak widać suma jej elementów wynosi 1. Po zastosowaniu filtracji z daną maską otrzymany obraz zawiera mniej szczegółów, ale zostały usunięte niektóre szumy i zakłócenia. Filtr górnoprzepustowy działa w sposób odwrotny do dolnoprzepustowego. Przepuszcza więc elementy obrazu o wysokiej częstotliwości, zwiększając ich jasność oraz kolor. Wynikiem zastosowania takiego filtru jest więc wyodrębnienie szczegółów. W poniższym przykładzie została użyta maska: −1 −1 −1 H = −1 9 −1 −1 −1 −1 Jak widać suma jej elementów również wynosi 1. Po zastosowaniu filtracji z daną maską w otrzymanym obrazie został zwiększony kontrast poprzez podkreślenie ostrych krawędzi obiektów. 2 Natalia Kolasa b) Filtr medianowy Implementacja przykładu znajduje się w pliku FiltrMedianowy.m. Filtr medianowy jest przykładem filtru nieliniowego. Jest trudniejszy w realizacji, ale daje więcej możliwości. Stosuje się go do usuwania zakłóceń punktowych. Potrafi usuwać szumy jednocześnie nie tracąc wielu szczegółów. Jak widać na poniższym przykładzie otrzymany efekt jest nieco lepszy niż w przypadku filtru dolnoprzepustowego. c) Filtr Gaussa Implementacja przykładu znajduje się w pliku FiltrGaussa.m. Filtrowanie Gaussa polega na wyliczaniu współczynników maski z równania rozkładu normalnego, przy założeniach, że centralny element ma współrzędne x = 0, y = 0 oraz jednakową wariancję σx = σy = σ. Z tego wynika, że im punkt znajduje się dalej tym ma mniejszy wpływ wartość wyniku. Natomiast im większa wariancja rozkładu tym większe będzie rozmycie. Bardzo często przy filtrach Gaussa stosuje się maski, których elementami są potęgi 2. 3 Natalia Kolasa . W powyższym przykładzie została użyta maska: H= 1 2 1 2 4 2 1 2 1 Jak widać suma jej elementów wynosi 1. Filtr Gaussa lepiej zachowuje krawędzie i detale, ale mniej usuwa szum niż inne filtry, co widać na przykładzie. d) Filtr z maską Sobela Implementacja przykładu znajduje się w pliku FiltrZMaskaSobela.m. Operator Sobela jest używany do wykrywania krawędzi. Umożliwia on aproksymację pochodnych kierunkowych intensywności w ośmiu kierunkach, każdy co 45°. Maski przy filtracji Sobela są antysymetryczne w stosunku do kierunku wykrywanych krawędzi. Dla kierunku 0° wykrywane są krawędzie pionowe, natomiast dla 90° krawędzie poziome. Maski Sobela pozioma i pionowa: Hpozioma = 1 2 1 0 0 0 −1 −2 −1 −1 0 Hpionowa = −2 0 −1 0 1 2 1 Jak widać na powyższym przykładzie operator Sobela ma niewielką wrażliwość na zakłócenia i bardzo dobrze wygładza. 4 Natalia Kolasa e) Filtr z maską Prewitta Implementacja przykładu znajduje się w pliku FiltrZMaskaPrewitta.m. Operator Prewitta podobnie jak Sobela służy do wykrywania krawędzi. Umożliwia wyznaczenie estymaty pochodnej kierunkowej w jednym z 8 kierunków dla każdego piksela w obrazie. Tutaj również, maski stosowane przy filtracji są antysymetryczne w stosunku do kierunku wykrywanych krawędzi. Dla kierunku 0° wykrywane są krawędzie pionowe, natomiast dla 90° krawędzie poziome. Maski Prewitta pozioma i pionowa: Hpozioma = 1 1 1 0 0 0 −1 −1 −1 −1 0 Hpionowa = −1 0 −1 0 1 1 1 Powyższy przykład pokazuje, że filtracja z maską Prewitta może świetnie służyć do wyznaczania wielkości i orientacji krawędzi. Obrazy wyjściowe są jednak gorzej wygładzone niż w przypadku zastosowania filtru z maską Sobela. 5 Natalia Kolasa 2. Filtracja w dziedzinie częstotliwości Implementacja przykładów znajduje się w folderze: Filtry w dziedzinie czestotliwosci. Częstotliwość w obrazie można związać z pojęciem kontrastu. Wysoki kontrast utożsamiamy z wysoką częstotliwością, natomiast niski kontrast z niską częstotliwością. Aby przenieść obraz do dziedziny częstotliwości stosuje się transformatę Fouriera. Zastosowanie transformaty Fouriera w przetwarzaniu obrazów może służyć między innymi do obserwacji periodyczności w obrazie, wyznaczenia kierunku struktur w obrazie, wytłumiania bądź wzmacniania pewnych elementów oraz do wygładzania lub wyostrzania obrazu. W celu uzyskania mniejszej złożoności obliczeniowej stosuje się FFT, czyli szybką transformatę Fouriera. W tym przypadku stosuje się przesunięcie w dwóch wymiarach w dziedzinie częstotliwości. Częstotliwości niskie, niosące ze sobą najwięcej użytecznych informacji są rozproszone po rogach transformaty. Dlatego należy zamienić ćwiartki obrazu transformaty: I z III oraz II z IV. Dzięki temu najniższe częstotliwości znajdą się w środku transformaty i będą rosły wraz z oddalaniem się od centrum obrazu. Wygląd procedury: a) Widmo i faza Implementacja przykładu znajduje się w pliku ModulIFaza.m. Poniższy przykład przedstawia jak wygląda moduł i faza w obrazie po zastosowaniu transformaty Fouriera. W praktyce w filtracji przy pomocy transformaty Fouriera stosuje się tylko jej moduł. Jest on najczęściej używany ponieważ niesie ze sobą większość ważnych informacji istotnych podczas interpretacji obrazu. 6 Natalia Kolasa b) Generacja filtrów Implementacja przykładu znajduje się si w pliku Filtry.m. • Filtr dolnoprzepustowy Interpretację filtru dolnoprzepustowego oprzepustowego można mo przedstawić w następujący ę ący sposób: Podobnie jak wcześniej śniej filtr dolnoprzepustowy ma za zadanie przepuścić ścić tylko te elementy obrazu poniżej określonej lonej wartoś wartości. Efektem filtru dolnoprzepustowego będzie ędzie rozmazanie obrazu, co widać na powyższym szym przykładzie przykładzie. • Filtr górnoprzepustowy noprzepustowy Interpretację filtru górnoprzepustowego można m przedstawić w następujący ę ący sposób: Podobnie jak wcześniej śniej filtr górnoprzepustowy ma za zadanie przepuścić przepuścić tylko te elementy obrazu powyżej określonej lonej wartoś wartości. Efektem filtru górnoprzepustowego będzie ędzie wyostrzenie krawędzi kraw obrazu, co widać na powyższym ższym przykładzie. 7 Natalia Kolasa • Filtr pasmowy Filtr pasmowy będzie przepuszczał elementy obrazu zawierające się w danym przedziale. Stanowi on zsumowanie filtru górnoprzepustowego i pasmowego. W wyniku dostaniemy obraz lekko rozmazany z wyostrzonymi krawędziami obiektów. c)Zastosowanie filtru dolnoprzepustowego na obrazie z szumem Implementacja przykładu znajduje się w pliku SzumWObrazie.m. Powyższy przykład pokazuje działanie filtru na obrazie, w którym występują szumy. Jak widać udało się zniwelować szumy, ale w wyniku działania filtru dolnoprzepustowego obraz wynikowy jest rozmazany. 8