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.

Podobne dokumenty