Mendelova univerzita v Brně Provozně ekonomická fakulta
Využití interaktivních médií při propagaci firmy Diplomová práce
Vedoucí práce: Ing. Jana Dannhoferová, Ph.D.
Brno 2013
Bc. Václav Štikarovský
Touto cestou bych chtěl poděkovat paní Ing. Janě Dannhoferové, Ph.D., za vedení mé diplomové práce, pomoc a cenné rady. Také chci poděkovat paní Mgr. Martině Vokounové, lektorce interaktivních tabulí, za konzultaci o interaktivitě.
Prohlašuji, ţe jsem tuto diplomovou práci vyřešil samostatně s pouţitím literatury, kterou uvádím v seznamu. V Brně dne 23. května 2013
__________________
Abstract Štikarovský, V. The Usage of Interactive Media for Company Promotion. Diploma thesis. Brno, 2013 This diploma thesis is devoted to a proposal of a methodology and a new tool for creation of interactive advertising. It presents a new way of promotion with the assistance of image recognition and OpenCV programme. It occupies with product photographyies and videos. The thesis contains a detailed description of it’s creating and of work with a newly programmed tool. Keywords Interactive video, OpenCV, Image recognition, Promotion video, Product photography.
Abstrakt Štikarovský, V. Vyuţití interaktivních médií při propagaci firmy. Diplomová práce. Brno, 2013 Tato diplomová práce se věnuje návrhu metodiky a nástroje pro tvorbu interaktivní propagace. Představuje nový přístup propagace pomocí rozpoznání obrazu a OpenCV. Zabývá se produktovou fotografií i videem. Obsahuje podrobný popis tvorby a práce s novým vytvořeným nástrojem. Klíčová slova Interaktivní video, OpenCV, Rozpoznání obrazu, Propagační video, Produktová fotografie.
Obsah
5
Obsah 1
2
Úvod a cíl práce 1.1
Úvod ............................................................................................................. 11
1.2
Cíl práce ....................................................................................................... 11
Teoretický základ 2.1
13
Způsoby komunikace se zákazníkem ........................................................ 13
2.1.1
Reklama ............................................................................................... 13
2.1.2
Propagace ............................................................................................ 14
2.2
Druhy současné propagace......................................................................... 14
2.2.1
Produktová fotografie ......................................................................... 14
2.2.2
Videopropagace................................................................................... 15
2.3
Interaktivní propagace ............................................................................... 16
2.3.1
Interaktivní média .............................................................................. 16
2.3.2
Jednotlivé druhy interaktivity ........................................................... 17
2.4
Nástroje interaktivní propagace ................................................................ 18
2.4.1
Flash..................................................................................................... 18
2.4.2
OpenCV............................................................................................... 20
2.4.3
Jak pracuje OpenCV a jeho funkce i instalace .................................. 21
2.5
Další potřebné nástroje ............................................................................. 22
2.5.1
C++ ..................................................................................................... 22
2.5.2
Perl ...................................................................................................... 22
2.6
Zpracování obrazu ..................................................................................... 23
2.6.1 2.7
Kalibrace kamery OpenCV ................................................................ 24
Zásady natáčení ...........................................................................................27
2.7.1 3
11
Konkrétní zásady při natáčení ...........................................................27
Návrh řešení
30
3.1
Na co jsem se zaměřil z interaktivity ........................................................ 30
3.2
Kritéria výběru nástroje vylepšení interaktivní propagace..................... 30
3.3
Zhodnocení a výběr nástroje ...................................................................... 31
6
4
Obsah
3.4
Metodika tvorby interaktivní předlohy .................................................... 32
3.5
Postprodukce .............................................................................................. 32
Implementace OpenCV 4.1
Návrh implementace.................................................................................. 33
4.1.1 4.2
33
První verze aplikace ........................................................................... 33
Implementace ............................................................................................. 38
4.2.1
Zpracování videa pomocí extract-images .................................... 38
4.2.2
Make a Makefile ................................................................................. 39
4.2.3
Hledání šachovnice ze snímku pomocí extract-chesboard ....... 39
4.2.4
Spojení XML souborů ........................................................................ 40
4.2.5
Perl zpracování .................................................................................... 41
4.3
Popis jednotlivých Perlových funkcí ......................................................... 44
4.3.1
Funkce cd::xml::parse .................................................................. 44
4.3.2
Funkce cv::xml::load_chessboard ............................................. 46
4.3.3
Funkce cv::polomery ...................................................................... 47
4.3.4
Funkce cv::snímky .......................................................................... 47
4.3.5
Funkce cv::rozmer_tridy ................................................................... 47
4.3.6
Funkce cv::zahod_rozmer ................................................................. 47
4.3.7
Funkce cv::skoky_pk ...................................................................... 48
4.3.8
Funkce cv::skoky ................................................................................ 49
4.3.9
Funkce cv::dopocitani_rozmeru ................................................. 49
4.3.10
Funkce cv::sachovnice_mezi ....................................................... 50
4.3.11
Funkce cv:: sachovnice_kraj ..................................................... 50
4.3.12
Funkce cv::xml::write ................................................................... 51
4.4
Konečné zpracování xmain.ccp ................................................................ 51
4.4.1
Generování výsledného videa ............................................................ 51
4.5
Paralelní xmain zpracování videa ............................................................. 53
4.6
Příklady jednotlivých příkazů programů a jejich parametry .................. 54
4.7
Transformace XML dat .............................................................................. 55
4.7.1
XML data nalezeného snímků bez úprav ......................................... 55
4.7.2
XML data nalezeného snímku po všech úpravách .......................... 56
Obsah
7
4.8
Zkrácený průchod celým programem ...................................................... 56
4.9
Závislosti aplikace ....................................................................................... 57
5
6
Testování
58
5.1
Kategorie testovaných videí ...................................................................... 58
5.2
Vyhodnocení testování .............................................................................. 58
5.3
Časová náročnost ....................................................................................... 58
Navržená metodika natáčení videopropagace
60
6.1
Doporučený formát video souboru pro aplikaci ....................................... 61
6.2
Doporučené poţadavky na počítačový systém.......................................... 61
7
Reálná studie propagace
62
8
Návrh dalšího rozšíření a vylepšení
65
9
Diskuze
66
10 Závěr
67
11
Literatura
68
A
Obsah DVD
71
8
Obsah
Seznam obrázků
9
Seznam obrázků Obr. 1
Snímání obrazu
23
Obr. 2
Projekce
24
Obr. 3
Hledaná šachovnice
25
Obr. 4
Ukázka snímání šachovnic
25
Obr. 5
Šachovnice s vykreslenými rohy
26
Obr. 6
Zlepšení hledání souřadnic bodů
26
Obr. 7
Obraz po kalibraci
27
Obr. 8
Zmenšený vkládaný obrázek
34
Obr. 9
Roztřepené okraje
34
Obr. 10
Špatně nalezené rohy šachovnice
35
Obr. 11
Špatná velikost vkládaného obrázku
36
Obr. 12
Skládání obrazu
52
Obr. 13
Vložení vybraného obrázku
53
Obr. 14
Před rekonstrukcí
62
Obr. 15
Vložená šachovnice
63
Obr. 16
Programem vložené vybrané první dveře
63
Obr. 17
Programem vložené vybrané druhé dveře
63
Obr. 18
Po rekonstrukci
63
10
Seznam tabulek
Seznam tabulek Tab. 1
Orientační ceník produktové fotografie
14
Tab. 2
Orientační ceník produktového videa
16
Tab. 3
Orientační ceník Adobe nástrojů
19
Tab. 4
Rozhodovací tabulka
31
Tab. 5
Testování rychlosti videa
59
Úvod a cíl práce
11
1 Úvod a cíl práce 1.1
Úvod
Počítače v dnešní době velmi ovlivňují mnoho aspektů lidské činnosti. Jsou nezastupitelnou součástí moderní společnosti i jejich jednotlivých odvětví. Jednou z těchto oblastí je počítačová grafika, kterou lze vyuţít v různých oblastech lidského dění, jako je například reklama a propagace firem či jejich produktů, ale také v odvětvích průmyslu, například pro rozpoznávání obrazu strojního řízení a automatizace. Reklama a propagace patří k velmi důleţitým aspektům ţivotaschopnosti firmy. Bez ní by nemohly existovat a to nejen firmy, ale i společnosti jakou jsou školy, výzkumné ústavy, univerzity a mnoho dalších institucí. Mnoho z nich do propagace investuje nemalé finanční prostředky. Je jasné, ţe vţdy je důleţitá i finanční stránka věci, kterou musí vedení těchto institucí řešit. Menší firmy jsou zvláště nuceny přemýšlet, jakým způsobem se budou na trhu prezentovat. Je mnoho způsobů a moţností, jak počítačové grafiky vyuţít. Díky dostupným výkonným počítačům se nám nabízejí obrovské moţnosti, jak tyto sofistikované prezentace vytvořit. Dnešní nároky na propagaci jsou vysoké, a to co do poţadavků na náklady, tedy jejich sniţování, tak i do kvality. V reklamě se dnes vyuţívá pestrá škála profesí. Jsou to například grafici, programátoři, hudebníci a scénáristé. Firmy mají široký výběr moţností, jak díky moderní počítačové grafice tyto náklady sniţovat. Vznik této diplomové práce byl podnícen potřebou řešit, jak urychlit tvorbu a sníţení nákladů těchto prezentací. Námět práce byl ovlivněn mnoha praktickými poţadavky, se kterými jsem se setkal při zkoumání tohoto tématu, i v praxi. Situace v dnešní době, díky vzrůstajícím tlakům na sniţování nákladů, spíše nutí menší zákazníky omezovat se na jednoduché webové prezentace a zřídka vyuţívat jakékoliv propagační techniky, jako jsou videopropagace a produktová fotografie. Nezáleţí na tom, jestli jde o propagaci daného produktu, či firmy samostatné. Podle mého názoru by to neměla být výsada jen středních a velkých firem.
1.2
Cíl práce
Hlavním cílem této práce je vytvoření interaktivní aplikace vylepšující moţnosti propagace a prezentace firmy nebo výrobku. Firma by měla být schopna prostřednictvím této aplikace reagovat na vzniklé změny na trhu, či v potřebě propagace a to konkrétně tak, ţe do videopropagace, nebo produktové fotografie vloţí vlastní obrazové materiály. Nedílnou součástí mé diplomové práce je zároveň analýza stávajících způsobů propagace v oblasti videa a fotografie. Následující část diplomové práce zanalyzuje moderní nástroje interaktivní propagace firem a navrhne další rozšíření a změny metodiky pro tvorbu interaktivního videa s následným určením
12
Úvod a cíl práce
nejlepšího moţného nástroje pro řešení. Dále bude nová metodika důkladně otestována a ověřena na reálné případové studii. V diplomové práci budou zahrnuty i moţné návrhy dalšího rozšíření a vylepšení mé aplikace. Závěrečné zhodnocení bude obsahovat shrnutí kladů a záporů daného návrhu.
Teoretický základ
13
2 Teoretický základ 2.1 2.1.1
Způsoby komunikace se zákazníkem Reklama
Reklama se objevuje v různých formách uţ velice dlouho. Její historie sahá jiţ do středověku, kde se zobrazovaly obrázky zboţí. Dá se říci, ţe reklamy byly předchůdci billboardu, tudíţ probíhaly lokálně. Slovo reklama vzniklo z latinského slova „reklamare“ (znovu křičeti), to bylo z důvodu tehdejší obchodní komunikace např. na trţnici. (Vysekalová, 2007) Pojem reklama si můţeme vyloţit tak, ţe doslova znamená „Reklama je kaţdá placená forma neosobní prezentace a nabídky idejí, zboţí, nebo sluţeb prostřednictvím identifikovatelného sponzora“. (Vysekalová, 2007) U nás je reklama charakterizována takto: „Reklamou se rozumí přesvědčovací proces, kterým jsou hledáni uţivatelé zboţí, sluţeb, nebo myšlenek prostřednictvím komunikačních médií.“ (Vysekalová, 2007) Reklamu je nutné poskytovat za pomoci nějakého média. V současné době je k propagaci velmi vyuţíváno především televizní masové vysílání a samozřejmě i internet. K dispozici jsou ale i mnohé další způsoby prezentace firem a výrobků: rozhlasové vysílání, reklamní broţury, letáky a další přenositelné materiály, billboardy, plakáty v dopravních prostředcích, videoreklama v kinech apod. V propagaci se dnes uplatňuje daleko širší přístup. Současná moderní reklama, dá se říci, není starší více jak půl století. Reklama není brána pouze jako jednoduchý prostředek propagace, ale její součástí je komplexní přístup z pohledu psychologie i marketingu a jsou do ní investovány nemalé finanční prostředky. Na její tvorbě se můţe podílet řada specialistů. Stala se součástí kaţdé firmy, instituce a nejen to, dokonce se stala součástí lidských ţivotů, které můţe do značné míry ovlivňovat. Neposkytuje jiţ pouze informace o produktu, ale snaţí se přímo uspokojit danou potřebu. Reklama má tři hlavní funkce Reklama nás má především informovat o výrobku, jeho vlastnostech, kvalitě apod. Dále nás má přesvědčit ke koupi nově propagovaného výrobku, či nám připomenout produkt, který je jiţ trhem nabízen. Dá se říci, ţe reklama můţe mít vliv i na nabídku a poptávku na trhu. (Brannan, 1996)
14
2.1.2
Teoretický základ
Propagace
Nemalé mnoţství firem vyuţívá hlavně reklamu a prodejní propagaci, popřípadě osobní prodej. Propagace (promotion) je marketingovou komunikací komerčního charakteru. Jejím hlavním cílem je ovlivňovat poznávací, motivační i rozhodovací procesy těch, na které chceme působit v souladu s poţadovanými záměry. Mezi hlavní formy propagace patří reklama, osobní prodej, podpora prodeje, přímý marketing, sponzoring a práce s veřejností. (Vysekalová, 2007) Prodejní propagace zásadně ovlivňuje rozpočet na propagaci, kterou vedení firmy pouţívá, aby se zvýšila efektivita prodeje. V této diplomové práci bude hlavně řešena propagace i způsob pouţití ve formě videopropagace a produktové fotografie. Tyto dva pojmy budou popsány níţe.
2.2 Druhy současné propagace 2.2.1
Produktová fotografie
Produktová fotografie patří mezi hlavní nástroje propagace firem. Ţádná firma prezentující svoje výrobky by se bez nich v ţádném případě neobešla. Nejen firmy, které své prezentace umisťují na webu, ale i ty, jenţ vyuţívají prezentací například na letácích apod. Z tohoto důvodu se produktová fotografie dá nazývat i katalogovou fotografií, jejímţ hlavním cílem je zachytit design a vizuální vlastnosti produktu. (Chudá, L.) Při vytváření produktové fotografie musíme vyfotografovat předmět v daném stylu a kompozici podle poţadavků zadavatele. Kvalitní vyobrazení produktu má vysoký význam pro budoucího zákazníka. Vypovídá jak o důleţitých vlastnostech produktu, tak i o odlišnostech vůči jiným produktům. (Chudá, L.) Hodně spotřebitelů se při koupi rozhoduje podle vizuálního ztvárnění výrobku, většina kupujících velmi váhá koupit přes internet produkt, u kterého není zobrazen ţádný obrázek. Tab. 1 Orientační ceník produktové fotografie
Nabídka Běţná produktová fotografie Retušovaný snímek Retušovaný snímek komponovaný
Cena1 180 Kč 140 Kč
Cena2 150 Kč 250 Kč
700 Kč
600 Kč
Jak se vytváří produktová fotografie 1 2
http://www.foto-creative.cz/produktova-fotografie/ http://www.annaticha.cz/cenik_sluzeb/?
Teoretický základ
15
Nejprve je nutné připravit si vhodné pozadí. Nejčastěji volíme bílou barvu podkladu, protoţe se potom velmi jednoduše nastavuje při focení vyváţení bíle barvy. To napomůţe v dobré volbě barevného nastavení pro fotoaparát, a tím i realistické barvy foceného předmětu. Je moţné také zvolit černou barvu, která pohlcuje světlo, tím pádem můţeme více pracovat se světlem. (Nogol, D.) Objekt zachycený na produktové fotografii by měl být správně nasvícen. Ideální je rovnoměrné nasvícení celého výrobku. Máme několik moţností, jak tohoto stavu dosáhnout. V improvizovaných podmínkách můţeme vytvořit bílé pole kolem předmětu, nebo zajistit kvalitní osvětlení pouţívané k tomuto focení. Nejvhodnějším způsobem je zajištění nasvícení ze všech stran. Důleţité je ponechat si moţnost, jak upravit špatné nasvícení, například fotit do formátu RAW, který umoţnuje zpětně upravovat vyváţení bílé barvy a další. Je důleţité si uvědomit, ţe ne vţdy kvalitní produktovou fotografii lze vytvořit tím, ţe vlastníme výbavu za mnoho tisíc korun, ale je třeba umět i improvizovat. Například jako pozadí můţeme efektivně vyuţít bílý papír. Při fotografování se vyuţívá mnoho technických pomůcek, například různé typy objektivů, barevné filtry, pozadí v různých odstínech, difuzéry apod. Výběr světla dopadajícího na předměty ovlivňuje jejich vzhled. Stíny na fotografii můţeme vyuţít ve svůj prospěch a zakrýt jimi nedostatky, či drobné vady předmětů. Ostré světlo můţe vytvářet lesky a hluboké stíny za předmětem. Předměty takto focené jsou jen výjimečně líbivé. Proto je nutné nepodceňovat osvětlení a nasvícení foceného objektu. 2.2.2
Videopropagace
Stejně jako produktová fotografie je i videopropagace, či produktové video součástí reklamních strategií firem. Videem lze vyjádřit mnoho myšlenek v krátkém časovém intervalu. Firma se takto můţe prezentovat pomocí propagačního videa, nebo lépe zapsat do podvědomí zákazníků, či představit svůj produkt tak, jak to fotografie nedokáţe. Firmy nabízejí točení propagačních filmů, prezentačního videa a reklamy. Nabídky obsahují různé kvality obrazu, efekty, kamerový jeřáb a další prvky. Z níţe uvedené tabulky je jasné, ţe ceny těchto sluţeb nejsou vůbec zanedbatelné.
16
Teoretický základ
Tab. 2 Orientační ceník produktového videa
Nabídka Standardní prezentační video cca 2-3 minuty Delší prezentační film včetně zpracování
Cena
Firma Future marketing4 Cena
4 900 Kč
2000 Kč
3 700 Kč
10 000 Kč
15 000 Kč
14 300 Kč
Firma Mašek3
Firma Filmark5 Cena
2.3 Interaktivní propagace 2.3.1
Interaktivní média
Je moţné konstatovat, ţe video je a bude nedílnou součástí internetového obsahu. Jeho obrovskou výhodu lze spatřovat v tom, ţe během krátkého časového intervalu poskytne divákovi mnoho informací jako ţádné jiné médium. Zákazník je jako pozorovatel nucen pasivně sledovat prezentaci či film, který se ubírá po lineární rovině s jasným začátkem i koncem a průběhem. Co je tedy interaktivní? Dle slovníku „interaktivní“ je činnost umoţňující vzájemnou komunikaci, coţ je vstup do činnosti stroje či programu. (Kučera, R.) Proměnlivost například televizního vysílání umoţňuje divákovi alespoň volbu, jaký bude sledovat program. Také můţe získat doplňkové informace z teletextu, nebo nyní nově díky digitálnímu vysílání i další ze settopboxu. Není moţné zpětně zjistit, jakou akci divák provedl, jedná se tedy o interaktivitu lokální. Pokud je moţné získat od diváka zpětnou odezvu a můţe pak reagovat modifikací, jde o interaktivitu neadresnou (která je určena všem), pokud je určena jen jednomu divákovi, jedná se o adresnou interaktivitu. (Moulík, K.) Jednou z moţností jak tuto věc změnit je přidat nějaký interaktivní prvek. Divák či zákazník se pak můţe podílet na vývoji, tím pádem má moţnost zasahovat do toho, co vidí. Dalším příkladem vysoké interaktivity jsou samozřejmě počítačové hry. Jako ukázku, co vše je moţné vytvořit, přikládám dva odkazy na internetové zdroje. Jedním z nich je film Interande6, kde je moţný pohyb nelineárním dějem, to znamená, ţe divák si sám můţe zvolit vývoj filmu. Jeho tvůrce je Pavel Gotthard. Dalším příkladem je projekt „Drink po ránu“, který propaguje energetický nápoj Redbull. Pozorovatel nejprve pasivně sleduje video, ale poté se video zastaví a je vyzván, aby pomohl hlavní aktérce najít energetický nápoj, a pokud se http://masek.eu/propagacni-video-film-spot-reklamni-reportaze.php http://www.futuremarketing.cz/videoukazka-zbozi 5 http://www.filmark.cz/reklamni-spoty.html 6 http://www.interaktivnifilm.cz 3
4
Teoretický základ
17
mu to podaří, hrdinka dostane energii a příběh následuje dál. (Gotthard, P., 2012) Tyto příklady demonstrují, jak je moţné oţivit video přidáním interaktivního prvku. Některé zdroje uvádí, ţe interaktivní video je druh filmu, či animace obsahující volitelné (interaktivní) oblasti. Pomocí ovládání myši lze volit různé akce, například pozastavit obraz, rozvinout menu apod. Interaktivní video je moţné vytvářet tak, ţe zahrnuje dvě vrstvy. První vrstva obsahuje samotnou videosekvenci a druhá interaktivní vrstva nese informace o událostech vyvolané kliknutím. Jednou z dalších moţností je v poslední době hojně vyuţívaná výuka za pomoci interaktivní tabule. Ţáci nejen pozorují prezentaci výuky jako dřív, ale mohou aktivně ovlivňovat vývoj vyučovací hodiny, hlasovat pomocí dodatečných zařízení a různě pracovat s objekty na interaktivní tabuli, čímţ dochází k propojení mezi ţákem a učivem prostřednictvím interaktivní tabule. Tabule je propojena s notebookem a projektorem a snímá doteky z povrchu tabule. 2.3.2
Jednotlivé druhy interaktivity
Během studia literatury se ukázalo, ţe na interaktivitu se dá nahlíţet mnoha způsoby, takţe se jednotliví autoři liší i v jejím rozdělení. Jsou zde uvedeny dva náhledy na interaktivitu a její dělení. Podle Moulíka můţeme interaktivitu rozdělit na tři oblasti. A. Lokální interaktivita U analogové televize můţe divák vybírat, který program chce právě sledovat, jakou jazykovou verzi, a na teletextu si můţe vybrat, kterou informaci si přečte. B. Neadresná interaktivita Jak bylo zmíněno na začátku, je třeba nějakého zpětného kanálu například digitální přijímač či internet, aby bylo moţné modifikovat obsah. C. Služba s úplnou adresnou interaktivitou Vysílaný obsah se u těchto sluţeb modifikuje na základě informací ze zpětného kanálu od diváka. (Moulík, K.) Lze říci, ţe se budou interaktivní média v různých formách postupně rychle rozšiřovat a začleňovat do běţného pouţívání a díky digitalizaci televizního vysílání i internetu. Dle Magazínu digitálního marketingu existuje několik stupňů interaktivity: A. První úroveň – Pozorování Jedná se o pasivní pozorování a neumoţnuje prakticky ţádnou moţnost manipulace. Není moţné kontrolovat obsah nebo průběh pozorované ak-
18
Teoretický základ
tivity. Tento způsob je vhodný, pokud je potřeba sdělit informace velké skupině lidí. B. Druhá úroveň – Lineární příběh Lineární struktura ovládání je prvním krokem k lehké interaktivitě. Díky ní je umoţněno účastníkovi kontrolovat, kam se vydá. Tedy umoţňuje mu navigovat v obsahu. Jedním z klasických příkladů je webová prezentace. Pod tuto zmiňované dělení lze zahrnout interaktivní aplikace, kde děj nebo objekty jsou ovlivňovány. Příklad s odkazem je uveden výše v této kapitole. Lze do této kategorie zahrnout videa s měnitelnou sloţkou. C. Třetí úroveň – Virtuální realita Tato úroveň jiţ mění pozici uţivatele z pozorovatele na aktivního účastníka. Jsou pouţívány multimediální prezentace pro navození další perspektivy. Například ovládaný průlet budovou je vstupem do virtuální reality. Uţivatel je ve světě, který je jiţ vytvořen, a můţe ho procházet. D. Čtvrtá úroveň – Gaming Tato úroveň jiţ umoţnuje aktivní manipulaci s prvky daného prostředí. Akce mohou začít i bez účasti uţivatele, nebo s jeho pomocí. (Smutný, L., 2010)
2.4 Nástroje interaktivní propagace 2.4.1
Flash
V současné době jde vývoj v oblasti informačních technologií tak rychle, ţe k vytvoření reklam a k propagaci firem nestačí jen pouhé vyuţití internetu. Zákazník je jiţ nasycen tímto přístupem. Flash je jedním z nástrojů, který umoţnuje vytvářet atraktivnější prezentace a je hlavně vyuţíván na internetu. Zapojuje multimediální obsah a efekty všeho druhu. Pouţitím dynamických prvků, například v menu ovládajícím stránky, dodá prezentaci ţivost a poutavost. Při studiu těchto druhů prezentací bylo zřejmé, ţe se často vyuţívají při úvodu v prezentaci. Flash vyvinula společnost Adobe. Implementace sloţitých interaktivních prvků a dalšího obsahu je prováděná ve speciálním programovacím jazyku ActionScipt, ale mnoho věcí jde vytvořit i bez nutnosti umět něco programovat. Lze vyuţít také vysoké integrace s ostatními nástroji Adobe, jako jsou Adobe Photoshop, Premier a After Effects. Jedním ze zajímavých rysů výše popisovaného nástroje je absence znovunačítání zobrazovaných stránek. To se provádí průběţně na pozadí aplikace a podle poţadavků uţivatele. Aplikace Flash vyuţívá mnoho dalších moderních nástrojů, jako je 3D grafika a animace. Vyniká i svou flexibilností a malou velikostí výsledných souborů (ADOBE CREATIVE TEAM, 2010).
Teoretický základ
19
Ke spouštění výstupů Flash aplikace na internetu je zapotřebí Flash plugin (zdarma dostupný ke staţení na stránkách výrobce). V běţných stolních počítačích je nainstalovaný, na tabletech ale Flash není, pokud nemají Winodws 8. Flashové internetové prezentace jsou v zde popisovaném pojetí označovány jako Rich Internet Applications (RIA). (Rich Interenet applications, 2012) Adobe vytváří také doplňky i jednotlivé nástroje, které slouţí ke speciálnímu účelu. Jedním z nich je nástroj Actimus. Tento nástroj překrývá videosekvenci obalem Adobe XMP, ve kterém se pomocí metadat specifikuje interaktivní prvek. Poté jsou data sloučena a vloţena například do FLV video Flash formátu. Tímto způsobem lze v krátkém čase vytvořit třeba logo, které funguje jako hypertextový odkaz. Tento nástroj je hodně omezený, zato vloţený hypertextový odkaz je vytvořen velice rychle. (Activideo, 2007) Jak se s Adobe Flash pracuje: Tvorba prezentace s ovládáním a bez něj Jednou z moţností, jak si vyzkoušet multimediální prezentaci, je vytvořit jednotlivé animace obrázek po obrázku, které budeme vkládat do časové osy. Po vytvoření první části můţeme přidat multimediální ovládání. Druhá varianta je sestavit slideshow podobnou prezentaci v PowerPointu, kde rozpohybování v určitém časovém sledu je umoţněno vloţením do časové osy a stanovením posloupnosti přeměny snímku v čase. Adobe Flash Catalyst je vizuální nástroj pro zpracování Flash projektů, který je orientovaný na uţivatele, kteří nechtějí programovat v klasickém Flashi, coţ je ve většině případů nutné. Adobe Flash Catalyst pracuje dobře i s ostatními nástroji rodiny Adobe. Tab. 3 Orientační ceník Adobe nástrojů
Nástroje Flash CS6 Professional After Effects CS6 Photoshop CS6 Premiere Pro CS6
Cena – obchod Digitalmedia7 16 855 Kč 31 629 Kč 16 855 Kč 25 604 Kč
Cena – obchod Alza8 17999 Kč 33 999 Kč 17 999 Kč 26 999 Kč
Něco málo a ostatních nástrojů Adobe: A. Adobe After Effect CS6 Tento nástroj z řady Adobe se pouţívá pro tvorbu vizuálních efektů pro film a multimédia. Slouţí k animaci ve 2D i 3D. Vytváří se v něm také sloţitá filmová grafika. Pracuje s fotorealistickými světly.
7 8
http://obchod.digitalmedia.cz/eshop/vyrobce.aspx?vyr=adobe http://www.alza.cz/adobe-flash-pro-cs6-retail-d335312.htm
20
Teoretický základ
B. Adobe Photoshop CS6 Je profesionálním programem pro zpracování i úpravu fotografií a práci s bitmapovou grafikou. Zahrnuje velikou škálu nástrojů, jako jsou automatické opravy, ořezávání, práce s filtry a mnoho dalších. C. Adobe Premiere Pro CS6 Dalším důleţitým programem z rodiny Adobe je Premiere Pro CS6 pro nelineární střih videa. Umoţňuje rychlé a přesné úpravy videí bez nutnosti překódování. Všechny funkce jsou vysoce intuitivní a pracovní postupy vedou k úspoře času. 2.4.2
OpenCV
V posledních letech vzrůstá poptávka po vyuţití počítačového vidění. Je to důsledek zlevnění výkonných počítačových sestav i kamer, které se k tomuto účelu vyuţívají. Díky těmto událostem se mohou rychle rozvíjet prostředky umoţňující práci s počítačovým zpracováním obrazu. Jedním z hlavních nástrojů, jenţ pro tyto účely byly vyvinuty, je OpenCV. OpenCV je vysokoúrovňový „open source“ nástroj pro zpracování počítačového vidění. Knihovna OpenCV je napsána v programovacích jazycích C a C++ a pracuje primárně v operačním systému Linux. Samozřejmě je kompatibilní s Windows i Mac OS X. V současné době se pracuje i na vývoji dalších rozhraní pro Python, Matlab a další programovací jazyky. OpenCV je zaměřeno na výpočetní efektivitu a na realtimový software. (Bradski, Kaehler, 2008) Díky zaměření a vyladění na C aplikace je nástroj vyuţitelný pro vícejádrové programy. Dá se říci, ţe OpenCV si klade za cíl poskytnout jednoduchý nástroj pro pouţití v počítačovém vidění, aby budoval netriviální aplikace s vysokou účinností a rychlostí. Knihovna OpenCV obsahuje více neţ 500 funkcí a neustále se rozrůstá. Tyto funkce pokrývají mnoho oblastí vyuţití, z nichţ můţeme jmenovat tovární vyuţití, bezpečnost, rozpoznání obrazu, uţivatelské rozhraní, robotiku apod. (Bradski, Kaehler, 2008). Knihovny poskytnuté v základní verzi jsou plně dostačující pro tvorbu sloţitých problémů. Počítačové vidění proniká do hodně oborů. Je třeba si uvědomit, ţe se nepouţívá jen pro tyto účely. Pouţívá se, mimo jiné, v kontrole a při řízení mnoha procesů v průmyslu, řeší ovládání bezpilotních zařízení, vyuţívá se také při tvorbě rozhraní her a v dalších oblastech. (Bradski, Kaehler, 2008) První vydání tohoto softwaru bylo jiţ v roce 1999 firmou Intel. Obsahovalo mnoho funkcí. Zanedlouho po svém uvedení bylo OpenCV přijato za hlavní nástroj pro zpracování a práci s počítačovým viděním (satelitní a internetové mapy, fotografie skenování zarovnání, medicínských obrazových redukce šumu, objektová analýza, bezpečnost a narušení detekční systémy, automatické sledování a bezpečnostní systémy, výrobní kontrolní systémy, kalibrace kamery, vojenské aplikace, bezpilotní vzdušné dopravní, pozemní a podvodní vozidla). OpenCV se dokonce pouţívá k rozpoznání zvuku a hudby, kde se techniky vizuálního rozpoznání aplikují na zvukové spektrogramové snímky. Důkazem úspě-
Teoretický základ
21
chu OpenCV je robot Stanley ze Stanfordu, který vyhrál pouštní závod DARPA Challenge v roce 2005. (Bradski, Kaehler, 2008) Jak jiţ bylo řečeno, OpenCV se specializuje na poskytování základních nástrojů k řešení problémů v oblasti počítačového vidění a jeho zpracování. O vysoké vyuţitelnosti tohoto jazyka také svědčí fakt, ţe jsou staţeny desetitisíce kopií tohoto nástroje měsíčně a počet uţivatelů neustále roste. Kvůli tomu ţe OpenCV projekt byl hodně zaměřen na výzkumné aplikace, tím pádem i na vysoké zatíţení procesoru, byl růst pomalý. Hlavní expanzi tedy velmi napomohlo masové rozšíření vícejádrových procesorů a tím větší vyuţitelnost náročného zpracování počítačového vidění. (Bradski, Kaehler, 2008) Dalším rysem OpenCV je vysoká přenositelnost vytvořených aplikací. Jeho podpora umoţnuje pouţití, jak pro 32-bitové systémy Linux či Windows, tak i samozřejmě 64-bitové systémy. (Bradski, Kaehler, 2008). Poslední dostupná verze je 2.45 z roku 2012. Dnes je knihovna volně šiřitelná a práce s open source nástrojem je jak na akademické, tak i soukromé sféře zajištěna pomocí BSD licence, která umoţňuje jeho volné pouţívání, distribuci a vlastní přizpůsobování nástroje. 2.4.3
Jak pracuje OpenCV a jeho funkce i instalace
Knihovna OpenCV obsahuje mnoho vysokoúrovňových datových typů, mezi které patří matice, grady nebo sloţité mnoţiny. Všechny funkce začínají zkratkou cv a patří sem například transformace, hranování, morfologie, kalibrace kamer, rozpoznání gest a mnoho dalších. Knihovna se skládá z několika hlavních modulů. Hlavní obrazové ce zajištuje modul opencv_imgproc, datové struktury obstarává modul opencv_core. Funkce, které jsou důleţité pro matematické operace, a funkce kreslení zajištuje modul opencv_cxcore. Důleţitou součástí jsou také funkce pro práci s kamerou a její nastavení. Tu zajištuje modul opencv_calib3d. Metody strojového učení obstarává modul opencv_ml. Modul obstarávající uţivatelské rozhraní a také pro tuto práci důleţité čtení fotografií a videa se nazývá opencv_highgui. Opencv_video poskytuje funkce sledování a odhadu pohybu. Opencv_objdetect zajištuje vše potřebné k detekcím obličeje a ostatní detektory. (Laganière, 2011) Samozřejmě jsou zde i další moduly a jiné se postupně objevují při nových aktualizacích. Moduly se pouţívají stejně jako v jazyku C++, tedy pomocí vloţení do kódu pomocí příkazu #include např.
. Instalaci je moţné provést po staţení nejnovější verze z internetové stránky OpenCV.9 Ke staţení jsou k dispozici verze ke všem platformám. Zde se také nachází dokumentace. (Laganière, 2011)
9
http://opencv.willowgarage.com/wiki
22
Teoretický základ
2.5 Další potřebné nástroje 2.5.1
C++
Programovací jazyk C není ţádný mladý jazyk, jeho stáří, dá se říci, sahá uţ do roku 1979. Programovací jazyk C++ je v podstatě podmnoţina jazyka C, který byl striktně procedurální, ale s moţností programovat objektově. (History of C++) Nově poţadovaný objektový přístup vyţadoval vytvoření tohoto jazyka. Stejně jako jeho předchůdce byl vytvořen programátorem Bjarnem Stroustrupem v Bell Labs (Rick Mascitti). Programy v něm naprogramované jsou sloţené z objektů a vytvořené na základě tříd. Opravdové spuštění programu C++ jako komerční projekt bylo uskutečněno v roce 1985. Dalším přidáním balíku funkcí proběhlo v roce 1990 v Borland Turbo C++. V roce 2011 byl vydán nový standard C++ přezdívaný C+11. Hlavním prvkem bylo přidání chybějících regulárních výrazů. (History of C++, 2012) Někdo by mohl říci, ţe programovací jazyky z rodiny C jsou sloţité. Moţnou příčinu vidím ne v jejich sloţitosti, ale v nutnosti ručního managmentu paměti. Je nutné alokovat i uvolňovat paměť ručně. 2.5.2
Perl
Perl je jazyk, který je velmi efektivní pro programovaní aplikací, jejichţ sloţitost by například v jazyce C byla vysoká. Perl je skriptovací vysokoúrovňový jazyk. Z tohoto důvodu potřebujeme interpret k jeho spuštění. Lze v něm programovat jak objektově, tak strukturovaně dle potřeby. Obsahuje mnoho modulů vyuţitelných pro práci s databázemi, XML10 soubory a mnoha dalšími. (Kadlec, J., 2004) Tento jazyk se zaměřuje na rychlost a zjednodušení programování. Obrovskou výhodou je, ţe editace probíhá bez nutnosti opětovného kompilování kódu. Je vyuţitelný i k tvorbě CGI skriptů. Perl jako mnoho dalších patří do skupiny Open Source. Nejnovější verze je 5.16. a poskytuje mnoho výhod: modularita pomocí velké skupiny přídavných modulů, podpora vícejádrových procesů, vysoká úroveň regulárních výrazů, libovolně vnořené datové struktury a anonymní funkce, kvalitní debuggovací prostředí. (Perl, 2012)
10
XML Extensible Markup Language, značkovací jazyk
Teoretický základ
23
2.6 Zpracování obrazu Obrázky jsou obvykle vytvořeny pouţitím například digitálního fotoaparátu, který snímá scénu promítáním světla na snímač, které prochází přes jeho čočky. Obraz se vytváří projekcí 3D scény na 2D rovinu. Projektivní geometrie je nástroj, který se vyuţívá k popisu a charakteristice v matematických termínech a slouţí k vytvoření obrázků. (Laganière, 2011) Postup vytvoření obrazu se moc nezměnil. Světlo vycházející z pozorované scény je zachycenou kamerou přes otvor. Tyto paprsky tedy zasáhnou obrazový snímač a převedou se do digitální formy. V počítačovém vidění tento model lze zjednodušit. Můţeme zanedbávat totiţ další prvky jako je vliv objektivu (jeho čoček), či můţeme předpokládat, ţe obrazová rovina je umístěna na ohniskové vzdálenosti (viz Obr. 1). (Laganière, 2011) To vše je důleţité pro charakteristiku počítačového vidění.
Obr. 1 Snímání obrazu (Laganière, 2011)
Vzdálenost mezi čočkami k pozorovanému objektu se označuje , je vzdálenost od čoček k rovině obrázku a je ohnisková délka čoček. Obr. č 1 (Laganière, 2011) Z uvedeného zjednodušeného modelu (viz Obr. 2), a pomocí zákona podobnosti trojúhelníků, můţeme snadno odvodit základní projektivní rovnice: Velikost ( ) obrazu objektu (o výšce ) je nepřímo úměrná jeho vzdálenosti ( ) od kamery. Tento vztah umoţňuje předvídat umístění odrazu bodu do kamery. (Laganière, 2011)
24
Teoretický základ
Obr. 2 Projekce (Laganière, 2011)
2.6.1
Kalibrace kamery OpenCV
Kalibrace kamery je podstatná pro měření v reálném trojrozměrném světě. Je také důleţitá, protoţe scény nejsou jen trojrozměrné v pixelech, ale souvisí s reálným světem, tedy například v metrech, a tento vztah počítačového a reálného světa je potřeba zohledňovat. (Bradski, Kaehler, 2008) Kalibrace kamery opravuje deformace způsobené nedokonalostí objektivů. Mezi tyto nedokonalosti ve zkreslení objektivů patří výrobní i konstrukční vady. Jednodušší je vyrábět sférické čočky, neţ parabolické. Paprsky se ohýbají u středu čočky více neţ u jejich okrajů. Projevuje se to nejvíce u levných objektivů, ale ţádný objektiv není z matematického hlediska zcela dokonalý. (Bradski, Kaehler, 2008) Parametry kamery definují její ohnisková vzdálenost a velikost roviny zorného pole. Aby bylo moţné vypočítat polohu bodu ve scéně, musíme znát další údaje o tom, kde protíná kolmice od kamery obrazovou rovinu. Tento bod se nazývá hlavní bod. Nemusí to znamenat, ţe tento bod je vţdy ve středu obrazové roviny. Záleţí to na přesnosti vyrobené kamery (digitálního fotoaparátu). Kalibrace slouţí k získání parametrů kamery. Ne vţdy jsou totiţ parametry kamery od výrobce dostačující a přesné. Tato kalibrace probíhá tak, ţe se analyzují zobrazované známé vzory do kamery a tím získáme reálný obraz v kameře. Tento proces není jednoduchý, ale lze vyuţít kalibrační funkce OpenCV, jenţ ho usnadní. (Laganière, 2011) Pro kalibrování kamery je potřeba ze vzorových obrazů vygenerovat známé souřadnice 3D bodů. Nutností je analyzovat více těchto vzorů v různých úhlech (viz Obr. 4) pro zjištění relativního umístění a orientaci kamery. Jedním ze způsobů je vyuţití šachovnicového vzoru.
Teoretický základ
25
V zásadě lze pouţít i jiné vzory jako kalibrační objekt, pokud jsou správně definované. V podstatě se ale pouţívá především šachovnice (viz Obr. 3). (Bradski, Kaehler, 2008) OpenCV vyuţívá kalibrační funkci pro nalezení rohů vzoru ze šachovnice (viz Obr. 3), která se nazývá cv::findChessboardCorners (image, boardSize, imageCoerners). Funkce vrací pozice jednotlivých rohů čtverců šachovnice. Šachovnice je umístěna tak, ţe souřadnice Z se rovná nule a X a Y jsou umístěny na mříţce. Funkce automaticky tyto rohy najde. (Laganière, 2011) Je lepší pouţít nepravidelný rastr šachovnice, tedy například velikost (5,6). (Bradski, Kaehler, 2008)
Obr. 3 Hledaná šachovnice (Laganière, 2011)
Obr. 4 Ukázka snímání šachovnic (Bradski, G. – Kaehler, K., 2008)
Pokud není nic nalezeno, funkce vrátí false. Jako parametry je potřeba zadat velikost hledané šachovnice, výstupní vektor a hledaný obrázek. Poslední argument je ukazatel na pole, kde se rohové body zaznamenávají. Nalezené rohy lze vykreslit do kopie prohledávaného obrazu, jak je vidět na Obr. 5, kreslící funkcí OpenCV.
26
Teoretický základ
Obr. 5 Šachovnice s vykreslenými rohy (Laganière, 2011)
Tato kreslící funkce se nazývá cv::drawChessboardCorners(image, boardSize, imageCorners, found). Čáry spojující body nám ukazují pořadí a vektor nalezení rohů. (Laganière, 2011) Můţeme takto zkontrolovat, zda projektované rohy odpovídají rohům pozorovaným na šachovnici. Nalezené rohy budou znázorněny jako červené kruhy. Pro vykreslení je potřeba převést obraz na barevný 8-bitový tříkanálový, protoţe kruhy označující rohy jsou vykreslovány barevně. Funkce má tři argumenty, a to obraz, do kterého vykreslí kruhy, velikost šachovnice, nalezené rohy. Jednotlivé řady mají stejnou barvu rohů. (Bradski, Kaehler, 2008) Pro následné ladění lze vyuţít vykreslení nalezené šachovnice. Pro zlepšení přesnosti nalezených souřadnic bodů se vyuţívá ještě funkce cv::cornerSubPix(), která zpřesňuje nalezení na subpixely (viz Obr. 6). (Bradski, Kaehler, 2008) Bez pouţití této funkce můţou být značné chyby i při následné kalibraci kamery. (Bradski, Kaehler, 2008)
Obr. 6 Zlepšení hledání souřadnic bodů (Feature Detection)
Jakmile je nalezen dostatečný počet šachovnic, alespoň 10, lze vypočítat kalibrační parametry pro kameru. Jednotlivé nalezené rohy šachovnice lze ukládat do vektoru. Je nutné pamatovat na to, ţe je potřeba měnit úhly pohledu a vzdálenost obrázku. (Laganière, 2011)
Teoretický základ
27
Po překalibrování je obraz perspektivy převeden do nového obrazu, kde je jiţ pravidelný (viz Obr. č. 7). OpenCV poskytuje nástroje pro řešení těchto zkreslení. Finální kalibraci provádí funkce cv::CalibrateCamera2.(Bradski, Kaehler, 2008)
Obr. 7 Obraz po kalibraci (Laganière, 2011)
Finální transformací se někdy určité pixely dostaly mimo hranici výstupního obrazu. To lze kompenzovat zvětšením obrazu, ale body se budou zobrazovat černě. (Laganière, 2011)
2.7 Zásady natáčení Protoţe výsledný projekt je potřeba ověřit na reálné propagaci, která bude v podobě videopropagace i produktové fotografie, je nutné nastudovat si literaturu týkající se zásad správného natáčení. Pouţitím obecných zásad můţeme vylepšit kvalitu natočeného videa a to nejen v rovině vztahující se k samotnému natáčení, ale i pro zlepšení výsledného generovaného videa. 2.7.1
Konkrétní zásady při natáčení
A. Expozice Systémy, které řídí automatickou expozici, pracují nejlépe při dobrém osvětlení. Díky tomu je obraz dobře vykreslený a jasný (Kindersley, 2000). Nedochází tak k častému přeostřování kamery, ke kterému dochází za špatných světelných podmínek. B. Protisvětlo a kontrastní světlo Pokud je natáčení prováděno v protisvětle, nastává problém. Takto natočený objekt bude velmi tmavý, v podstatě jen silueta (Kindersley, 2000). Řešením můţe být silný zdroj světla fungující jako druhé protisvětlo. Nebo nějaký automatický systém na kameře, který kompenzuje protisvětlo korekcí expozice. Novější kamery tyto systémy mívají.
28
Teoretický základ
Kontrastní světlo způsobuje, ţe detaily ve stínech se na záznamu hodně ztratí. S tímto jevem lze počítat a počkat na vhodnější světelné podmínky nebo pouţít filtry, které sníţí kontrast. (Kindersley, 2000) C. Vyvážení bílé Pro správnou reprezentaci ostatních barev kamera musí dobře rozeznávat, které objekty jsou bílé. Je důleţité umět správně rozpoznat rozdíly mezi denním a umělým světlem a přizpůsobit tomu svoje nastavení, jinak je barva nepřirozená. (Schenk, 2005). Pokud nefunguje automatické vyváţení bílé, je potřeba kameru nastavit ručně. D. Použití stativů a dalších stabilizačních pomůcek Pouţití stativů umoţňuje velké zlepšení natočeného videa. Lze s ním například lépe měnit vzdálenost objektu bez rozhýbání obrazu (Kindersley, 2000). Stativ je nepostradatelný při natáčení sloţitějších nájezdů. Mezi další pomocné nástroje patří také tělová opěrka. Pouţívá se také k zamezení roztřesení kamery a navíc lze pouţít i při chůzi. (Kindersley, 2000) E. Natáčení v chůzi a svislý pohyb Při natáčení v chůzi je důleţité mít nohy pokrčené v kolenou. Těţiště těla bude nízko, čímţ je omezen obvyklý houpavý pohyb. Kameraman by se měl pohybovat malými plynulými kroky vpřed s přitisknutými lokty k tělu. (Kindersley, 2000) Svislým pohybem lze sledovat objekt pohybující se nahoru či dolů. Nejprve je moţné se posadit do dřepu, aby váha spočívala na jedné noze. V této pozici můţeme natočit úvodní záběr. Následně se lze pomalu zvedat a kameru drţet vodorovně. Pro sledování sestupujícího objektu vyuţíváme opačný postup. (Kindersley, 2000) F. Sledovačka Při nutnosti sledování pohybu na delší vzdálenost lze vyuţít nějaké vozítko na kolech, nazývá se kamerový vozík (Kindersley, 2000). Pokud nemáme k dispozici profesionální zařízení, jde si vypomoci například pojízdnou kancelářskou ţidlí. D. Kompozice a pravidlo zlatého řezu Pravidla pro správnou kompozici platí jak pro fotografie, tak i pro natočení videa. Je dobré uvaţovat o záběru v souvislosti s následujícími a vyváţit všechny prvky. Je důleţité nesnaţit se umístit ústřední motiv do středu scény. Existuje pravidlo zlatého řezu, které říká, ţe obraz lze rozdělit pomocí dvou vodorovných a dvou svislých přímek na stejné dílky. Hlavní prvek kompozice se poté umisťuje do jejich čtyř průsečíků. (Kindersley, 2000)
Teoretický základ
29
E. Střih Střih je důleţitou součástí veškeré videotvorby a měl by podpořit danou náladu filmu. Délka sekvence při stříhání ovlivní charakter videa, to znamená ţe, video s častým střihem bude akčnější a naopak. Určení, jak dlouho daný objekt sledovat, je záleţitostí citu (Matoušek, Jirásek, 2007). Střih je moţné provádět nejen při následné úpravě videa, ale také jiţ při natáčení, pokud si předem vše více promyslíme. F. Osvětlení Pomocné osvětlení je nedílnou součástí práce s fotografií i videem. Máme několik moţností, jak osvětlení vytvořit. Osvětlení má velký dopad na kvalitu obrazu. Také ovlivňuje náladu a atmosféru ve videu. Malá světla s nevelkým výkonem bývají umístěna přímo na kameře. Světlo sice osvětluje jen malou plochu, přesto můţe poslouţit jako základ pro osvícení blízkých objektů. Jinou alternativu osvětlení představuje ruční svítilna umístěná na stativu, je výkonnější a větší. (Schenk, 2005) G. Zatmívání Zatmívání a roztmívání obrazu umoţňuje spojit dva záběry bez skoku. S postupným roztmíváním a zatmíváním se doporučuje pracovat na začátku a konci videonahrávky. V průběhu se konec jedné scény můţe postupně měnit v následující scénu. (Matoušek, Jirásek, 2007) Pří natáčení je důleţité se vyvarovat příliš dlouhým záběrům, protoţe pokud se v nich nic zajímavého neděje, sniţují pozornost diváka. Je moţné tedy provést pohyb, například přiblíţením a oddálením od objektu. Hodně rychlý záběr kamerou často nebývá přehledný. Také příliš krátký záběr není vhodný.
30
Návrh řešení
3 Návrh řešení 3.1
Na co jsem se zaměřil z interaktivity
Určení hlavních zájmů bylo moţné díky rozsáhlému zkoumání v této oblasti. Následkem toho byly stanoveny hlavní poţadavky, které měly být splněny. Jedním z poţadavků je umoţnit uţivateli zasahovat do vytvořené videoprodukce, dá se říci, ţe to je určitý stupeň interaktivní práce s výsledným videem. Na základě vyhledaných cen videoprodukce i produktové fotografie grafických firem lze určit další důleţitý poţadavek. Tím je znuvupouţitelnost jiţ vytvořených prezentací. Pokles nákladů díky moţnosti změny, neprovázené nutností znovu vytvářet video nebo fotografii, bude značný. Šetřeny budou nejen náklady, ale i čas. Co se stane, kdyţ například po krátkém čase, kdy jsme natočili produktovou reklamu na výrobek, je potřeba z nějakého důvodu změnit obal tohoto výrobku, nebo barvu, popřípadě vyměnit výrobek úplně? Tvorba produktového videa není levná záleţitost, jak je vidět v Tab. 2. Představme si, ţe určitá místa bude moţné opakovaně měnit. To stejné by platilo i o produktové fotografii.
3.2 Kritéria výběru nástroje vylepšení interaktivní propagace Před konečným rozhodnutím, jaký prostředek zvolit pro vytvoření jednotlivých stanovených cílů, bylo zapotřebí si stanovit kritéria pro posouzení. Je potřeba říci, jak budou zvolená kritéria hodnocena. Hodnocení bude provedeno rozdělením vah jednotlivým kritérií. Rozsah kaţdé váhy je od jedné do desíti. Přičemţ deset je nelepší hodnocení. Bodování jednotlivých kritérií u konkrétního programu se pohybuje v rozmezí od jednoho do pěti bodů (pět je nejlepší výsledek). Výpočet proběhne tak, ţe se body jednotlivých atributů násobí jejich vahou. Tímto hodnocením budou subjektivně porovnány vybraná kritéria pro návrh nástroje. Hlavní rozhodnutí probíhá mezi tvorbou v Adobe Flash a vytvořením nové aplikace i postupu pomocí grafického programovacího nástroje OpenCV. Kaţdé z moţných posuzovaných řešení má samozřejmě svoje výhody a nevýhody. Z tohoto důvodu napomůţe rozhodovací tabulka. Kritéria: A. technické možnosti Jak rozsáhlé jsou moţnosti při tvorbě interaktivní propagace. B. uživatelské možnosti Sloţitost pouţitelnosti tohoto nástroje, jak při tvorbě, tak pro opakované vyuţití.
Návrh řešení
31
C. cena Finanční náročnost vyuţití daného nástroje. D. náročnost Náročnost zpracování. E. proveditelnost zadaného úkolu Moţnost zpracovat stanovené zadání. F. Přenositelnost Pouţitelnost na různých platformách. Tab. 4
Rozhodovací tabulka
kritéria (váhy)
Adobe Flash
OpenCV
technické moţnosti (7)
4\28
5\35
uţivatelské moţnosti (5)
5\25
3\15
cena (10)
1\10
5\50
náročnost (7)
4\28
2\14
proveditelnost úkolu (9)
2\18
5\45
přenositelnost (6)
2\12
5\30
výsledky
121
189
Jednotlivé hodnoty kritérií byly přiděleny na základě potřeby naplnění hlavního cíle této práce. Důleţité byly technické moţnosti, proveditelnost stanoveného úkolu a především cena.
3.3 Zhodnocení a výběr nástroje Jakmile byly oba nástroje srovnány, potvrdilo se, ţe kaţdý má své přednosti i zápory. Srovnání není jednoduché, protoţe kaţdý z nástrojů se pouţívá k jiným účelům. Flash je vytvořen pro webové prezentace, naproti tomu OpenCV pro aplikace rozpoznání obrazu a jejich ovládání. Na mnou stanovená kritéria a hlavní poţadavky se evidentně jeví jako vhodnější přístup vytvořit si nástroj přímo na míru. Specifické poţadavky hrají ve prospěch OpenCV. Dalším důvod mé volby jsou vysoké náklady, které provázejí zakoupení licencí na nástroje firmy Adobe. Nutnost pouţít také několik placených nástrojů, Adobe Premier pro sestříhání a Adobe Flash pro přidání interaktivních prvků, není správnou cestou pro šetření nákladů. Také omezení Flashe hlavně na webové prezentace není ţádoucí pro tuto práci. Omezené moţnosti trackování s mým rozhodnutím také souvisí.
32
Návrh řešení
Jak bylo zmíněno jiţ dříve, zjednodušeně potřebujeme, aby nám nástroj umoţnil zpracování námi zvolených dat a jejich znovupouţitelnost s vybranými změnami nejen pro webové účely, ale chceme mít moţnost vyuţívat i jiné medium pro propagaci. Proto jsem zvolil OpenCV.
3.4 Metodika tvorby interaktivní předlohy Mnou navrţený postup vytvoření interaktivní propagace je následující. Nezáleţí na tom, zda se jedná o produktovou fotografii nebo video propagaci. Nejprve potřebujeme rozhodnout, která místa v propagaci budeme chtít měnit. Na tato místa pak umístíme stanovený obrazový prvek, tedy šachovnici libovolné velikosti. Natočené video dle poţadavků sestříháme a provedeme poţadované úpravy. Není to ale nutné. Následně převedeme video do běţného formátu AVI ve zvoleném rozlišení opět dle vlastních poţadavků. Tím je myšleno, ţe pokud budeme chtít videopropagaci pouţívat například na webu, není nutná nejvyšší HD kvalita obrazu. Doporučený formát bude podrobně popsán v kapitole níţe. Následně jiţ stačí předat video, nebo fotografii mému nově vytvořenému nástroji se zvolenými obrázky předmětů, nebo logem firmy, které budeme chtít umístit na stanovená místa. Úprava při rozhodnutí změnit obrázky je rychlá. Pouze je opětovně spuštěný navrţený program se stejným videem, ale novými obrázky. Výstupem bude vygenerované výsledné video.
3.5 Postprodukce Postprodukce zahrnuje úpravy natočeného videa. Stala se obvyklou součástí následné práce s videem. Zahrnuje především nahrání videa do počítače a jeho zpracování. Nastříhané video můţe být před pouţitím v mém programu dále upraveno i jinými grafickými nástroji. Hlavním důvodem pouţití dalšího prostředku pro zpracování videa jsou moţnosti vylepšení obrazové kvality a dalších střihových i přechodových efektů. Není nutné pouţívat drahé komerční nástroje, protoţe na základní zpracování pro mnou navrţenou aplikaci postačí freeware program. Jednou z nevýhod pouţití volně dostupného programu můţe být horší uţivatelské rozhrání oproti propracovaným komerčním nástrojům. Z toho důvodu některé střihové nástroje vyţadují pokročilejší znalost ovládání. V této práci byla vyuţita trial verze střihového programu Sony Vegas Studio Pro11 verze 12.0.
11
http://www.sonycreativesoftware.com/download/trials/vegaspro
Implementace OpenCV
33
4 Implementace OpenCV 4.1 Návrh implementace Poté, co jsem prostudoval moţnosti hledání v obraze pomocí OpenCV, jsem se rozhodl vyuţít vestavěné funkce nacházející šachovnicový tvar v obraze. Na této funkci dále stavím. Hledání šachovnic slouţí primárně pro kalibraci kamery, ale hlavní myšlenkou je její vyuţití pro vyhledání pozice ve snímku videa. Následuje popis první aplikace, která po implementaci ukáţe moţnosti navrţeného postupu a následnou analýzou odkryje všechny problémy, které bude nutné řešit. Poté naváţu popisem programování všech potřebných funkcí. 4.1.1
První verze aplikace
Nejprve bylo nutné zpracovat vloţené video. Tedy načíst jej a hledat v něm stanoveným způsobem pozici šachovnice a na její místo vloţit obrázek. Prvním napsaným programem byl základní C++ main.cpp, který načetl video z místa vloţeného parametrem. Algoritmus snímky procházel a pokusil se najít v kaţdém z nich šachovnici pomocí popsané funkce cvFindChessboard. Velikost hledané šachovnice nejprve byla stanovena podle znalosti hledané šachovnice napevno. V daném kroku tedy byla hledána pouze jedna šachovnice. Byla-li nalezena, obrázek se vloţil do videa, coţ proběhlo spojením obrázků bod po bodu. Celý tento postup byl proveden opakovaně pro kaţdý snímek. Program nakonec vygeneroval výstupní video. Po tomto prvním pokusu bylo jasné, ţe je potřeba vytvořit mnoho dalších funkcí, aby vkládaný obraz vypadal přirozeně a správně se zobrazoval. Testy byly vykonány na několika základních videích, ve kterých jsem zkoušel náklony, úhly, pohyb, zoom a jednoduchý výjezd z šachovnice. Výsledná videa obsahovala mnoţství problémů, které jsou níţe popsány. malá velikost vkládaného obrázku, nepravidelný okraj kolem vkládaného obrázku, ztráta vkládaného obrázku při rozmazání videozáznamu, umístění rohů mimo obraz, výpadky při větším úhlu natočení, špatně nalezená velikost vkládané šachovnice, nereálná barevnost obrázku, ztráta obrázku při nepatrném pohybu mimo šachovnici, nemoţnost výjezdů a nájezdů z jakékoliv strany bez ztráty vkládaného obrazu, velká časová náročnost zpracování.
34
Implementace OpenCV
Následuje popis, jak jednotlivé problémy řešit pomocí OpenCV a mnou navrţených funkcí. A. Malá velikost vkládaného obrázku Tento problém je způsobem samotným algoritmem pro vyhledání šachovnice. Vyřešil jsem to vytvořením části programu, který bude roztahovat, dle znalosti velikosti pole šachovnice, obrázek o jedno pole do stran.
Obr. 8
Zmenšený vkládaný obrázek
B. Nepravidelný okraj kolem vkládaného obrázku Problém s okraji nastával kvůli způsobu skládání původního obrázku se vkládaným obrázkem, pixel po pixelu, a to tím, ţe při vkládání do warperspective vznikly po sloţení obrázku tmavé kraje, protoţe okolí vloţeného obrázku nebylo moţné touto metodou nastavit jako průhledné. Nastavil jsem černou barvu okolí a také program, aby černé pixely ignoroval. Tmavý rám kolem obrázku ale zůstal nezměněn. Roztřepené okraje způsoboval stejný problém. Řešením bylo pouţití matic pro skládání obrazu a rámečku. Touto metodou jiţ bylo moţné řešit i průhlednost a oba problémy se napravily.
Obr. 9
Roztřepené okraje
Implementace OpenCV
35
C. Ztráta vkládaného obrázku při rozmazání videozáznamu Tento nedostatek spočíval v nedokonalosti natočeného záznamu. Obraz kamera někdy nasnímala rozostřeně a hledající algoritmus nemohl nalézt na snímku šachovnici. Bylo tedy nutné zajistit procházení dat z hledání. Musela se vytvořit struktura, kam by se data ukládala. Nejvhodnější se zdál značkovací jazyk XML, protoţe v kaţdém programovacím jazyce existují knihovny, které obsahují nástroje pro jeho zpracování. Po uloţení stanovených dat do souboru (jako jsou rohy, velikost apod.) bylo moţné začít vytvářet filtry pro nalezená data. Stalo se, ţe program nenalezl šachovnici, chyběl tedy záznam o nalezení šachovnice v daném snímku. Bylo jasné, která šachovnice chyběla, musel jsem tedy sestavit interpolační funkce pro její vytvoření z okolních správně nalezených šachovnic. D. Umístění rohů mimo obraz Následný problém byl ovlivněn dvěma skutečnostmi. Jak rozmazáním, a tím výrazně špatným nalezením rohových bodů, tak nesprávnou identifikací rohů. První problém byl řešen v minulém případě. Druhý jsem odstranil vytvořením funkce, která určovala strany rohů. Rohy jsem třídil pomocí průniků (nesmí dojít k vzájemnému průniku úseček spojujících vrcholy šachovnice, ale diagonály se naopak protínat musí) a třídění rohů (nalezl jsem levý horní roh a od něj jsem řešil pomocí úhlu správnost umístění ostatních rohových bodů proti směru hodinových ručiček).
Obr. 10
Špatně nalezené rohy šachovnice
E. Výpadky při větším úhlu natočení Tuto komplikaci jsem odstranil správnou detekcí rohů, protoţe původně je algoritmus při natáčení nedokázal správně detekovat a způsobilo to výpadek vkládaného obrázku, nebo jeho deformaci.
36
Implementace OpenCV
F. Špatně nalezená velikost vkládané šachovnice Zvolený obrázek nebyl vloţen ve správné velikosti. Je potřebné kontrolovat, jestli není v obrázku šachovnice s ještě většími rozměry a ostatní menší nalezené odstranit navrţeným algoritmem.
Obr. 11
Špatná velikost vkládaného obrázku
G. Nereálná barevnost obrázku Bylo nutné reagovat na světelnou situaci, která byla v době natáčení videa a dané scény. Pokud jsem takovou situaci neřešil, vkládaný obraz byl velmi nereálný. To znamená, ţe barvy obrazu se jevily jako příliš ostré a světlé, i kdyţ jsem video pořizoval v tmavém prostředí (viz Obr. 8). Vytvořil jsem proto funkci hledající v určeném prostoru šachovnice průměrnou hodnotu barvy pixelů a tato průměrná hodnota byla následně pouţita pro úpravu barvy a jasu finálního vloţeného obrazu a rámečku. H. Ztráta obrázku při nepatrném pohybu kamerou mimo šachovnici Pokud sjela kamera o jedno pole šachovnice níţ, vloţený obrázek se zcela ztratil. Např. maximální hledaná velikost šachovnice byla 10x10 polí a kamera zabrala jen oblast o velikosti 9x9 a poté se vrátila na maximální velikost, způsobilo to výpadek vkládaného obrázku. U malých výjezdů s návratem se dalo vyuţít funkce interpolace, která chybějící šachovnice doplnila. Pokud se totiţ znovu snímky s šachovnicí objevily v krátké době do 5 snímků, algoritmus to detekoval jako chybějící snímky s šachovnicemi a doplnil interpolované šachovnice. I. Nemožnost výjezdů a nájezdů z jakékoliv strany bez ztráty vkládaného obrázku Problém vznikl tím, ţe při výjezdu kamery z šachovnice program nedokázal najít rozměr šachovnice a obrázek se potom vůbec nezobrazil, pro-
Implementace OpenCV
37
toţe chyběly souřadnice pro uloţení. Tento problém šlo opět řešit interpolací, která vytváří souřadnice šachovnic nutných k tomu, aby se i při výjezdu zobrazoval vkládaný obrázek. Algoritmus sleduje první a desátý snímek s šachovnicí při příjezdu kamery a naopak při odjezdu kamery se zaměřuje na poslední snímek a ještě desátý snímek od konce obsahující šachovnici. Z posunu souřadnic rohů mezi prvním a desátým snímkem jsem vypočítal rychlost a počet snímků nutných k interpolaci. J. Velká časová náročnost zpracování Základní verze mého programu uměla vyhledat šachovnici o velikosti 6x7 polí. Aby byla aplikace flexibilnější, vloţil jsem do programu moţnost volby maximální velikosti hledané šachovnice. Minimální velikost šachovnice je pevně daná vyhledávácím algoritmem OpenCV o velikosti 3x3 pole. Tím ţe maximální volená velikost je 10x10, tento program musí projít v jednom snímku 32 různých velikostí šachovnic, protoţe hledá tu největší šachovnici, která je ve snímku. Za předpokladu, ţe v jedné sekundě záznamu je např. 50 snímků, prohledávání proběhne 1600krát, coţ je časově velmi náročné. Pro urychlení na přijatelnou mez jsem tuto situaci vyřešil vyuţitím vícejádrového hledání šachovnice. Moderním čtyřjádrovým procesorem lze v tomto případě zpracovávat aţ osm snímků najednou. K. Další možnosti úprav I.
Použití pro fotografii Nebylo by špatné vyuţít aplikaci tak, aby pracovala i s fotografií, která bude obsahovat šachovnici. Aplikace by nepracovala pouze s videem. Díky tomu ţe zpracovává video snímek po snímku, lze úpravami docílit, ţe vstupním souborem můţe být fotografie s šachovnicí, do které kdykoliv vloţím poţadovaný obrázek.
II.
Volby Je nutné také zlepšit uţivatelské vlastnosti programu, to znamená umoţnit uţivateli volit určité parametry vkládaného obrázku a aplikace. Tento úkol můţe být vyřešen vytvořením funkcí, které umoţní uţivateli například měnit barvu rámečku, který lemuje vkládaný obrázek. Samotný rámeček půjde zcela skrýt. Bude moţné všechny tyto volby měnit pro jednotlivé obrázky, pokud bude různých nalezených šachovnic více. Další volby mohou být doplněny při konečné implementaci.
III.
Příkazy Pro alespoň základní uţivatelský komfort je nutné vytvořit zastřešující příkaz, který jednotlivě sám zavolá ostatní příkazy a zahrne je. Daného cíle lze dosáhnout naprogramováním shellové funkce, která
38
Implementace OpenCV
předá veškeré parametry ostatním programům a pomocí Linuxového make je spustí.
IV.
Úprava kódu Ve velkých projektech je nutné jiţ v průběhu dobře strukturovat naprogramovaný kód. Výsledná aplikace bude rozčleněna na jednotlivé hlavní funkce (moduly) a programy, které jsou propojené.
4.2 Implementace Základní implementace aplikace poukázala na problémy, které je nutné vyřešit. Návrhy řešení jednotlivých potíţí slouţily při dalším vývoji. V následujícím textu popíšu jednotlivé řešené části programu celé aplikace s podrobným rozebráním důleţitých částí. Pro lepší přehlednost je implementace popsána jako průchod dat jednotlivými sekcemi programu. 4.2.1
Zpracování videa pomocí extract-images
K prvotnímu zpracování videa slouţí program extract-images.ccp. Popsán je v následujícím textu. Nejprve se spouští část programu extract-images.cpp s parametrem -s, který poţaduje umístění „zdrojové videa“ pro zpracování, a -o s umístěním „adresáře“, kam výsledná data extrahovat. Aby bylo moţné zpracovat volby z příkazového řádku, pouţívám knihovnu #include , která to umoţňuje. Poté otevřu a načtu video, coţ je zajištěno funkcí OpenCV, která se nazývá cvCaptureFromFile. Video pro následné zpracování rozdělím na jednotlivé snímky funkcí cvQueryFrame, která vytáhne jeden snímek z videa. V adresáři vytvořím XML soubor s počátečním názvem 000000.xml. Jeho tvar jsem zvolil jako šest číslic s příponou XML, protoţe delší videa mohou obsahovat velké mnoţství snímků. V tomto souboru jsou uloţeny informace o videu. Jsou to informace o rozlišení videa a počtu snímků za sekundu. Data získáme z videa pomocí funkce cvGetCaptureProperty. Přidám zde kořenový element . XML soubor je vypsán jako text. Uzavírací element je nutné takto vytvořit z důvodu validnosti pro následné zpracování XML dat. Extract-images ke konci vytvoří Makefile, kde jsem definoval pravidlo, jak vytvořit XML soubor z jednotlivých JPG souborů. K tomu jsem pouţil další části programu voláním extract-chessboard.cpp a hlavní pravidlo, které obsahuje pro všechny obrázky poţadavek na vytvoření in.xml souboru, který bude obsahovat data šachovnic. 4.2.2
Make a Makefile
Dále se po úvodním zpracování programem extract-images z prikazu.sh volá make, který přečte Makefile a volá extract-chessboard.cpp pro kaţdý snímek. Program volá několik zpracování snímku zároveň (je volán z prikazy.sh). Podle zadání počtu procesů, které mají být puštěné současně, je make rozdělí jednotlivým procesorům. Pokud bude nastaveno více procesů, neţ je procesorů, budou se střídavě zpracovávat z fronty, coţ ale zapříčiní pomalejší zpracování, jako kdyby byly zpracovávány jednoprocesorově. Je tedy nutné pro rychlé zpracování dobře zvolit počet procesů. Je moţné počítat i s virtuálními procesory moderních procesorů (tzv. hyperthreading). Tento postup zpracování úvodních dat byl vytvořen ze dvou důvodů. Jedním z nich je urychlení velmi náročného a zdlouhavého procesu nalezení všech šachovnic na daném snímku. Nejmenší moţná nalezená šachovnice je nastavena 3x3 a maximální je primárně nastavena, pokud uţivatel nezadá jinou hodnotu, na velikost 10x10. Je to z důvodu časové náročnosti tohoto předpracování. Jeden snímek se prochází 32krát, protoţe při průchodu se zvětšuje vţdy jen jeden rozměr hledané velikosti šachovnice ( ). Tedy na jednu sekundu videa při 25 snímcích je to 800 průchodů a zaznamenání do XML všech nalezených šachovnic. V reklamním videu o délce 30 sekund bude muset program projít všechny snímky dohromady 24 000krát. Počet průchodů lze značně zmenšit, pokud specifikuji přesně největší rozměr šachovnice, co se můţe ve videu vyskytnout. Šachovnice o velikosti 8x6 polí ( ) má jiţ na 30 sekundové video průchodů pouze 9375. Druhým důvodem pouţití make místo moţného vláknového zpracování OpenCV je, ţe funkce cvFindCheasboardCorners v některých snímcích skončí se segmentační chybou a ukončí celé zpracování videa. Pokud extract_chessboard selţe v mnou navrţeném vícejádrovém zpracování, smaţe se pouze jeho XML soubor, se kterým zrovna pracoval, a extrakce pokračuje dál následujícím snímkem. Nedokončený snímek pak doplní později popsaná interpolační funkce. 4.2.3
Hledání šachovnice ze snímku pomocí extract-chesboard
Další program slouţí pro samotné vyhledání šachovnice ze snímku, který dostaneme jako parametr od výše zmíněného make. Obdrţí obrázek snímku, číslo
40
Implementace OpenCV
snímku a jméno výstupního XML (xml.out), který bude obsahovat všemi funkcemi upravené šachovnice. Jako další parametry z příkazového řádku můţe extract-chessboard získat -m, coţ je maximální velikost hledané šachovnice s tím, ţe minimální velikost je nastavena napevno jako 3x3 a maximální je primárně nastavena jako 10x10 polí šachovnice. Dalším moţným parametrem je -v, díky němuţ extrakce proběhne s podrobným výpisem, další je -d, který umoţní generování sekundárních obrázků nalezených šachovnic s jejich vykreslením, coţ je důleţité pro následné analýzy problémů a ověření, zda nalezení proběhlo správně. Pomocí funkce cvFindChessboardCorners program hledá ve snímku šachovnice. Tato stěţejní funkce z OpenCV nám poté, co jí dodáme hledanou velikost šachovnice a jednotlivé snímky videa (ve formě jednotlivých JPG obrázků), nalezne šachovnici a vrátí nám data všech vnitřních bodů šachovnice. Jde o všechny rohy, coţ jsou místa sousedící se dvěma bílými, nebo dvěma černými čtverci, v potenciálně náhodném pořadí. Tedy pro nacházenou šachovnici o velikosti 3x3 to bude devět bodů, protoţe funkce hledá změny mezi bílou a černou barvou a opakující se body neuvádí. OpenCV funkce cvFindChessboardCorners vţdy nalezne rozměry šachovnice o jedna menší, neţ tu kterou hledáme. Například pro šachovnici 8x8 bude nalezena velikost 7x7. Ve snímku můţe najít libovolné mnoţství různých šachovnic, není ale zaručeno, ţe najde všechny (pokud jsou dvě, najde např. jen jednu z nich). Nelze na to spoléhat (viz kód, ř. 25). Poté, co jsou nalezené rohy, vypisuje je do XML souboru, k danému značenému snímku (viz kód, ř. 53). Pokud dostal algoritmus parametr -d, kaţdou nalezenou šachovnici navíc nakreslí do dalšího JPG souboru. Vytvoří nejprve kopii prohledávaného obrázku funkcí cvCreateImage a do ní pomocí funkce cvDrawChessboardCorners algoritmus zaznamená nalezené body šachovnice. Šachovnice jsou číslované od jedné (XML), a to z toho důvodu, ţe pozice nula je obsazena XML souborem, který obsahuje vstupní údaje o videu (počet snímků za sekundu, výška, šířka videa). Jednou z dalších věcí, jakou tento program vyuţívá, je funkce OpenCV pro zlepšení vyhledaných pozic rohů. Funguje tak, ţe se nejprve prohledávaný obrázek musí převést do 8-bitové šedé. Poté se aplikuje funkce cvFindCornerSubPix. Tato funkce matematicky zpřesňuje pozici nalezeného rohu. Pokud totiţ přechod mezi čtverci bílé a černé není ostrý (hledá gradient), najde střed přechodu horizontální a vertikální bíle a černé a vypočítá zlepšenou pozici rohu. Po provedení extrakce snímku a jeho zpracování extraktorem šachovnic následuje zpracování jednotlivých XML vytvořených hledáním s uzavíracím a otevíracím tagem