Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Bakal´ aˇ rsk´ a pr´ ace Syst´ em pro vizu´ aln´ı z´ aznam pomal´ ych dˇ ej˚ u
Plzeˇ n 2012
Pavel Koc´abek
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem bakal´aˇrskou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 19. ˇcervence 2012 Pavel Koc´abek
Podˇ ekov´ an´ı T´ımto bych r´ad podˇekoval Ing. Kamilu Ekˇsteinovi, Ph.D. za veden´ı t´eto pr´ace a za zap˚ ujˇcen´ı zaˇr´ızen´ı. Za zap˚ ujˇcen´ı zaˇr´ızen´ı dˇekuji tak´e BcA. Vojtˇechu Aubrechtovi a Janu Dˇzuganovi.
Abstract The goal of this work is to acquaint the reader with methods of capturing time lapse frames. Second part of this work is to implement a custom software which would make an alternative solution to the existing software bundles. This part should inform the reader about the methods and algorithms used in the designed software solution and explain the usage of the created application.
Obsah ´ 1 Uvod
1
2 Oˇ casosbˇ ern´ em sn´ım´ an´ı
2
3 Existuj´ıc´ı software 3.1 AnimatorHD . . . . . . . 3.2 HandyAvi 4.3 . . . . . . . 3.3 CandyLabs VideoVelocity 3.4 GBTimelapse . . . . . . . 3.5 DIYPhotobits.com Camera 3.6 Tilaphos . . . . . . . . . . 3.7 Perios . . . . . . . . . . . 3.8 Srovn´an´ı . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
6 6 6 7 7 8 8 8 9
4 Techniky u ´ pravy obrazu 4.1 Z´akladn´ı pojmy . . . . . . . . . . . . . 4.1.1 Barevn´ y model RGB . . . . . . 4.1.2 Histogram . . . . . . . . . . . . 4.2 Stereoskopie . . . . . . . . . . . . . . . 4.2.1 Paralaxa . . . . . . . . . . . . . ´ 4.3 Upravy obrazu v programu FlyCatcher 4.3.1 Oˇrez . . . . . . . . . . . . . . . 4.3.2 Korekce barev a expozice . . . . 4.4 Detekce zmˇen . . . . . . . . . . . . . . 4.4.1 Gaussovo rozostˇren´ı a konvoluce
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
10 10 10 10 11 12 12 12 12 15 15
. . . .
17 17 17 18 21
5 Programov´ a dokumentace 5.1 Aplikaˇcn´ı logika . . . . . 5.1.1 CivilGrabber . . 5.1.2 WiaGrabber . . . 5.1.3 NetworkGrabber
. . . .
. . . . . . . . . . . . . . . . . . . . Control . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
OBSAH
5.2
OBSAH ˇ ızen´ı chodu programu . . . . . . . 5.1.4 R´ 5.1.5 Manipulace s obrazem . . . . . . . 5.1.6 S´ıt’ov´a komunikace . . . . . . . . . Grafick´e uˇzivatelsk´e rozhran´ı . . . . . . . . 5.2.1 Window . . . . . . . . . . . . . . . 5.2.2 Pr˚ uvodce . . . . . . . . . . . . . . 5.2.3 Panely oddˇedˇen´e od AbstractPanel 5.2.4 Pl´atno VideoCanvas . . . . . . . . 5.2.5 Ostatn´ı okna a dialogy . . . . . . . 5.2.6 Lokalizace . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
21 22 23 24 24 25 26 27 27 28
6 Z´ avˇ er
29
A Uˇ zivatelsk´ a dokumentace A.1 Poˇzadavky . . . . . . . . . . A.2 Pˇreklad a spuˇstˇen´ı programu A.2.1 Pˇreklad programu . . A.2.2 Spuˇstˇen´ı programu . A.3 Obsluha programu . . . . . A.3.1 Hlavn´ı okno . . . . . A.3.2 Sn´ım´an´ı . . . . . . . A.3.3 N´ahled videa . . . . ˇ A.3.4 Casov´ an´ı . . . . . . . A.3.5 Moˇznosti ukl´ad´an´ı .
34 34 34 34 34 35 35 35 37 38 39
. . . . . . . . . .
5
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
´ 1 Uvod Prvn´ı ˇca´st´ı t´eto pr´ace je sezn´amit ˇcten´aˇre s metodami ˇcasosbˇern´eho sn´ım´an´ı a existuj´ıc´ım softwarem pro tvorbu ˇcasosbˇern´ ych fotografi´ı a videa. C´ılem druh´e ˇca´sti pr´ace je navrhnout a vytvoˇrit syst´em pro ˇcasosbˇern´e vizu´aln´ı sn´ım´an´ı pomal´ ych dˇej˚ u pomoc´ı digit´aln´ıch videokamer ˇci fotoapar´at˚ u, kter´ y bude alternativou dostupn´ ych program˚ u, zab´ yvaj´ıc´ıch se touto t´ematikou. V´ ysledn´ y program by mˇel umˇet zpracov´avat sn´ımky z r˚ uzn´ ych zaˇr´ızen´ı pˇripojen´ ych k poˇc´ıtaˇci, jako jsou napˇr. webov´e kamery ˇci digit´aln´ı zrcadlovky. ˇ ast pr´ace je tak´e vˇenov´ana stereoskopick´emu sn´ım´an´ı ze dvou zaˇr´ızen´ı naC´ jednou.
1
2 O ˇcasosbˇern´em sn´ım´an´ı Obsahem t´eto kapitoly je sezn´amit ˇcten´aˇre s principy ˇcasosbˇern´eho sn´ım´an´ı a poskytnout mu tak z´akladn´ı pˇrehled o metod´ach z´ısk´av´an´ı takov´ehoto z´aznamu. ˇ Casosbˇ ern´e sn´ım´an´ı je hojnˇe pouˇz´ıvan´a fotografick´a a filmaˇrsk´a technika, spoˇc´ıvaj´ıc´ı ve sn´ım´an´ı sc´eny niˇzˇs´ı rychlost´ı, neˇz je tomu u klasick´eho videa. Zaznamenan´e video se zrychl´ı na bˇeˇznou sn´ımkovou frekvenci videa, typicky 25 nebo 30 sn´ımk˚ u za sekundu. Sn´ımkov´ ym rychlostem se v´ıce vˇenuje zdroj[5]. Na prvn´ı pohled se jako nejjednoduˇsˇs´ı metoda jev´ı z´aznam videa z videokamery v re´aln´em ˇcase ˇci ukl´ad´an´ı vˇsech jednotliv´ ych sn´ımk˚ u ze zaˇr´ızen´ı. V´ yhodou t´eto metody je, ˇze se uˇzivatel nemus´ı starat o sn´ımac´ı frekvenci a rychlost v´ ysledn´e videosekvence urˇc´ı aˇz ve video editoru. Nev´ yhodou je ovˇsem obrovsk´e mnoˇzstv´ı soubor˚ u, kter´e se na disk mus´ı v pr˚ ubˇehu sn´ım´an´ı uloˇzit, a jejich velikost. Druh´a, smysluplnˇejˇs´ı metoda, je ukl´adat pouze ty sn´ımky, kter´e uˇzivatel ve sv´em videu vyuˇzije. Jednotliv´e sn´ımky se tedy budou ukl´adat v pˇredem urˇcen´ ych intervalech. T´ımto zp˚ usobem se uloˇz´ı minim´aln´ı poˇcet sn´ımk˚ u a sn´ıˇz´ı se zat´ıˇzen´ı procesoru a disku. Pˇri pouˇzit´ı t´eto metody je rovnˇeˇz moˇzno ukl´adat pouze takov´e sn´ımky, kter´e se liˇs´ı od pˇredchoz´ıch. Jak´e intervaly je tedy vhodn´e pouˇz´ıt? Z´aleˇz´ı na situaci, kterou chceme sn´ımat. Existuj´ı dva r˚ uzn´e pohledy, podle kter´ ych sn´ımac´ı interval urˇcit, za pˇredpokladu, ˇze pˇredem zn´ame sn´ımkovou frekvenci budouc´ıho videa (FPS): 1. Chceme video zrychlit oproti skuteˇcnosti v urˇcit´em pomˇeru (napˇr. 10:1): interval I budeme volit jako pomˇer sn´ımkov´e frekvence videa ku poˇzaFPS = 25 = 2,5 s. dovan´emu zrychlen´ı, ˇcili I = zrychlen´ ı 10 2. Chceme video poˇzadovan´e d´elky (napˇr. 24 hodin chceme napasovat do 5ti-minutov´eho videa): interval I vypoˇcteme podle n´asleduj´ıc´ıho vzorce: re´ aln´ a doba 86400 I = poˇzadovan´ = 300·25 = 11,52 s a d´ elka·F P S Zp˚ usoby sn´ım´ an´ı Nˇekter´a zaˇr´ızen´ı maj´ı vestavˇenou podporu pro ˇcasosbˇern´e sn´ım´an´ı jiˇz ve sv´em firmware. K drtiv´e vˇetˇsinˇe digit´aln´ıch zrcadlovek lze dokoupit extern´ı zaˇr´ızen´ı 2
O ˇcasosbˇern´em sn´ım´an´ı
– tzv. intervalometr. To je zaˇr´ızen´ı, kter´e v pravideln´ ych intervalech d´av´a pokyn zaˇr´ızen´ı pro exponov´an´ı sn´ımku. Tˇret´ı moˇznost´ı je pouˇz´ıt pro ˇcasosbˇern´e sn´ım´an´ı extern´ı program. Extern´ı programy ˇcasto nab´ız´ı oproti pˇredchoz´ım dvˇema moˇznostem r˚ uzn´e speci´aln´ı funkce a ˇsirok´e moˇznosti nastaven´ı.
Um´ıstˇ en´ı zaˇ r´ızen´ı Pˇri sn´ım´an´ı mus´ı b´ yt zaˇr´ızen´ı nehybn´e. Jak´ ykoliv sebemenˇs´ı pohyb znamen´a znehodnocen´ı v´ ysledku. Ide´aln´ı je zaˇr´ızen´ı um´ıstit na tˇeˇzk´ y a robustn´ı stativ. Stˇredov´ y sloupek z´asadnˇe nevysouv´ame, jednotliv´e nohy stativu nech´av´ame pokud moˇzno tak´e nevysunuty. Pro z´ısk´an´ı maxim´aln´ı stability je vhodn´e stativ zat´ıˇzit zavˇeˇsen´ım tˇeˇzk´eho bˇremene za stˇredov´ y h´aˇcek.
Expozice a filtry Je zn´amo, ˇze expozice z´avis´ı na tˇrech faktorech: na clonov´em ˇc´ısle, ˇcase z´avˇerky a citlivosti ISO. S vyˇsˇs´ım clonov´ ym ˇc´ıslem roste hloubka ostrosti sn´ımku, s vyˇsˇs´ı citlivost´ı ˇsum a s delˇs´ım ˇcasem pohybov´a neostrost. Pr´avˇe pohybov´a neostrost tvoˇr´ı ˇcasosbˇern´e video plynulejˇs´ım. Je tedy vhodn´e pˇriclonit a zv´ yˇsit dobu expozice i na nˇekolik sekund (samozˇrejmˇe v z´avislosti na sn´ıman´e sc´enˇe). K dos´ahnut´ı tohoto efektu n´am m˚ uˇze pomoci neutr´aln´ı ˇsed´ y filtr, kter´ y omez´ı svˇetlo proch´azej´ıc´ı objektivem a zachov´a barevn´e pod´an´ı sn´ımku. Je nutno poˇc´ıtat s t´ım, ˇze souˇcet doby expozice a ˇcasu, potˇrebn´eho ke zpracov´an´ı a uloˇzen´ı sn´ımku, nesm´ı pˇres´ahnout d´elku naˇseho sn´ımac´ıho intervalu. Pˇri sn´ım´an´ı krajiny je vhodn´e pouˇz´ıt polarizaˇcn´ı filtr, kter´ y polarizuje j´ım proch´azej´ıc´ı svˇetlo do kolm´e roviny v˚ uˇci objektivu. Pomoc´ı polarizaˇcn´ıho filtru lze omezit dopadaj´ıc´ı polarizovan´e svˇetlo z oblohy, ˇc´ımˇz dojde k jej´ımu ztmaven´ı. Mˇejme vˇsak na pamˇeti, ˇze m´ıra tohoto efektu z´avis´ı na u ´hlu sluneˇcn´ıho svitu v˚ uˇci objektivu, a proto bychom se polarizaˇcn´ımu filtru mˇeli vyhnout v pˇr´ıpadˇe, ˇze pl´anujeme sc´enu sn´ımat delˇs´ı dobu, pˇri kter´e se slunce po obloze posune o velkou vzd´alenost. V takov´em pˇr´ıpadˇe je lepˇs´ı oblohu ztmavit pomoc´ı filtru pˇrechodov´eho.
3
O ˇcasosbˇern´em sn´ım´an´ı
Blik´ an´ı Pˇri ˇcasosbˇern´em sn´ım´an´ı je silnˇe doporuˇceno nastavit zaˇr´ızen´ı na plnˇe manu´aln´ı reˇzim. Toto doporuˇcen´ı neplat´ı pro sn´ım´an´ı sc´eny, v n´ıˇz chceme zaznamenat proces, pˇri nˇemˇz doch´az´ı k rapidn´ı zmˇenˇe svˇetla ve sc´enˇe. Napˇr´ıklad kdybychom pˇri sn´ım´an´ı soumraku pouˇzili manu´aln´ı reˇzim, svˇetlo ve sc´enˇe by postupem ˇcasu pokleslo natolik, ˇze by v´ ysledn´ y sn´ımek byl u ´plnˇe ˇcern´ y. Pokud to nen´ı z´amˇer, je tˇreba tento u ´bytek svˇetla kompenzovat napˇr. pˇrepnut´ım zaˇr´ızen´ı do poloautomatick´eho ˇci plnˇe automatick´eho m´odu. Pokud nastav´ıme zaˇr´ızen´ı do reˇzimu priority ˇcasu, expoziˇcn´ı automatika bude dopoˇc´ıt´avat vhodnou clonu tak, aby sn´ımek byl korektnˇe exponov´an. Zde ovˇsem nast´av´a probl´em. Pokud zaˇr´ızen´ı vyhodnot´ı, ˇze by sc´ena byla d´ıky u ´bytku svˇetla podexponov´ana, zmˇen´ı clonov´e ˇc´ıslo na niˇzˇs´ı (typicky o jeden krok). Po t´eto zmˇenˇe projde za stejnou dobu objektivem dvojn´asobn´e mnoˇzstv´ı svˇetla, ˇc´ımˇz se v´ ysledn´ y sn´ımek bude jevit jako svˇetlejˇs´ı. Protoˇze clonov´e ˇc´ıslo nelze nastavit spojitˇe, pˇriˇcemˇz by se clona nastavila adekv´atnˇe pro kaˇzd´ y sn´ımek, doch´az´ı k jeho nastaven´ı nepravidelnˇe skokovˇe, a proto se n´am sekvence sn´ımk˚ u jev´ı jako blikaj´ıc´ı. Analogicky doch´az´ı ke skokov´e zmˇenˇe expozice pˇri pouˇzit´ı priority clony ˇci plnˇe automatick´eho reˇzimu. K blik´an´ı m˚ uˇze rovnˇeˇz doj´ıt, pokud pouˇzijeme automatick´e vyv´aˇzen´ı b´ıl´e. Proto je nutno vyv´aˇzen´ı b´ıl´e nastavit manu´alnˇe. Nicm´enˇe, k m´ırn´emu blik´an´ı m˚ uˇze doch´azet i pˇri pouˇzit´ı manu´aln´ıho nastaven´ı digit´aln´ıch zrcadlovek, tvrd´ı [6]. Clona v objektivech, urˇcen´ ych pro digit´aln´ı zrcadlovky, se po exponov´an´ı sn´ımku zcela otevˇre, neˇz se opˇet nastav´ı na poˇzadovanou hodnotu. T´ımto zp˚ usobem mohou vznikat mal´e mechanick´e nepˇresnosti, kter´e rovnˇeˇz zp˚ usob´ı blik´an´ı obrazu. Pokud budeme clonit m´alo, tyto nepˇresnosti budou zanedbateln´e, ale budeme muset pouˇz´ıt kratˇs´ı expoziˇcn´ı ˇcasy, kter´e mohou b´ yt tak´e nepˇresn´e. Jin´e ˇreˇsen´ı je objektiv pootoˇcit tak, abychom odpojili elektrick´e kontakty u objektivu od tˇela zrcadlovky a clona tak z˚ ustala konstantn´ı. V pˇr´ıpadˇe sn´ım´an´ı v (polo)automatick´em reˇzimu je tˇreba k potlaˇcen´ı blik´an´ı pouˇz´ıt post-processing1 . 1´
Uprava sn´ımk˚ u mimo zaˇr´ızen´ı, kter´ ym bylo poˇr´ızeno.
4
O ˇcasosbˇern´em sn´ım´an´ı
Vyuˇ zit´ı ˇ Casosbˇ ern´e video lze napˇr´ıklad uplatnit v n´asleduj´ıc´ıch oblastech: • sn´ım´an´ı r˚ ustu rostlin, • sn´ım´an´ı oblaˇcnosti, • z´aznam j´ızdy dopravn´ımi prostˇredky, • monitorov´an´ı dopravy, • z´aznam pr˚ ubˇehu stavby ˇci demolice budov, • zamrz´an´ı ploch vodn´ıch tok˚ u.
5
3 Existuj´ıc´ı software C´ılem t´eto kapitoly je sezn´amit ˇcten´aˇre s existuj´ıc´ım softwarem pouˇz´ıvan´ ym pro ˇcasosbˇern´e sn´ım´an´ı pomal´ ych dˇej˚ u, uk´azat jejich funkce a prov´est srovn´an´ı s navrhovan´ ym programem. Existuj´ıc´ıch program˚ u, urˇcen´ ych k ˇcasosbˇern´emu sn´ım´an´ı, je cel´a ˇrada. Uvedeny budou pouze nˇekter´e z nich.
3.1
AnimatorHD
AnimatorHD je profesion´aln´ı n´astroj, slouˇz´ıc´ı k vytv´aˇren´ı Stop Motion1 animac´ı a k ˇcasosbˇern´emu sn´ım´an´ı. Program um´ı zpracov´avat sn´ımky z webov´ ych kamer a digit´aln´ıch zrcadlovek od firmy Canon a Nikon. Um´ı zpracov´avat fotografie i z fotoapar´at˚ u ostatn´ıch znaˇcek, ale pouze s pouˇzit´ım softwaru tˇret´ıch stran. Dok´aˇze ukl´adat do r˚ uzn´ ych form´at˚ u, um´ı vytvoˇrit i HDR2 z´aznam a um´ı zobrazit ˇziv´ y n´ahled. Dovede sn´ımat z v´ıce zaˇr´ızen´ı souˇcasnˇe, komunikovat s pojezdov´ ymi zaˇr´ızen´ımi pˇres s´eriov´ y port, n´ahled a export sn´ımk˚ u ve anaglyfov´em form´atu, ale pouze od verze Professional. Z uloˇzen´ ych sn´ımk˚ u je schopen zpracovat videosekvence. Pro vyzkouˇsen´ı je zdarma dostupn´a demoverze, umoˇzn ˇuj´ıc´ı uloˇzit ze zaˇr´ızen´ı 50 sn´ımk˚ u s logem softwaru. V´ıce informac´ı je dostupno na http://animatordv.com.
3.2
HandyAvi 4.3
HandyAvi je software, slouˇz´ıc´ı ke sn´ım´an´ı a editaci ˇcasosbˇern´ ych vide´ı z webov´ ych kamer a televizn´ıch tuner˚ u. Podporuje detekci pohybu, blesk˚ u a mete1
Technika spoˇc´ıvaj´ıc´ı ve fotografov´an´ı nehybn´e sc´eny, ve kter´e jsou jednotliv´e objekty manu´ alnˇe upravov´ any a posouv´ any o mal´e u ´seky tak, aby se po spojen´ı sn´ımk˚ u do videosekvence navodilo dojmu pohybu. 2 High Dynamic Range
6
Existuj´ıc´ı software
CandyLabs VideoVelocity
orit˚ u. Program dovede ovl´adat dalekohledy firmy Meade Instruments. Pro vyzkouˇsen´ı je k dispozici 10denn´ı verze zdarma. V´ıce informac´ı je dostupno z http://www.azcendant.com.
3.3
CandyLabs VideoVelocity
VideoVelocity je jednoduch´ y program, zpracov´avaj´ıc´ı sn´ımky z webov´ ych kamer. Program um´ı ukl´adat jednotliv´e sn´ımky ˇci rovnou generovat video, m˚ uˇze b´ yt ovl´ad´an z pˇr´ıkazov´e ˇr´adky a t´ım b´ yt plnˇe automatizov´an. Umoˇzn ˇuje tak´e sn´ımat v HD3 a podporuje Motion triggered sn´ım´an´ı, kdy se sn´ımek uloˇz´ı pouze za pˇredpokladu, ˇze se liˇs´ı od pˇredchoz´ıho. Za tyto funkce si ale jiˇz mus´ıme pˇriplatit. Web produktu je na http://www.candylabs.com/videovelocity.
3.4
GBTimelapse
GBTimelapse je software, umoˇzn ˇuj´ıc´ı ˇcasosbˇern´e sn´ım´an´ı ze zrcadlovek firmy Canon. Program dovede sn´ımat v r˚ uzn´ ych form´atech, dok´aˇze sn´ımat v´ıce sn´ımk˚ u s r˚ uznou expoziˇcn´ı hodnotou a sestavit HDR sn´ımky. Disponuje ˇziv´ ym n´ahledem sn´ımk˚ u a interaktivn´ım n´ahledem videa. M´a rozs´ahl´e nastaven´ı ˇcasov´an´ı – dok´aˇze napˇr. spustit nahr´av´an´ı v urˇcit´ y ˇcas pˇred z´apadem slunce, apod. Ve verzi Pro um´ı synchronnˇe sn´ımat z v´ıce zaˇr´ızen´ı najednou. V´ yrobce vyv´ıj´ı tak´e n´astroj GBDeflicker, slouˇz´ıc´ı k odstranˇen´ı blik´an´ı obrazu, dostupn´ y samostatnˇe nebo jako plugin do produkt˚ u firmy Adobe. Na internetu jsou dostupn´e zkuˇsebn´ı verze vˇsech v´ yˇse uveden´ ych produkt˚ u. 3
Video s rozliˇsen´ım vyˇsˇs´ım neˇz 800 × 600 bod˚ u.
7
Existuj´ıc´ı software
DIYPhotobits.com Camera Control
V´ıce informac´ı je k dispozici na http://www.granitebaysoftware.com/Products/ProductGBTEOS.aspx.
3.5
DIYPhotobits.com Camera Control
Jedn´a se o skript, umoˇzn ˇuj´ıc´ı sn´ım´an´ı fotografi´ı ze zrcadlovek firmy Nikon. Umoˇzn ˇuje nastavit parametry fotoapar´atu jako je napˇr. clona, ˇcas z´avˇerky, ISO, atd. a m´a vestavˇenou podporu pro ˇcasosbˇern´e sn´ım´an´ı. Skript je lze st´ahnout na str´ance http://www.diyphotobits.com/download-diyphotobitscom-cameracontrol.
3.6
Tilaphos
Tilapshos je jednoduch´ y volnˇe dostupn´ y n´astroj pro zpracov´an´ı sn´ımk˚ u z webov´ ych kamer. Ukl´ad´a jednotliv´e sn´ımky do pevnˇe definovan´e sloˇzky. Z tˇechto sn´ımk˚ u dok´aˇze vytvoˇrit video. Program je moˇzno st´ahnout z http://tilaphos.sourceforge.net.
3.7
Perios
Perios je volnˇe dostupn´ y program, zpracov´avaj´ıc´ı sn´ımky z webov´ ych kamer. Rovnˇeˇz dovede poˇrizovat sn´ımky z kamer pˇres protokol HTTP. Z uloˇzen´ ych sn´ımk˚ u umoˇzn ˇuje vytvoˇrit videosekvenci. Program obsahuje pouze z´akladn´ı nastaven´ı a nen´ı uˇz vyv´ıjen. Program je k dispozici na http://perios.ic.cz.
8
Existuj´ıc´ı software
3.8
Srovn´an´ı
Srovn´ an´ı
Jak je vidˇet v pˇredchoz´ıch odstavc´ıch, vˇetˇsina kvalitnˇejˇs´ıch program˚ u je placen´a. Volnˇe dostupn´e programy a volnˇe dostupn´e verze placen´ ych program˚ u disponuj´ı pouze jednoduch´ ymi funkcemi. Navrhovan´ y program FlyCatcher nab´ız´ı k tˇemto program˚ um alternativu. Srovn´an´ı jednotliv´ ych program˚ u podle podpory zaˇr´ızen´ı je provedeno v tabulce 3.1 a jejich vybran´e vlastnosti v tabulce 3.2. Program Webkamery Canon Nikon Ostatn´ı foto Jin´a zaˇr. AnimatorHD Ano Ano Ano Ano* Ano HandyAvi Ano Ne Ne Ne Ano GBTimelapse Ne Ano Ne Ne Ne DIYPhotobits Ne Ne Ano Ne Ne VideoVelocity Ano Ne Ne Ne Ne Tilaphos Ano Ne Ne Ne Ne Perios Ano Ne Ne Ne Ano FlyCatcher Ano Ne Ano Ne Ano Tabulka 3.1: Moˇznosti pˇripojen´ı zaˇr´ızen´ı: Tabulka ukazuje, kter´a zaˇr´ızen´ı jsou podporov´ ana jednotliv´ ymi programy. * Pouze sn´ım´ a obsah urˇcit´eho adres´aˇre
Program Detekce pohybu Stereoskopie Korekce barev ˇ asteˇcnˇe C´ AnimatorHD Ne Ano HandyAvi Ano Ne Ne GBTimelapse Ne Ne Ano* DIYPhotobits Ne Ne Ne VideoVelocity Ano Ne Ne Tilaphos Ne Ne Ne Perios Ne Ne Ne FlyCatcher Ano** Ano Ano** Tabulka 3.2: Speci´ aln´ı funkce program˚ u: uk´azka vybran´ ych nadstandardn´ıch funkc´ı jednotliv´ ych program˚ u. * s programem GBDeflicker ** neplat´ı pro zrcadlovky
9
4 Techniky u´pravy obrazu 4.1 4.1.1
Z´ akladn´ı pojmy Barevn´ y model RGB
Barevn´ y model RGB1 patˇr´ı v poˇc´ıtaˇcov´e grafice mezi nejpouˇz´ıvanˇejˇs´ı zp˚ usoby uloˇzen´ı barevn´e informace. Jeho jednotliv´e barevn´e sloˇzky R, G a B jsou ud´av´any procentu´alnˇe v rozsahu h0, 1i nebo pomoc´ı tzv. bitov´e hloubky. Bitov´a hloubka obsahuje typicky 8 bit˚ u na sloˇzku, kde b´ yv´a reprezentov´ana 3 uzn´ ych barevn´ ych hodnotami [0 − 255] a model tud´ıˇz dok´aˇze zobrazit 256 r˚ kombinac´ı. Model RGB je aditivn´ı, tzn. ˇc´ım vyˇsˇs´ı je hodnota jednotliv´ ych sloˇzek, t´ım svˇetlejˇs´ı je v´ ysledn´a barva.
4.1.2
Histogram
Histogram je grafick´e zn´azornˇen´ı distribuce jasu v obr´azku. Nejˇcastˇeji b´ yv´a reprezentov´an grafem, v jehoˇz x-ov´e ose je vynesen jas a v jeho y-ov´e ose relativn´ı poˇcet pixel˚ u odpov´ıdaj´ıc´ıch pˇr´ısluˇsn´emu jasu. Dok´aˇzeme z nˇej urˇcit, zda byl sn´ımek spr´avnˇe exponov´an a jeho vlastnosti, mezi kter´e patˇr´ı napˇr. jas a kontrast. Uk´azky z´avislosti histogram˚ u na nastaven´ı expozice nalezneme na obr. 4.1.
RGB histogram RGB histogram je histogram, ve kter´em je kaˇzd´a barevn´a sloˇzka obr´azku vynesena zvl´aˇst’, viz obr. 4.2. 1
ˇ barevn´e sloˇzky Red (Cerven´ a), Green (Zelen´a) a Blue (Modr´a)
10
Techniky u ´pravy obrazu
(a)
Stereoskopie
(b)
(c)
Obr´ azek 4.1: Uk´ azky histogram˚ u: (a) podexponovan´ y sn´ımek; (b) spr´avnˇe exponovan´ y sn´ımek; (c) pˇreexponovan´ y sn´ımek
Obr´ azek 4.2: RGB histogram sn´ımku (b) z obr. 4.1
4.2
Stereoskopie
Slovo stereo poch´az´ı z ˇreˇctiny a m´a v´yznam prostorov´y. Stereoskopie se pak ” zab´yv´a prostorov´ym zobrazov´an´ım. Tedy tvorbˇe a prohl´ıˇzen´ı obraz˚ u, kter´e obsahuj´ı informaci pro obˇe oˇci, d´ıky n´ıˇz si vytvoˇr´ıme vjem hloubky prostoru.“ [7, s. 5] Protoˇze navrhovan´a aplikace umoˇzn ˇuje stereoskopick´e sn´ım´an´ı ze dvou zaˇr´ızen´ı, uved’me si nyn´ı pojem paralaxy, kter´ y ke stereoskopick´emu sn´ım´an´ı neodmyslitelnˇe patˇr´ı a na nˇejˇz bude pozdˇeji odkazov´ano.
11
Techniky u ´pravy obrazu
4.2.1
´ Upravy obrazu v programu FlyCatcher
Paralaxa
Paralaxou se rozum´ı u ´hel, kter´ y sv´ıraj´ı pˇr´ımky, vedouc´ı ze stˇredu objektiv˚ u sn´ımac´ıch zaˇr´ızen´ı do jednoho bodu v prostoru, ˇr´ık´a [12]. Tento bod bude na sn´ımc´ıch posunut o vektor u ´mˇern´ y paralaxe. Paralaxu rozdˇelujeme na horizont´aln´ı a vertik´aln´ı. Horizont´aln´ı paralaxa navozuje prostorov´ y dojem, kdeˇzto vertik´aln´ı jej m˚ uˇze rozb´ıt. Pro odstranˇen´ı vertik´aln´ı paralaxy je nutno zaˇr´ızen´ı um´ıstit do stejn´e roviny tak, aby pˇr´ımky kolm´e k ploch´am senzor˚ u zaˇr´ızen´ı byly rovnobˇeˇzn´e. V´ıce se t´eto problematice vˇenuje zdroj [7].
4.3 4.3.1
´ Upravy obrazu v programu FlyCatcher Oˇ rez
Oˇr´ıznut´ı odstraˇ nuje okrajov´e ˇc´asti obrazu, zkvalitˇ nuje r´amov´an´ı a kompo” zici, zv´yrazˇ nuje pˇredmˇety nebo mˇen´ı pomˇer stran.“ [13] Kromˇe v´ yˇse uveden´ ych u ´kon˚ u m˚ uˇzeme oˇrez prov´est pˇri stereoskopick´em sn´ım´an´ı k ˇca´steˇcn´emu odstranˇen´ı vertik´aln´ı paralaxy.
4.3.2
Korekce barev a expozice
Pˇri sn´ım´an´ı sc´eny, v n´ıˇz se mˇen´ı svˇeteln´e podm´ınky (napˇr. v´ ychod a z´apad slunce, j´ızda autem), zaˇr´ızen´ım s automatick´ ym nastaven´ım expozice a vyv´aˇzen´ım b´ıl´e (typicky webov´e kamery) m˚ uˇze nastat jev, pˇri kter´em se skokovˇe zmˇen´ı svˇetelnost nebo barevn´ y t´on dvou po sobˇe jdouc´ıch sn´ımk˚ u. Pro odstranˇen´ı skokov´e zmˇeny expozice slouˇz´ı algoritmus pˇrizp˚ usoben´ı histogramu, kter´ y popisuje [4]. Mˇejme dva obr´azky, referenˇcn´ı a upravovan´ y. Z histogram˚ u obou obr´azk˚ u vypoˇcteme distribuˇcn´ı funkce FR a FU . Pro kaˇzdou jasovou hodnotu f1 ∈ [0 − 255] nalezneme odpov´ıdaj´ıc´ı jasovou hodnotu f2 takovou, ˇze FR (f1 ) = FU (f2 ). Z´ıskanou mapovac´ı funkci f2 → f1 aplikujeme na kaˇzd´ y pixel upravovan´eho sn´ımku. [9]
12
Techniky u ´pravy obrazu
´ Upravy obrazu v programu FlyCatcher
Algoritmus v t´eto podobˇe um´ı pouze ovlivˇ novat jas upravovan´eho obr´azku. Aby dovedl opravit i barevn´ y posun, mus´ı se aplikovat mapovac´ı funkce f2 → f1 pro kaˇzdou barevnou sloˇzku zvl´aˇst’. To vyˇzaduje v´ ypoˇcet histogramu a jeho distribuˇcn´ı funkce zvl´aˇst’ pro ˇcervenou, zelenou a modrou sloˇzku. V´ ysledky algoritmu lze vidˇet na obr. 4.3.
(a)
(b)
(c)
Obr´ azek 4.3: Korekce barev a expozice: (a) referenˇcn´ı sn´ımek; (b) n´asleduj´ıc´ı sn´ımek; (c) opraven´ y n´asleduj´ıc´ı sn´ımek
Sekvence sn´ımk˚ u V´ yˇse uveden´ y algoritmus se zab´ yv´a korekc´ı jednoho obr´azku podle referenˇcn´ıho. Pˇri sn´ım´an´ı v´ıce sn´ımk˚ u se ovˇsem mus´ıme zamyslet nad t´ım, podle kter´eho sn´ımku se budou dalˇs´ı sn´ımky opravovat. Nab´ız´ı se dvˇe moˇznosti, kaˇzd´a ovˇsem pod´av´a jin´e v´ ysledky:
13
´ Upravy obrazu v programu FlyCatcher
Techniky u ´pravy obrazu
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
⁞
⁞
⁞
⁞
255
255
255
255
(1)
(2)
(3)
(4)
Obr´ azek 4.4: Zˇretˇezen´e mapov´an´ı: (1) p˚ uvodn´ı referenˇcn´ı sn´ımek; (2) opraven´ y sn´ımek podle (1) a referenˇcn´ı sn´ımek pro (3); apod.
1. Prvn´ı sn´ımek jako referenˇcn´ı: Tento zp˚ usob pod´av´a uspokojiv´e v´ ysledky za pˇredpokladu, ˇze se barevnost a svˇetelnost sc´eny nemˇen´ı drasticky. Pokud se sc´ena v´ yznamnˇe mˇen´ı, m˚ uˇze doch´azet k redukci dynamick´eho kontrastu upravovan´ ych obr´azk˚ u. 2. Pˇredchoz´ı sn´ımek jako referenˇcn´ı: Pokud kaˇzd´ y pˇredchoz´ı opraven´ y sn´ımek pouˇzijeme jako referenˇcn´ı, kaˇzd´ y n´asleduj´ıc´ı sn´ımek bude disponovat menˇs´ım nebo rovn´ ym dynamick´ ym rozsahem, jako sn´ımek referenˇcn´ı. To vypl´ yv´a z Dirichletova principu, kter´ y popisuje zdroj [10]. Kaˇzd´a nenulov´a hodnota upravovan´eho histogramu je namapov´ana na jedinou hodnotu. Pokud tato jedin´a hodnota bude stejn´a pro v´ıce nenulov´ ych hodnot upravovan´eho histogramu, dojde v obr´azku ke sn´ıˇzen´ı poˇctu barev a t´ım p´adem dynamick´eho kontrastu, viz obr. 4.4. Protoˇze u zp˚ usobu ˇc. 1 doch´az´ı k menˇs´ı a netrval´e ztr´atˇe informace, na rozd´ıl od druh´eho zp˚ usobu, je tedy lepˇs´ı pouˇz´ıt prvn´ı sn´ımek jako referenˇcn´ı. Abychom eliminovali i tuto ztr´atu, je tˇreba informace do histogramu postupnˇe doplˇ novat. Velmi dobr´e v´ ysledky pod´av´a metoda, pˇri n´ıˇz se do referenˇcn´ıho histogramu pˇrid´a ˇca´st histogramu nejnovˇejˇs´ıho neupraven´eho obr´azku. Nov´ y referenˇcn´ı histogram bude tedy v´aˇzen´ ym pr˚ umˇerem p˚ uvodn´ıho histogramu a histogramu neupraven´eho nejnovˇejˇs´ıho obr´azku. Velmi dobr´ ych v´ ysledk˚ u dos´ahneme, pokud v´aha p˚ uvodn´ıho referenˇcn´ıho histogramu bude ˇcinit 95 %. Pˇri niˇzˇs´ı v´aze m˚ uˇze jiˇz b´ yt patrn´a skokov´a zmˇena expozice, pˇri vyˇsˇs´ı zase doˇcasn´a ztr´ata dynamick´eho rozsahu sn´ımk˚ u. 14
Techniky u ´pravy obrazu
4.4
Detekce zmˇen
Detekce zmˇ en
Pro vyhodnocen´ı m´ıry shody dvou obr´azk˚ u pouˇz´ıv´am n´asleduj´ıc´ı algoritmus: Na obr´azek se nejprve aplikuje Gaussovo rozostˇren´ı, kter´e odstran´ı ˇsum z obr´azku a pot´e se obr´azek pixelizuje a zmˇen´ı na velikost 16 x 16 pixel˚ u. Jednotliv´e barevn´e sloˇzky kaˇzd´eho pixelu se od sebe odeˇctou a jejich absolutn´ı hodnoty AR (x, y), AG (x, y) a AB (x, y) se zpracuj´ı podle n´asleduj´ıc´ıho vzorce: 15 P 15 P
S=
x=0 y=0
AR (x, y) + AG (x, y) + AB (x, y) 256 · 3 · 2.55
ˇ ıslo S znaˇc´ı m´ıru shody a pohybuje se v rozmez´ı od 0 do 100. Nyn´ı se C´ pod´ıv´ame podrobnˇeji na Gaussovo rozostˇren´ı.
4.4.1
Gaussovo rozostˇ ren´ı a konvoluce
Gaussovo rozostˇren´ı se poˇc´ıt´a pomoc´ı tzv. diskr´etn´ı konvoluce. Konvoluce je bin´arn´ı matematick´ y oper´ator, znaˇcen´ y symbolem * a definovan´ y n´asleduj´ıc´ım vzorcem: X g(i, j) = f (i + k, j + l)h(k, l) k,l
Funkce f pˇredstavuje p˚ uvodn´ı obr´azek, g je novˇe vypoˇcten´a svˇetelnost pixelu na souˇradnic´ıch (i,j) a h je tzv. konvoluˇcn´ı j´adro. Pˇredchoz´ı vztah lze zapsat pomoc´ı zkr´acen´e notace g = f ∗ h, uv´ad´ı [8]. Gauss˚ uv filtr lze implementovat dvˇema zp˚ usoby: 1. Dvoupr˚ uchodov´ y jednodimenzion´aln´ı filtr: Nejprve se vypoˇctou data jednodimenzion´aln´ıho konvoluˇcn´ıho j´adra o velikosti 1 + polomˇer · 2 prvk˚ u. Jednotliv´e body se spoˇc´ıtaj´ı podle n´asleduj´ıc´ı funkce: r2 1 G(r) = √ e− 2σ2 2πσ 2 kde r je vzd´alenost bodu od stˇredu j´adra a rozptyl σ se vol´ı jako 1/3 polomˇeru. Pot´e provedeme konvoluci obrazu s t´ımto j´adrem orientovan´ ym na ˇs´ıˇrku a n´aslednˇe na v´ yˇsku.
15
Techniky u ´pravy obrazu
Detekce zmˇen
Obr´ azek 4.5: Princip diskr´etn´ı dvojrozmˇern´e konvoluce; pˇrevzato z [11]
2. Dvojdimenzion´aln´ı filtr: Spoˇc´ıt´ame parametry dvojdimenzion´aln´ıho konvoluˇcn´ıho j´adra o velikosti [1 + polomˇer ∗ 2, 1 + polomˇer ∗ 2] podle n´asleduj´ıc´ı funkce: G(x, y) =
1 − x2 +y2 2 e 2σ 2πσ 2
Parametry x a y jsou vzd´alenosti ve smˇeru x a y od stˇredu j´adra. S t´ımto j´adrem provedeme konvoluci obrazu. Asymptotick´a sloˇzitost v´ ypoˇctu dvoupr˚ uchodov´eho jednodimenzion´aln´ıho filtru bude tedy O(2W Hn), sloˇzitost jednopr˚ uchodov´eho dvojdimenzion´al2 n´ıho filtru O(W Hn ), kde n je velikost strany j´adra, W ˇs´ıˇrka obrazu a H jeho v´ yˇska v pixelech. V´ yhodnˇejˇs´ı je tedy pouˇz´ıt jednodimenzion´aln´ı filtr se dvˇema pr˚ uchody.
16
5 Programov´a dokumentace 5.1
Aplikaˇ cn´ı logika
Aplikaˇcn´ı logika je kl´ıˇcov´a ˇca´st aplikace. Jej´ı UML1 diagram tˇr´ıd je zobrazen na obr. 5.1. Vˇsechny tˇr´ıdy, spadaj´ıc´ı do aplikaˇcn´ı logiky, jsou um´ıstˇeny v bal´ıˇcku grabber. Z´akladem aplikace je rozhran´ı Grabbable. Toto rozhran´ı deklaruje veˇsker´e potˇrebn´e metody pro komunikaci s nahr´avac´ımi zaˇr´ızen´ımi. Toto rozhran´ı implementuj´ı ˇctyˇri tˇr´ıdy. Tˇri z tˇechto tˇr´ıd pˇristupuj´ı pˇr´ımo k nahr´avac´ım zaˇr´ızen´ım – budeme jim ˇr´ıkat grabbery. Konkr´etnˇe to jsou n´asleduj´ıc´ı tˇr´ıdy: • CivilGrabber: Star´a se sn´ım´an´ı z webov´ ych kamer a kamer pˇripojen´ ych pˇres FireWire. • WiaGrabber: Star´a se o sn´ım´an´ı z digit´aln´ıch zrcadlovek a fotoapar´at˚ u. • NetworkGrabber: Stahuje sn´ımky z kamer dostupn´ ych pˇres protokol http. Posledn´ı tˇr´ıda, implementuj´ıc´ı rozhran´ı Grabbable, je NetworkHost a jej´ı u ´ˇcel je lehce odliˇsn´ y od grabber˚ u. O t´e si pov´ıme pozdˇeji. Nyn´ı se pod´ıv´ame na jednotliv´e grabbery.
5.1.1
CivilGrabber
CivilGrabber je tˇr´ıda, slouˇz´ıc´ı pro pˇripojen´ı k zaˇr´ızen´ım, kter´e poskytuj´ı kontinu´aln´ı datov´ y tok obrazu. Jednotliv´e obr´azky dok´aˇze poskytovat instanci tˇr´ıdy implementuj´ıc´ı rozhran´ı ImageProcessor pro dalˇs´ı vyuˇzit´ı. CivilGrabber vyuˇz´ıv´a sluˇzeb knihovny LTI-CIVIL[1]. LTI-CIVIL je volnˇe dostupn´a knihovna, umoˇzn ˇuj´ıc´ı sn´ım´an´ı z v´ yˇse uveden´ ych zaˇr´ızen´ı. Postup pro vyb´ır´an´ı a konfiguraci zaˇr´ızen´ı je jednoduch´ y: 1
Unified Modeling Language
17
Programov´a dokumentace
Aplikaˇcn´ı logika
GrabberHolder
1..2 «interface» ImageProcessor
NetworkClient
sends sync sends images
NetworkImageProcessor
provides images
CivilGrabber
«interface» Grabbable
WiaGrabber
NetworkGrabber
NetworkHost
RenderImageProcessor
1..2 1 ImageComposer
VideoCanvas
ImageSaver
Obr´ azek 5.1: UML diagram aplikaˇcn´ı logiky programu
1. Vytvoˇr´ı se sn´ımac´ı syst´em. 2. Ze syst´emu se z´ısk´a seznam zaˇr´ızen´ı a k jednomu se pˇripoj´ı. 3. Z pˇripojen´eho zaˇr´ızen´ı se z´ısk´a seznam form´at˚ u a jeden se zvol´ı. 4. Spust´ı se sn´ım´an´ı. Z´ıskan´e sn´ımky se pomoc´ı zabudovan´e funkce pˇrevedou na instanci BufferedImage, kter´e se d´ale zpracov´avaj´ı.
5.1.2
WiaGrabber
WiaGrabber je tˇr´ıda, umoˇzn ˇuj´ıc´ı pˇripojen´ı k digit´aln´ım zrcadlovk´am za pomoci WIA2 Automation Library[3]. 2
Windows Image Acquistion
18
Programov´a dokumentace
Aplikaˇcn´ı logika
WIA Windows Image Acquistion je platforma firmy Microsoft, zprostˇredkov´avaj´ıc´ı komunikaci mezi sn´ımac´ımi zaˇr´ızen´ımi (pˇredevˇs´ım skenery a fotoapar´aty) a aplikacemi na platformˇe Microsoft Windows. WIA API3 m´a podle zdroje [3] zabudovanou podporu pro n´asleduj´ıc´ı ˇcinnosti: • zobrazen´ı seznamu dostupn´ ych zaˇr´ızen´ı, • moˇznost pˇripojen´ı se na v´ıce zaˇr´ızen´ı souˇcasnˇe, • ˇcten´ı a z´apis vlastnost´ı zaˇr´ızen´ı, • pˇrenos dat ze zaˇr´ızen´ı se zachov´an´ım vˇsech jejich vlastnost´ı, • notifikace o stavu zaˇr´ızen´ı a ˇr´ızen´ı ud´alost´ı.
Propojen´ı jazyka Java s WIA Pro komunikaci s WIA je pouˇzita knihovna Com4J, zprostˇredkov´avaj´ıc´ı rozhran´ı pro spolupr´aci Javy a Microsoft COM4 , uv´ad´ı [2]. Pro pˇr´ıstup k zaˇr´ızen´ım slouˇz´ı knihovna WIA Automation Library, um´ıstˇen´a v souboru wiaaut.dll. Aby bylo moˇzno pouˇz´ıvat metody knihovny WIA Automation Library, je nutn´e vytvoˇrit hlaviˇckov´e soubory s deklaracemi jej´ıch metod, umoˇzn ˇuj´ıc´ı napojen´ı Javy na COM. Tuto pr´aci za n´as udˇel´a Com4J. Spuˇstˇen´ım programu ze souboru tlbimp.jar, dostupn´eho v bal´ıku Com4J, pomoc´ı pˇr´ıkazu java -jar tlbimp.jar -o wsh -p
vytvoˇr´ıme rozhran´ı pro Javu. Kaˇzd´e rozhran´ı je identifikov´ano jednoznaˇcn´ ym ˇretˇezcem zvan´ ym GUID5 , podle nˇehoˇz dok´aˇze Com4J vyhledat definici metody v syst´emu. 3
Aplication Programming Interface Component Object Model – Komponentov´a technologie firmy Microsoft 5 Globally Unique Identifier 4
19
Programov´a dokumentace
Aplikaˇcn´ı logika
Implementace grabberu Postup pro pˇripojen´ı se k zaˇr´ızen´ı je podobn´ y postupu pro pˇripojen´ı kamery pˇres LTI-CIVIL: 1. Vytvoˇr´ı se manaˇzer, slouˇz´ıc´ı pro zprostˇredkov´an´ı informac´ı o dostupn´ ych zaˇr´ızen´ıch. 2. Z´ısk´a se seznam zaˇr´ızen´ı a k jednomu se pˇripoj´ı. 3. Registruje se posluchaˇc, kter´ y v pˇr´ıpadˇe vytvoˇren´ı nov´eho sn´ımku provede jeho zpracov´an´ı. 4. M˚ uˇze se zaˇc´ıt sn´ımat. Kaˇzd´e pˇripojen´e zaˇr´ızen´ı obsahuje n´asleduj´ıc´ı poloˇzky: • Seznam vlastnost´ı: Obsahuje veˇsker´e vlastnosti zaˇr´ızen´ı. Nˇekter´e vlastnosti jsou pouze informativn´ıho charakteru (n´azev zaˇr´ızen´ı, stav baterie, verze firmwaru...), jin´e slouˇz´ı pro ˇcten´ı i z´apis (clonov´e ˇc´ıslo, rychlost z´avˇerky, ISO, vyv´aˇzen´ı b´ıl´e...). • Pˇr´ıkazy: Seznam pˇr´ıkaz˚ u, kter´e je moˇzno pos´ılat do zaˇr´ızen´ı z aplikace. Aby bylo moˇzn´e poˇr´ıdit obr´azek, mus´ı dan´e zaˇr´ızen´ı podporovat pˇr´ıkaz Take Picture. • Poloˇzky: Obsahuje poloˇzky uloˇzen´e v zaˇr´ızen´ı (typicky fotografie na pamˇet’ov´e kartˇe). • Ud´alosti: Seznam ud´alost´ı, kter´e mohou v zaˇr´ızen´ı nastat. Tˇemto ud´alostem lze pˇriˇradit posluchaˇce, kteˇr´ı pˇri vyvol´an´ı dan´e ud´alosti vyvolaj´ı metodu void onEvent() z rozhran´ı _IDeviceManagerEvents. WiaGrabber vyuˇz´ıv´a t´eto metody k pˇrenosu fotografie do poˇc´ıtaˇce a jej´ı uloˇzen´ı na pevn´ y disk. Protoˇze je knihovna Com4J st´ale ve v´ yvoji, nelze vyuˇz´ıt vˇsech moˇznost´ı, kter´e by ˇsly vyuˇz´ıt napˇr. v jazyce C#. Z tohoto d˚ uvodu nelze pˇristupovat k jednotliv´ ym pixel˚ um obr´azku a pˇrev´est jej na BufferedImage. Proto se poˇr´ızen´e fotografie pˇr´ımo ukl´adaj´ı na pevn´ y disk.
20
Programov´a dokumentace
5.1.3
Aplikaˇcn´ı logika
NetworkGrabber
NetworkGrabber slouˇz´ı ke stahov´an´ı obr´azk˚ u z kamer dostupn´ ych pˇres pro6 tokol HTTP . Sn´ımky jsou stahov´any periodicky a pˇrev´adˇeny do BufferedImage, kter´e se pos´ılaj´ı k dalˇs´ımu zpracov´an´ı instanci tˇr´ıdy implementuj´ıc´ı rozhran´ı ImageProcessor.
5.1.4
ˇ ızen´ı chodu programu R´
Syst´em podporuje jeden aˇz dva souˇcasnˇe bˇeˇz´ıc´ı grabbery. K uchov´an´ı informac´ı, o jak´e grabbery se jedn´a, slouˇz´ı tˇr´ıda GrabberHolder. Tato tˇr´ıda m´a za u ´kol udrˇzovat referenˇcn´ı promˇenn´e na pr´avˇe pouˇz´ıvan´e grabbery. D´ale disponuje metodami pro ˇr´ızen´ı chodu programu: Um´ı uchov´avan´e grabbery jednotnˇe spouˇstˇet ˇci zastavovat a nastavovat ˇcasov´an´ı. ˇ Casov´ an´ı ˇ Casov´ an´ı spoˇc´ıv´a ve vytvoˇren´ı vl´akna, kter´e po kaˇzd´em uplynut´ı ˇcasov´eho intervalu nech´a uloˇzit sn´ımky. GrabberHolder um´ı nastavit n´asleduj´ıc´ı vlastnosti ˇcasov´an´ı: • Zaˇc´atek ˇcasov´an´ı: ihned, v zadan´ y ˇcas nebo po uplynut´ı urˇcen´e doby. • Zastaven´ı ˇcasov´an´ı: ruˇcnˇe, v zadan´ y ˇcas, po uplynut´ı urˇcit´e doby ˇci po uloˇzen´ı stanoven´eho poˇctu sn´ımk˚ u. • Interval ˇcasov´an´ı, sloˇzku pro ukl´ad´an´ı dat a n´azev souboru.
Tˇ r´ıdy implementuj´ıc´ı ImageProcessor GrabberHolder je zodpovˇedn´ y i za pˇriˇrazov´an´ı tzv. procesor˚ u grabber˚ um. Procesorem se rozum´ı tˇr´ıda implementuj´ıc´ı rozhran´ı ImageProcessor. ImageProcessor disponuje jednou metodou, a to void processImage(BufferedImage img), kter´a pˇred´a dodan´ y sn´ımek dedikovan´e tˇr´ıdˇe. Existuj´ı dvˇe tˇr´ıdy implementuj´ıc´ı ImageProcessor: 6
Hypertext Transfer Protocol
21
Programov´a dokumentace
Aplikaˇcn´ı logika
1. RenderImageProcessor: slouˇz´ı k pˇred´av´an´ı obr´azk˚ u instanci tˇr´ıdy ImageComposer, kter´a transformuje pˇred´avan´ y obr´azek pro zobrazen´ı na obrazovku programu nebo pro uloˇzen´ı. 2. NetworkImageProcessor: slouˇz´ı k pˇred´an´ı obr´azk˚ u s´ıt’ov´emu klientovi, kter´ y jej odeˇsle po s´ıti hostuj´ıc´ı instanci FlyCatcheru. S´ıt’ov´a komunikace bude podrobnˇe pops´ana pozdˇeji.
5.1.5
Manipulace s obrazem
Pro manipulaci s obrazem slouˇz´ı tˇr´ıda ImageComposer. T´eto tˇr´ıdˇe jsou periodicky dod´av´any obr´azky ze zaˇr´ızen´ı urˇcen´e k zobrazen´ı na vykreslovac´ı pl´atno nebo k uloˇzen´ı. Kaˇzd´ y dod´avan´ y sn´ımek projde zpracov´avac´ım cyklem, ve kter´em je patˇriˇcnˇe upraven. Pˇri dod´av´an´ı sn´ımk˚ u v reˇzimu stereoskopie se mus´ı tyto sn´ımky synchronizovat za pomoci semafor˚ u. Nyn´ı si uved’me pˇrehled metod, pomoc´ı nichˇz m˚ uˇze ImageComposer dod´avan´e obr´azky upravovat: • cropImage(): Oˇr´ızne obr´azek na podle nastaven´ ych parametr˚ u. • createAnaglyphImage(): Zadan´e obr´azky pˇrevede do form´atu ˇcervenoazurov´eho anaglyfu. • createAdjacentImage(): Ze zadan´ ych obr´azk˚ u vytvoˇr´ı nov´ y obr´azek dvojn´asobn´e ˇs´ıˇrky, kter´ y bude obsahovat data z obou obr´azk˚ u vedle sebe. • createBlendedImage(): Prolne obr´azky s 50% pr˚ uhlednost´ı pˇres sebe. • convertToGrayscale(): Pˇrevede obr´azek do ˇcernob´ıl´e ˇsk´aly pomoc´ı vestavˇen´e funkce. • mosaic(): Pixelizuje obr´azek. • gaussianBlur(): Aplikuje na obr´azek Gaussovo rozostˇren´ı. • expandEdges(): Zvˇetˇs´ı plochu obr´azku na okraj´ıch o zadan´ y poˇcet pixel˚ u tak, aby bylo moˇzno prov´est konvoluci v kaˇzd´em bodˇe obr´azku. • applyTables(): Aplikuje tabulky s barevnou korekc´ı.
22
Programov´a dokumentace
Aplikaˇcn´ı logika
• transform(): Provede transformaci obr´azku – pokud je nastaven oˇrez, obr´azek oˇr´ızne, a pot´e zmˇen´ı velikost obr´azku na nastavenou ˇs´ıˇrku a v´ yˇsku.
5.1.6
S´ıt’ov´ a komunikace
Program je moˇzno provozovat v s´ıt’ov´em reˇzimu. Tento reˇzim nalezne vyuˇzit´ı v pˇr´ıpadˇe, ˇze z technick´ ych d˚ uvod˚ u nelze sn´ımat ve stereoskopick´em reˇzimu ze dvou zaˇr´ızen´ı najednou. S´ıt’ov´ y reˇzim spoˇc´ıv´a ve spuˇstˇen´ı dvou instanc´ı programu: v instanci programu, ke kter´e je pˇripojena lev´a kamera, se spust´ı server. T´ım se vytvoˇr´ı instance tˇr´ıdy NetworkHost, kter´a otevˇre zadan´ y port a zaˇcne na nˇem naslouchat. Ve druh´e instanci se nastav´ı kamera pro prav´e oko a program se pˇripoj´ı k n´ami pˇredem vytvoˇren´emu serveru. Pˇri t´eto akci se vytvoˇr´ı instance tˇr´ıdy NetworkClient, kter´a se automaticky pˇripoj´ı k naˇsemu serveru. Po pˇripojen´ı se na serverov´e stranˇe ve tˇr´ıdˇe GrabberHolder nastav´ı sekund´arn´ı grabber na NetworkHost a spust´ı se sn´ım´an´ı. T´ımto se odeˇsle pˇr´ıkaz klientsk´e stranˇe, kter´a jako reakci zaˇcne periodicky pos´ılat serveru obr´azky. Ty se pak zpracov´avaj´ı bˇeˇzn´ ym zp˚ usobem. Je nutno podotknout, ˇze jako klient se sm´ı pˇripojit pouze program, kter´ y vyuˇz´ıv´a grabber s automatick´ ym exportem obr´azk˚ u v BufferedImage. WiaGrabber tedy pˇripojit nep˚ ujde.
S´ıt’ov´ y protokol ˇ ıdic´ı povely se pos´ıKlient se serverem komunikuj´ı hybridn´ım protokolem. R´ laj´ı v textov´e formˇe a obr´azky ve formˇe bin´arn´ı. Pod´ıvejme se jeˇstˇe na form´at ˇr´ıdic´ıch sekvenc´ı: • Klient → Server – r <ˇ sı ´ˇ rka> : Klient je pˇripraven pos´ılat obr´azky o zadan´e velikosti. – i : Klient bude pos´ılat obr´azek zadan´eho typu o d´elce v bytech. Typ je zat´ım nemˇenn´ y – v budouc´ıch verz´ıch bude
23
Programov´a dokumentace
Grafick´e uˇzivatelsk´e rozhran´ı
urˇcovat zp˚ usob, zda bude obr´azek urˇcen pro vykreslen´ı nebo uloˇzen´ı. – x: Klient se odpojuje. • Server → Klient – r: Server je pˇripraven. – i: Server ˇcek´a na obr´azek. – f<stav>: Zmˇena stavu pos´ıl´an´ı obr´azk˚ u. Stav 1: Klient m´a zaˇc´ıt pos´ılat obr´azky; stav 0: Klient m´a pˇrestat pos´ılat obr´azky. – x: Server se ukonˇcuje.
5.2
Grafick´ e uˇ zivatelsk´ e rozhran´ı
Grafick´e uˇzivatelsk´e rozhran´ı programu FlyCatcher se skl´ad´a z 28 veˇrejn´ ych tˇr´ıd. Vˇsechny tyto tˇr´ıdy jsou zobrazeny v UML diagramu na obr´azku 5.2. Veˇsker´e tˇr´ıdy, spadaj´ıc´ı do GUI jsou um´ıstˇeny v bal´ıˇcku grabber.gui.
5.2.1
Window
Hlavn´ım stavebn´ım kamenem GUI je tˇr´ıda Window. Jedn´a se o tˇr´ıdu oddˇedˇenou od JFrame, staraj´ıc´ı se o vykreslov´an´ı hlavn´ıho okna. Tato tˇr´ıda slouˇz´ı jako vstupn´ı bod programu, tj. obsahuje metodu main(String[] args). Tato tˇr´ıda se star´a o vytvoˇren´ı cel´eho uˇzivatelsk´eho rozhran´ı. Protoˇze je GUI celkem obs´ahl´e a trvalo by velmi dlouho, kdyby se mˇely instance vˇsech tˇr´ıd vytvoˇrit pˇri startu programu, je zde z velk´e ˇc´asti pouˇzita odloˇzen´a inicializace. To znamen´a, ˇze instance z˚ ust´avaj´ı neinicializov´any a k jejich inicializaci dojde aˇz ve chv´ıli, kdy maj´ı b´ yt pouˇzity. Typick´ ym pˇr´ıkladem je tˇr´ıda s n´apovˇedou. Vˇetˇsina uˇzivatel˚ u n´apovˇedu vyuˇz´ıvat nebude, a proto nen´ı zapotˇreb´ı ji od poˇc´atku udrˇzovat v pamˇeti. Nyn´ı se vr´at´ıme zpˇet k hlavn´ımu oknu. To obsahuje menu a n´astrojovou liˇstu. N´astrojov´a liˇsta obsahuje vybran´e poloˇzky z menu. Abych nemusel programovat funkˇcnost poloˇzek v menu a tlaˇc´ıtek na liˇstˇe dvakr´at, vyuˇzil jsem tˇr´ıdu AbstractAction, od kter´e jsem oddˇedil potomky, kter´e zastupuj´ı pr´avˇe
24
Programov´a dokumentace
Grafick´e uˇzivatelsk´e rozhran´ı
WaitDialog
Help
WaitingForClientDialog
VideoCanvas Wizard
ConnectionDialog
«interface» GrabberConfig
CaptureDialog
TimingDialog
CropBar
Window
ResizeBar
AbstractPanel
TimingPanel
DeviceTypePanel
SchedulingPanel
CivilPanel
AboutDialog
TriggeredActivityPanel
WiaPanel
CorrectionPanel
NetworkPanel
PhotoConfigDialog
SummaryPanel StereoDecisionPanel
SavingOptionsDialog
Model
Lang
Obr´ azek 5.2: UML diagram uˇzivatelsk´eho rozhran´ı aplikace
tyto spoleˇcn´e poloˇzky. Vˇsechny tyto akce“ jsou ve tˇr´ıdˇe Window uloˇzeny jako ” vnitˇrn´ı tˇr´ıdy.
5.2.2
Pr˚ uvodce
Dalˇs´ı d˚ uleˇzitou ˇca´st´ı uˇzivatelsk´eho rozhran´ı jsou dialogy typu pr˚ uvodce. Vˇsechny tˇr´ıdy, spadaj´ıc´ı do t´eto skupiny jsou uloˇzeny v bal´ıˇcku wizard. Spoleˇcnou tˇr´ıdou tˇechto pr˚ uvodc˚ u je tˇr´ıda Wizard, oddˇedˇen´a od JPanel. Disponuje obr´azkem ve sv´e lev´e ˇc´asti a tˇremi r˚ uzn´ ymi tlaˇc´ıtky vespod pro pohyb v pr˚ uvodci. Z tˇechto tlaˇc´ıtek jsou viditeln´a vˇzdy jen dvˇe. Tlaˇc´ıtko pro posun d´ale m˚ uˇze b´ yt nahrazeno tlaˇc´ıtkem pro uzavˇren´ı dialogu. Na hlavn´ı ploˇse tˇechto dialog˚ u je panel s rozvrˇzen´ım CardLayout, na kter´em se zobrazuj´ı pˇr´ısluˇsn´e panely s obsahem. Tyto panely sd´ıl´ı vlastnosti abstraktn´ı tˇr´ıdy AbstractPanel. Tyto panely se dˇel´ı do dvou skupin podle typu pr˚ uvodce. V programu existuj´ı dva pr˚ uvodce: pr˚ uvodce sn´ım´an´ım (CaptureDialog) a pr˚ uvodce ˇcasov´an´ım a ukl´ad´an´ım (TimingDialog).
25
Programov´a dokumentace
Grafick´e uˇzivatelsk´e rozhran´ı
Nyn´ı se pod´ıvejme podrobnˇeji na obsahov´e panely a jejich obsah.
5.2.3
Panely oddˇ edˇ en´ e od AbstractPanel
Kaˇzd´ y panel, oddˇedˇen´ y od tˇr´ıdy AbstractPanel m´a sv´eho rodiˇcovsk´eho ” pr˚ uvodce“, do kter´eho je pˇriˇrazen. Mus´ı rovˇeˇz implementovat abstraktn´ı metody pro obnovu pˇri zpˇetn´em posunu v pr˚ uvodci a kompletn´ı obnovu. D´ale tyto panely obsahuj´ı metodu pro zmˇenu jazyka, ke kter´e se dostaneme pozdˇeji.
Panely patˇ r´ıc´ı do dialogu pro sn´ım´ an´ı • DeviceTypePanel: Jedn´a se o panel, ve kter´em uˇzivatel vyb´ır´a typ zaˇr´ızen´ı. Pouˇzit je GridLayout. • CivilPanel: Panel, slouˇz´ıc´ı k v´ ybˇeru a nastaven´ı vlastnost´ı webov´ ych kamer pˇres knihovnu LTI-CIVIL. • WiaPanel: Jedn´a se o panel, slouˇz´ıc´ı k v´ ybˇeru digit´aln´ıch zrcadlovek pomoc´ı Windows Image Acquitsion. • NetworkPanel: Jedn´a se o panel, slouˇz´ıc´ı ke konfiguraci pˇripojen´ı ke kameˇre pˇres protokol HTTP. • StereoDecisionPanel: Panel, ve kter´em jsou uˇzivateli nab´ıdnuty zp˚ usoby pˇripojen´ı sekund´arn´ı kamery.
Panely patˇ r´ıc´ı do dialogu pro ˇ casov´ an´ı • TimingPanel: Jedn´a se o panel, ve kter´em uˇzivatel vyb´ır´a z´akladn´ı vlastnosti ukl´ad´an´ı sn´ımk˚ u. M˚ uˇze zde nastavit cestu do sloˇzky, kam se budou soubory ukl´adat, ˇcasov´ y interval sn´ım´an´ı a n´azev soubor˚ u. • SchedulingPanel: Panel, ve kter´em je moˇzno nastavit pl´anov´an´ı poˇc´atku a konce ukl´ad´an´ı. • TriggeredActivityPanel: Jedn´a se o panel, slouˇz´ıc´ı k aktivaci Activity Triggered reˇzimu. • CorrectionPanel: Jedn´a se o panel, slouˇz´ıc´ı k aktivaci korekc´ı barev. 26
Programov´a dokumentace
Grafick´e uˇzivatelsk´e rozhran´ı
Panel SummaryPanel je pro oba druhy dialog˚ u spoleˇcn´ y a obsahuje pouze textovou informaci o zavˇren´ı pr˚ uvodce. Za zm´ınku jeˇstˇe stoj´ı WaitDialog a jeho potomci ConnectionDialog a WaitingForClientDialog, slouˇz´ıc´ı jako informaˇcn´ı boxy pˇri vytv´aˇren´ı s´ıt’ov´eho propojen´ı dvou instanc´ı programu.
5.2.4
Pl´ atno VideoCanvas
VideoCanvas je plocha oddˇedˇen´a od JPanel, slouˇz´ıc´ı pro zobrazen´ı n´ahledu videa. Je zde pˇrekryta metoda public void paint(Graphics g), slouˇz´ıc´ı k vykreslen´ı komponenty. V t´e jsou na vyˇz´ad´an´ı vykreslov´any jednotliv´e obr´azky, poskytovan´e tˇr´ıdou ImageComposer, slouˇz´ıc´ı ke skl´ad´an´ı v´ ysledn´eho obrazu.
5.2.5
Ostatn´ı okna a dialogy
V programu se nach´az´ı jeˇstˇe dalˇs´ı dialogy a okna, jejichˇz princip je tˇreba vysvˇetlit. Konkr´etnˇe se jedn´a o tˇr´ıdu PhotoConfigDialog, kter´a slouˇz´ı pro interaktivn´ı nastaven´ı parametr˚ u digit´aln´ıch zrcadlovek, pˇripojen´ ych pˇres WIA. Toto dialogov´e okno obsahuje tabulku, na jej´ıchˇz ˇra´dc´ıch se nach´az´ı jednotliv´e parametry nastaven´ı, jako je napˇr. clona, ˇcas z´avˇerky ˇci citlivost ISO. Protoˇze je knihovna Com4J st´ale ve v´ yvoji, nelze zat´ım vyuˇz´ıvat vˇsech funkc´ı tˇechto rozhran´ı, a proto zde nen´ı moˇzn´e vyb´ırat jednotliv´e moˇznosti nastaven´e z drop-down seznamu (JComboBox), coˇz je docela ˇskoda.
N´ apovˇ eda Okno n´apovˇedy je JFrame, obsahuj´ıc´ı stromov´ y seznam prvk˚ u n´apovˇedy po lev´e stranˇe. Zbytek plochy je vˇenov´an pro zobrazen´ı obsahu n´apovˇedy, jej´ıˇz text ve form´atu HTML je zobrazov´an v needitovateln´ ych JEditorPane. Tyto panely jsou opˇet um´ıstˇeny v CardLayout.
27
Programov´a dokumentace
5.2.6
Grafick´e uˇzivatelsk´e rozhran´ı
Lokalizace
Program obsahuje statickou tˇr´ıdu Lang pro lokalizaci, kterou vyuˇz´ıv´a drtiv´a vˇetˇsina komponent v GUI. Proto na v UML diagramu na obr. 5.2 nejsou uvedeny propojen´ı na tuto tˇr´ıdu, protoˇze by se sch´ema stalo velice nepˇrehledn´ ym. Tˇr´ıda Lang obsahuje tˇri statick´e metody. Metodu Locale getLanguage() a setLanguage(Locale locale), slouˇz´ıc´ı k nastavov´an´ı jazyka (a jeho zjiˇstˇen´ı) a metodu String val(String key), slouˇz´ıc´ı k z´ısk´an´ı jedn´e lokalizovan´e hodnoty ze souboru Texts_cs_CZ.properties nebo Texts_en_GB.properties, v z´avislosti na pouˇzit´em jazyce. Ostatn´ı tˇr´ıdy, vyuˇz´ıvaj´ıc´ı tuto lokalizaˇcn´ı tˇr´ıdu disponuj´ı metodou void changeLanguage(), ve kter´e na poˇzadavek z tˇr´ıdy hlavn´ıho okna zmˇen´ı veˇsker´e sv´e texty.
28
6 Z´avˇer C´ılem t´eto pr´ace bylo navrhnout a napsat softwarov´ y syst´em pro ˇcasosbˇern´e vizu´aln´ı sn´ım´an´ı pomal´ ych dˇej˚ u pomoc´ı videokamer ˇci fotoapar´at˚ u. Vyvinut´ y syst´em zad´an´ı splˇ nuje: Um´ı sn´ımat pomoc´ı webov´ ych kamer, videokamer, kamer pˇres protokol HTTP a digit´aln´ıch zrcadlovek znaˇcky Nikon pˇres Windows Image Acquistion. Program byl odladˇen na zrcadlovce Nikon D40, testov´an byl i na Nikon D2X. Zrcadlovky ostatn´ıch v´ yrobc˚ u nepodporuj´ı vzd´alen´e sn´ım´an´ı pˇres WIA, a proto ve vytvoˇren´em syst´emu nejdou pouˇz´ıt. Ne´ uspˇechem skonˇcily testy zrcadlovek Canon EOS D5 Mark II, Canon EOS Rebel XTi a Olympus E-510. Program d´ale dovede: • Sn´ım´an´ı ve stereoskopick´em reˇzimu: Sn´ım´an´ı prob´ıh´a ze dvou libovoln´ ych zaˇr´ızen´ı souˇcasnˇe. • Activity-triggered sn´ım´an´ı: Sn´ımek se uloˇz´ı pouze tehdy, bude-li se liˇsit od pˇredchoz´ıho uloˇzen´eho sn´ımku. • Korekce expozice a vyv´aˇzen´ı b´ıl´e: Ukl´adan´e sn´ımky budou barevnˇe synchronizov´any, aby nedoch´azelo k blik´an´ı obrazu. Program, kter´ y jsem napsal, se tedy st´av´a velmi zaj´ımavou alternativou k existuj´ıc´ımu software. Mezi jeho nev´ yhody ovˇsem patˇr´ı vyˇsˇs´ı n´aroˇcnost na v´ ypoˇcetn´ı v´ ykon procesoru, zvl´aˇstˇe pokud je vykreslov´ano video v HD rozliˇsen´ı, protoˇze rendering prob´ıh´a softwarovˇe.
Pl´ any do budoucna V budoucnu bych se r´ad v´ yvoji tohoto programu d´ale vˇenoval. Konkr´etnˇe bych r´ad pˇridal moˇznost hardwarov´e podpory pro vykreslov´an´ı videa a moˇznost exportu nejen s´erie statick´ ych sn´ımk˚ u, ale i videa, do kter´eho se nyn´ı mus´ı pˇrev´adˇet sn´ımky v extern´ıch programech, jako je napˇr. VirtualDub.
29
Literatura [1] Larson Technologies Inc.: LTI-CIVIL. 2007, [Online; navˇst´ıveno 14. 06. 2012]. URL http://lti-civil.org/ [2] Com4J. 2012, [Online; navˇst´ıveno 14. 06. 2012]. URL http://com4j.java.net/ [3] Microsoft: Windows Image Acquisition. 2012, [Online; navˇst´ıveno 19. 06. 2012]. URL http://msdn.microsoft.com/en-us/library/windows/ desktop/ms630368%28v=vs.85%29.aspx [4] Burger, W.; Burge, M. J.: Digital Image Processing: An Algoritmic Introduction using Java. Springer Science+Business Media, 2008, ISBN 978-1-84628-379-6. [5] Chaney, M.: Video Frame Rates (24p, 25p, 30p, 60i). 2009, [Online; navˇst´ıveno 12. 07. 2012]. URL http://ddisoftware.com/tech/articles/ march-2009-video-frame-rates-%2824p-25p-30p-60i%29/ [6] Chylinski, R.: Time-lapse Photography: A Complete Introduction to Shooting, Processing and Rendering Time-lapse Movies with a DSLR Camera. 2012, ISBN 978-0-9853757-0-6. ˇ ıˇzek, P.: Prostorov´e zobrazov´an´ı. Diplomov´a pr´ace, Z´apadoˇcesk´a uni[7] C´ verzita v Plzni, 2005. [8] Szeliski, R.: Computer Vision: Algorithms and Applications. 2010. [9] Wikipedia: Histogram matching — Wikipedia, The Free Encyclopedia. 2011, [Online; navˇst´ıveno 12. 06. 2012]. 30
LITERATURA
LITERATURA
URL http://en.wikipedia.org/w/index.php?title=Histogram_ matching&oldid=443295324/ [10] Wikipedie: Dirichlet˚ uv princip — Wikipedie: Otevˇren´a encyklopedie. 2012, [Online; navˇst´ıveno 19. 06. 2012]. URL http://cs.wikipedia.org/w/index.php?title=Dirichlet% C5%AFv_princip&oldid=8179951/ [11] Wikipedie: Konvoluce — Wikipedie: Otevˇren´a encyklopedie. 2012, [Online; navˇst´ıveno 13. 06. 2012]. URL http://cs.wikipedia.org/w/index.php?title= Konvoluce&oldid=8549411/ [12] Wikipedie: Paralaxa — Wikipedie: Otevˇren´a encyklopedie. 2012, [Online; navˇst´ıveno 19. 06. 2012]. URL http://cs.wikipedia.org/w/index.php?title= Paralaxa&oldid=8372807/ [13] Wikipedie: V´ yˇrez — Wikipedie: Otevˇren´a encyklopedie. 2012, [Online; navˇst´ıveno 12. 06. 2012]. URL http://cs.wikipedia.org/w/index.php?title=V%C3%BD%C5% 99ez&oldid=8296372/
31
Seznam obr´ azk˚ u
4.1
Uk´azky histogram˚ u . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2
RGB histogram . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.3
Korekce barev a expozice . . . . . . . . . . . . . . . . . . . . . 13
4.4
Zˇretˇezen´e mapov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . 14
4.5
Princip diskr´etn´ı dvojrozmˇern´e konvoluce . . . . . . . . . . . . 16
5.1
UML diagram aplikaˇcn´ı logiky programu . . . . . . . . . . . . 18
5.2
UML diagram uˇzivatelsk´eho rozhran´ı aplikace . . . . . . . . . 25
A.1 Hlavn´ı okno programu . . . . . . . . . . . . . . . . . . . . . . 35
32
Seznam tabulek
3.1
Moˇznosti pˇripojen´ı zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . .
9
3.2
Speci´aln´ı funkce program˚ u . . . . . . . . . . . . . . . . . . . .
9
A.1 Poˇrizov´an´ı sn´ımk˚ u . . . . . . . . . . . . . . . . . . . . . . . . 39
33
A Uˇzivatelsk´a dokumentace A.1
Poˇ zadavky
Pro spuˇstˇen´ı programu je tˇreba m´ıt nainstalov´ano Java JRE1 verze 6 nebo vyˇsˇs´ı. Pro moˇznost sn´ım´an´ı z webov´ ych kamer a kamer pˇripojen´ ych pˇres FireWire je tˇreba program spouˇstˇet na 32-bitov´e JVM platformˇe, pro sn´ım´an´ı ze zrcadlovek je tˇreba program spouˇstˇet v operaˇcn´ım syst´emu Windows.
A.2
Pˇ reklad a spuˇ stˇ en´ı programu
Program je prim´arnˇe urˇcen pro operaˇcn´ı syst´em Windows. Na ostatn´ıch syst´emech nebyl jeho bˇeh testov´an a proto nemus´ı fungovat spr´avnˇe.
A.2.1
Pˇ reklad programu
Pˇreklad se prov´ad´ı pomoc´ı pˇriloˇzen´eho Ant skriptu build.xml pˇres target fat-jar. Po vytvoˇren´ı jar souboru je nutno do sloˇzky s jar souborem nakop´ırovat sloˇzku s nativn´ımi knihovnami native a sloˇzku img s grafikou.
A.2.2
Spuˇ stˇ en´ı programu
V operaˇcn´ım syst´emu Windows je tˇreba spustit program pˇr´ıkazem java -jar -Djava.library.path="native/win32-x86"Grabber.jar nebo spuˇstˇen´ım souboru start.bat. V ostatn´ıch operaˇcn´ıch syst´emech se bude spouˇstˇec´ı pˇr´ıkaz liˇsit pouze v parametru java.library.path, kter´ y uv´ad´ı cestu ke sloˇzce, ve kter´e m´a JVM hledat nativn´ı knihovny. V syst´emu Linux bude hodnota parametru native/linux-x86 nebo native/linux-amd64 (v z´avislosti na architektuˇre) a v Mac OS X native/macosx-universal. 1
Java Runtime Enviroment
34
Uˇzivatelsk´a dokumentace
Obsluha programu
Obr´ azek A.1: Hlavn´ı okno programu: Na obr´azku lze vidˇet hlavn´ı okno programu v reˇzimu stereoskopick´eho sn´ım´an´ı
A.3
Obsluha programu
Po naˇcten´ı programu se zobraz´ı hlavn´ı okno, viz obr. A.1, na kter´em uˇzivatel nalezne vˇsechny z´akladn´ı ovl´adac´ı prvky programu.
A.3.1
Hlavn´ı okno
Hlavn´ı okno programu se skl´ad´a z plochy pro video, menu, n´astrojov´e liˇsty a doln´ı stavov´e liˇsty.
A.3.2
Sn´ım´ an´ı
Kliknut´ım na tlaˇc´ıtko Nov´e sn´ım´an´ı...“ v menu Soubor se uˇzivateli zobraz´ı ” Pr˚ uvodce v´ ybˇerem zaˇr´ızen´ı a reˇzimu sn´ım´an´ı. Uˇzivatel provede v´ ybˇer typu zaˇr´ızen´ı, kter´e bude pˇripojeno jako prim´arn´ı.
35
Uˇzivatelsk´a dokumentace
Obsluha programu
Pˇ ripojen´ı videokamery Tento typ sn´ım´an´ı vyuˇz´ıv´a knihovnu LTI-CIVIL. [1] Pro spr´avn´e nastaven´ı sn´ım´an´ı je tˇreba vybrat zaˇr´ızen´ı a pot´e jeho parametry, kter´ ymi jsou barevn´ y form´at, velikost sn´ımku a zobrazovac´ı frekvence ve sn´ımc´ıch za sekundu.
Pˇ ripojen´ı digit´ aln´ı zrcadlovky Pˇri sn´ım´an´ı pˇres WIA je nutn´e vybrat zaˇr´ızen´ı a pˇr´ıponu implicitn´ıho form´atu, ve kter´em fotoapar´at sn´ımky ukl´ad´a. Typicky JPG ˇci NEF (Nikon). Po zavˇren´ı sn´ımac´ıho dialogu se zpˇr´ıstupn´ı poloˇzka Konfigurace fotoapar´at˚ u v menu N´astroje. Zde je moˇzno mˇenit z´akladn´ı nastaven´ı fotoapar´atu za bˇehu.
Sn´ım´ an´ı ze s´ıt’ov´ e kamery Pro s´ıt’ov´e sn´ım´an´ı je tˇreba zadat URL obr´azku, kter´ y je periodicky aktualizov´an. Po zad´an´ı adresy uˇzivatel ovˇeˇr´ı jej´ı platnost kliknut´ım na tlaˇc´ıtko Ovˇeˇrit.
Stereoskopick´ e sn´ım´ an´ı Na dalˇs´ı stranˇe dialogu lze pˇridat druh´e zaˇr´ızen´ı pro stereoskopick´e sn´ım´an´ı a nebo zah´ajit sn´ım´an´ı pouze s jedn´ım zaˇr´ızen´ım. Stereoskopick´e sn´ım´an´ı lze nastavit dvˇema zp˚ usoby: 1. Lok´aln´ı sn´ım´an´ı: Toto nastaven´ı je preferov´ano a podporov´ano vˇsemi typy zaˇr´ızen´ı. Druh´e zaˇr´ızen´ı (pro prav´e oko) lze pˇridat po zvolen´ı moˇznosti Pˇridat druh´e zaˇr´ızen´ı“. ” 2. S´ıt’ov´e sn´ım´an´ı: Toto nastaven´ı je doporuˇceno pouˇz´ıt v pˇr´ıpadˇe, ˇze z technick´ ych d˚ uvod˚ u nelze pˇripojit obˇe zaˇr´ızen´ı k jednomu poˇc´ıtaˇci. Nejprve je nutno vytvoˇrit server. Uˇzivatel tedy oznaˇc´ı moˇznost Vytvoˇrit ” server“, pot´e spust´ı program na druh´em poˇc´ıtaˇci, otevˇre dialog pro nov´e sn´ım´an´ı, vybere zaˇr´ızen´ı a zvol´ı moˇznost Pˇripojit se jako klient“. Do ” pole Adresa pak vypln´ı IP adresu hostitelsk´eho poˇc´ıtaˇce, kter´ y ˇcek´a na pˇripojen´ı klienta a stiskne tlaˇc´ıtko Hotovo“. Jako klient nelze po” uˇz´ıt program s pˇripojenou digit´aln´ı zrcadlovkou, ponˇevadˇz se poˇr´ızen´e 36
Uˇzivatelsk´a dokumentace
Obsluha programu
sn´ımky ze zrcadlovky daj´ı ukl´adat pouze na lok´aln´ı disk. Proto je nutno jej nastavit jako server a nebo pˇripojit lok´alnˇe.
A.3.3
N´ ahled videa
Pokud pouˇz´ıv´ame zaˇr´ızen´ı, umoˇzn ˇuj´ıc´ı n´ahled videa, zpracovan´e sn´ımky se budou automaticky zobrazovat na ploˇse hlavn´ıho okna. Uˇzivatel si m˚ uˇze mˇenit styl zobrazen´ı tˇechto sn´ımk˚ u na obrazovce, aniˇz by ovlivnil form´at ukl´adan´ ych sn´ımk˚ u. K tomuto u ´ˇcelu slouˇz´ı poloˇzky v menu Zobrazit“. ” Z´ akladn´ı n´ astroje • Zobrazit video: Slouˇz´ı pro zobrazen´ı nebo skryt´ı videa na obrazovce. Pokud je video zobrazeno, program potˇrebuje v´ıce v´ ykonu CPU pro jeho rendering. • Barevn´ y n´ahled: Zapne ˇci vypne ˇcernob´ıl´e zobrazen´ı videa.
N´ astroje k form´ atu zobrazen´ı stereoskopick´ eho videa • Anaglyf: Video bude zobrazeno ve formˇe ˇcerveno-azurov´eho anaglyfu. • Vedle sebe: Videa z kamer budou zobrazena vedle sebe. • Pˇrekryt´ı: Videa z kamer se budou pˇrekr´ yvat. Toto nastaven´ı slouˇz´ı pˇrev´aˇznˇe k eliminaci vertik´aln´ı paralaxy, vznikl´e natoˇcen´ım kamer v˚ uˇci sobˇe.
N´ astroje pro zmˇ enu velikosti videa • P˚ uvodn´ı velikost: Video bude zobrazeno v p˚ uvodn´ı velikosti bez ohledu na velikost okna programu. • Rozt´ahnout video: Video bude roztaˇzeno tak, aby vyplnilo celou oblast okna. • Minim´aln´ı velikost: Pokud se video nevejde do okna, zmenˇs´ı se.
37
Uˇzivatelsk´a dokumentace
A.3.4
Obsluha programu
ˇ Casov´ an´ı
Kliknut´ım na tlaˇc´ıtko Nastavit ˇcasov´an´ı...“ v menu Soubor se uˇzivateli zob” raz´ı dialogov´e okno ve stylu pr˚ uvodce. Na prvn´ı stranˇe tohoto dialogu mus´ı vyplnit sn´ımac´ı interval a cestu ke sloˇzce, kam se budou zachycen´e sn´ımky ukl´adat. Rovnˇeˇz je zde moˇzno nastavit jm´eno ukl´adan´ ych soubor˚ u. Kaˇzd´ y uloˇzen´ y soubor bude obsahovat nastaven´e jm´eno souboru, poˇradov´e ˇc´ıslo sn´ımku a identifikaˇcn´ı znaˇcku, zda se jedn´a o lev´ y ˇci prav´ y obr´azek a pˇr´ıponu souboru. Na dalˇs´ı stranˇe je moˇzno nastavit ˇcas spuˇstˇen´ı ukl´adac´ıho procesu. Uˇzivatel si m˚ uˇze vybrat mezi tˇremi zp˚ usoby: 1. Spustit hned: Ukl´ad´an´ı sn´ımk˚ u zaˇcne okamˇzitˇe po zavˇren´ı dialogu. 2. Spustit po uplynut´ı ˇcasov´eho intervalu: Od zavˇren´ı dialogov´eho okna se zaˇcne odeˇc´ıtat ˇcas, po jehoˇz uplynut´ı se zaˇcnou sn´ımky automaticky ukl´adat. Tento ˇcas je moˇzno sledovat ve stavov´e liˇstˇe programu. 3. Spustit v konkr´etn´ı datum a ˇcas: Ukl´ad´an´ı sn´ımk˚ u zaˇcne ve stanoven´ y ˇcas. Uˇzivateli bude zobrazen zb´ yvaj´ıc´ı ˇcas do startu stejn´ ym zp˚ usobem jako v minul´em pˇr´ıpadˇe. Na n´asleduj´ıc´ı stranˇe uˇzivatel vybere zp˚ usob ukonˇcen´ı sn´ım´an´ı. Podobnˇe jako v pˇredchoz´ı ˇca´sti dialogu si m˚ uˇze vybrat mezi nˇekolika moˇznostmi: 1. Zastavit manu´alnˇe: Sn´ım´an´ı mus´ı ukonˇcit uˇzivatel. 2. Zastavit po uloˇzen´ı zadan´eho poˇctu sn´ımk˚ u. 3. Zastavit po uplynut´ı ˇcasov´eho intervalu. 4. Zastavit v konkr´etn´ı datum a ˇcas. Na dalˇs´ı stanˇe pr˚ uvodce lze aktivovat tzv. Activity Triggered reˇzim. Nov´ y sn´ımek, pˇripraven´ y k uloˇzen´ı, se uloˇz´ı pouze tehdy, pokud se liˇs´ı od pˇredchoz´ıho uloˇzen´eho sn´ımku minim´alnˇe o prahovou hodnotu. Prahov´a hodnota je ud´av´ana v procentech a je doporuˇceno ji nastavit v ˇr´adu jednotek procent. Posledn´ı strana slouˇz´ı ke korekci obrazu. Ta odstran´ı blik´an´ı obrazu pˇri zmˇenˇe expoziˇcn´ı hodnoty a vyv´aˇzen´ı b´ıl´e. Tuto funkci je doporuˇceno zapnout, 38
Uˇzivatelsk´a dokumentace
Obsluha programu
Typ zaˇ r´ızen´ı Automatick´e poskytov´an´ı Jednotn´e ukl´ad´an´ı Kamera (CIVIL) Ano Ano Zrcadlovka (WIA) Ne Ne S´ıt’ov´ a kamera Ano Ano Tabulka A.1: Poˇrizov´ an´ı sn´ımk˚ u: Zaˇr´ızen´ı s automatick´ ym poskytov´an´ım sn´ımk˚ u umoˇzn ˇuj´ı zobrazit sv´e sn´ımky v hlavn´ım oknˇe programu; zaˇr´ızen´ı s jednotn´ ym ukl´ ad´an´ım zpracov´avaj´ı sv´e obr´azky standardn´ım zp˚ usobem a lze na nˇe aplikovat filtry.
pokud je ke sn´ım´an´ı pouˇz´ıv´ano zaˇr´ızen´ı s automatick´ ym nastaven´ım expozice a vyv´aˇzen´ı b´ıl´e. Rovnˇeˇz je funkci doporuˇceno aktivovat pˇri stereoskopick´em sn´ım´an´ı ze dvou kamer s odliˇsn´ ymi senzory, aby doˇslo ke sjednocen´ı barevn´eho pod´an´ı obrazu z obou kamer. Referenˇcn´ı vahou se rozum´ı hodnota, s jakou se bude na barevn´em pod´an´ı ukl´adan´eho obr´azku pod´ılet barevn´a struktura referenˇcn´ıho sn´ımku. Vyˇsˇs´ı hodnoty l´epe redukuj´ı blik´an´ı, ale novˇe ukl´adan´e obr´azky budou n´achylnˇejˇs´ı k doˇcasn´emu poklesu dynamick´eho rozsahu sn´ımku.
A.3.5
Moˇ znosti ukl´ ad´ an´ı
Z´akladn´ı nastaven´ı ukl´ad´an´ı se neprov´ad´ı v pr˚ uvodci ˇcasov´an´ım, ale v samostatn´em dialogu, pˇr´ıstupn´ ym z menu N´ astroje. Zde je moˇzno zvolit form´at ukl´adan´eho obr´azku (za pˇredpokladu, ˇze se nejedn´a o sn´ım´an´ı ze zrcadlovky) a zp˚ usob uloˇzen´ı obr´azk˚ u pˇri stereoskopick´em sn´ım´an´ı.
39