Cvičení 5 - Segmentace objektů

A) Teoretický úvod

Pojem segmentace objektů znamená v oblasti zpracování obrazu logické oddělení objektů zájmu od pozadí. Segmentačních metod existuje velké množství zařazené v několika třídách, které jsou postaveny na rozdílných mechanismech. Nejjednodušším případem je jasová segmentace prahováním, kdy jsou např. světlé objekty odděleny od tmavého pozadí pomocí jednoho nebo více konstantních prahů. Algoritmus prahování je sám o sobě triviální, protože se jedná o surjektivní zobrazení množiny M jasových hodnot vstupního obrazu na množinu indexů N tak, že pro mohutnost množin platí |M|>|N|. Aby bylo možné výsledek snadno vizualizovat, nahlíží se obvykle při implementaci na indexy výstupní množiny jako na jasové hodnoty např. pro prosté prahování se volí dva indexy 0 a 255 namísto 0 a 1. Operace prostého prahování s prahem T a prahování s více prahy <T1,Tn> nad obrazem f(x,y) jsou definovány následovně.

Zajímavější je problematika stanovení hodnoty prahu nebo množiny prahů. V nejjednodušším případě je práh nastaven na konstantní hodnotu podle apriorní informace o jasové hodnotě objektů a pozadí. Existují další více či méně složité mechanismy stanovení prahu založené např. na známém procentním zastoupení objektů v obrazu, na náhodném generování hodnoty prahu, na analýze histogramu obrazu atd. Analýza histogramu obrazu je nejpočetnější skupina metod, která také zpravidla vykazuje nejlepší výsledky. Pro rychlou implementaci využívají některé metody následující vektory histogramů obrazu: prostý histogram h(q), vážený histogram hw(q), kumulativní histogram hc(q) a kumulativní vážený histogram hcw(q).

Zmíněné vektory histogramů s výhodou využívá metoda iterativního nalezení prahu, kdy je v každé iteraci i upřesňován aktuální práh Ti až do okamžiku stability tj. idempotence (hodnota prahu se ve dvou po sobě jdoucích průchodech nezmění). Metoda je založena na prostém faktu, že aktuální práh Ti od sebe dělí právě dvě množiny pixelů, tj. pixely pozadí a pixely objektů. V každé iteraci i je stanovena průměrná hodnota pozadí Ei(bg) a průměrná hodnota objektů Ei(fg), a z těchto dvou hodnot je stanoven práh další iterace Ti+1 jako aritmetický průměr. Pro první iteraci lze uvažovat práh T0=1 tj. pozadí je tvořeno pixely s jasovou hodnotou 0, ostatní pixely se považují za objekty.

Výhodou metody je práce pouze s vektorovými poli histogramů bez nutnosti provádět operaci prahování přímo s obrazovými daty. Tato operace se provede pouze jednou až po skončení iterativného nalezení prahu.

V případě barevných obrazů je možné pro segmentaci využít znalost o dominantní barvě segmentovaných objektů a segmentaci provést přímo v barevném prostoru. Klasickým případem jsou aplikace rozpoznávání osob nebo jejich částí (výraz tváře, gesta ruky). V takových případech lze využít apriorní znalost o barvě kůže a segmentaci provést ve vhodně zvoleném barevném prostoru. Výrazným problémem je však různá barva kůže u různých etnik, která v celosvětovém měřítku kolísá od nejsvětlejších odstínů až po nejtmavší (viz distribuce pleťových odstínů na obrázku).

Z tohoto pohledu není standardní aditivní barevný model RGB vhodný, protože neodděluje jasovou informaci od barevné a pleťové odstíny jsou rozesety po významně velké oblasti barevného prostoru. Vhodnější je skupina barevných modelů s oddělenou jasovou a barevnou složkou. Typickým zástupcem je např. barevný model YCbCr, který nese informaci o jasu v samostatné složce Y a informaci o barvě ve dvou zbývajících složkách Cb a Cr. Podmínky pro segmentaci barvy kůže lze snadno pozorovat v obou zmíněných barevných prostorech RGB a YCbCr, do kterých je vynesena tatáž množina obrazových bodů odpovídajících barvě kůže (koláž částí různých obrazů). Na následujícím obrázku je RGB resp. YCbCr prostor zobrazen vlevo resp. vpravo a výrazný rozdíl pro výpočet kompaktního modelu je patrný v projekci reprezentantů do roviny R-G resp. Cb-Cr.

Výraznou výhodou prostoru s doplňkovými barvami Cb a Cr je, že se změnou teploty osvětlení a částečně i se změnou tónu kůže se významně mění složka Y a naopak se téměř nemění barevné složky Cb a Cr. Vynesením reprezentantů barvy kůže do roviny Cb-Cr lze vypočítat model barvy lidské kůže a ten následně použít pro segmentaci. Modely mohou být v zásadě dva: binární tj. deterministický (vlevo) a pravděpodobnostní tj. stochastický (uprostřed a vpravo).

Binární model pracuje tak, že všechny pixely s hodnotami (Cb,Cr) spadající do vyznačené oblasti (modelu) jsou klasifikovány jako barva kůže, ostatní jako okolí. Pravděpodobnostní model naopak klasifikuje pixel do třídy barvy kůže jako relativní vzdálenost od středu oblasti (modelu). Se stoprocentní příslušností jsou tak do třídy barvy kůže zařazeny pouze ty pixely, jejichž dvojice (Cb,Cr) přesně odpovídá dvojici modelu. Ostatním pixelům je přiřazena pravděpodobnost příslušnosti na základě zvolené metriky, zpravidla Euklidovská vzdálenost (lineární norma L2) nebo Gaussova funkce (nelineární norma).

B) Úkoly

  1. Napište funkci [J T] = ImageThresholdIter(I), která vrací prahovaný obraz J vstupního šedotónového obrazu I s jedním prahem T. Hodnotu prahu stanovte ve funkci iterativní metodou uvedenou v teoretickém úvodu. Správnost implementace ověřte pro obraz [obraz03.bmp] tak, že do jednoho okna vykreslete současně původní obraz a výsledky všech iterací s titulkem obsahujícím číslo iterace a hodnotu prahu. Výstupní parametry J resp. T definujte jako množinu prahovaných obrazů resp. množinu hodnot prahů pro jednotlivé iterace.

  2. Napište funkci [J K] = ImageColorSegmentation(I) pro segmentaci objektů zvolené barvy v doplňkovém barevném prostoru YCbCr a to binární a pravděpodobnostní metodou. V první fázi vykreslete originální obraz [obraz12.bmp] a funkcí ginput zvolte segmentační barvu. Ve výstupním parametru J pak vraťte binární segmentovaný obraz těch pixelů, jejichž barva je v rovině Cb-Cr v maximální Euklidovské vzdálenosti D=10 od zvolené segmentační barvy. Nakonec převeďte binární segmentaci na pravděpodobnostní s Gaussovským rozložením a výsledek segmentace vraťte v parametru K. Směrodatnou odchylku o hodnotě S=5 uvažujte stejnou pro obě osy roviny Cb-Cr.

  3. Pro obrazy [obraz09.bmp],[obraz10.bmp] a [obraz11.bmp] zobrazte společně s originálním obrazem do jednoho okna výsledky J a K, komentujte rozdíly mezi binárním a pravděpodobnostním obrazem při změně parametrů D a S a uveďte alespoň jednu výhodu každého přístupu.

C) Dobré vědět

  • Povolené funkce: imread, im2bw, title, num2str, rgb2ycbcr, ycbcr2rgb

  • Nepovolené funkce: graythresh

D) Ilustrace výsledků