Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

Wydział Inżynierii

Mechanicznej i Robotyki

Katedra Robotyki i Mechatroniki

Przetwarzanie sygnałów i identyfikacja w sterowaniu


urządzeń mechatronicznych

Temat: Binaryzcja obrazu i operacje morfologiczne


Cel ćwiczenia: Zapoznanie studentów z sposobami binaryzacji obrazów.
Omówienie operacji morfologicznych na przykładzie obrazów binarnych i obrazów
w skali szarości.
Zagadnienia:
1. Binaryzacja obrazu przez progowanie,
2. Operacje morfologiczne na obrazach binarnych,
3. Operacje morfologiczne na obrazach w skali szarości,

Prowadzący: dr inż. Krzysztof Holak


1. Binaryzacja obrazu.

Binaryzacja (progowanie) polega na zamianie obrazu w skali szarości na obraz czarno-


biały, zero-jedynkowy. Najczęściej progowanie przeprowadzane jest w oparciu o próg
binaryzacji. Przykładowo piksele o wartości mniejszej od progu przyjmują wartość 0, a
piksele o wartości wyższej od progu uzyskują wartość 1. Binaryzacja jest często pierwszym
etapem wielu algorytmów analizy obrazów. Pozwala na podział sceny na obiekty i tło w
przypadku, gdy jasności ich pikseli kontrastują ze sobą i mogą być oddzielone za pomocą
progu.

Binaryzacja w programie MATLAB jest przeprowadzana w następujący sposób:

threshold = graythresh(im);
im_bw = im2bw(im,threshold);

Funkcja graythresh() automatycznie wyznacza próg binaryzacji, a funkcja im2bw()


przekształca obraz dany w skali szarości na obraz binarny. Oczywiście, próg binaryzacji
można również wprowadzać ręcznie, na przykład po wyświetleniu histogramu i odczytaniu z
niego wartości względnej progu. Należy pamiętać, że próg w programie MATLAB jest
określony przez liczbę z zakresu 0-1.
Piksele obrazu binarnego można traktować jako zmienne logiczne typu (1/0). Dlatego
na obrazach binarnych można przeprowadzać operacje logiczne dowolnego typu.
Przykładowo:

1) Iloczyn logiczny: and(im1,im2)


2) Suma logiczna: or(im1,im2)
3) Negacja logiczna: not(im1); innym sposobem na negację obrazu jest użycie
funkcji imcomplement()

Na obrazach (binarnych i w skali szarości) przeprowadza się również operacje arytmetyczne:


imadd(im1,im2), imsubtract(im1, im2), immultiply(im1,im2).

Zadania 1.

1. Przeprowadź binaryzację obrazów wskazanych przez prowadzącego w celu wyodręb-


nienia z nich jakichś elementów. Zastosuj automatyczny i ręczny wybór progu binary-
zacji
2. Stosując binaryzację i operacje logiczne/arytmetyczne na obrazach napisz programy,
które:
- pozostawiają na obrazie obiekty o wartości jasności I > T
- pozostawiają na obrazie obiekty o wartości jasności I < T
- pozostawiają na obrazie obiekty o wartości jasności I z przedziału (T1, T2)
- pozostawiają na obrazie obiekty o wartości jasności I < T1 lub I > T2, gdzie T1<T2
W każdym przypadku obiekt składa się z pikseli białych, a T są zadanymi progami binaryza-
cji.

3. Operacja morfologiczne na obrazach binarnych

Operacje morfologiczne wykorzystują matematyczne działania na zbiorach w celu


wprowadzania zmian do obrazów. Mogą być stosowane zarówno do obrazów binarnych jak i
obrazów w skali szarości. W ogólnym przypadku, operacja morfologiczna polega na
przesuwaniu maski, nazywanej elementem strukturalnym, wzdłuż obrazu i wyznaczaniu, dla
każdego położenia maski, wartości wynikowej operacji logicznej pomiędzy pikselami maski,
a pikselami obrazu leżącymi bezpośrednio pod maską. Działanie operacji morfologicznych
jest najlepiej widoczne na obrazach binarnych. Poniżej zostanie opisany efekt operacji.

Pierwszym krokiem jest utworzenie maski (elementu strukturalnego):

se1 = strel(‘type’,size);

Gdzie ‘type’ oznacza typ elementu strukturalnego, a size określa jego rozmiar. Po utworzeniu
maski można zastosować jeden z wybranych filtrów morfologicznych.

1. Erozja - filtr erozji usuwa zakłócenia w postaci obiektów o wielkości mniejszej od


wielkości elementu strukturalnego, zmniejsza pole powierzchni wszystkich obiektów,
rozłącza obiekty połączone za pomocą cienkich odcinków.

bw_erode = imerode(im_bw,se1);

2. Dylatacja - filtr erozji usuwa zakłócenia w postaci „dziur” w obiektach, zwiększa po-
le powierzchni wszystkich obiektów, łączy obiekty, które znajdują się blisko siebie.

bw_dilate = imdilate(im_bw,se1);

3. Otwarcie – jest połączeniem następujących po sobie erozji i dylatacji. Usuwa zakłó-


cenia w postaci niewielkich obiektów, ale nie zmienia pola powierzchni obiektów du-
żych

bw_open = imopen(im_bw,se1);
4. Zamknięcie – filtr jest połączeniem następujących po sobie dylatacji i erozji. Usuwa za-
kłócenia w postaci dziur w obiektach, ale nie zwiększa ich pól powierzchni.

bw_close = imclose(im_bw,se1);

W programie MATLAB jest dostępna również uogólniona funkcja bwmorph(), dzięki której
możliwe jest wykonanie wyżej wymienionych, ale również wielu innych operacji
morfologicznych na obrazach binarnych.

Zadania 2

1. Napisz skrypt do wykonywania operacji morfologicznych na obrazach binarnych.


Przetestuj wpływ kształtu i wielkości elementu strukturalnego na wynik filtracji
morfologicznej.
2. W jaki sposób uzyskać detektor krawędzi stosując tylko operacje morfologiczne, arytme-
tyczne i logiczne? Zaimplementuj algorytm.
3. Sprawdź działanie następujących operacji morfologicznych możliwych do uzyskania z
użyciem funkcji bwmorph(): bothat, remove, skel, thicken, thin, tophat. Jakie mogą być
zastosowania tych operacji?

4. Operacje morfologiczne na obrazach w skali szarości.

Operacja morfologiczne mogą być również użyte na obrazach w skali szarości. Filtr
morfologiczny imerode() działa jak operacja min, tzn. zwiększa udział ciemnych pikseli w
obrazie. Filtr imdilate() ma działanie odwrotne, czyli zwiększa udział pikseli o wartości
maksymalnej, czyli najjaśniejszych. Podobne działanie mają filtry imclose() i imopen(), ale ich
działanie nie zmienia zawartości obrazu oryginalnego w takim stopniu jak dwa poprzednie filtry.

Zadanie 3

Przetestuj działanie filtrów. Usuń zakłócenia na obrazach wskazanych przez prowadzącego


zajęcia stosując filtrację morfologiczną.

You might also like