Laboratorium Cyfrowego Przetwarzania Obrazów Ćwiczenie 4 Filtracja 2D Opracowali: - dr inż. Krzysztof Mikołajczyk - dr inż. Beata Leśniak-Plewińska - dr inż. Jakub Żmigrodzki Zakład Inżynierii Biomedycznej, Instytut Metrologii i Inżynierii Biomedycznej, Wydział Mechatroniki Politechniki Warszawskiej. Warszawa, 2011
1. Cel ćwiczenia. W ramach ćwiczenia studenci zapoznają się z podstawami filtracji liniowej (filtr uśredniający, filtr krawędziowy) i nieliniowej (filtr medianowy) obrazów w dziedzinie przestrzeni. 2. Wymagane wiadomości. Filtracja obrazów w dziedzinie przestrzeni. Splot (konwolucja) i jego właściwości. Podstawowe rodzaje filtrów: filtr uśredniający (gładzący), filtr krawędziowy, filtr medianowy. 3. Literatura 1. R. Tadeusiewicz i P. Korohoda "Komputerowa analiza i przetwarzanie obrazów", Wydawnictwo Fundacji Postępu Telekomunikacji, Kraków, 1997 (http://winntbg.bg.agh.edu.pl/skrypty2/0098/komputerowa_analiza.pdf) Ćwiczenie 4 - Filtracja 2D 2/9
4. Spis (niestandardowych) funkcji Matlab'a przydatnych podczas realizacji ćwiczenia. h = pokaz_obraz (X, 'NazwaParametru', WartoscParametru) Funkcja służy do tworzenia ilustracji danych 2D. Parametrami wyjściowymi funkcji są: h uchwyt do obiektu graficznego, Parametrami wejściowymi funkcji są: X dane obrazowe (macierz), 'NazwaParametru', WartoscParametru - nazwa i wartość parametru określającego wybrane właściwości obiektu graficznego. Parametry opisano w poniższej tabeli. Nazwa parametru 'mapa' 'typ' Opis i wartości parametru macierz liczbowa określająca paletę barw; standardowe palety barw dostępne w MATLAB'ie: hsv, jet, hot, gray, cool, bone, copper, pink, prism, flag. Wartość domyślna: gray; Łańcuch znakowy określający czy dane wejściowe zostaną przeskalowane przed wyświetleniem: 'skalowany' - tworzy ilustrację, w której wartości pixeli obrazu (elementów macierzy) są przeskalowane tak, aby wykorzystać pełen zakres aktualnej palety barw; 'nieskalowany' - brak skalowania. Wartość domyślna: 'skalowany' Przykłady: h = pokaz_obraz(lena, 'mapa', gray, 'typ', 'nieskalowany'); Powyższe polecenie utworzy ilustrację 2D danych zawartych w zmiennej lena. Paletą barw będą odcienie szarości. Dane nie będą skalowane. Ponadto polecenie zwróci uchwyt do utworzonego obiektu graficznego (ilustracji) i przypisze go zmiennej h. pokaz_obraz(lena); Powyższe polecenie utworzy ilustrację 2D danych zawartych w zmiennej lena. Paleta barw i rodzaj skalowania będą miały wartości domyślne. Ćwiczenie 4 - Filtracja 2D 3/9
4. Przebieg ćwiczenia Przed przystąpieniem do realizacji ćwiczenia należy poprosić prowadzącego o wskazanie folderu zawierającego dane niezbędne do realizacji ćwiczenia. Oznaczenia użyte w tekście: sygnal nazwa funkcji, która powinna zostać użyta w celu rozwiązania danego problemu, s1 nazwa zmiennej, s1a=s1(1:end/4) polecenie Matlab'a, które należy wpisać w okno komend (ang.: command window). s(t)= A sin(2 π f t) - opis w notacji matematycznej. 1. Filtracja dolnoprzepustowa filtr uśredniający a) Z pliku 'rentgen.bmp' załadować do przestrzeni roboczej obraz rentgen. b) Wyświetl obraz rentgen (pokaz_obraz, dobierz wartość parametru 'typ', 'mapa' - c) Wykonaj filtrację obrazu rentgen (imfilter) dla następujących jąder filtru (jeśli trzeba znormalizuj maskę filtru): h1=[ 1 1 1 1 1 1 1 1 1], h2=[ 1 1 1 1 4 1 1 1 1], h3=[ 1 1 1 1 0 1 1 1 1], 1 1 1 1 1 1 1 1 1 h4=[1 1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d) Zilustruj wyniki filtracji (pokaz_obraz, dobierz wartość parametru 'typ', 'mapa' - Wyjaśnij działanie czterech filtrów (p.p. 1.c) i różnice w uzyskanych w wyniku ich działania obrazach. Ćwiczenie 4 - Filtracja 2D 4/9
e) Dodaj do obrazu rentgen szum gaussowski (imnoise, domyślne wartości parametrów: 'm' i 'v'). f) Wykonaj filtrację zaszumionego obrazu rentgen dla jąder filtru z p.p. 1.c) (imfilter) (jeśli trzeba znormalizuj maskę filtru). Zilustruj wyniki filtracji (pokaz_obraz, dobierz wartość parametru 'typ', 'mapa' - Co osiągnięto za pomocą zastosowanych filtracji? Kosztem czego? g) Dodaj do obrazu rentgen szum impulsowy (typu 'salt & pepper') (imnoise, domyślne wartości parametru 'd'). h) Wykonaj filtrację zaszumionego obrazu rentgen dla jąder filtru z p.p. 1.c) (imfilter) (jeśli trzeba znormalizuj maskę filtru). Zilustruj wyniki filtracji (pokaz_obraz, dobierz wartość parametru 'typ', 'mapa' - Porównaj skuteczność filtracji dla obydwu rodzajów szumu. 2. Filtracja nieliniowa - filtr medianowy a) Poddaj obraz rentgen filtracji medianowej dla następujących rozmiarów jąder filtru medianowego (medfilt2): 3 x 3; 5 x 5; 11 x 11; 21 x 21; b) Zilustruj wyniki filtracji (pokaz_obraz, dobierz wartość parametru 'typ', 'mapa' - Jakie są efekty działania filtru medianowego? c) Poddaj filtracji medianowej obrazy rentgen zaszumione szumem gausowskim (pp. 1.e) i szumem impulsowym (pp. 1.h) (medfilt2, samodzielnie dobierz optymalny rozmiar filtru): Zilustruj wyniki filtracji (pokaz_obraz, dobierz wartość parametru 'typ', 'mapa' - Porównaj skuteczność filtracji medianowej dla obydwu rodzajów szumu z filtracją przeprowadzoną w pp. f) oraz i). Ćwiczenie 4 - Filtracja 2D 5/9
3. Filtracja górnoprzepustowa filtr konturowy a) Z pliku 'kolo.bmp' załadować do przestrzeni roboczej obraz kolo. b) Wyświetl obraz kolo (pokaz_obraz, dobierz wartość parametru 'typ', 'mapa' - c) Wykonaj filtrację obrazu kolo (imfilter) dla następujących jąder filtru kierunkowego (Prewitt'a) (jeśli trzeba dokonaj rzutowania typu zmiennej zawierającej filtrowany obraz oraz znormalizuj maskę filtru): hp1=[ 1 1 1 0 0 0 1 1 1], hp2=[ 1 1 0 1 0 1 0 1 1], hp3=[ 1 0 1 1 0 1 1 0 1], 0 1 1 1 0 1 hp4=[ ]. 1 1 0 d) Zilustruj wyniki filtracji (pokaz_obraz, dobierz wartość parametru 'typ', 'mapa' - Wyjaśnij działanie czterech powyższych filtrów i różnice w obrazach uzyskanych w wyniku ich działania. e) Utwórz obraz krawędziowy (obraz zawierający pełny kontur) wykorzystując obrazy będące wynikiem filtracji obrazu kolo za pomocą filtrów kierunkowych działających w kierunkach ortogonalnych (np. hp1 i hp3) oraz wzór na Euklidesową kombinację dwóch składowych gradientu (Równanie 2): L ' (m,n)= (L 1 (m,n)) 2 + ( L 2 (m,n)) 2 (2) gdzie: L'(m.n) element obrazu krawędziowego, L 1 (m.n) i L 2 (m.n) elementy obrazów wynikowych dla filtracji kierunkowej działających w dwóch ortogonalnych kierunkach. f) W obrazie krawędziowym uzyskanym w p. 3.e) korzystając z progowania usuń krawędzie pochodzące od szprych koła (uzyskaj obraz zbliżony do przedstawionego na Rysunku 1). Samodzielnie dobierz wartość progu. Zanotuj wybraną wartość progu. Ćwiczenie 4 - Filtracja 2D 6/9
50 100 150 200 250 300 350 400 450 500 50 100 150 200 250 300 350 400 450 500 Rysunek 1 g) Dodaj do obrazu kolo (macierz zawierająca dane wejściowe powinna być typu uint8) szum gaussowski (imnoise, 'm' = 0 i 'v' = 0.03). h) Wykonaj filtrację zaszumionego obrazu kolo dla jąder filtru z p.p. 3.c) (imfilter) (jeśli trzeba dokonaj rzutowania typu zmiennej zawierającej filtrowany obraz oraz znormalizuj maskę filtru). i) Utwórz obraz krawędziowy wykorzystując obrazy będące wynikiem filtracji zaszumionego obrazu kolo za pomocą filtrów kierunkowych działających w kierunkach ortogonalnych (np. hp1 i hp3) oraz wzór na Euklidesową kombinację dwóch składowych gradientu (Równanie 2). j) Dla obrazu krawędziowego uzyskanym w p. 3.i) zastosuj progowanie z progiem o wartości dobranej w punkcie 3.f) Czy uzyskano obraz zbliżony do przedstawionego na Rysunku1? Dlaczego? Ćwiczenie 4 - Filtracja 2D 7/9
k) Sprawdź czy możliwe jest dobranie dla obrazu krawędziowego uzyskanym w p. 3.i) takiej wartości progu aby uzyskać obraz zbliżony do przedstawionego na Rysunku 1. Wyjaśnij przyczynę różnic wyników uzyskanych w p. 3.j) i 3.h) Ćwiczenie 4 - Filtracja 2D 8/9
Sprawozdanie Ćwiczenie 4 Filtracja 2D L.p. Imię i nazwisko Grupa Data 1 2 3 Punkt ćwiczenia Liczba punktów do uzyskania Uzyskana liczba punktów Uwagi prowadzącego a) - d) 1 1 e) - g) 1 h) - j) 1 2 2 a) - d) 1 3 e) - f) 2 g) - l) 2 Ćwiczenie 4 - Filtracja 2D 9/9