Zaprezentowano koncepcję badania sygnałów akustycznych stanów przedawaryjnych silnika synchronicznego



Pobieranie 62,61 Kb.
Data23.05.2018
Rozmiar62,61 Kb.

Laboratorium 5

1. Przekształcenia morfologiczne obrazów

Przekształcenia morfologiczne są jedynymi z najważniejszych przekształceń obrazu, pozwalających na bardziej złożone operacje związane z analizą kształtu poszczególnych elementów obrazu oraz ich wzajemnego rozmieszczenia. Są to jedne z podstawowych przekształceń wykorzystywanych w analizie obrazów, a do ich cech charakterystycznych należy głównie selektywny charakter działań kontekstowych. Przekształcenia morfologiczne obrazu wiążą się ze zmianą stopnia szarości lub nasycenia barwy danego punktu w obrazie wynikowym w zależności zarówno od parametrów danego punktu w obrazie źródłowym, jak i parametrów punktów z nim sąsiadujących.



2. Operacja LUT

W programie Matlab operacja LUT kojarzy się z funkcjami makelut() i applylut(). Pierwsza z nich jest przeznaczona do tworzenia elementów macierzy o rozmiarze 2x2 lub 3x3, natomiast druga funkcja służy do wykonywania splotu między utworzoną macierzą a obrazem wejściowym.


Przykład 1

Zastosowanie funkcji applylut() w obrazie rzeczywistym.

L1=checkerboard(10,2);

L1=L1<0.5;

figure, imshow(L1, 'InitialMagnification','fit');

lut=[0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0]

L2=applylut(L1, lut);

figure, imshow(L2, 'InitialMagnification','fit');


3. Erozja i dylatacja

Proces erozji na obrazach binarnych, można sobie wyobrazić, w najprostszej formie, jako odcięcie pasa o zadanej szerokości wzdłuż brzegu obiektu. W przekształceniach morfologicznych szerokość odciętego pasa określa wielkość szablonu strukturalnego SE. Szablon strukturalny jest przetaczany po wewnętrznej stronie brzegu obiektu. Kolejne położenia elementu centralnego szablonu strukturalnego SE wyznaczają nowy brzeg obiektu po erozji E(L, SE).

Dylatacja jest procesem odwrotnym do procesu erozji. Na obrazach binarnych można ją sobie wyobrazić jako nałożenie pasa o żądanej szerokości wzdłuż brzegu obiektu. W przekształceniach morfologicznych szerokość nałożonego pasa określa wielkość szablonu strukturalnego SE. Szablon strukturalny jest przetaczany po zewnętrznej stronie brzegu obiektu. Kolejne położenia elementu centralnego (c,r) szablonu strukturalnego SE wyznaczają nowy brzeg obiektu po dylatacji D(L, SE).
Podglądnąć funkcję imerode.m i morphop.m

komenda


open imerode.m

(funkcję morphop można znaleźć w R2012b/toolbox/images/images/private/morphop.m)


Przykład 2

Operacje dylatacji i erozji.

L1=zeros(9);

L1(3:6, [4,5])=1;

L1(5:7,6)=1;

figure, imshow(L1, 'InitialMagnification','fit');

axis image on

SE=[1,0;1,1;1,0];

L2=imdilate(L1, SE);

figure, imshow(L2, 'InitialMagnification','fit');

axis image on

L2=imerode(L1, SE);

figure, imshow(L2, 'InitialMagnification','fit');

axis image on



Przykład 3

Operacje dylatacji i erozji.


L1=zeros(9);

L1(3:6, [4,5,6])=1;

figure, imshow(L1, 'InitialMagnification','fit');

axis image on

SE=[1,1];

L2=imdilate(L1, SE);

figure, imshow(L2, 'InitialMagnification','fit');

axis image on

L2=imerode(L1, SE);

figure, imshow(L2, 'InitialMagnification','fit');

axis image on
Przykład 4

Erozja obiektu na obrazie monochromatycznym

kk=(0:127);

kk(1:8:128)=0;

L1=kk'*ones([1 128]);

