• Nie Znaleziono Wyników

5.5 Segmentacja obrazu - progowanie

5.5.2 Progowanie lokalne

Niejednorodne oświetlenie obserwowanej sceny powoduje, że często nie jest możliwe wy-znaczenie jednego poziomu progowania obrazu, pozwalające prawidłowo oddzielić szuka-ne otwory od powierzchni sita. Jeśli znalezienie właściwej wartości globalszuka-nego poziomu progowania τ jest jednak możliwe, przedstawione powyżej metody często zwracają zbyt wysoki poziom progowania, przez co obrazy otworów na obrazie wynikowym mają ten-dencję do zlewania się ze sobą. Dlatego też, pomimo większego obciążenia numerycznego i złożoności metody, zdecydowano się na wykorzystanie metod progowania lokalnego.

W tym przypadku obraz dzielony jest na przystające podobrazy o rozmiarach 64×64.

Dla każdego z nich wartość poziomu progowania wyznaczana jest niezależnie. Testowano dwie metody obliczania wartości progu lokalnego. W pierwszym przypadku wykorzy-stano przedstawioną wcześniej iteracyjną metodę znajdowania progu, opartą na analizie histogramu podobrazu. W drugim przypadku skorzystano ze zmodyfikowanej metody Bernsena [77].

Zmodyfikowana metoda Bernsena

Modyfikacja metody Bernsena, pozwalająca na elastyczne dopasowanie poziomu progo-wania obrazu (dla jaśniejszych lub ciemniejszych obrazów), polega na zmianie wartości współczynników wagowych we wzorze na poziom progu lokalnego w danym podobrazie:

τ (xw, yw) = (1− αB)· JL+ αB· JH, (5.11) gdzie xw i yw oznaczają współrzędne podobrazu (okna). xw = 0, yw = 0 oznacza le-wy górny podobraz. JL oraz JH są odpowiednio najniższym i najwyższym poziomem jasności spośród wartości przyjmowanych przez piksele w lokalnym podobrazie, zdefi-niowanym przez indeksy xw i yw. Parametr αB, w zależności od aktualnych warunków oświetlenia lub rodzaju otworów (jakości wykonania sita i rurek otworów), wybierany

a) b)

c) d)

e) f)

Rysunek 5.6: Progowanie lokalne bez uwzględnienia minimalnej rozpiętości jasności pik-seli w podobrazach; a,b) zdjęcia oryginalne c,d) poziomy progowania w poszczególnych podobrazach, metoda Bernsena, αB = 0, 3; e,f) otrzymane obrazy wynikowe.

jest empirycznie i przyjmuje najczęściej wartości w przedziale od 0, 1−0, 5. W orginalnej metodzie Bernsena, wartość współczynnika αB przyjmuje wartość 0, 5.

Pierwsza metoda wyznaczania wartości progu lokalnego, oparta na analizie histo-gramu podobszaru, często daje lepsze rezultaty niż metoda Bernsena ze stałym współ-czynnikiem αB = 0, 5. Dzięki możliwości zmiany wartości parametru αB, w prezentowa-nym systemie wizyjprezentowa-nym zdecydowanie częściej wykorzystywana jest metoda Bernsena.

Umożliwia ona dopasowanie parametrów progowania lokalnego do specyfiki uzyskiwa-nych zdjęć (w zależności od kształtu otworów, warunków oświetlenia i charakterystyki odbiciowej powierzchni sita lepiej sprawdzają się trochę inne wartości parametru αB).

Na rysunku 5.6 przedstawiono wynik progowania lokalnego dla dwóch różnych

kształ-tów otworów. W obu przypadkach wykorzystano zmodyfikowaną metodę Bernsena wy-znaczania wartości progu lokalnego ze współczynnikiem αB = 0, 3. Ponieważ poziom progowania w danym podobszarze jest stały oraz wyznaczone poziomy progowania za-leżą od jasności pikseli w podobrazie, przedstawione na rysunkach 5.6c i 5.6d obrazy przypominają obrazy oryginalne po drastycznym zmniejszeniu ich rozdzielczości (je-den kwadrat ma rozmiar 64× 64 pikseli). Na koniec przedstawiono obrazy wynikowe (po progowaniu), otrzymane na podstawie wyznaczonych wartości lokalnych poziomów progowania. Przed przeprowadzeniem operacji progowania, w obu obrazach usunięto drobne zakłócenia za pomocą wcześniej opisanych filtrów liniowych i medianowych.

