AKADEMIA GÓRNICZO – HUTNICZA
im. Stanisława Staszica w Krakowie
Systemy Wizyjne
Sprawozdanie z laboratorium nr 2 MatLab
Michał Grudziński
Maciej Bajor
Mechatronika (IMiR)
grupa 26, rok III
Zadanie 1
1. Wczytanie obrazu do przestrzeni roboczej MatLaba oraz wyświetlenie go.
Polecenie:
img = imread(
'photo1.jpg'
);
figure(1), imshow(img);
2. Konwersja obrazu do skali szarości.
Polecenie:
gray = rgb2gray(img);
3. Wykonanie histogramu dla obrazu w skali szarości.
Polecenie:
imhist
(gray);
4. W związku z brakiem możliwości jednoczesnego wyodrębnienia wszystkich
obiektów, zastosowano różne progi binaryzacji. Następnie uzyskane obrazy
poddano filtracji.
Poniżej proces binaryzacji podkładki (zaznaczona na czerwono), pozostałe
obiekty były wyodrębnione analogicznie.
Polecenie:
bw = (gray>=0 & gray<=90);
imshow(bw);
5. Przeprowadzenie filtracji z zastosowaniem filtrów erozji i dylatacji
morfologicznej z elementem strukturalnym w kształcie dysku.
Polecenie:
se = strel(
'disk'
,5);
bw1 =imdilate(bw,se);
bw1 =imerode(bw1,se);
imshow(bw1);
6. Przeprowadzenie segmentacji i nadanie etykiet obiektom. Czarne tło ma wartość
zero a kolejne obiekty przyjmują naturalne wartości.
Polecenie:
[L1, num1] = bwlabel(bw1,8);
7. Znajomość przypisanej etykiety pozwala na wyodrębnienie i wyświetlenie
obiektu.
Polecenie:
bw1_1 = ismember(L,10);
imshow(bw1_1);
8. Zsumowanie wyodrębnionych obiektów.
Zadanie 2
Instrukcja REGIONPROPS umożliwia wybór i pomiar charakterystyk elementów
obrazu.
Składnia funkcji: FEATS = REGIONPROPS(CC,PROPERTIES)
CC- macierz etykiet, lub obraz;
PROPERTIES- wybrana cecha do pomiaru.
Dostępne parametry:
All - pomiar wszystkich parametrów
Basic - pomiar parametrów bazowych(Area, Centroid, Bounding Box)
Area - zwrócenie liczby pikseli z których składa się obiekt
BoundingBox - przedstawia najmniejszy prostokąt w jakim
mieści się dany obiekt
Centroid - środek ciężkości obiektu
MajorAxisLength – zwraca długość (w pikselach) głównej osi
elipsy, która ma ten sam drugi moment centralny taki sam jak
region
MinorAxisLength – j.w. lecz w odniesieniu do małej osi elipsy
Eccentricity – zwraca wartość między 0 a 1. Stosunek
odległości między ogniskiem elipsy i długością jej osi
wielkiej.
Orientation – zwraca kąt (w stopniach) między osią x a
główną osią elipsy
Image - zwraca obcięty obraz obiektu wielkości BoundingBox
danego obiektu
FilledImage - zwraca obraz jw. wraz z wypełnionymi lukami
wewnątrz obiektu
Filled Area - zwraca liczbę pikseli FilledImage
ConvexHull
–
zwrot
współrzędnych
wierzchołków
najmniejszego wielokąta wypukłego, zawierającego obiekt.
ConvexImage – zwraca obraz obiektu z wyeliminowanymi
wklęśnięciami, rozmiarze BoundingBox
ConvexArea - zwraca liczbę pikseli ConvexImage
EulerNumber – równy liczbie obiektów w regionie minus liczba
dziur w nim
Extrema –zwraca współrzędne punktów charakterystycznych
EquivDiameter – średnica koła o tym samym polu co region
Solidity – Stosunek między Area, a ConvexArea
Extent – Stosunek między Area, a BoundingBox Area
PixelIdxList – indeksy pikseli danego obiektu
PixelList – macierz współrzędnych pikseli danego obiektu
Perimeter - zwraca wartość skalarną określającą długość krawędzi
obiektu
Zadanie 3
Środki ciężkości:
Polecenie:
% Wybranie cech obrazu oraz prezentacja położenia, orientacji,
% prostokąta opisanego
[L,num] = bwlabel(bw_ost,8);
feats = regionprops(L,
'All'
);
% Położenie
figure(9)
hold
on
h1 = imshow(L);
r1 = 100;
r2 = 300;
for
i=1:size(feats)
h1 = line(feats(i).Centroid(1),feats(i).Centroid(2),
'Marker'
,
'.'
,
'MarkerEdgeColor'
,
'r'
);
end
hold
off
Orientacja
Polecenie:
% Orientacja
figure(10)
hold
on
h2 = imshow(L);
for
i=1:size(feats)
h2 = line([feats(i).Centroid(1),feats(i).Centroid(1)+r2*cos(feats(i).Orientation*(pi/180))
],[feats(i).Centroid(2),feats(i).Centroid(2)+r2*sin(feats(i).Orientation*(pi/180))]);
end
hold
off
Prostokąt opisany na obiekcie
Polecenie:
% Njmniejszy prostokąt
figure(11)
hold
on
h3 = imshow(L);
for
i=1:size(feats)
h3 =
rectangle(
'position'
,[feats(i).BoundingBox(1),feats(i).BoundingBox(2),feats(i).BoundingBox
(3),feats(i).BoundingBox(4)],
'EdgeColor'
,
'r'
);
end
hold
off
Zadanie 4
Polecenie:
% Wyliczenie charakterystyk
for
i=1:size(feats)
%form_factor
Char(i,1) = 4*pi*feats(i).Area / feats(i).Perimeter^2;
%roundness
Char(i,2) = 4*feats(i).Area / (pi*feats(i).MajorAxisLength^2);
%acpect_ratio
Char(i,3) = feats(i).MajorAxisLength / feats(i).MinorAxisLength;
%solidity
Char(i,4) = feats(i).Solidity;
%compactness
Char(i,5) = sqrt(4*feats(i).Area/pi) / feats(i).MajorAxisLength;
end
Char
Opis:
Wyniki:
Nr obj.\Cecha
Form Factor
Roundness
Aspect Ratio
Solidity
Compactness
1
0.7119
0.6783
1.4027
0.9568
0.8236
2
0.6528
0.7621
1.0652
0.9042
0.8730
3
0.7965
0.7670
1.0359
0.8823
0.8758
4
0.2246
0.1639
4.8430
0.7116
0.4048
5
0.6345
0.7982
1.0108
0.8726
0.8934
6
0.6304
0.5803
1.0163
0.7395
0.7618
7
0.6969
0.6910
1.3791
0.9702
0.8313
8
0.6702
0.7843
1.0332
0.9037
0.8856
9
0.2016
0.4800
1.0424
0.5987
0.6928
10
0.7344
0.8843
1.0804
0.9852
0.9404
11
0.6390
0.5416
1.7478
0.9718
0.7359
Zawarte w tabeli charakterystyki pozwalają na identyfikację kształtu obiektu. Warto
zauważyć, iż powiększenie obiektu nie ma na nie wpływu, w przeciwieństwie do
orientacji.
Śruba ma wyraźnie większy współczynnik Aspect Ratio. Podkładkę charakteryzuje dość
duży współczynnik Form Factor oraz Roundness. Nakrętkę identyfikuje niski poziom
Roundness przy jednoczesnym wysokim współczynniku Compactness. Obiekt z
numerem 9 można rozpoznać na podstawie niskiej wartości Form Factor oraz
Roundness przy Wartości około 1 dla współczynnika Aspect Ratio.
Ogólnie parametr Aspect Ratio pozwala na wykrycie obiektów symetrycznych. Mały
współczynnik Compactness charakteryzuje obiekty o smukłym kształcie. Natomiast
Solidity określa drążenia elementów, im większe drążenie, tym współczynnik przyjmuje
niższa wartość. Dla obiektów pełnych Solidity wynosi 1.