Zadání znělo, implementovat metodu Geodesic Saliency Propagation For Image Salient Region Detection. Nic těžkého? Taky jsem si řekl, než jsem si prohlédl odborný článek plný matematiky a cizích slov, které jsem předtím neslyšel.
Bakalářská práce
Jak jsem zmínil dříve, implementaci jsem prováděl v rámci bakalářské práce. Celou práci si můžete přečíst ve formátu PDF, obsahující na straně 22 sadu testovacích obrázků.
Zdrojové kódy programu poté naleznete na GitHubu. Program jsem psal ve Visual Studiu, ale nevyužívám žádné specifické knihovny pro Windows. Zkompilovat program tedy půjde i na jiných OS. Využívám ale knihovnu OpenCV, kterou je potřeba si nainstalovat. Podívejte se na tutoriály, které vás instalací provedou.
Když jeden článek nestačí
Pokud se vám nechce číst celá bakalářka, a já se vám nedivím, udělám rychlý výcuc. K tomu můžete sledovat prezentaci, nebo si přečíst úvod a závěr.
Ve dříve zmíněném článku vám hned na začátku sdělí, že jejich metoda je založena na obrazu segmentovém na superpixely metodou SLIC. Takže aniž bych se začetl, hned jsem hledal další článek, SLIC Superpixels. Poté následovala implementace obou článků a psaní bakalářky.
Tvorba superpiexelů v rychlosti
- Určíme středy budoucích superpixelů ve vzdálenosti S, která se vypočte dle velikosti obrazu a požadovaného počtu superpixelů. Ten se musí stanovit při spuštění programu
- Pro každý střed děláme výpočet geodetické vzdálenosti pro všechny pixely v rozsahu 2Sx2S. Pixel je přiřazen do superpixelu, ke kterému má nejmenší geodetickou vzdálenost.
- Pro každý superpixel se vypočte jeho nová barva a střed. Obě hodnoty jsou průměrné hodnoty ze všech náležících pixelů.
- Bod 2. a 3. se opakuje 10x. Toto bylo zmíněno a zjištěno pokusem jako dostačující již v práci SLIC.
Detekce významné oblasti v rychlosti
- Výpočet globálního kontrastu superpixelů vůči všem ostatním - dostaneme hrubý odhad, kde asi bude významná oblast.
- Nad originálním obrazem detekujeme rohy pomocí Harrisova detektoru rohů, nad kterými vytvoříme konvexní obal. Superpixely, které náleží v konvexním obalu, jsou zvýhodněny oproti těm vnějším.
- Metodou semínkového vyplňování jsem zjistil, které superpixely sousedí a vytvořil tak graf pro aplikaci Dijkstrova algoritmu. (Obdoba Dijkstrova algoritmu se používá v GPS pro hledání nejkratší trasy)
- Všechny výsledky předchozích bodů skombinujeme a vytvoříme výslednou ořezovou masku.
K tomuto článku již není možné přidávat další komentáře