Ponieważ poziom progowania jest wyznaczany również dla obszarów o niewielkiej rozpiętości jasności pikseli (powierzchnia sita oraz wnętrze rurki), otrzymane obrazy bi-narne wydobywają również zmiany poziomu jasności pikseli w obrębie wnętrza otworu lub powierzchni sita. Z powodu dużej różnicy poziomu progowania pomiędzy sąsiednimi podobrazami, na uzyskanym obrazie można zauważyć dużą liczbę obiektów w kształcie kwadratu, prostokątu lub przynajmniej z jednym lub dwoma pionowymi i poziomymi bokami. W celu uniknięcia niewłaściwego progowania obszarów o niewielkiej rozpiętości jasności pikseli, wprowadzono dodatkowy parametr αJ określający dla jakich podobsza-rów powinny być wyznaczane lokalne poziomy progowania.

τ (xw, yw) = {

(1− αB)· JL+ αB· JH dla JH − JL­ αJ

−1 dla JH − JL< αJ , (5.12)

gdzie τ (xw, yw) =−1 oznacza, że dla danego podobszaru nie wyzaczono lokalnego pozio-mu progowania. Wzór 5.12 definiuje lokalne poziomy progowania dla metody Bernsena.

Parametr αJ jest również stosowany w przypadku innych metod wyznaczania lokalnego poziomu progowania (np. iteracyjnej metody znajdowania progu, opartej na analizie histogramu).

W dalszej części pracy używana jest nazwa tablica poziomów progowania, będąca w istocie obrazem zawierającym wyznaczone lokalne poziomy progowania. Z każdym elementem tablicy związane są współrzędne xw, yw określające położenie podobrazu dla którego dane pole tablicy przechowuje wyznaczoną wartość progu lokalnego. Rysunek 5.7c przedstawia lokalne poziomy progowania obrazu uwzględniając parametr αJ = 64.

Wartości lokalnych poziomów progowania były wyznaczone metodą Bernsena (5.12).

Białe pola oznaczają podobszary dla których lokalny poziom progowania nie został wyznaczony (τ (xw, yw) = −1). Dla tych obszarów, na obrazie wynikowym (rys. 5.7d) dostajemy białe obszary. W celu otrzymania właściwego obrazu wynikowego, należy uzupełnić braki w tablicy zawierającej lokalne poziomy progowania. Wypełniona tablica lokalnych poziomów progowania (odpowiadająca rysunkowi 5.7c) przedstawiona jest na rysunku 5.7b.

Algorytm uzupełniania braków w tablicy lokalnych poziomów progowania opiera się na dobraniu poziomów progowania, będących średnią poziomów progowania z sąsied-nich, wypełnionych już obszarów tablicy. Ponieważ analizowana tablica jest odzwier-ciedleniem dwuwymiarowego obrazu, za sąsiadów danego pola tablicy uznawane są te pola, które sąsiadują z nim w dwuwymiarowym obrazie reprezentującym lokalne po-ziomy progowania. Obszar o jednorodnym poziomie jasności (np. powierzchnia sita) może zawierać klika sąsiadujących ze sobą podobrazów z nieprzydzielonym lokalnym poziomem progowania. Możliwa jest w takim przypadku sytuacja, że znajdzie się kil-ka podobrazów, dla których nie można wyznaczyć średniego poziomu progowania na podstawie wartości progów z sąsiednich obszarów, gdyż wszyscy sąsiedzi nie mają przy-dzielonego poziomu progowania. Taka sytuacja widoczna jest na rysunku 5.7c w lewym górnym rogu.

Procedura wypełniania braków w tablicy lokalnych poziomów progowania wygląda następująco:

a) b)

c) d)

Rysunek 5.7: Progowanie lokalne bez uzupełnienia tablicy lokalnych poziomów progo-wania; parametry: αJ = 64, αB = 0, 3; a) zdjęcie oryginalne; b) obraz przedstawiający lokalne poziomy progowania po wypełnieniu tablicy lokalnych poziomów progowania;

c) obraz przedstawiający lokalne poziomy progowania, biały obszar oznacza, że lokalny poziom progowania nie został wyznaczony τ (x, y) =−1; d) wynik progowania obrazu bez uzupełnienia tablicy lokalnych poziomów progowania.

1. Przeglądamy tablicę lokalnych poziomów progowania wzdłuż kolejnych wierszy.

Aktualnie testowanemu polu tablicy odpowiadają współrzędne xw, yw na obrazie dwuwymiarowym.

2. W momencie gdy natrafimy na pole z nieprzydzieloną wartością lokalnego poziomu progowania τ (xw, yw) =−1, sprawdzamy wszystkich sąsiadów6pola o indeksie xw, yw w poszukiwaniu pól o przydzielonej wartości poziomu progowania.

