Warning
This page is located in archive.

~~UNDERCONSTRUCTION~~

Segmentace

V tomto cvičení se budeme zabývat segmentací barevných (RGB) obrazů do dvou tříd, tj. například budeme hledat oblast v obraze odpovídající nějakému objektu a jeho pozadí. Budou nás zájímat algoritmy, které tuto úlohu řeší poloautomaticky v tom smyslu, že uživatel dodá velice hrubou segmentaci a zbytek udělá počítač sám. Příklady takovéto segmentace jsou na následujícím obrázku:



Vstupní obrázek Částečná anotace vytvořená manuálně Počítačem odhadnutá segmentace
Vstupní obrázek Částečně anotovaný obrázek Automaticky nalezená segmentace
Vstupní obrázek Částečně anotovaný obrázek Automaticky nalezená segmentace
Vstupní obrázek Částečně anotovaný obrázek Automaticky nalezená segmentace


V následujícím textu (konkrétně v sekcích číslovaných 1.,2. a 3.) si popíšeme tři metody pro segmentaci obrázeků. Budeme postuvat od nejjednoduší k nejsložitější. Povinně je třeba odevzdat pouze metody popsané v sekci 1. a 2. Odevzdání algoritmu GrabCut, který je popsán v sekci 3. je pouze dobrovolné, ale získáte za jeho odevzdání bonusové body a navíc jistě i dobrý pocit. Příklady segmentací uvedené výše jsou získané právě touto metodou, která je mimo jiné součástí programu PhotoShop.

Statistický model obrázku

Nejprve si zavedeme statistický model, kterým vstupní obrázek popíšeme. Obrázek je množina pixelů uspořádaných do pravidelné mřížky. Množinu pixelů v obrázku o velikosti <latex>[H\times W]</latex> označíme písmenem <latex>T = \{(i,j) \mid i=1,\ldots,H, j=1,\ldots,W\}</latex>, tj. každý prvek <latex>t\in T</latex> určuje souřadnice jednoho pixelu. Každý pixel <latex>t\in T</latex> dále popíšeme vektorem <latex>{x_t\in\Re^3</latex> a binárním číslem <latex>y_t\in\{1,2\}</latex>. Vektor <latex>x_t=(r_t,g_t,b_t)</latex> bude obsahovat RGB složky barvy pixelu <latex> t </latex>, které lze z obrázku přímo získat (pozorovat). Číslo <latex>y_t</latex> určuje, ke které ze dvou oblastí pixel <latex> t </latex> náleží, např. si můžeme zvolit, že <latex> y_t=1</latex> je pixel objektu a <latex>y_t=2</latex> je pixel pozadí. Vektoru <latex>x_t</latex> budeme říkat vektor barev nebo také barva pixelu <latex> t </latex>. Číslu <latex>y_t</latex> skrytý stav pixelu <latex> t </latex>, protože jeho hodnotu nelze z obrázku přímo získat. Označme písmenem <latex>n=H\cdot W</latex> počet pixelů v obrázku. Dále si písmenem <latex>{\bf x}=(x\in\Re^3\mid t\in T)</latex> označíme uspořádanou n-tici všech vektorů barev a písmenem <latex>{\bf y}=(y_t\in\{1,2\} \mid t\in T)</latex> uspořádanou n-tici všech skrytých stavů.

Ve statistickém přístupu, který k segmentaci obrázku použijeme, se předpokládá, že barvy <latex> {\bf x} </latex> a skryté stavy <latex> {\bf y} </latex> jsou realizací nějakého náhodného procesu se sdruženou hustotou pravděpodobnosti <latex> p({\bf x}, {\bf y}) </latex>. Předpokládejme, že hustota pravděpodobnosti <latex>p({\bf x},{\bf y})</latex> je známá. Potom jeden ze způsobu, jak vstupní obrazek segmentovat je nalezt maximálně pravděpodobmou konfiguraci skrytých stavů <latex> {\bf y} </latex> při zadaných barvách <latex> {\bf x} </latex>, tj. vyřešit následující maximalizační úlohu

<latex>

\hat{{\bf y}} = \displaystyle{\rm argmax}\limits_{{\bf y}\in Y} p({\bf y}\mid {\bf x})

</latex>

kde <latex>Y=\{1,2\}^n</latex> je množina všech možných konfigurací skrytých stavů, tj. množina všech možných segmentací. Této metodě odhadu skrytých parametrů se říká odhad podle maxima aposteriorní pravděpodobnosti (Maximum a posteriori estimation), ve zkratce MAP odhad.

Reprezentovat hustotu pravděpodobnosti <latex> p({\bf x},{\bf y}) </latex> není v obecném netriviálním případě možné. Např. pro reprezentaci <latex>p({\bf y}\mid {\bf x})</latex> v paměti počítače bychom potřebovali <latex>2^{W\cdot H}}</latex> realných čísel. Stejně tak řešení MAP problému je výpočetně nezvládnutelné. Z tohoto důvodu je nutné náš model <latex>p({\bf x},{\bf y})</latex> zjednodušit přijetím dodatečných předpokladů.

