IV ROK GIK. PRZEDMIOT: CYFROWE PRZETWARZANIE OBRAZU ‐ ĆWICZENIA wersja 130325

Ćwiczenie_3. Filtracja obrazów w programie MATLAB.

• Cel tematu

Celem ćwiczenia jest zapoznanie się studentów z zagadnieniem filtracji obrazów cyfrowych oraz wykonanie przykładowych operacji dostępnych w programie MATLAB.

• Dane do ćwiczeń

Na ćwiczeniach korzystamy z danych (plik: apollo.tif) zlokalizowanych na dysku „I” w katalogu:

\nborowiec\CPO\T3\

lub na stronie: http://twiki.fotogrametria.agh.edu.pl/bin/view/Dydaktyka/CPOMaterSt

• Filtracja obrazu

Filtracja jest operacją matematyczną na pikselach obrazu źródłowego w wyniku której uzyskiwany jest nowy, przekształcony obraz. Filtrację określa się jako przekształcenie kontekstowe, gdyż dla wyznaczenia nowej wartości piksela obrazu docelowego potrzebna jest informacja z wielu pikseli obrazu źródłowego.

Inaczej mówiąc filtracja to usuwanie szumu z obrazu, czyli wykonanie korekcji określonych wad obrazu, poprawa jego jakości, wzmocnienie pewnych elementów zgodnych z posiadanym wzorcem.

Filtracja przestrzenna

MATLAB oferuje wiele funkcji realizujących filtrację. Najpopularniejszymi są dwie funkcje. Pierwsza z nich zapewnia filtrację liniową. Jej uproszczone wywołanie ma postać: G = imfilter(A, w), gdzie

A – obraz wejściowy,

w – zadana przez nas macierz filtru,

G – obraz wynikowy.

Macierz filtru możemy ustawić ręcznie, albo skorzystać z drugiej funkcji, która udostępnia zestaw standardowych filtrów liniowych i ma ogólną postać:

w = fspecial('type', parametry opcjonalne).

Parametrów opcjonalnych używa się głównie do określenia rozmiarów filtru, a jeżeli je pominiemy to zostaną przyjęte wartości domyślne i są one różne dla różnych typów.

Pierwszy parametr, 'type' definiuje rodzaj wybranego filtru i może przyjąć następującą postać:

• 'average' ‐ filtr uśredniający o domyślnym rozmiarze 3 x 3,

• 'disk' ‐ kołowy filtr uśredniający wewnątrz macierzy kwadratowej o domyślnym promieniu 5,

• 'gaussian' ‐ uśredniający filtr gausowski o domyślnym rozmiarze 3 x 3 i odchyleniu standardowym 0.5,

• 'laplacian' ‐ filtr Laplace'a,

• 'log' ‐ połączony filtr Laplace'a i Gaussa,

• 'prewitt' – filtr Prewitta do wykrywania krawędzi o domyślnym rozmiarze 3 x 3; standardowo filtr wykrywa krawędzie pionowe. W celu wykrycia poziomych należy otrzymaną macierz transponować,

• 'sobel' ‐ analogiczny filtr Sobela do wykrywania krawędzi,

• 'unsharp' ‐ filtr podkreślający krawędzie obiektów.

Z filtrów nieliniowych najczęściej używany jest medianowy, wywoływane przez następującą funkcję: M = medfilt2(A, [m n]), gdzie

A – obraz wejściowy,

[m,n] – rozmiar filtru.

CPO ‐ ćw.3. Filtracja obrazów w programie MATLAB ‐ Natalia Borowiec, Jakub Kolecki

IV ROK GIK. PRZEDMIOT: CYFROWE PRZETWARZANIE OBRAZU ‐ ĆWICZENIA wersja 130325

Filtr medianowy jest to filtr stosowany do usuwania zakłóceń z obrazu w postaci szumów. Działanie filtra jest szczególnie przydatne w przypadku zakłóceń typu "pieprz i sól". Filtry medianowe przetwarzają dany punkt obrazu jako medianę z wartości punktów go otaczających. Mediana to w uproszczeniu wartość średnia w uporządkowanym rosnąco ciągu wartości pikseli całego rozważanego otoczenia przetwarzającego piksela.

Filtry morfologiczne

Termin morfologia oznacza m. in. badanie „struktury i kształtu”. W przetwarzaniu obrazów morfologię matematyczną wykorzystuje się do analizy cech geometrycznych wyróżnionych obiektów obrazu. Metody morfologii matematycznej pozwalają rozpoznawać budowę obiektów, a także przetwarzać ich kształt poprzez analizę badanego obrazu za pomocą specjalnych obiektów tzw. elementów strukturalnych.

Najpopularniejszymi z tej grupy filtrami jest erozja i dylatacja. W MATLAB’ie funkcje te definiuje się w następujący sposób:

e = imerode(A, se)

d = imdilate(A, se), gdzie

A – obraz wejściowy,

se –element strukturalny.

Złożenie obu funkcji tworzy (zależnie od kolejności złożenia) operacie otwarcia i zamknięcia: e = imopen(A, se)

d = imclose(A, se).

Inną częściej stosowaną funkcją morfologiczną stosowaną na obrazach binarnych jest: M = bwmorph(BW,’operacja’),

BW – binarny obraz wejściowy.

Operacje to m. In.:

‘dilate’, ‘erode’, ‘thin’ – ścienianie, ‘fill’ – wypełnianie. Inne opcje należy sprawdzić w helpie.

Zadanie:

1. Wczytać oraz wyświetlić obraz apollo.tif – nazwać obraz jako I (przetwarzany obraz ma mieć ciagle taka samą nazwę).

2. Usunąć szumy – zastosować filtr medianowy, z filtrem [7,7]. Wyświetlić obraz, a rysunek nazwać Filtr Medianowy ‐ imshow(I); title('Filtr Medianowy '); 3. Na wynikowym obrazie I zastosować filtr Gausa. Filtr nazwać F_gauss. Wyświetlić i opisać obraz Filtr medianowy + Gauss.

4. Na wynikowym obrazie I zastosować filtr Wiener’a, oczko [9,9]. Funkcja I = wiener2(I,[9 9]). Obraz wyświetlić i opisać Filtr medianowy + Gauss + Wiener.

5. Na wynikowym obrazie I zastosować filtr podkreślający krawędzie obiektów, ustawić parametr 0,2.

Filtr nazwać F_unsharp. Wynikowy obraz wyświetlić i nazwać Filtr medianowy + Gaussa + Wiener +

Unsharp.

6. Na wynikowym obrazie I zastosować filtr Laplace'a. Filtr nazwać F_Laplace, a wyświetlony obraz nazwać Filtr medianowy + Gaussa + Wiener + Unsharp + Laplace.

7. Powstały obraz w wyniku zastosowania kolejnych filtrów zamienić na czarno‐biały i nazwać go BW.

8. Na obrazie binarnym zastosować dylatację 5x. Obraz wyświetlić.

9. Na obrazie wynikowym zastosować ścienianie. Obraz wyświetlić.

10. Nałożenie krawędzi na obraz

CPO ‐ ćw.3. Filtracja obrazów w programie MATLAB ‐ Natalia Borowiec, Jakub Kolecki