3. Jeżeli znajdziemy chociaż jedno sąsiadujące pole z przydzielonym poziomem pro-gowania, w polu τ (xw, yw) wpisujemy poziom progowania będący średnią poziomu progowania znalezionych sąsiadów. W przypadku gdy wszystkie sąsiadujące pola nie mają przypisanego poziomu progowania, pozostawiana jest wartość−1.

4. Jeżeli po sprawdzeniu wszystkich pól tablicy lokalnych poziomów progowania oka-że się, oka-że nie pozostało już żadne puste pole, procedura zostaje zakończona, w przeciwnym wypadku konieczny jest powrót od punktu 1.

W większości wypadków wystarczy jednokrotne przejrzenie tablicy lokalnych pozio-mów progowania w celu wyeliminowania występujących z niej braków. Gdy na obrazie mamy do czynienia z większymi obszarami jednorodnej powierzchni oraz ustawiona jest

6Zakładamy wszystkich dziewięciu sąsiadów pola o współrzędnych xw, yw. Czyli brane jest pod uwagę sąsiedztwo bezpośrednie jak również po skosie.

stosunkowo duża wartość parametru αJ, pojawiają się spore obszary w tablicy lokalnych poziomów progowania, dla których trzeba zrekonstruować odpowiednią wartość.

Doświadczenia pokazały, że po przeprowadzeniu rekonstrukcji tablicy lokalnych po-ziomów progowania warto zadbać o to, aby wartości progów sąsiadujących ze sobą pod-obrazów nie różniły się znacząco. W tym celu przeprowadzane jest uśrednienie znacząco różniących się poziomów progowania. Ponieważ podczas zamiany zawartości pola tablicy zmienia się średni poziom progowania wyznaczony dla sąsiednich pól, w takim przypad-ku na nowo wyznaczane są średnie poziomy progowania dla sąsiadów modyfikowanego pola. Procedura eliminacji odstających poziomów progowania jest następująca:

1. Przeglądamy tablicę lokalnych poziomów progowania wzdłuż kolejnych wierszy.

Aktualnie testowanemu polu tablicy odpowiadają współrzędne xw, yw na obrazie dwuwymiarowym.

2. Wyznaczamy średnią wartość poziomu progowania w okolicy aktualnie testowane-go pola o współrzędnych xw, yw. Przy wyznaczaniu wartości średniego poziomu progowania nie uwzględniamy lokalnego poziomu progowania τ (xw, yw).

τsr(xw, yw) = 1

3. Jeżeli wartość bezwzględna różnicy pomiędzy lokalnym poziomem progowania τ (xw, yw) a wyznaczoną średnią τsr(xw, yw) jest większa od zadanego progu (w pro-gramie przyjęto wartość różnicy równą 32), przechodzimy do punktu 4. W prze-ciwnym wypadku przechodzimy do testowania kolejnego pola tablicy lokalnych poziomów progowania (punkt 1).

τr(xw, yw) =|τ(xw, yw)− τsr(xw, yw)| (5.14) 4. Wyznaczamy średni poziom progowania w sąsiadujących polach:

τsr(xw+ 1, yw) = 1 oraz wyznaczamy bezwzględne wartości różnic między lokalnym poziomem progo-wania a wyznaczoną wartością średnią:

τr(xw+ 1, yw) =|τ(xw+ 1, yw)− τsr(xw+ 1, yw)| (5.18)

τr(xw+ 1, yw+ 1) =|τ(xw+ 1, yw+ 1)− τsr(xw+ 1, yw+ 1)| (5.19)

τr(xw, yw+ 1) =|τ(xw, yw+ 1)− τsr(xw, yw+ 1)| (5.20)

5. Wybieramy pole, dla którego wyznaczona różnica τr() jest największa i wpisujemy w nim średnią wartość poziomu progowania.

jeśli τr(xw, yw)­ τr(xw+ 1, yw)

6. Przechodzimy do punktu drugiego.

Przedstawiona procedura powoduje uśrednienie w tablicy pojedynczych odstających wartości progów. Nie zmienia natomiast lokalnych poziomów progowania, gdy zmiana lokalnych poziomów progowania jest tendencyjna (np. gdy średnia jasność obrazu w danym miejscu zmienia się gwałtownie w pewnym kierunku).

Na rysunku 5.8 przedstawiono wynik progowania lokalnego dla dwóch metod wyzna-czania wartości lokalnego poziomu progowania. W obu przypadkach przyjęto αJ = 32.

