• Nie Znaleziono Wyników

6.2 Rekonstrukcja obrazu otworu

6.2.3 Łączenie ze sobą dwóch obiektów

Połączenie obiektu bazowego o indeksie s z obiektem o indeksie i realizowane jest za po-mocą wielokrotnie wykonywanych morfologicznych operacji dylatacji i erozji (operacja zamknięcia) na obrazieJI(x, y) będącym wynikiem przeprowadzenia operacji indeksacji obrazu [30]. Operacja połączenia dwóch obiektów przedstawiona jest na rysunkach 6.5 i 6.7. Zadanie polega na połączeniu ze sobą obiektów X(s)i X(i)o indeksach odpowiednio s i i, oznaczonych na pierwszym rysunku.

X(i) X(s)

Rysunek 6.5: Sklejanie obiektów na obrazie za pomocą morfologicznej operacji zamknię-cia. Nie jest uwzględniana informacja pochodząca z indeksacji obrazu.

a) b)

Rysunek 6.6: Element strukturalny, wykorzystywany przy operacji łączenia otworów.

a) element strukturalny wykorzystywany w systemie wizyjnym; b) tradycyjna postać elementu strukturalnego.

Operacje erozji i dylatacji wykonywane są przy użyciu elementu strukturalnego przedstawionego na rysunku 6.6a. Wartość jeden oznacza piksel należący do elemen-tu strukelemen-turalnego zaś podwójna ramka oznacza punkt odniesienia (w tym przypadku punkt odniesienia nie należy do elementu strukturalnego). Tradycyjnie w operacjach ero-zji i dylatacji wykorzystywane są elementy strukturalne przedstawione na rysunku 6.6b,

a)

b) X(i)

X(s)

X(i) X(s)

Rysunek 6.7: a) sklejanie obiektów na obrazie bez bufora pomocniczego (morfologiczna operacja zamknięcia); b) sklejanie obiektów przy wykorzystaniu obrazu pomocniczego (morfologiczna operacja zamknięcia wykonana w buforze pomocniczym).

w których wnętrzu wszystkie elementy są elementami aktywnymi. Przyjęta postać wzor-ca strukturalnego zapewnia otrzymanie prawidłowego wyniku przeprowadzenia operacji erozji i dylatacji przy prawie dwukrotnie mniejszym koszcie obliczeniowym wykonania operacji morfologicznych. W momencie, gdy rozmiar obiektu na obrazie jest większy od wykorzystanego elementu strukturalnego, wynik operacji erozji i dylatacji uzyskany za pomocą obu masek przedstawionych na rysunku 6.6 powinien być identyczny. Różnice pojawiają się dopiero w przypadku obiektów, których rozmiar jest mniejszy od rozmia-ru zastosowanej maski. W naszym przypadku łączymy obiekty, których rozmiar jest znacznie większy od rozmiaru elementów strukturalnych, stąd też zastosowanie maski

Rysunek 6.8: Górne zdjęcia - rozpoznawanie otworów bez łączenia znalezionych obiektów na obrazie, dolne zdjęcia - rozpoznawanie otworów z wykorzystaniem łączenia znalezio-nych obiektów (po znalezieniu otworu została wyznaczona trajektoria palnika robota).

przedstawionej na rysunku 6.6a jest w pełni uzasadnione.

Wykonanie czterech operacji dylatacji i czterech operacji erozji odpowiada wyko-naniu morfologicznej operacji zamknięcia dla odpowiednio większego elementu struktu-ralnego. Dzięki wykorzystaniu mniejszego elementu strukturalnego uzyskujemy znaczą-ce przyspieszenie wykonania operacji zamknięcia. Na przykładach przedstawionych na rysunkach 6.5 i 6.7 zrealizowano dwie operacje dylatacji i dwie operacje erozji. W ce-lu pokazania wyniku zastosowania poszczególnych operacji dylatacji, nowym pikselom obiektu nadano inne poziomy jasności. W zależności od rozdzielczości otrzymywanych z kamery zdjęć oraz w zależności od zastosowania zmniejszenia rozdzielczości obrazu bi-narnego (rozdział 5.6), konieczne jest wykonanie różnej liczby operacji erozji i dylatacji.

Na rysunku 6.5 przedstawiono wynik przeprowadzenia operacji dylatacji i erozji na obrazieJI(x, y) bez uwzględnienia informacji pochodzących z indeksacji obrazu. Zakłada się, że piksele o wartości równej zero należą do tła natomiast piksele o wartości większej od zera (JI(x, y) > 0) należą do obiektów, które podlegają operacji morfologicznej.

W wyniku tak przeprowadzonych operacji dylatacji i erozji połączeniu ulegają nie tylko interesujące nas obiekty X(s)i X(i)ale również wszystkie pozostałe, leżące odpowiednio blisko siebie. Możliwe jest uniknięcie takiego efektu dzięki wykorzystaniu informacji zawartych w obrazie JI(x, y), w którym wartość piksela odpowiada identyfikatorowi obiektu, do którego dany piksel jest przypisany. W takim przypadku wystarczy operację erozji i dylatacji wykonać dla pikseli o wartościach s i i, traktując pozostałe piksele jako tło. Wynik tak zdefiniowanej operacji zamknięcia przedstawiony jest na rysunku 6.7.

