Filtracja 2D 1 Filtracja w domenie częstotliwości 2 Filtracja

Transkrypt

Filtracja 2D 1 Filtracja w domenie częstotliwości 2 Filtracja
Teoria Sygnałów
IIr Geofizyka 2016/2017
copyright: M. Dwornik
[email protected]
Filtracja 2D
Filtracja dwuwymiarowa w większości przypadków opiera się na tych samych zasadach, co
filtracja jednowymiarowa. Przykładami sygnałów dwuwymiarowych w geofizyce są tomogramy, sekcje sejsmiczne, mapy rozkładów wartości parametrów (np. gęstości, podatności
magnetycznej, oporności, etc.). Większość przedstawionych poniżej poleceń wymaga zainstalowania biblioteki Image Processing Toolbox w pakiecie MatLAB.
1
Filtracja w domenie częstotliwości
Dla sygnałów dwuwymiarowych filtracja w domenie częstotliwości polega, podobnie jak
w przypadku sygnałów 1D, na wymnożeniu widma obrazu przez maskę filtra. Do obliczenia prostej i odwrotnej szybkiej transformaty Fouriera używamy w tym wypadku poleceń: fft2 i ifft2. W wyniku działania polecenia fftshift punkt zerowej częstotliwości
(fx,fy) znajduje się w środku obrazu. Przykładowe maski filtrów dolnoprzepustowych (D0
- częstość odcięcia, D(u,v) - odległość od środka obrazu) przedstawiono na równ.1-3:
(
H(u, v) =
1 D(u, v) ¬ D0
0 D(u, v) > D0
(1)
H(u, v) =
1
1 + (D(u, v)/D0 )2n
(2)
H(u, v) = exp
2
−D2 (u, v)
2 · D02
(3)
Filtracja liniowa w domenie przestrzeni
Filtracja liniowa w domenie przestrzeni polega na splocie maski filtru wraz obrazem.
Zasady tworzenia masek oraz filtracji są identyczne jak w przypadku sygnałów jednowymiarowych (suma elementów maski dolnoprzepustowej musi być równa 1.0, górnoprzepustowej 0.0). Przykładowe maski przedstawiono poniżej (od lewej: uśredniająca, Prewitta
pozioma, Sobela pionowa, laplasjan wyostrzający):


0.1 0.1 0.1


 0.1 0.2 0.1 
0.1 0.1 0.1


1
1
1


0
0 
 0
−1 −1 −1


−1 0 1


 −2 0 2 
−1 0 1


−1 −1 −1


 −1 9 −1 
−1 −1 −1
Operację filtracji dwuwymiarowej dokonujemy z wykorzystaniem polecenia:
imfilter (obraz, maska, opcje). Do tworzenia masek można wykorzystać polecenie
fspecial(). W przypadku filtracji górnoprzepustowej przydatne jest polecenie edge(),
wewnątrz którego zaimplementowano różne rodzaje filtracji służących wykrywaniu krawędzi. Dodatkowo polecenie to umożliwia automatyczną binaryzację i wycienianie krawędzi.
3
Filtracja nieliniowa w domenie przestrzeni
Pakiet MatLAB udostępnia rozmaite filtracje nieliniowe w ramach biblioteki Image Processing Toolbox. Do najważniejszych zaliczyć można:
• medfilt2(obraz, [rozmiar]); - filtracja medianowa
1
Teoria Sygnałów
IIr Geofizyka 2016/2017
copyright: M. Dwornik
[email protected]
• wiener2(obraz, [rozmiar]); - filtracja adaptacyjna Wienera
• entropyfilt(obraz, [rozmiar]); - zwraca wartość entropii E w blokach o zadanym rozmiarze (domyślnie 9x9 pikseli), obliczoną wg wzoru:
E=−
N
X
log p(n) · p(n)
(4)
n=0
N - ilość poziomów intensywności
p(n) - prawdopodobieństwo wystąpienia piksela o intensywności n
• stdfilt(obraz, [rozmiar]) - dla każdego piksela zwraca wartość odchylenia standardowego z otoczenia.
• rangefilt(obraz, [rozmiar]) - zwraca różnicę pomiędzy maksimum i minimum
w otoczeniu danego piksela
4
Przydatne polecenia MatLAB dla obrazów
Do najistotniejszych komend dostępnych dla sygnałów 2D zaliczyć należy:
1. Operacje I/O
•
•
•
•
imread(plik), imwrite(zmienna, plik) - odczyt / zapis do pliku
imshow(obraz) - wyświetlenie obrazu
imagesc(obraz, [min max]) - wyświetlenie obrazu z zadanego zakresu
imhist(obraz,ile) - wyświetlenie histogramu obrazu
2. Konwersje typów
•
•
•
•
rgb2gray() - konwersja obrazu kolorowego na monochromatyczny
double(a)/255 - konwersja uint8 na double
uint8(255*a) - konwersja double na uint8
rgb2hsv, rgb2ycbcr() - konwersja z RGB na inne przestrzenie barwne
3. Kalibracje i normalizacje
• imadjust() - normalizacja obrazu
• histeq() - wyrównanie histogramu
• imrotate() - rotacja obrazu
4. Inne
•
•
•
•
•
5
imnoise() - dodawanie szumu do obrazu
bwdist() - mapa odległości od najbliższego punktu (dla obrazów logicznych)
bwlabel() - segmentacja połączona z etykietowaniem
imfill(obraz, ’holes’) - wypełnienie dziur na obrazie logicznym
radon(), iradon() - prosta i odwrotna transformata Radona.
Zadania
1. Wczytaj obraz cameraman.tif. Dokonaj jego konwersji do double, a następnie dokonaj filtracji dolnoprzepustowej w domenie częstotliwości.
2. Wczytaj obraz pout.tif. Porównaj działanie wyrównania histogramu z normalizacją.
2
Teoria Sygnałów
IIr Geofizyka 2016/2017
copyright: M. Dwornik
[email protected]
3. Wczytaj obraz cameraman.tif. Dodaj do niego szum (imnoise), a następnie korzystając z dostępnych metod spróbuj odszumić obraz.
4. Wczytaj obraz coins.png. Policz sumaryczną długość obwodów monet.
5. Wczytaj obraz cameraman.tif. Dokonaj detekcji krawędzi korzystając z masek Sobela i Prewitta. Wynik porównaj z działaniem funkcji edge.
3

Podobne dokumenty