Konzolová aplikace v C++, ve které jsou implementovány vybrané algoritmy automatického ořezu obrazu. Pro každý z těchto algoritmů byly vytvořeny různé metody způsobu výběru nejlepšího rámečku ořezu. Většinu těchto metod lze spustit z příkazové řádky pomocí příslušných parametrů, případně vlastním experimentováním se zdrojovými kódy.
[1] Stentiford, F. : Attention Based Auto Image Cropping.
In ICVS Workshop on Computation Attention and Applications, 2007.
[2] Fang, C.; Lin, Z.; Mech, R.; aj.:
Automatic Image Cropping Using Visual Composition, Boundary Simplicity and Content Preservation Models.
In Proceedings of the 22Nd ACM International Conference on Multimedia, 2014.
[3] Suh, B.; Ling, H.; Bederson, B. B.; aj.:
Automatic Thumbnail Cropping and its Effectiveness.
In Proceedings of the 16th Annual ACM Symposium on User Interface Software and Technology, 2003.
Aplikace používá tyto nástroje a knihovny, které je nezbytné mít správně nainstalovány.
- CMake - použita verze 3.11.1
- OpenCV - použita verze 3.4.1
- VLFeat - použita verze 0.9.21
- Boost - použita verze 1.67.0
Pro sestavení je použit nástroj CMake. V souboru CMakeLists.txt jsou definována pravidla pro vytvoření souborů potřebných k překladu a sestavení. Je zde nutné upravit cestu pro použití knihovny VLFeat, respektive nastavit ji na adresář, kde jsou soubory, které vzniknou po rozbalení této knihovny (více na http://www.vlfeat.org). Pokud bude stažen tento repozitář, stačí pouze rozbalit soubor vlfeat.zip a bude tak dodržena cesta uvedená v souboru CMakeLists.txt.
Sestavení aplikace lze po stažení tohoto repozitáře dosáhnout například takto:
$ cmake .
$ make
Po úspěšném překladu je možné aplikaci spustit v následujících formátech, kde 'autocrop' je název spustitelného souboru a následně mohou následovat další parametry. Kromě vysvětlení jednotlivých parametrů jsou zde uvedeny i konkrétní příklady spuštění.
Vypíše zprávu, kde jsou uvedeny možné formáty pro spuštění aplikace:
$ ./autocrop -help
Základní formát, kde 'imagePath' je cesta k originálnímu obrázku, pro který bude proveden automatický ořez(tento parametr je použit ve všech dalších případech):
$ ./autocrop imagePath (= postupně budou spuštěny všechny algoritmy automatického ořezu [1][2][3])
Výběr algoritmu automatického ořezu, kde parametry reprezentují konkrétní obecný algoritmus (-suh [3], -sten [1], -fang [2]):
$ ./autocrop imagePath -suh
$ ./autocrop imagePath -sten
$ ./autocrop imagePath -fang
$ ./autocrop imagePath -suh -fang (= postupně se provedou ořezy pomocí algoritmů [3][2])
Výběr metody, která specifikuje výšku a šířku výstupního ořezu v pixelech (parametry -wh W H):
$ ./autocrop imagePath -wh 600 400
$ ./autocrop imagePath -suh -wh 600 400
Výběr metody, která vytvoří ořez, který bude zmenšený oproti originálu v zadaném poměru a bude zachován poměr stran (parametry -scale S):
$ ./autocrop imagePath -scale 0.66
$ ./autocrop imagePath -suh -scale 0.66
Výběr metody, která bude hledat optimální rámeček rámeček na základě zadaného poměru jeho šířky a výšky (parametry -whratio W H):
$ ./autocrop imagePath -whratio 3 2 (= ořez bude ve formátu 3:2)
$ ./autocrop imagePath -suh -whratio 3 2 (= ořez bude ve formátu 3:2)
Definice prahové hodnoty pro potřebnou míru významu. Je použita pouze ve třetím uvedeném algoritmu ořezu [3] (parametry -threshold T):
$ ./autocrop imagePath -suh -threshold 0.5
$ ./autocrop imagePath -suh -whratio 3 2 -threshold 0.5
Vypnutí funkce zobrazování oken pomocí přepínače -w. Pokud bude toto zobrazování vypnuto, bude zobrazen vždy pouze originál a výsledné ořezy. Pokud bude zobrazování zapnuto(výchozí), tak budou současně zobrazeny i saliency maps nebo gradient. Při zobrazení nového okna je pro pokračování nutné stistknout libovolnou klávesu.
$ ./autocrop imagePath -w
$ ./autocrop imagePath -fang -w
Spuštění tréninku modelu kompozice, který je potřebný pro druhou uvedenou metodu [2]. Parametr 'datasetDir' je cesta k adresáři, kde jsou uloženy obrázky, které budou použité pro trénink:
$ ./autocrop -train datasetDir
Pokud bude zadána neplatná kombinace parametrů, bude vypsána chybová hláška a program bude ukončen s chybou. Při běhu programu budou do konzole postupně vypisovány informace o aktuální fázi. Kromě uvedených metod, které je možné spustit z příkazové řádky, byla vytvořena i řada dalších způsobů automatického ořezu, které lze vyzkoušet manuálním zásahem do implementace.