Załóżmy, że wyniki realizacji poszczególnych etapów operacji zamknięcia przecho-wywane są bezpośrednio na obrazieJI(x, y) (rys. 6.7a). Podczas wykonywania operacji dylatacji, piksele należące do innych obiektów i leżące odpowiednio blisko obiektów o

Rysunek 6.9: Przykład działania algorytmu łączenia obiektów z etapami pośrednimi.

Od lewej strony przedstawione są odpowiednio: zdjęcie oryginalne, zdjęcie uzyskane po lokalnym progowaniu obrazu, wynik pierwszego etapu łączenia otworów, końcowy efekt działania algorytmu.

indeksach s i i przyjmują wartość s (odpowiadającą numerowi powiększanego obiektu).

Informacja o pierwotnej przynależności nadpisywanych pikseli jest tracona, co uwidacz-nia się po wykonaniu operacji erozji. Na przedstawionym przykładzie operacje dylatacji i erozji wykonywane były dwukrotnie, w praktyce realizuje się czterokrotne wykonanie operacji dylatacji i erozji. Tracona jest więc informacja o otoczeniu łączonych ze sobą obiektów. Ponieważ komputer nie wie, które obiekty i w jakiej kolejności powinny być ze sobą połączone, procedura zakłada próbne łączenie sąsiadujących obiektów. Jeżeli dane połączenie okaże się niewystarczające (otrzymany obiekt jest jeszcze zbyt mały), do nowopowstałego obiektu dołączane są kolejne. W związku z tym, w trakcie operacji łączenia obiektów, informacja dotycząca sąsiadujących obiektów nie może być utracona.

W związku z powyższym, zaproponowano wykorzystanie obrazu pomocniczego (bu-fora) na którym realizowana jest operacja zamknięcia a otrzymany wynik jest na koniec kopiowany do obrazuJI(x, y) (rys. 6.7b). Wykonanie operacji dylatacji i erozji w pomoc-niczym buforze powoduje, że piksele należące do pozostałych obiektów (nie biorących udziału w operacji łączenia) nie są nadpisywane, dzięki czemu po zakończeniu operacji pozostałe obiekty zachowują swoją pierwotną postać. Na rysunku 6.7 za pomocą czerwo-nych znaczników uwypuklono różnicę w obrazach wynikowych otrzymaczerwo-nych za pomocą dwóch przedstawionych metod. Przerywana strzałka oznacza symboliczne przejście z obrazu wejściowego do obrazu wynikowego, faktycznie realizowane operacje oznaczone są poniżej za pomocą ciągłych strzałek.

Procedura łączenia obiektów o indeksach s i i wygląda następująco:

1. Tworzony jest obraz pomocniczy. Obraz pomocniczy jest tego samego rozmiaru co

obrazJI(x, y), przy czym operacje wykonywane są tylko na części obrazu. Okre-ślany jest rozmiar obszaru potrzebnego do wykonania operacji łączenia obiektów.

xmin= min pikseli należących do i-tego obiektu. ddyl określa o ile pikseli powiększy się obiekt w każdą stronę po wykonaniu odpowiedniej liczby operacji dylatacji. Obszar zde-finiowany przez zmienne xmin, xmax, ymin i ymax „przycinany” jest do rozmiaru obrazuJI(x, y).

2. Kopiowany jest fragment obrazu, określony współrzędnymi xmin, xmax, ymin i ymax, z obrazuJI(x, y) do obrazu pomocniczegoJIbuf(x, y).

JIbuf(x, y) = {

s jeśli JI(x, y) = s∧ JI(x, y) = i

0 dla pozostałych przypadków (6.6) 3. Kilkukrotnie (najczęściej czterokrotnie) wykonywana jest operacja dylatacji na

obrazieJIbuf(x, y).

4. Kilkukrotnie (najczęściej czterokrotnie) wykonywana jest operacja erozji na obra-zieJIbuf(x, y).

5. Kopiowany jest fragment obrazu, określony współrzędnymi xmin, xmax, ymin i ymax, z obrazu pomocniczego JIbuf(x, y) do obrazu JI(x, y). Podczas kopiowania nadpisaniu ulegają jedynie piksele obrazuJI(x, y) należące do tła (JI(x, y) = 0) i do i-tego obiektu (JI(x, y) = s). Piksele należące do pozostałych obiektów nie są modyfikowane (w przypadku, gdyby obiekt trzeci znajdował się pomiędzy obiekta-mi o indeksach s i i, przypadek taki widoczny jest na rysunku 6.9, dolny przykład).

JI(x, y) =

{ s jeśli JIbuf(x, y) = s∧ (JI(x, y) = 0∨ JI(x, y) = i) JI(x, y) dla pozostałych przypadków

(6.7) 6. Po połączeniu obiektów, wyznaczane są nowe wartości parametrów S(s), D(s)min, Dmax(s) , R(s)c i R(s)z opisujących obiekt o numerze s. Aktualizowane są również pa-rametry: x(s)min, x(s)max, y(s)min, y(s)maxoraz położenie punktów PA(s)i PB(s) stanowiących szkielet obiektu.

Wynik połączenia dwóch obiektów przedstawiony jest na rysunkach 6.8 i 6.9. Na obu rysunkach widzimy, jak wykonanie operacji łączenia obiektów pozwoliło na prawidłowe wykrycie otworu na obrazie. Na drugim rysunku przedstawiono działanie algorytmu łączenia obiektów z etapami pośrednimi dla dwóch różnych przypadków.