Ponieważ lokalny poziom progowania jest taki sam w całym obszarze lokalnego pod-obrazu, po operacji progowania pojawiają się nieciągłości na granicach dwóch sąsiednich podobrazów. W celu wyeliminowania nieciągłości pojawiających się na obrazie wyniko-wym można zastosować lokalnie liniową interpolację wartości progów [57].

Lokalna liniowa interpolacja wartości progów oznacza, że poziom progowania obrazu jest wyznaczany indywidualnie dla każdego piksela obrazu. Na rysunku 5.9 przedstawio-no wynik progowania lokalnego z uwzględnieniem lokalnej, liniowej interpolacji poziomu progowania. Rysunki 5.9c i 5.9e zawierają obrazy przedstawiające wyznaczone warto-ści lokalnego poziomu progowania dla każdego piksela obrazu. Obok nich znajdują się obrazy będące wynikiem lokalnego progowania obrazu. Na rysunku 5.9d widzimy dużo pozostałości po niejednorodnym obrazie tła (powierzchni sita). Ilość zakłóceń obrazu można skutecznie zredukować dobierając większą wartość parametru αJ oraz mniejszą wartość parametru αB. Nie jest to jednak konieczne, gdyż z punktu widzenia dalszego przetwarzania obrazu najważniejsze są następujące własności progowania obrazu:

1. Progowanie obrazu powinno jak najdokładniej odtworzyć wnętrze rurki (bez bia-łych plam) oraz wiernie odwzorować brzeg otworu wraz z obszarem pomiędzy krawędzią sita a zewnętrznym brzegiem rurki.

2. W pobliżu krawędzi otworu powierzchnia sita powinna być możliwie biała.

3. Drobne pozostałości (zakłócenia) na powierzchni sita są nieistotne jeśli: elementy zakłócające są dużo mniejsze od rozmiaru otworu, poszczególne otwory są od siebie odseparowane oraz zakłócenia pojawiają się w pewnej odległości od krawędzi otworu.

a) b)

c) d)

e) f)

Rysunek 5.8: Progowanie lokalne bez interpolacji lokalnych poziomów progowania. a) zdjęcie oryginalne; b) metoda Bernsena, αJ = 128, αB = 0, 35; c,d) lokalne pozio-my progowania dla metody Bernsena, αJ = 32, αB = 0, 3, oraz obraz wynikowy dla przedstawionych lokalnych poziomów progowania; e,f) lokalne poziomy progowania dla metody iteracyjnej znajdowania progu, bazującej na analizie histogramu, αJ = 32, oraz obraz wynikowy dla przedstawionych lokalnych poziomów progowania.

Przedstawione na rysunku 5.9b,d,f obrazy spełniają wymienione wymagania. W tym przypadku, zastosowanie iteracyjnej metody znajdowania progu, bazującej na analizie histogramu, pozwala uzyskać lepszy rezultat niż zastosowanie metody Bernsena dla αB = 0, 3 i αJ = 32. Metoda Bernsena zawiera jednak dodatkowy parametr αB, po-zwalający modyfikować końcowy efekt działania procedury progowania obrazu, a tym samym dostosować się do aktualnych parametrów oświetlenia sceny i specyfiki otrzy-mywanych zdjęć. Jeżeli w przedstawionym przykładzie wybrana zostanie inna wartość

a) b)

c) d)

e) f)

Rysunek 5.9: Progowanie lokalne z interpolacją lokalnych poziomów progowania. a) zdję-cie oryginalne; b) metoda Bernsena, αJ = 128, αB = 0, 35; c,d) lokalne poziomy pro-gowania dla metody Bernsena, αJ = 32, αB = 0, 3 oraz obraz wynikowy dla przedsta-wionych lokalnych poziomów progowania; e,f) lokalne poziomy progowania dla metody iteracyjnej znajdowania progu, bazującej na analizie histogramu, αJ = 32, oraz obraz wynikowy dla przedstawionych lokalnych poziomów progowania.

parametru αB, możliwe jest uzyskanie wyniku zbliżonego do obrazu widzianego na ry-sunku 5.9f (np. rys. 5.9b). Na ryry-sunku 5.10 przedstawiono wpływ wartości parametru αB na otrzymywane obrazy wynikowe. Widzimy, że dobierając odpowiednią wartość parametru αB możemy w wielu przypadkach zagwarantować rozdzielenie obrazów po-szczególnych otworów, co nie zawsze jest możliwe w przypadku przedstawionej metody bazującej na analizie histogramu.

a) b)

c) d)

Rysunek 5.10: Wynik progowania lokalnego metodą Bernsena dla różnych wartości pa-rametru αB. a) obraz oryginalny; b) αB = 0, 1; c) αB = 0, 4; d) αB= 0, 7;