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