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

Podobne dokumenty