1. Modelování barev pomocí směsi gaussovských rozdělení

Náš statistický model se podstatně zjednoduší pokud přijmeme následující dodatečné předpoklady:

  1. Při zafixovné hodnotě skytého stavu <latex> y_t </latex> je barva pixelu <latex> x_t </latex> statisticky nezávislá na hodnotách všech ostatních náhodných proměnných v obrázku, tj. platí <latex> p(x_t \mid {\bf y}, {\bf x}_{\neq t}) = p(x_t \mid y_t) </latex>, kde <latex> {\bf x}_{\neq t} = \{ x_{t'} \mid t'\in T\setminus \{t\}\}</latex> je množina barev ve všech pixelech až na pixel <latex> t </latex>. Z toho předpokladu také vyplývá, že <latex>p({\bf x}\mid {\bf y}) = \prod_{t\in T} p(x_t \mid y_t)</latex> .
  2. Předpokládejme, že hustota pravděpodobnosti <latex> p(x_t\mid y_t) </latex> je směs gaussovských rozdělení, tj. <latex>p(x_t \mid y_t) = \sum_{k=1}^K p(x_t\mid k,y_t) p(k\mid y_t) </latex> kde <latex>p(x_t\mid k,y_t)= N(x_t; \mu_{k,y_t}, \sigma_{k,y_t}) </latex> je gaussovské rozdělení určené vektorem středních hodnot <latex>\mu_{k,y_t}\in\Re^3</latex> a kovarianční maticí <latex> \sigma_{k,y_t} \in \Re_{+}^{3 \times 3}</latex>. Současně předpokládáme, že <latex> p(x_t\mid y_t) </latex> je nezávislá na pozici pixelu <latex>t\in T</latex>. Tímto předpokladem jsme ke každému pixelu <latex> t </latex> implicitně zavedli další náhodný stav <latex> k_t </latex>, který určuje které z K gaussovských rozdělení generovalo barvu <latex> x_t</latex>. Písmenem <latex> {\bf k} = (k_t \mid t\in T) </latex> označme uspořádanou n-tici všech těchto pomocných stavů <latex> k_t </latex>.
  3. Hodnoty skrytých stavů jsou na sobě nezávislé , tj. platí <latex> p({\bf y}) = \prod_{t\in T} p(y_t) </latex>. Dále předpokládejme, že hodnota pravděpodobnosti <latex>p(y_t)</latex> je nezávislá na pozici pixelu. Navíc pro jednoduchost budeme předpokládat, že oba dva skryté stavy jsou stejně pravděpodobné, tj. <latex>p(y_t=1) = p(y_t=2) = 0.5</latex>.

S použitím předpokladům 1. až 3. se statistický model obrázku zjednoduší na tvar

<latex>

\begin{array}{rcl}
  p({\bf x},{\bf y}; \theta ) & = & \displaystyle \sum_{{\bf k}\in K^n} p({\bf x}, {\bf k}, {\bf y}; \theta) \\
        & = & \displaystyle \sum_{{\bf k}\in K^n} p({\bf x}, {\bf k} \mid {\bf y}; \theta)\; p({\bf y})\\
        & = & \displaystyle \sum_{{\bf k}\in K^n} \prod\limits_{t\in T} N(x_t; \mu_{k_t,y_t}, \sigma_{k_t,y_t}) \; p(k_t \mid y_t) \; p(y_t) \\
        & = & \displaystyle\frac{1}{2^n} \prod_{t\in T} \sum_{k=1}^K N(x_t; \mu_{k,y_t}, \sigma_{k,y_t}) \; p(k\mid y_t)
\end{array}

</latex>

kde <latex> \theta = (\mu_{k,y},\sigma_{k,y}, p(k|y), k=\{1,\ldots,K\}, y\in\{1,2 \})</latex> jsou parametry. Kolik reálných čísel potřebujeme k reprezentaci parametrů <latex> \theta </latex> v paměti počítače ? Pro takto definovaný model vede MAP odhad skrytých stavů na výpočet:

<latex> \begin{array}{rcl}

 \hat{{\bf y}} & = & \displaystyle {\rm argmax}_{{\bf y}\in Y}  p({\bf y}\mid {\bf x} ; \theta) \\
        &=  &\displaystyle {\rm argmax}_{{\bf y}\in Y}  \log p({\bf x},{\bf y}; \theta) \\
        \displaystyle  &=  & \displaystyle  {\rm argmax}_{{\bf y}\in Y} \sum_{t\in T} \log \left ( \sum_{k =1}^K N(x_t;\mu_{k,y_t}, \sigma_{k,y_t})\; p(k \mid y_t) \right )\\
        \displaystyle  &=  & \displaystyle  {\rm argmax}_{{\bf y}} \sum_{t\in T} q_t(y_t)

\end{array} </latex>

kde
<latex> \setcounter{equation}{0}

\begin{equation}
q_t(y) = \displaystyle \log \left ( \sum_{k=1}^K N(x; \mu_{k,y_t}, \sigma_{k,y_t})\; p(k\mid y_t) \right ) \qquad
\end{equation}

</latex>

A tudíž MAP odhad <latex> \hatbf_y=(\hat{y}_1,\ldots,\hat{y}_t)</latex> získáme řešením <latex> n </latex> jednoduchých maximalizačních úloh

<latex> \setcounter{equation}{1} \begin{equation} \hat{y}_t = {\rm argmax}\limits_{y\in \{1,2\}} q_t(y)\;, \qquad t\in T \qquad \qquad \end{equation} </latex>.

Protože jednotlivé členy součtu (1) mohou být velmi malá čísla, naivní implementace výpočtu hodnot <latex> q_t(y_t) </latex> často vede k numerickým chybám. Problém lze obejít výpočetním trikem, který využívá toho, že <latex> \log ( \sum_{i=1}^N b_i )</latex> lze spočítat z logaritmů sčítanců <latex> \log b_i, i=1,\ldots,N </latex>. Tento trik je implementován ve funkci logsumexp, kerou budete mít k dispozici.

Odhad parametrů gaussovské směsi pomocí k-means algoritmu

Dosud jsme předpokládali, že parametry <latex>\theta</latex> známe. V praxi je však třeba tyto parametry ohadnout tak, aby statistický model odpovídal konkrétnímu segmentovanému obrázku. Pro odhad parametrů budeme potřebovat znát skryté stavy <latex> \tildebf_y = (\hat{y}_t \mid t\in \tilde{T})</latex> pro podmnožinu pixelů <latex> \tilde{T}\subset T</latex>. Dvojici <latex>(\tildebf_y,\tilde{T})</latex> získáme tak, že ve vstupním obrázku manuálně označíme část patřící oblasti 1 (objekt) a část patřící oblasti 2 (pozadí). Označme písmenem <latex>\tilde{T}_1 = \{ t \mid \tilde{y}_t = 1, t\in\tilde{T}\}</latex> množinu pixelů označených jako oblast 1 a písmenem <latex>\tilde{T}_2 = \{ t \mid \tilde{y}_t = 2, t\in\tilde{T}\}</latex> množinu pixelů označených jako oblast 2. Na základě množin <latex>\tilde{T}_1</latex> a <latex>\tilde{T}_2</latex> odhadneme (naučíme) parametry gaussovské směsi pro první a druhou oblast.

Algoritmus 1

  • Vstup: Částečná anotace vstupního obrázku <latex>(\tildebf_y,\tilde{T})</latex>; počet shluků <latex> K </latex> .
  • Výstup: Parametry gaussovské směsi <latex> \theta </latex> pro oblast 1 a 2 .
  1. Použijte algoritmus k-means s běžnou euklodovskou metrikou (viz. cvičení 3) k roztřídění barev <latex>\{ x_t \mid t\in\tilde{T_1}\}</latex> do <latex> K </latex> shluků. Výstupem shlukování budou čísla <latex>( \tilde{k}_t \in \{1,\ldots,K\} \mid t\in\tilde{T}_1)</latex>, která udávají příslušnost jednotlivých pixelů z množiny <latex> \tilde{T_1} </latex> k jednomu z <latex> K </latex> shluků.
  2. Vektor středních hodnot <latex>\mu_{k,1}</latex> spočtěte jako výběrový průměr bodů <latex> \{x_t \mid \tilde{k}_t = k, t\in \tilde{T}_1\} </latex> patřících k-tému shluku. Pro výpočet středních hodnot použijte funkci mean .
  3. Kovarianční matici <latex>\sigma_{k,1}</latex> spočtěte jako výběrovou kovarianční matici bodů <latex>\{x_t \mid \tilde{k}_t = k, t\in \tilde{T}_1\} </latex> patřících k-tému shluku. Pro výpočet kovariančních matic použijte funkci cov .
  4. Pravděpodobnost <latex> p(k\mid y=1) </latex> spočtěte jako poměr barev patřící do k-tého shluku ku počtu všem pixelů označených jako oblast 1, tj. <latex> p(k\mid y=1) = \frac{A}{B}</latex> kde <latex> A = |\{ t\in \tilde{T}_1 \mid \tilde{k}_t = k \}| </latex> a <latex> B= {|\tilde{T}_1| } </latex> .
  5. Kroky 1. až 4. zopakuje pro směs oblasti 2, tj. ve vzorcích zaměňte <latex> (\tilde{T}_1,\mu_{k,1},\sigma_{k,1},p(k\mid y= 1)) </latex> za <latex> (\tilde{T}_2,\mu_{k,2},\sigma_{k,2},p(k\mid y= 2)) </latex> .

S nastavením počtu shluků <latex> K </latex> můžete experimentovat. Jako rozumná hodnota se jeví <latex> K=5 </latex>.

Zadání úlohy 1

Implementujte funkci, která na vstupu dostane RGB obrázek s jeho částečnou anotací a na výstupu vrací odhadnutou segmentaci ve všech pixelech. Jméno funkce a její vstupní a výstupní argumenty musí být následující:

  Synopsis:
    outL = gmm_segmentation(I,inL)
 
  Input:
   I [H x W x 3 (uint8)] RGB image of size H x W pixels.
   inL [H x W (uint8)] Partial image annotation:
     0 .. pixel not annotated
     1 .. pixel assigned label 1
     2 .. pixel assigned label 2
 
  Output:
   outL [H x W] Complete image segmentation. Each pixel must be either 1 or  2.

V této funkci implementujte následujcí výpočet:

  1. Pomocí Algoritmu 1 odhadněte parametry směsi gaussovských rozdělení pro pixely označené značkou 1 a 2.
  2. Odhadněte skryté stavy neanotovaných pixelů pomocí vztahu (2). Nezapomeňte pro výpočet hodnot <latex> q_t(y_t) </latex> použít funkci logsumexp.

2. Pottsův model

Doposud jsme předpokládáli, že skryté stavy jsou na sobě nezávislé. Ikdyž tento předpoklad podstatně zjednodušuje statistický model, očividně neplatí pro většinu obrázků. Přímým důsledkem je, že segmentace odhadnuté pomocí tohoto modelu můžou být silně nekompaktní, tj. složeny z velkého množství malých oblastí. Kompaktní segmentace vynutíme tak, že použijeme jiný model apriorní pravděpodobnosti <latex> p({\bf y}) </latex>. Kokrétně použijeme tzv. Pottsův model, který předpokládá, že skrytý stav v pixelu <latex> t </latex> je přímo ovlivněn jen množinou sousedících pixelů <latex> N_t </latex>, tj. platí <latex> p(y_t \mid \{y_{t'} \mid t'\in T \setminus\{t\}\}) = p(y_t \mid \{y_t \mid t\in N_t\})</latex>. V našem případě zvolíme <latex> N_t = \{ t'\in T \mid \|t-t'\| \leq 1, t' \neq t \} </latex> , tj. každý pixel (až na ty ležící na okraji obrázku) zavisí na čtyřech nejbližších pixelech. Dále zavedeme množinu <latex> E = \{ (t,t')\in T^2 \mid t'\in N_t \} </latex>, která obsahuje dvojice navzájem sousedících pixelů. Pottsův model lze pak definovat vztahem
<latex> \setcounter{equation}{2} \begin{equation} \displaystyle p({\bf y}; \lambda) = \frac{1}{Z} \exp \left ( \sum_{(t,t')\in E} g(y_t,y_{t'})\right )\qquad \end{equation} </latex>

kde

<latex> \setcounter{equation}{3} \begin{equation} g(y_t,y_{t'}) = \left \{ \begin{array}{rcl} 0 & \mbox{pokud} & y_t=y_{t'} \\ -\lambda & \mbox{pokud} & y_t\neq y_{t' } \end{array} \right . \qquad \end{equation} </latex>
Kladné číslo <latex>\lambda>0</latex> je jediným parametrem Pottsova modelu. Číslo <latex> Z </latex> je normalizační konstanta, která je zvolena tak, aby <latex>\sum_latex_setcounter_equation_5_begin_array_rcl_begin_array_hat_bf_y & = & \displaystyle {\rm argmax}_latex_._rozmyslete_jake_nejnizsi_cislo_bude_vzdy_fungovat p({\bf x},{\bf k}, {\bf y}) </latex> popisující vztah mezi barvami <latex> {\bf x} </latex>, skrytými stavy <latex> {\bf y} </latex> a pomocnými stavy <latex> {\bf k} </latex>. Parametry statistického modelu jsme určili z množiny manuálně anotovaných pixelů. K získání dobrého odhadu je často pořeba anotovat velké množství pixelů, což samozřejmě snižuje praktičnost metody. Jeden ze způsobů, jak tento problém obejít, nabízí algoritmus GrabCut, který je například součástí programu PhotoShop. Myšlenkou algoritmu GrabCut je iterativně odhadovat skryté stavy neanotovaných pixelů a takto odhadnuté skryté stavy použít k odhadu parametrů statistického modelu. Připomeňme, že v metodě popsané v přechozím odstavci jsme parametry odhadovali pouze z manuálně anotovaných pixelů.

Uvažujme stejný statistický model jako v předchozím odstavci, tj. směs gaussovských rozdělení jako model barvy a Pottsův model pro apriorní pravděpodobnost skrytých stavů. Pro takto definovaný model zaveďme funkci
<latex>

    F({\bf k},{\bf y},\theta) =  \log p({\bf x},{\bf k}\mid {\bf y}; \theta) \; p({\bf y};\lambda) 
                    = \displaystyle \sum_{t\in T} d_t(k_t, y_t,\theta) + \sum_{(t,t')\in E} g(y_t,y_{t'}) - \log Z

</latex>

kde

<latex>

d_t(k_t,y_t,\theta) = \log N(x_t;\mu_{k_t,y_t},\sigma_{k_t,y_t}) + \log p(k_t \mid y_t )

</latex>

Metoda GrabCut hledá takovou konfiguraci skrytých stavů a parametrů <latex> ({\bf k}, {\bf y}, \theta )</latex>, která maximalizuje kritérium <latex> F({\bf k},{\bf y},\theta) </latex>, tj. řeší úlohu

<latex>

 (\hat{{\bf k}},\hat{{\bf y}},\hat{\theta}) = \displaystyle {\rm argmax}_{{\bf k}\in K^n, {\bf y}\in Y, \theta} F({\bf k},{\bf y},\theta) 

</latex>

Maximalizace funkce <latex>F({\bf k},{\bf y},\theta) </latex> podle všech neznámých současně je složitá. Naopak maximalizaci jen podle jedné z neznámých <latex>({\bf k},{\bf y},\theta) </latex> lze řešit efektivně. Přesně toho využívá algoritmus GrabCut, který funguje následovně:

Algoritmus 2

  • Vstup: Barvy vstupního obázku <latex> {\bf x}</latex>; částečná anotace <latex> (\tilde{\bf y},\tilde{T}) </latex>; počet shluků <latex> K </latex>; parametr Pottsova modelu <latex> \lambda </latex>
  • Výstup: Odhadnutá segmentace <latex> \hat{\bf y}}</latex>.
  1. Inicializuj parametry <latex> \hat{\theta} </latex> pomocí Algoritmu 1.
  2. Zafixuj <latex> \hat{\theta} </latex> a maximalizuj <latex> F({\bf k},{\bf y},\theta) </latex> podle <latex> ({\bf k},{\bf y})</latex>, tj. vyřeš <latex> (\hatbf_k,\hatbf_y) = \displaystyle {\rm argmax}_bf_k_bf_y F({\bf k},{\bf y},\hat{\theta}) </latex> . Řešení získáme ve třech krocích:
    1. Spočteme hodnoty <latex> k'_t(y) = {\rm argmax}_{k=1,\ldots,K} d_t(k,y,\hat{\theta}) </latex> pro všechny <latex> t\in T, y\in\{1,2\}</latex>
    2. Pomocí funkce emaxflow_mex vyřešíme <latex> \hatbf_y = {\rm argmax}_latex_._jinak_jdi_na_krok_4._-_zafixuj_latex_hat_bf_k,\hatbf_y) </latex> a maximalizuj <latex> F({\bf k},{\bf y},\theta) </latex> podle <latex> \hat{\theta} </latex>, tj. vyřeš <latex> \hat{\theta} = \displaystyle {\rm argmax}_{\theta} F(\hatbf_k,\hatbf_y, \theta) </latex> . Řešení získáme ve třech krocích:
    3. Vektory sředních hodnot <latex>\mu_{k,y},\; k=1,\ldots,K, y=\{1,2\}</latex> spočteme jako výběrové průměry bodů <latex> \{x_t \mid \hat{k}_t = k, \hat{y}_t = y, t\in T \} </latex>.
    4. Kovarianční matice <latex>\sigma_{k,y}\; k=1,\ldots,K, y=\{1,2\}</latex> spočteme jako výběrové kovarianční matice bodů <latex>\{x_t \mid \hat{k}_t = k, \hat{y}_t = y, t\in \tilde{T}_1\} </latex> .
    5. Pravděpodobnosti směsi spočtěte podle vzorce <latex> p(k\mid y) = \frac{A}{B}</latex>, kde <latex> A </latex> je počet prvků (kardinalita) množiny <latex> \{ t\in T \mid \hat{k}_t = k, \hat{y}_t = y\} </latex> a <latex> B </latex> je počet prvků množiny <latex> \{ t \in T \mid \hat{y}_t = y \}</latex> .
  3. Pokračuj krokem 2.

Zadání úlohy 3

Implementujte funkci, která na vstupu dostane vstupní RGB obrázek, jeho částečnou anotaci a parametr <latex> \lambda </latex>. Na výstupu tato funkce vrací odhadnutou segmentaci ve všech pixelech. Jméno funkce a její vstupní a výstupní argumenty musí být následující:

  Synopsis:
    outL = grabcut_segmentation(I,inL,Lambda)
 
  Input:
   I [H x W x 3 (uint8)] RGB image of size H x W pixels.
   inL [H x W (uint8)] Partial image annotation:
     0 .. pixel not annotated
     1 .. pixel assigned label 1
     2 .. pixel assigned label 2
   Lambda [1 x 1] Parametr of the Potts model. 
 
  Output:
   outL [H x W] Complete image segmentation. Each pixel must be either 1 or  2.
 

V této funkci implementujte algoritmus 2.

Balíček funkcí

Při řešení úloh použijte balíček funkcí student_package_12may2010.zip (nově přidány mex funkce pro Win64), který obsahuje tyto soubory:

  • image_segmentation.m … interaktivní nástroj, který umožňuje anotovat obrázky a volá funkce gmm_segmentation, graphcut_segmentation a gabcut_segmentation jejichž výsledky vizualizuje. Tuto funkci použijte pro ladění vašich metod.
  • emaxflow_mex.(mexglx,mexa64,mexw32) … MEX implementace MAX-SUM solveru kompilovaná pro Linux, Linux64 a Windows.
  • emaxflow_mex.m … help k emaxflow_mex.XXXX.
  • logsumexp.m … funkce pro výpočet logaritmu součtu z velmi malých čísel.
  • gmm_segmentation.m, graphcut_segmentation.m, gabcut_segmentation.m … templaty funkcí, které máte implementovat a odevzdat.
  • testimg1.png, testimg2.png, testimg3.png … testovací obrázky.

Co odevzdat

  • Povinná část (5+5 bodů): Vyřešte úlohu 1 a 2 a do odevzdávacího systému nahrajte soubory gmm_segmentation.m a graphcut_segmentation.m spolu se všemi kódy, které ke své činnosti vyžadují.
  • Bonusová úloha (3 body): Vyřešte úlohu 3 a do odevzdávacího systému nahrajte soubor grabcut_segmentation.m spolu se všemi kódy, které ke své činnosti vyžadují.

Termín odevzdání 16.5.2010 23:59.

Kontrola výsledků

Pro kontrolu správnosti odevzdaných funkcí jsme použili skript a funkci MATLABu publish. Nakopírujte si segment_test.zip, rozbalte a přidejte k němu soubory, které vyžadujeme pro odevzdání. Výsledky si ověrte porovnáním s referenčním řešením. Výsledky se mohou lišit závisle na inicializaci parametrů a implementaci k-means, proto se každá funkce pouští vicekrát.

Reference

courses/a4m33mpv/cviceni/5_segmentace/start.txt · Last modified: 2013/10/04 13:02 (external edit)