Filtracja morfologiczna obrazów binarnych
Transkrypt
Filtracja morfologiczna obrazów binarnych
Filtracja morfologiczna obrazów binarnych Morfologia: 1. Nauka o postaci, ukształtowaniu i budowie organizmów roślinnych i zwierzęcych; 2. Ukształtowanie i formy powierzchni Ziemi; 3. Dział gramatyki obejmujący fleksję i słowotwórstwo; 4. Morfologia matematyczna - dział matematyki oparty na teorii zbiorów Translacja zbioru Translacja zbioru A ⊂ R2 o wektor x ⊂ R2 jest zdefiniowana jako: A + x = {a + x: a∈ ∈A} x Translacja zbioru dyskretnego x=[3,1] Dylatacja zbioru Dylatacja zbioru A przez B (A,B⊂ ⊂ R2), gdzie B jest tzw. elementem strukturującym jest zdefiniowana jako: A ⊕ B = U( A + b ) b∈B Dylatacja zbioru - przykład B (0,0) A ⊕ B = U( A + b ) b∈B Erozja zbioru Erozja zbioru A przez B (A,B⊂ ⊂ R2), gdzie B jest elementem strukturującym jest zdefiniowana jako: A ⊗ B = I( A + b ) b∈B Element strukturujący znajduje się w środku układu współrzędnych i jest względem niego symetryczny ! Erozja zbioru - przykład (0,0) B A ⊗ B = I( A + b ) b∈B Otwieranie i zamykanie zbioru Otwieranie zbioru A zbiorem B (A,B⊂ ⊂ R2), jest zdefiniowane jako: Ao B =( A⊗ B )⊕ B Zamykanie zbioru A zbiorem B (A,B⊂ ⊂ R2), jest zdefiniowane jako: A• B =( A⊕ B )⊗ B Otwieranie zbioru - przykład Otwieranie zbioru - przykład Zamykanie zbioru - przykład Zamykanie zbioru - przykład A B Ilustracja zamykania i otwierania morfologicznego A°°B A••B Operacje morfologiczne dla obrazów binarnych Środek elementu strukturującego B jest przesuwany nad kolejnymi punktami obrazu. W każdym położeniu (x,y) środka tego elementu wykonywane są określone operacje logiczne na punktach obrazu Bxy znajdujących się pod elementem B. Operacje erozji i dylatacji można zdefiniować następująco: • erozja: A ⊗ B = {x, y : B ⊆ A} • dylatacja: A ⊕ B = {x, y : B ∩ A ≠ ∅} x, y – współrzędne środka elementu strukturującego B B Dylatacja - przykład B Obraz źródłowy Obraz wynikowy A ⊕ B = {x, y : B ∩ A ≠ ∅} Dylatacja - algorytm 0,1 -1,0 0,0 1,0 0,-1 El_Size = 5; Sx : array[1..El_Size]of byte = (0, -1, 0, 1, 0); Sy : array[1..El_Size]of byte = (1, 0, 0, 0, -1); { f(i,j) - obraz źródłowy, g(i,j) - obraz wynikowy } ... g:=255; for i:=1 to N-2 do for j:=1 to N-2 do if f(i,j)<>255 {jasność tła} then for k:=1 to El_Size do g(i+Sx[k], j+Sy[k])=0 ... Ograniczenie rozmiaru obrazu wynikowego !!! Erozja - przykład B Obraz źródłowy Obraz wynikowy A ⊗ B = {x, y : B ⊆ A} Erozja - algorytm 0,1 -1,0 0,0 1,0 El_Size = 5; 0,-1 Sx : array[1..El_Size]of byte = (0, -1, 0, 1, 0); Sy : array[1..El_Size]of byte = (1, 0, 0, 0, -1); ... g:=255; for i:=1 to N-2 do for j:=1 to N-2 do if f(i,j)<>255 {jasność tła} then begin inside:=true; for k:=1 to El_Size do if f(i+Sx[k], j+Sy[k])=255 then inside:= false; if inside then g(i,j):=0; end; ... Operacja zamykania - przykład Element strukturujący: Operacja otwierania - przykład Element strukturujący: Przykład przetwarzania morfologicznego