L1=uint8 (L1+L1');

figure, imshow(L1);

L2=imerode(L1, ones(7,7));

figure, imshow(L2, [ ]);

4. Otwarcie i zamknięcie

Operacje otwarcia i zamknięcia są złożeniem wcześniej omówionych przekształceń tzn. erozji i dylatacji. Operacja otwarcia to kolejno wykonywane operacje erozji i dylatacji. Operacja zamknięcia to kolejno wykonywane operacje dylatacji i erozji.


otwarcie = erozja + dylatacja,
zamknięcie = dylatacja + erozja
5. Pogrubianie i ścienianie obiektów

Pogrubianie i ścienianie obiektów na obrazie polega na nałożeniu lub odcięciu wierzchniej warstwy obiektu znajdującego się na obrazie na przyłożeniu szablonu strukturalnego SE do każdego punktu obiektu w ten sposób, żeby punkt centralny pokrywał się z analizowanym punktem.

W Matlabie pogrubianie i ścienianie obiektów wykonuje się za pomocą funkcji bwmorph() z parametrami odpowiednio thicken i thin. Parametr thicken pogrubia obiekty, dodając piksele na zewnątrz obiektów, natomiast thin ścienia obiekty, odejmując piksele na zewnątrz obiektów.
Przykład 5

Proces pogrubiania obiektu na obrazie binarnym.

[L1]=imread('obiekt1.tif');

L1=rgb2gray(L1)<160;

figure, imshow(L1);

L2a=bwmorph(L1, 'thicken',5);

figure, imshow(L2a);

L2b=bwmorph(L1, 'thicken',10);

figure, imshow(L2b);

L2c=bwmorph(L1, 'thicken',20);

figure, imshow(L2c);
6. Szkieletyzacja

Szkieletyzacja to zbiór wszystkich punktów, które są w równych odległościach od co najmniej dwóch punktów należących do brzegu rozpatrywanego obiektu. Proces ten jest wykorzystywany do wyznaczenia szkieletów (osiowych punktów) analizowanych figur.


Przykład 6

Proces szkieletyzacji obiektu na obrazie binarnym.

[L1]=imread('obiekt1.tif');

L1=rgb2gray(L1)<170;

figure, imshow(L1);

L2=bwmorph(L1, 'skel',Inf);

figure, imshow(L2);
7. Wyznaczenie centroidu

Centroid jest to szkielet figury ze szczególnie mocno obciętymi gałęziami. Operacja wyznaczania centroidu sprowadza figurę do punktu, w przypadku gdy figura nie ma otworów, lub do pętli, gdy takowe posiada.

Centroid figury na obrazie wykonuje się w Matlabie za pomocą funkcji bwmorph() z parametrem shrink. Ilość iteracji jest określana parametrem n. Jeżeli n=Inf (kolejne iteracje są wykonywane dopóty, dopóki w obrazie zostaną wprowadzone jakieś zmiany), to funkcja bwmorph() z parametrem shrink przedstawi każdy obiekt nie posiadający dziury w postaci punktu, natomiast obiekty mające dziury będą przedstawione jako połączone pierścienie pomiędzy każdą dziurą i zewnętrzną granicą obiektu.
8. Zalewanie otworów w obiekcie

Problemem często spotykanym w analizie obrazu jest wypełnianie zamkniętych otworów w obiekcie. Może to być potrzebne z dwóch powodów:



  • otwory na obrazie nie odpowiadają rzeczywistym otworom w obiekcie, ponieważ powstały sztucznie, na przykład jako skutek odblasku światła reflektorów oświetlających scenę,

  • potrzebne jest wyznaczenie parametrów obiektu bez uwzględnienia otworów.

Problem wypełniania otworów pojawia się przy stosowaniu komputerowej analizy obrazów do automatycznego rozpoznawania odcisków palców. Biały obiekt wewnątrz śladu listewki skórnej to jeden z najbardziej niepożądanych efektów ubocznych powstałych w procesie binaryzacji obrazu odcisku palca. Pozostawienie w obrazie binarnym dziur, powoduje, że procedura szkieletyzacji pozostawi w miejscu dziury pętlę, wprowadzając tym samym nieprawdziwą cechę charakterystyczną odcisk palca.
Przykład 7

Zalewanie otworów w obrazie.

L1=zeros(100,100); L1(70,40)=1; L1(20:30,80)=1; L1(40,40:70);

L1=1-mat2gray(bwdist(L1, 'euclidean'));

L1=(L1<0.8)&(L1>0.5);

figure, imshow(L1);

L2=bwfill(L1, 'holes');

figure, imshow(L2);


9. Gradient morfologiczny

Gradient morfologiczny jest operacją, która powstaje jako różnica wyniku operacji dylatacji i erozji.



Operacja ta jest stosowana głównie do wykrywania krawędzi występujących w obrazie.
Przykład 8

Zastosowanie gradientu morfologicznego.

[L1, map]= imread('krajobraz1.tif');

L1=ind2gray(L1, map);

figure, imshow(L1);

SE=ones(3);

gradL1=(imdilate(L1, SE) - imerode(L1, SE));

figure, imshow(gradL1, [ ]);



Przykład 9
Przeanalizować przykład klasteryzacji danych
Proszę wpisać w konsoli

fcmdemo
Przeanalizować zasadę działania funkcji fcm(data,cluster_n)
Przykład 10

Przeanalizować przykład klasteryzacji danych i klasyfikacji z użyciem metody Fuzzy C-Means Clustering


%{

Program dokonuje klastorwania danych 2D używając toolbox'a logiki rozmytej. Klastrowanie przebiega z użyciem jednej funkcji. Nastepnie wyrysowywane są centra otrzymanych klastrów

%}

close all



data = [1 1; 1 2; 2 1; 2 2; 4 4; 5 4; 5 5; 4 5]; %

figure, plot(data(:,1), data(:, 2), '*k');

hold on

cluster_n = 2; % ilosc klastrow


[centers,U] = fcm(data,cluster_n); % klastrowanie
plot(centers(1,1),centers(1,2), 'xr', 'MarkerSize', 10); % wyrysowanie centrum 1 klasrta

plot(centers(2,1),centers(2,2), 'xb', 'MarkerSize', 10); % wyrysowanie centrum 2 klastra

%plot(centers(3,1),centers(3,2), 'xg', 'MarkerSize', 10); % wyrysowanie centrum 2 klastra

%hold off


% obliczanie umownej granicy klas

dx = abs(centers(1,1) - centers(2,1));

dy = abs(centers(1,2) - centers(2,2));

r = sqrt(dx*dx + dy*dy);

r = r*0.4; % przyjecie umownej granicy klas od środka klastru
% klasyfikacja

new_data = [1.5 2; 4.25 4.25; 3 3]; % punkty do klasyfikacji

new_data_n = size(new_data, 1); % ilosc klasyfikowanych punktow

plot(new_data(:, 1), new_data(:, 2), '*c'); % wyrysowanie nowych punktow

hold off
for i = 1:new_data_n

dx1 = abs(centers(1,1) - new_data(i, 1)); % obliczanie odlegosci

dy1 = abs(centers(1,2) - new_data(i, 2));

r1 = sqrt(dx1*dx1 + dy1*dy1);

dx2 = abs(centers(2,1) - new_data(i, 1));

dy2 = abs(centers(2,2) - new_data(i, 2));

r2 = sqrt(dx2*dx2 + dy2*dy2);

if(r1 < r && r2 > r)

fprintf('Punkt %d zaklasyfikowano do klasy pierwszej\n', i);

end


if(r2 < r && r1 > r)

fprintf('Punkt %d zaklasyfikowano do klasy drugiej\n', i);

end

if(r1 > r && r2 > r)



fprintf('Punkt %d nie został zaklasyfikowany do zadnej z klas\n', i);

end


end

Zadania
Zad 1

Zastosować funkcję applylut() do obrazu 'krajobraz1.tif' i lut=[0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1]. Uwaga nie używać funkcji ind2gray.


Zad 2

Wykonać erozję obrazu 'obiekt1.tif' z górnym progiem binaryzacji 168 oraz elementem strukturalnym SE 3x3, 5x5, 7x7. Wskazówka Element SE 3x3 można zapisać jako ones(3,3).


Zad 3

Wykonać erozję z zastosowaniem funkcji bwulterode() dla sztucznego obrazu. Proszę dokończyć następujący kod programu.

L1=zeros(40); L1(30,20)=1; L1(30,34)=1; L1(8,30)=1;

L1(16,18)=1;

L1=bwdist(L1); L1=mat2gray(L1); L1=1-L1;

L1=L1>0.65;

figure, imshow(L1);

................

................

................


Zad 4

Wykonać dylatację obiektu na obrazie binarnym 'obiekt1.tif' z górnym progiem binaryzacji 168 oraz elementem strukturalnym SE 3x3, 5x5, 7x7. Do ego celu użyć funkcji imdilate().


Zad 5

Wykonać erozję na obrazie kolorowym 'wieza.tif' oraz elementem strukturalnym SE 3x3, 5x5, 7x7.


Zad 6

Wykonać dylatację na obrazie kolorowym 'wieza.tif' i 'krajobraz1.tif' oraz elementem strukturalnym SE 3x3, 5x5, 7x7.


Zad 7

Wykonać operację otwarcia obiektu na obrazie binarnym 'obiekt1.tif' z górnym progiem binaryzacji 180 oraz elementem strukturalnym 5x5. Zastosować funkcję imopen().


Zad 8

Wykonać operację zamknięcia obiektu na obrazie binarnym 'obiekt1.tif' z górnym progiem binaryzacji 180 oraz elementem strukturalnym 5x5. Zastosować funkcję imclose().


Zad 9

Ścienić obiekt 'obiekt1.tif' na obrazie binarnym z górnym progiem binaryzacji 170 oraz funkcją bwmorph().


Zad 10

Wykonać proces szkieletyzacji obiektu na obrazie binarnym 'bacteria.tif' z górnym progiem binaryzacji 100.


Zad 11

Wykonać proces szkieletyzacji obiektu na obrazie binarnym 'blood.tif' z górnym progiem binaryzacji 130.


Zad 12

Wyznaczyć centroid w obiektach na obrazie binarnym 'komorki.tif' z progiem z górnym progiem binaryzacji 180. Do tego celu użyć funkcji bwmorph() z parametrem shrink oraz z 5 i 40-stoma itercjami.


Zad 13

Wyznaczyć centroid obiektu na obrazie binarnym 'blood.tif' z górnym progiem binaryzacji 130.


Zad 14

Wykonać zalewanie otworów w obiekcie na obrazie binarnym 'obiekt1.tif' z górnym progiem binaryzacji 170. Do tego celu użyć funkcji bwmorph() z parametrem majority.



Zad 15

Wyznaczyć kontur za pomocą formuły "obraz binarny - obraz binarny po erozji" na obrazie binarnym 'krajobraz1.tif' z dolnym progiem binaryzacji 128. Do tego celu użyć funkcji imerode() z elementem strukturalnym 3x3.


Zad 16

Wydzielić linię obwodu obiektów na podanym obrazie. Do tego celu zastosować funkcję bwperim() i dokończyć kod programu.


L1=zeros(100,100); L1(70,40)=1; L1(20:30, 60)=1;L1(40,40:70)=1;

L1=1-mat2gray(bwdist(L1, 'euclidean'));

L1=(L1>0.7);

……………


……………

……………
Zad 17

Na podstawie Przykładu 10 sklasyfikować następujące punkty: [2 3; 4.4 4.4; 2.9 2.9; 3.1 3.1];

Pytania kontrolne:

1. Po co nam dylatacja i erozja

Odp. Na zajęciach projektowych był obraz z dziurami. Używaliśmy filtra do zalewania tych dziur. Możnaby to zrobić inaczej 30 razy zrobić dylatacje i później 30 razy erozje.









©operacji.org 2019
wyślij wiadomość

    Strona główna