Komputerowa analiza obrazu Laboratorium 8
Transkrypt
Komputerowa analiza obrazu Laboratorium 8
Komputerowa analiza obrazu Laboratorium 8 Przykład 1 Elementy strukturalne, które mogą być wykorzystane w operacjach morfologicznych: se1=strel('pair',[3,-2]); %przesunięcie względem centralnego piksela o wektor [3,-2] figure; imshow(getnhood(se1),'notruesize'); se2=strel('line',10,60); %ilość pikseli tworzących linię, kąt nachylenia względem osi x figure; imshow(getnhood(se2),'notruesize'); se3=strel('disk',10); %promień figure; imshow(getnhood(se3),'notruesize'); se4=strel('diamond',3); %promień figure; imshow(getnhood(se4),'notruesize'); se5=strel('periodicline',2,[-2,1]); %dwukrotne powtórzenie operacji przesuniecia o wektor [-2,1] figure; imshow(getnhood(se5),'notruesize'); se6=strel('ball',15,3); %promień okręgu figure; imshow(getnhood(se4),'notruesize'); ss=getheight(se4); ss(isinf(ss))=0; figure; imshow(mat2gray(ss),'notruesize'); Przykład 2 Erozja obrazu binarnego L=imread('bacteria.bmp'); figure; imshow(L); SE=ones([3, 3]); E=imerode(L,SE); figure; imshow(E) L2=double(L)-double(E); %różnica między obrazem wyjściowym a zerodowanym (piksele, które zostały "usunięte" w wyniku przeprowadzenia erozji) figure; imshow(L2); Zadanie 1 Funkcja imdilate pozwala na wykonanie dylatacji (dylacji) obrazu. Proszę przeprowadzić ją na uprzednio zbinaryzowanym obrazie „bacteria.bmp” i wyświetlić piksele usunięte. Zadanie 2 Na tym samym obrazie binarnym wypróbować inny rozmiar elementu strukturalnego, np. 3x1. Operację erozji przeprowadzić pięciokrotnie. Zadanie 3 Dylatację i erozję proszę przeprowadzić na dowolnym obrazie monochromatycznym i barwnym. Efekt będzie wyraźniejszy, jeżeli powtórzymy je kilkakrotnie. Przykład 4 Zastosowanie dylatacji i erozji do wyodrębnienia konturów obiektów: [L1] = imread('bacteria.bmp'); %L1=rgb2gray(L1); figure; imshow(L1); SE=ones(3); gradL1=(double(imdilate(L1,SE))-double(imerode(L1,SE))); figure; imshow(gradL1,[]); [L1] = imread('bacteria.bmp'); %L1=rgb2gray(L1); figure; imshow(L1); SE=ones(3); laplaceL1=(double(imdilate(L1,SE))+double(imerode(L1,SE))-2*double(L1)); figure; imshow(laplaceL1,[]); Przykład 5 Zamknięcie (domknięcie) przeprowadzone na obrazie zbinaryzowanym: L1 = imread('bacteria.bmp'); L1=L1>128; figure; imshow(L1); SE=ones(3); L2=imclose(L1,SE); figure; imshow(L2); Zadanie 4 Na tym samym obrazie przeprowadzić operację otwarcia (imopen) i porównać otrzymany obraz z wynikiem z przykładu 5 (za pomocą różnicy). Zadanie 5 Proszę sprawdzić, jakie efekty daje otwarcie i zamknięcie obrazu monochromatycznego i barwnego. Możne spróbować dobrać inny element strukturalny. Przykład 6 Obraz monochromatyczny (ścienianie za pomocą elementu o różnym rozmiarze): L1=imread('naczynia1.jpg'); L1=(L1)<150; figure; imshow(L1); L2a=bwmorph(L1,'shrink',5); figure; imshow(L2a); L2b=bwmorph(L1,'shrink',10); figure; imshow(L2b); L2c=bwmorph(L1,'shrink',40); figure; imshow(L2c); Zadanie 6 Operację ścieniania można wykonać także przy użyciu funkcji „thin”, a pogrubianie – wykorzystując funkcję „thicken”. Proszę wypróbować je na obrazie „rysunek.jpg”. Rozmiar elementu określany jest tak samo, jak w poprzednim przykładzie. Przykład 7 Szkieletyzacja obrazu z odcięciem ‘gałązek” oraz usunięciem pikseli izolowanych: L1=imread('naczynia1.jpg'); L1=(L1)<150; figure; imshow(L1); L2=bwmorph(L1,'skel',Inf); figure; imshow(L2); L3=bwmorph(L2,'spur',Inf); figure; imshow(L3); L4=bwmorph(L3,'clean',Inf); figure; imshow(L4); Zadanie 7 Funkcja „bwmorph” pozwala na szereg operacji, np.: 'bridge' (łączenie pikseli „mostkiem”), 'hbreak' (usuwanie połączeń w kształcie litery H), 'remove' (usuwanie pikseli wewnętrznych), 'fill’ (wypełnianie otworów o rozmiarze 1 – usuwanie izolowanych pikseli o wartości 0). Proszę wypróbować je na obrazie, np.: „rysunek.jpg”. Przykład 8 Wyznaczanie konturów na obrazie: [L1]=imread('cells1.bmp'); L1=L1<180; figure; imshow(L1); SE=ones([3,3]); E=imerode(L1,SE); L2=L1-E; figure; imshow(L2); Inny sposób L3 = bwperim(L1,8); %typ sąsiedztwa figure; imshow(L3) Zadanie 8 Proszę wypróbować metody wyznaczania konturu na innym obrazie z wyraźnymi krawędziami (np. „Krakow_3.jpg”). Przykład 9 Wykrywanie zadanych elementów obrazu (tu: linie poziome o długości 10 pikseli): L1=imread('rysunek.bmp'); figure; imshow(L1); SE=ones([1 10]); L2=bwhitmiss(L1,SE); figure; imshow(L2); Przykład 10 W operacji hit-and-miss zastosowanie znajduje element mieszany. Konstruując go: □ piksele, w które powinien „trafić”(hit) oznaczamy 1, □ pikselom, które mają należeć do tła (miss) nadajemy wartość -1, □ piksele nieuwzględniane(należące do tła lub figury) mają wartość 0. W przykładzie poniżej zastosowano następujący szablon, wykrywający narożniki: x 1 x 0 1 1 0 0 x L1=imread('naczynia3.bmp'); figure; imshow(L1, 'notruesize'); SE=[0,1,0;-1,1,1;-1,-1,0] L2=bwhitmiss(L1,SE); figure; imshow(L2, 'notruesize'); Zadanie 9 Korzystając z materiałów z wykładu lub „Help’a” proszę spróbować wykryć inne układy pikseli w powyższym obrazie, np.: „rozgałęzienia” linii.