ˇ ´ Cesk e ´ vysoke ˇen´ı uc ´ technicke v Praze Fakulta elektrotechnick´ a Katedra kybernetiky
Diplomov´ a pr´ ace
Vyuˇ zit´ı principu KLT pro sledov´ an´ı c´ıle kamerovou hlavic´ı Marek Tejc
Kvˇ eten 2015 Vedouc´ı pr´ ace: Ing. Pavel Krsek, Ph.D.
České vysoké učení technické v Praze Fakulta elektrotechnická Katedra kybernetiky
ZADÁNÍ DIPLOMOVÉ PRÁCE Student:
Bc. Marek T e j c
Studijní program:
Kybernetika a robotika (magisterský)
Obor:
Robotika
Název tématu:
Využití principu KLT pro sledování cíle kamerovou hlavicí
Pokyny pro vypracování: 1. Seznamte se s principem KLT algoritmu pro sledování objektů. 2. Seznamte se se stávající implementací algoritmu sledování použitému pro kamerovou hlavici. 3. Navrhněte nový algoritmu sledování vybraného objektu založený na principu KLT. 4. Implementujte algoritmus v jazyce C, C++ tak, aby ho bylo možné použít s využitím technických prostředků kamerové hlavice. Kód připravte tak, aby ho bylo možné využít jak v operačním systému Windows tak Linux. 5. Seznamte se s dříve navrženými vylepšeními systému sledování objektů a dle možností je implementujte. 6. Programový kód nezapomeňte dostatečně komentovat. 7. Vše pečlivě zdokumentujte. Seznam odborné literatury: [1] Milan Sonka, Vaclav Hlavac, and Roger Boyle. Image Processing, Analysis and Machine Vision. Thomson, 3rd edition, ISBN 978-0-495-08252, 2007. [2] Simon Baker and Iain Matthews. Lucas-Kanade 20 Years On: A Unifying Framework. International Journal of Computer Vision 56(3), 221–255, 2004. [3] Baojie Fan, Yingkui Du, Linlin Zhu, Jing Sun, Yandong Tang. A robust template tracking algorithm with weighted active drift correction. Pattern Recognition Letters 32 (2011) 1317–1327. [4] Iain Matthews, Takahiro Ishikawa, and Simon Baker. The Template Update Problem. In Richard Harvey and Andrew Bangham, editors, Proceedings of the British Machine Conference, pages 65.1-65.10. BMVA Press, September 2003. doi:10.5244/C.17.65. Vedoucí diplomové práce: Ing. Pavel Krsek, Ph.D. Platnost zadání: do konce letního semestru 2015/2016
L.S. doc. Dr. Ing. Jan Kybic vedoucí katedry
prof. Ing. Pavel Ripka, CSc. děkan V Praze dne 23. 1. 2015
Prohl´ aˇsen´ı Prohlaˇsuji, ˇze jsem pˇredloˇzenou pr´aci vypracoval samostatnˇe a ˇze jsem uvedl veˇsker´e pouˇzit´e informaˇcn´ı zdroje v souladu s Metodick´ ym pokynem o dodrˇzov´an´ı etick´ ych princip˚ u pˇri pˇr´ıpravˇe vysokoˇskolsk´ ych z´avˇereˇcn´ ych prac´ı.
V Praze dne 11. 5. 2015
i
Podˇ ekov´ an´ı Zde bych chtˇel podˇekovat vˇsem, kteˇr´ı mˇe bˇehem tvorby diplomov´e pr´ace podporovali a motivovali. Pˇredevˇs´ım dˇekuji panu Ing. Pavlu Krskovi Ph.D. za odborn´e veden´ı, voln´ y ˇcas ke konzultac´ım, podporu a vstˇr´ıcnost. D´ale bych chtˇel podˇekovat rodinˇe za podporu bˇehem dosavadn´ıho studia a pˇra´tel˚ um za voln´ y ˇcas, rady a podnˇetn´e diskuze, kter´e vyˇreˇsily spoustu probl´em˚ u. ˇ v Tato pr´ace popisuje v´ ysledky dosaˇzen´e s finanˇcn´ı podporou TACR r´amci projektu MAGYSKA (TA02010887). ii
Abstrakt Tato diplomov´a pr´ace se zab´ yv´a implementac´ı KL sledovac´ıho algoritmu do kamerov´e hlavice s inerci´aln´ı stabilizac´ı a obrazovou zpˇetnou vazbou. KL algoritmus byl zvolen pro nahrazen´ı st´avaj´ıc´ıho algoritmu SSD (Sum of Square Differences). Algoritmus KL m´a menˇs´ı v´ ypoˇcetn´ı a ˇcasovou n´aroˇcnost neˇz algoritmus SSD, ˇc´ımˇz dos´ahneme kratˇs´ıho dopravn´ıho zpoˇzdˇen´ı pro obrazovou zpˇetnou vazbu. Implementaci provedeme s vyuˇzit´ım funkc´ı z knihovny OpenCV do st´avaj´ıc´ıho k´odu programu syst´emu vizu´aln´ıho sledov´an´ı. Testov´an´ı provedeme na vybran´ ych sekvenc´ıch a na re´aln´e kameˇre. St´avaj´ıc´ı algoritmus i implementaci navrˇzen´eho algoritmu KL uprav´ıme tak, aby byla pˇreloˇziteln´a na platform´ach s operaˇcn´ımi syst´emy Windows i Linux. Kl´ıˇ cov´ a slova: KL algoritmus, Kanade-Lucas algoritmus, pohybliv´a kamera, OpenCV knihovna, knihovna Pthread
Abstract This thesis propose implementation KL tracking algorithm to camera head with inertial stabilization and visual feedback. KL algorithm was chosen to replace an existing algorithm SSD (Sum of Square Differences). The algorithm KL has smaller computing and time-consuming requirements than the algorithm SSD, thus achieving shorter time delay for visual feedback. For implementation we will use functions from the library OpenCV in the existing program code of visual tracking. We perform testing on selected sequences and a real camera. Existing algorithms and implementation of the proposed algorithm KL adjust so that was translatable platforms with operating systems Windows and Linux. Keywords: KL algorithm, Kanade-Lucas algorithm, moving camera, OpenCV library, Pthread library
iii
Obsah 1
´ Uvod
1
2
St´ avaj´ıc´ı algoritmus sledov´ an´ı
3
2.1 Hlavice . . . . . . . . . . . . . . . 2.1.1 Syst´em inerci´aln´ı stabilizace 2.1.2 Obrazov´a zpˇetn´a vazba . . . 2.1.3 Sbˇernice CAN . . . . . . . . 2.1.4 Konzole oper´atora . . . . . . 2.2 Algoritmus sledov´an´ı SSD . . . . . 2.2.1 Princip SSD . . . . . . . . . 2.2.2 Aktualizace modelu . . . . . 2.3 Algoritmus sledov´an´ı KLT . . . . . 2.3.1 Odvozen´ı KL algoritmu . . . 2.3.2 Varianty KLT . . . . . . . .
3
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
Navrˇ zen´ y algoritmus sledov´ an´ı 3.1 Upraven´ y algoritmus KLT . . . . . . . . . . . . . . . . . . 3.1.1 Popis algoritmu . . . . . . . . . . . . . . . . . . . . 3.1.2 Sledov´an´ı objektu s pouˇzit´ım pyramidov´e reprezentace 3.1.3 Iterativn´ı KLT . . . . . . . . . . . . . . . . . . . . . 3.1.4 Sledov´an´ı objektu pobl´ıˇz okraj˚ u sn´ımku . . . . . . . 3.1.5 Prohl´aˇsen´ı objektu za ztracen´ y. . . . . . . . . . . .
4
Implementace
3 3 3 3 4 4 5 5 6 7 8
9 9 9 10 11 14 14
15
4.1 Implementace navrˇzen´eho algoritmu . . . . . . . . . . . . 4.1.1 P˚ uvodn´ı sch´ema programu . . . . . . . . . . . . . . 4.1.1.1 Vl´akno ThrTracking . . . . . . . . . . . . . 4.1.1.2 Vl´akno ThrCapture . . . . . . . . . . . . . 4.1.1.3 Vl´akna ThrCommTx a ThrCommRx . . . . 4.1.2 Vyuˇzit´ı knihovny OpenCV . . . . . . . . . . . . . . 4.1.3 Upraven´e sch´ema programu . . . . . . . . . . . . . 4.1.3.1 Vl´akno ThrTracking . . . . . . . . . . . . . 4.1.3.2 Vl´akno ThrCapture . . . . . . . . . . . . . 4.1.3.3 Vl´akno ThrCommTx a ThrCommRx . . . . 4.1.3.4 Funkce KLDiffImg cv a calcOpticalFlowPyrLK . . . . . . . . . . . . . . . . . . . . . . 4.1.4 Naˇc´ıt´an´ı ze souboru . . . . . . . . . . . . . . . . . . 4.2 Dalˇs´ı u ´pravy algoritmu . . . . . . . . . . . . . . . . . . . 4.2.1 Vyhled´av´an´ı z v´ıce pozic . . . . . . . . . . . . . . . iv
15 15 15 16 17 18 19 19 19 19 20 20 21 21
4.2.2 Pouˇzit´ı pohybliv´e desetinn´e ˇca´rky 4.3 Implementace pro Linux . . . . . . . . . 4.4 Pˇreklad . . . . . . . . . . . . . . . . . . 4.5 V´ ybˇer vhodn´eho objektu ke sledov´an´ı .
5
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Experiment´ aln´ı v´ ysledky (testov´ an´ı algoritmu) 5.1 Sekvence . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Porovn´an´ı algoritm˚ u . . . . . . . . . . . . . . . . . . . . . 5.3 Zhodnocen´ı v´ ysledk˚ u. . . . . . . . . . . . . . . . . . . . .
6
21 21 22 22
24 24 28 31
Z´ avˇ er
33
Literatura
34
Obsah DVD
35
v
Seznam obr´ azk˚ u 1 2 3 4 5 6 7
8
9
10
11
12
13
14
15
Pouˇzit´a kamerov´a hlavice a jej´ı instalace na podvozku letounu MANTA . . . . . . . . . . . . . . . . . . . . . . . . Sch´ema obrazov´e zpˇetn´e vazby . . . . . . . . . . . . . . . . Uk´azka sn´ımku It , bl´ızk´eho okol´ı sledovan´eho bodu a kriteri´aln´ı chybov´e funkce . . . . . . . . . . . . . . . . . . . . Blokov´e sch´ema proces˚ u v programu obrazov´e zpˇetn´e vazby Grafick´e uˇzivatelsk´e rozhran´ı . . . . . . . . . . . . . . . . . Volba sledovan´eho objektu pomoc´ı funkce goodFeaturesToTrack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sekvence ˇc´ıslo 1: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇc´atku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇca´st obrazu) . . . . . . . . . . Sekvence ˇc´ıslo 2 a 12: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇca´tku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇca´st obrazu) . . . . . . . Sekvence ˇc´ıslo 3 a 14: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇca´tku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇca´st obrazu) . . . . . . . Sekvence ˇc´ıslo 5 a 15: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇca´tku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇca´st obrazu) . . . . . . . Sekvence ˇc´ıslo 6 a 16: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇca´tku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇca´st obrazu) . . . . . . . Sekvence ˇc´ıslo 7 a 8: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇc´atku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇca´st obrazu) . . . . . . . . . . Sekvence ˇc´ıslo 10 a 11: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇc´atku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇca´st obrazu) . . . . . Sekvence ˇc´ıslo 9: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇc´atku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇca´st obrazu) . . . . . . . . . . Sekvence ˇc´ıslo 13: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇc´atku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇca´st obrazu) . . . . . . . . . .
vi
1 2 5 16 18 23
25
26
26
27
27
28
29
29
30
Seznam tabulek 1
Porovn´an´ı funkˇcnosti algoritm˚ u SSD a KL (start z 1 a 25 bod˚ u). Poˇcet sn´ımk˚ u odpov´ıd´a, jak dlouho algoritmus v ˇ v [ms] je pr˚ dan´e sekvenci sledoval objekt. Cas umˇern´a doba bˇehu algoritmu na jeden sn´ımek. . . . . . . . . . . . . . . .
vii
32
Kapitola 1
´ Uvod Pro pozorov´an´ı objekt˚ u z pohybuj´ıc´ıch se dopravn´ıch ˇci bezpilotn´ıch prostˇredk˚ u se ˇcasto pouˇz´ıvaj´ı stabilizovan´e kamery (kamerov´e hlavice). Pˇr´ıkladem je kamerov´a hlavice M120 (obr´azek 1)1 . Existuje a pouˇz´ıv´a se nˇekolik druh˚ u zavˇeˇsen´ı kamer: • bez stabilizace - otoˇcn´e zavˇeˇsen´ı bez stabilizace kamery (napˇr. v pr˚ umyslu) • mechanick´a stabilizace - vyuˇz´ıv´a se v pˇr´ıpadech bez n´aroku na prostor a vlivy prostˇred´ı (leteck´e sn´ımkov´an´ı a filmov´ y pr˚ umysl) • elektromechanick´a stabilizace - pouˇz´ıv´a se v kombinaci s ˇr´ıd´ıc´ım syst´emem hlavnˇe ve vojenstv´ı a u bezpeˇcnostn´ıch sloˇzek Hlavice zajiˇst’uje kameˇre stabilizaci s vyuˇzit´ım u ´daj˚ u z gyroskopick´ ych senzor˚ u. Uˇziteˇcnou a v tomto pˇr´ıpadˇe realizovatelnou souˇca´st´ı vybaven´ı kamerov´e hlavice je vizu´aln´ı syst´em pro sledov´an´ı objektu v obraze. Pˇri pohybu objektu v omezen´em zorn´em poli kamery je tˇeˇzk´e pro oper´atora objekt sledovat. Syst´em sledov´an´ı sn´ıˇz´ı n´aroˇcnost a umoˇzn´ı oper´atorovi vˇenovat pozornost vizu´aln´ımu sledov´an´ı pˇredevˇs´ım syst´emov´ ych u ´daj˚ u. Pro sledov´an´ı objektu je pak nutn´e, aby ˇr´ıd´ıc´ı syst´em kamerov´e hlavice minimalizoval odchylku polohy sledovan´eho objektu ve sn´ımku z kamery od polohy oper´atorem poˇzadovan´e, v praxi nejˇcastˇeji stˇred sn´ımku.
Obr´azek 1: Pouˇzit´a kamerov´a hlavice a jej´ı instalace na podvozku letounu MANTA Kamera se pak st´av´a souˇc´ast´ı zpˇetnovazebn´ı smyˇcky, kterou m˚ uˇzeme vidˇet na obr´azku (2)2 . Souˇca´st´ı t´eto smyˇcky je zmiˇ novan´ y sledovac´ı algoritmus (Tracker), kter´ y posky1 2
foto: Ing. Jan Sal´ aˇsek Sch´ema pouˇzito z projektu MAGYSKA
1/35
´ 1.0 UVOD tuje minim´aln´ı hodnotu odchylky . V´ ypoˇcet t´eto odchylky z´avis´ı na pouˇzit´em algoritmu sledov´an´ı, jeho n´aroˇcnosti a tak´e na jeho robustnosti. Pro ˇr´ızen´ı je d˚ uleˇzit´e dopravn´ı zpoˇzdˇen´ı. Toto zpoˇzdˇen´ı je pˇredevˇs´ım d´ano rychlost´ı zpracov´an´ı pˇr´ıchoz´ıch obraz˚ u a snaˇz´ıme se jej proto minimalizovat. V n´asleduj´ıc´ı kapitole si pop´ıˇseme st´avaj´ıc´ı SSD algoritmus a pˇredstav´ıme obecn´ y KL algoritmus. V kapitole tˇret´ı uvedeme a pop´ıˇseme navrˇzen´ y algoritmus zaloˇzen´ y na KLT, jeho u ´pravy a doplnˇen´ı. Ve ˇctvrt´e kapitole si struˇcnˇe projdeme implementaci navrˇzen´eho algoritmu do kamerov´e hlavice a v p´at´e kapitole si porovn´ame v´ ysledky p˚ uvodn´ıho algoritmu SSD s navrˇzen´ ymi variantami KLT algoritmu sledov´an´ı.
Obr´azek 2: Sch´ema obrazov´e zpˇetn´e vazby. Tracker pˇredstavuje vizu´aln´ı sledovac´ı algoritmus a G pak stabilizovanou kamerovou hlavici jako celek. Bloky Cθ , Cψ jsou polohov´ ymi regul´atory a bloky CωEL , CωCEL regul´atory rychlostn´ımi pro osy azimut a elevace.
2/35
Kapitola 2
St´ avaj´ıc´ı algoritmus sledov´ an´ı 2.1
Hlavice
V souˇcasn´e dobˇe m´ame k dispozici kamerovou hlavici z projektu MAGYSKA (ˇc´ıslo projektu TA02010887), v n´ıˇz je nainstalov´ana RGB kamera s moˇznost´ı jej´ı mechanick´e v´ ymˇeny, napˇr. za termokameru. Samotn´a hlavice m˚ uˇze b´ yt nainstalov´ana na nosiˇc (napˇr. na autˇe, pod vrtuln´ıkem) a m´a moˇznost rotaˇcn´ıho pohybu v os´ach azimut a elevace za pomoci elektromotor˚ u ˇr´ızen´ ych pulznˇe-ˇs´ıˇrkovou modulac´ı. Jako v´ ypoˇcetn´ı a komunikaˇcn´ı jednotka je v hlavici uloˇzen poˇc´ıtaˇcov´ y modul, kter´ y se sv´ ymi periferiemi ˇ ızen´ı zajiˇst’uje ˇr´ıd´ıc´ı syst´em, kter´ y se skl´ad´a ze komunikuje pomoc´ı sbˇernice CAN. R´ dvou ˇc´ast´ı: inerci´aln´ı stabilizace a obrazov´e zpˇetn´e vazby.
2.1.1
Syst´ em inerci´ aln´ı stabilizace
C´ılem inerci´aln´ı stabilizace optick´e osy je udrˇzen´ı t´eto osy v klidu, zat´ımco se nosiˇc, k nˇemuˇz je kamera pˇripevnˇena, pohybuje neˇza´douc´ım zp˚ usobem. Syst´em ˇr´ıd´ı polohu kamery v˚ uˇci tomuto pohybuj´ıc´ımu se nosiˇci. V hlavici je pouˇzita hmotnostn´ı stabilizace3 , rychlost´ı zpˇetn´a vazba (kompenzuj´ıc´ı ruˇsiv´ y toˇciv´ y moment pˇren´aˇsen´ y do kamery z nosiˇce) a proudov´a zpˇetn´a vazba.
2.1.2
Obrazov´ a zpˇ etn´ a vazba
Samotn´e sledov´an´ı hlavic´ı je urˇceno k tomu, aby se vybran´ y objekt vˇzdy nach´azel uprostˇred zorn´eho pole kamery, a my tak mˇeli pˇrehled o jeho okol´ı. V pˇr´ıpadˇe, ˇze se pohybuje c´ıl, kamera, pˇr´ıpadnˇe c´ıl s kamerou z´aroveˇ n, je tˇreba m´ıt dostateˇcnˇe velik´ y odstup od okraj˚ u sn´ımk˚ u videa. Pro kompenzaci tˇechto pohyb˚ u zde slouˇz´ı jiˇz zm´ınˇen´e motory, kter´e nat´aˇcej´ı kamerovou hlavici ve smˇeru pohybu c´ıle, ˇci ve smˇeru opaˇcn´em ke zmˇenˇe polohy nosiˇce hlavice.
2.1.3
Sbˇ ernice CAN
Hlavn´ı ˇr´ıdic´ı sbˇernic´ı syst´emu je sbˇernice CAN. V hlavici jsou implementov´any dva oddˇelen´e kan´aly pr˚ umyslov´e sbˇernice CAN 2.0A, vnitˇrn´ı a vnˇejˇs´ı. Sbˇernice vnitˇrn´ı je pouˇz´ıv´ana pro pˇrenos dat t´ ykaj´ıc´ıch se vˇsech mˇeˇren´ı z instalovan´ ych senzor˚ u, akˇcn´ıch z´asah˚ u a dalˇs´ı informace o chov´an´ı ˇr´ıd´ıc´ıch smyˇcek. Po t´eto sbˇernici se pos´ılaj´ı zpr´avy o 3 Stabilizovan´ y pˇredmˇet se snaˇz´ı setrvat v klidu ve vztahu k inerci´aln´ı vztaˇzn´e soustavˇe, zat´ımco se nosiˇc pohybuje.
3/35
´ ´I SSD 2.2 ALGORITMUS SLEDOVAN ovl´ad´an´ı kamery, nastaven´ı konstant pouˇzit´ ych PID regul´ator˚ u, atd. Rychlost sbˇernice je 1Mb/s. Po vnˇejˇs´ı sbˇernici jsou pos´ıl´any zpr´avy z / do oper´atorsk´e konzole, napˇr. pˇrep´ın´an´ı reˇzim˚ u, inicializov´an´ı a ovl´ad´an´ı hlavice. Rychlost sbˇernice je 250kbit/s. Oddˇelen´ı sbˇernic je realizov´ano z d˚ uvodu separace dat, kter´e nejsou bezprostˇrednˇe nutn´e pro ovl´ad´an´ı hlavice a tak nesniˇzuj´ı datovou propustnost. Pˇrenos zpr´av mezi sbˇernicemi je realizov´an pomoc´ı mikrokontrol´eru oddˇelovaˇce. Pro spr´avnou velikost natoˇcen´ı motor˚ u v jednotliv´ ych os´ach, berouc´ı ohled na pohyb 4 objektu ve videu , aktu´aln´ı zoom ˇcoˇcky kamery a akˇcn´ı z´asah motoru, je zde pouˇzita explicitnˇe stanoven´a pˇrevodn´ı tabulka s odpov´ıdaj´ıc´ımi veliˇcinami (kalibrace kamery, resp. ohniskov´e vzd´alenosti). Tyto stanoven´e hodnoty je moˇzn´e v pˇr´ıpadˇe zmˇeny komponent zaˇr´ızen´ı upravit kalibrac´ı. Jako sledovac´ı algoritmus pouˇz´ıv´ame SSD tracker (Sum of Square Differences) suma rozd´ıl˚ u ˇctverc˚ u, kter´ y podrobnˇeji pop´ıˇseme a vysvˇetl´ıme v n´asleduj´ıc´ım textu.
2.1.4
Konzole oper´ atora
Aby mohla hlavice slouˇzit pro vizu´aln´ı sledov´an´ı (trackov´an´ı) vybran´eho objektu, je potˇreba pˇredat ˇr´ıd´ıc´ımu syst´emu informaci o tom, jak´ y c´ıl sledovat. Tento v´ ybˇer uˇcin´ı oper´ator pomoc´ı sv´eho termin´alu, na nˇemˇz vid´ı napˇr. informace o GPS poloze vrtuln´ıku, jeho rychlosti a zoom kamery z´aroveˇ n s aktu´aln´ım video v´ ystupem z kamery. Oper´ator m˚ uˇze kontrolovat zda je zvolen´ y objekt sledov´an spr´avnˇe, pˇr´ıpadnˇe svoji volbu upˇresnit ˇci zmˇenit. D´ale m˚ uˇze upravit rychlost elektromotor˚ u nebo zoom ˇcoˇcky kamery, atd..
2.2
Algoritmus sledov´ an´ı SSD
Mˇejme video poˇr´ızen´e kamerou, kter´a se skl´ad´a ze sekvence sn´ımk˚ u. Z t´eto sekvence vyberme dvojici po sobˇe jdouc´ıch sn´ımk˚ u a oznaˇcme je It−1 a It , odpov´ıdaj´ıc´ı poˇrad´ı T sn´ımku v sekvenci. Mˇejme d´ale polohu sledovan´eho objektu u = ux uy v souˇradn´em syst´emu sn´ımku I. Definujme si model M sledovan´eho objektu jako uspoˇra´danou mnoˇzinu obrazov´ ych bod˚ u, definovan´ ych svoj´ı polohou xi v souˇradn´em syst´emu modelu v˚ uˇci poloze objektu u a intenzitou5 . Pro pˇrepoˇcet mezi souˇradn´ ym syst´emem modelu M a sn´ımku I pouˇzijeme vztah M (xi ) = I(u + xi ) Algoritmus SSD sledov´an´ı pracuje s aktu´aln´ım sn´ımkem poˇr´ızen´ ym kamerou, v nˇemˇz vˇzdy prob´ıh´a hled´an´ı aktu´aln´ı polohy sledovan´eho objektu z´ajmu pomoc´ı modelu tohoto objektu, kter´ y jsme vytvoˇrili pˇri inicializaci algoritmu. 4
V jednotk´ ach obrazov´ ych bod˚ u (pixel˚ u) Pouˇzit´e sn´ımky pro sledov´ an´ı, vstupn´ı i patˇr´ıc´ı modelu, jsou uchov´av´any a zpracov´av´any jako pole 1 celoˇc´ıseln´ ych intenzit, v rozsahu od 0 do 255 (Pˇr´ıpadnˇe od 0 do 1, v kroc´ıch po 255 ), pˇri zobrazen´ı se jedn´ a o stupnˇe ˇsedi. 5
4/35
´ ´I SSD 2.2 ALGORITMUS SLEDOVAN
(b) Model sledovan´eho objektu 4
x 10
16 10 14
12
Obrazové body
20
10 30 8
6
40
4 50 2
60 10
(a) Sn´ımek It
20
30 Obrazové body
40
50
60
0
(c) Kriteri´aln´ı chybov´a funkce
Obr´azek 3: Uk´azka sn´ımku It , bl´ızk´eho okol´ı sledovan´eho bodu a kriteri´aln´ı chybov´e funkce
2.2.1
Princip SSD
Uvaˇzujte sn´ımek It a jemu odpov´ıdaj´ıc´ı model Mt−1 a polohu sledovan´eho bodu u. M˚ uˇzeme pak obecnˇe definovat chybovou (kriteri´aln´ı) funkci f jako n
f (It , Mt−1 , u) =
1X [It (u + xi ) − Mt−1 (xi )]2 , n i=1
(1)
kde u je poloha zvolen´eho bodu ve sn´ımku I a n je poˇcet obrazov´ ych bod˚ u modelu. Pokud je objekt ve sn´ımku It−1 na pozici ut−1 , pak ve sn´ımku It jeho souˇradnice ut stanov´ı jako ut = arg min f (It , Mt−1 , u), u∈Ωt
(2)
kde Ωt pˇredstavuje mnoˇzinu vˇsech prohled´avan´ ych pozic, napˇr. 2D kruhov´e ˇci ˇctvercov´e okol´ı bodu ut−1 . Pˇr´ıklad objektu, modelu a kriteri´aln´ı funkce s lok´aln´ım minimem je na obr´azku (3)
2.2.2
Aktualizace modelu
Objekt se pˇri zmˇenˇe polohy mˇen´ı. SSD algoritmus takov´e zmˇeny nem˚ uˇze postihnout bez u ´pravy modelu a proto jej upravujeme. Tato zmˇena prob´ıh´a pomoc´ı exponenci´aln´ıho 5/35
´ ´I KLT 2.3 ALGORITMUS SLEDOVAN zapom´ın´an´ı: Mt = αIinput (ut ) + (1 − α)Mt−1 ,
(3)
kter´e vˇzdy aktualizuje model Mt pro pouˇzit´ı k dalˇs´ım kroku sledov´an´ı (t + 1 ) tak, ˇze model Mt−1 uprav´ı v´ahov´ ym koeficientem α a aktualizuje jej ˇca´st´ı sn´ımku It v m´ıstˇe lokalizovan´eho objektu. Velikost α pˇredstavuje rychlost zapom´ın´an´ı modelu a jeho pˇrizp˚ usobov´an´ı se aktu´aln´ımu sn´ımku. Pro pˇr´ıliˇs vysok´e hodnoty to m˚ uˇze pˇredstavovat riziko ztr´aty sledovan´eho objektu pˇri ˇspatn´em urˇcen´ı pozice objektu. Sledov´an´ı objektu je moˇzn´e za pˇredpokladu, ˇze je v kameˇre dostateˇcnˇe viditeln´ y, vzhledovˇe ˇci tvarovˇe se mˇen´ı pouze pomalu a je jednoduˇse rozliˇsiteln´ y od zbyl´ ych ˇca´st´ı sn´ımku. Pokud algoritmus sledov´an´ı nen´ı schopen jednoznaˇcnˇe urˇcit pozici objektu, povaˇzujeme jej za ztracen´ y. V takov´em pˇr´ıpadˇe je sledov´an´ı pˇreruˇseno (stejnˇe tak aktualizov´an´ı modelu M.
2.3
Algoritmus sledov´ an´ı KLT
Metoda sledov´an´ı objektu popsan´e poprv´e v ˇcl´anku [1], naz´ yvan´e Kanade-Lucas-(Takeo) algoritmus (zkr´acenˇe budeme pouˇz´ıvat KL ˇci KLT tracker, algoritmus). Tato metoda se v mnoha ohledech odliˇsuje od SSD algoritmu shrnut´e v pˇredchoz´ı ˇc´asti (2.2). Stejnˇe jako zmiˇ novan´ y SSD tracker pracuje ve sv´e z´akladn´ı a neupraven´e podobˇe pouze s obr´azky v odst´ınech ˇsedi. KLT pracuje tak´e s pouˇzit´ım modelu sledovan´eho objektu jako SSD, tedy pˇriˇrazen´ı T modelu M vstupn´ımu sn´ımku I, a u = ux uy odpov´ıd´a souˇradnic´ım sledovan´eho objektu ve sn´ımku I. KLT je definov´an jako algoritmus pro v´ ypoˇcet optick´eho toku mezi sn´ımky It−1 a It , kde modelem je okol´ı kaˇzd´eho bodu u, obvykle definovan´e jako ˇctvercov´e okol´ı 5×5 nebo 10×10 obrazov´ ych bod˚ u. Okol´ı Ω je tvoˇreno obrazov´ ymi body s relativn´ımi souˇradnicemi x1 . . . xn , kde xi ∈ Ω. Pohyb (uvaˇzujeme pouze posunut´ı) m˚ uˇzeme parametricky zapsat jako ux + d1 W(u, d) = , (4) u y + d2 kde d pˇredstavuje posunut´ı (hledan´ y opticky tok) v obou os´ach tak, aby platilo, ˇze W(u, d) pˇrevezme polohu objektu u v souˇradnic´ıch modelu It−1 a namapuje ji na sub-pixelovou6 pozici ve sn´ımku It . Budeme pˇredpokl´adat, ˇze model Mt−1 odpov´ıd´a pˇri startu cel´emu sn´ımku It−1 a prov´ad´ıme jeho aktualizaci dle vztahu (3). C´ılem KLT algoritmu je minimalizov´an´ı sumy kvadr´at˚ u chyb mezi modelem M a vstupn´ım sn´ımkem I, pˇri pˇrepoˇctu souˇradnic vzhledem k modelu M : f (It , Mt−1 , u, d) =
X
[It (W(u + xi , d)) − Mt−1 (u + xi )]2 .
(5)
xi 6
Sub-pixel pˇredstavuje pozici mezi jednotliv´ ymi obrazov´ ymi body, nejedn´a se tedy d´ale pouze o celoˇc´ıseln´e souˇradnice, ale pro zv´ yˇsen´ı pˇresnosti se vyuˇz´ıvaj´ı hodnoty re´aln´e.
6/35
´ ´I KLT 2.3 ALGORITMUS SLEDOVAN Minimalizace rovnice (5) je prov´adˇena s ohledem na d a suma je poˇc´ıt´ana pˇres vˇsechny body xi . Samotn´a minimalizaˇcn´ı u ´loha je neline´arn´ı, i kdyˇz vektor deformace W(u, d) je line´arn´ım v d, ale sn´ımek I(u) je neline´arn´ım v u. Hodnoty jednotliv´ ych obrazov´ ych bod˚ u, z nichˇz se skl´ad´a I(u) obecnˇe nemaj´ı vztah k souˇradnic´ım u. Pro optimalizaci v´ yrazu v rovnici (5), KL algoritmus pˇredpokl´ad´a, ˇze odhad d je zn´am a d´ale je ˇreˇsiteln´ y pomoc´ı inkrementace parametrem ∆d, coˇz m˚ uˇzeme zapsat jako X f (It , Mt−1 , u, d, ∆d) = [It (W(u + xi , d + ∆d)) − Mt−1 (u + xi )]2 . (6) xi
Aktualizaci parametru d zap´ıˇseme d ← d + ∆d.
(7)
Iteraci prov´ad´ıme pˇres kroky (6, 7) tak dlouho, dokud parametr d konverguje. Jako test konvergence je libovoln´a norma vektoru ∆d, kter´a je menˇs´ı neˇz stanoven´ y pr´ah ε, napˇr.
∆d ≤ ε.
2.3.1
Odvozen´ı KL algoritmu
KL algoritmus je variantou Gauss-Newtonova gradientn´ı klesaj´ıc´ı neline´arn´ı optimalizaˇcn´ı u ´lohy. Neline´arn´ı rovnici (6) linearizujeme Taylorov´ ym polynomem prvn´ıho ˇra´du ˇclenu I (W(u, d + ∆d)) a z´ısk´ame 2 X ∂W ∆d − Mt−1 (u + xi ) . (8) It (W(u + xi , d)) + ∇I f (It , Mt−1 , u, d, ∆d) = ∂d xi ∂I ∂I V t´eto rovnici (8) v´ yraz ∇I = ∂x , ∂y pˇredstavuje gradient sn´ımku I spoˇcten´ y v bodˇe W(u, d), tzn. ∇I je spoˇcten v souˇradn´em syst´emu I a pot´e dosazen zp´atky do souˇradnic je Jakobi´an tohoto modelu M s pouˇzit´ım aktu´aln´ıho odhadu toku W(u, d). V´ yraz ∂W ∂d (Wx (u,d) toku. Pˇredpokl´adejme W(u, d) = Wy (u,d) , pak pro 2D plat´ı ! ∂Wx ∂Wx ∂W ∂p1 ∂p2 = ∂W (9) ∂Wy y . ∂d ∂p1 ∂p2 Minimalizace rovnice (8) je probl´em nejmenˇs´ıch ˇctverc˚ u a ˇreˇsen´ı m˚ uˇzeme odvodit n´asledovnˇe. Parci´aln´ı derivace rovnice (8) vzhledem k ∆d je X ∂W T ∂f ∂W =2 ∇I It (W(u + xi , d)) + ∇I ∆d − Mt−1 (u + xi ) , (10) ∂∆d ∂d ∂d x i
∇I ∂W ∆d ∂d
kde ˇclen odpov´ıd´a smˇeru nejstrmˇejˇs´ıho poklesu mezi sn´ımky. Pokud tento vztah poloˇz´ıme roven nule, spoˇcten´ı n´am poskytuje koneˇcn´e ˇreˇsen´ı pro minim´aln´ı hodnotu v´ yrazu v rovnici (8) jako X ∂W T −1 ∆d = H ∇I (Mt−1 (u + xi ) − It (W(u + xi , d))), (11) ∂d x i
7/35
´ ´I KLT 2.3 ALGORITMUS SLEDOVAN kde H je pro 2D Hessova matice X ∂W T ∂W H= ∇I ∇I ∂d ∂d x
(12)
i
∂W T
ˇ Clen (Mt−1 (u + xi ) − It (W(u + xi , d))) odpov´ıd´a aktualizaci parametru xi ∇I ∂d nejstrmˇejˇs´ıho poklesu. Z rovnice (11) m˚ uˇzeme ˇr´ıci, ˇze parametr ∆d je pr´avˇe aktualizace parametru nejstrmˇejˇs´ıho poklesu vyn´asoben´a inverzn´ı Hessovou matic´ı. Samotn´ y KL algoritmus se skl´ad´a z iterativn´ıho aplikov´an´ı rovnic (7) a (11). Z pˇredchoz´ıch rovnic vid´ıme, ˇze gradient ∇I mus´ı b´ yt spoˇcten pro pouˇzit´ı v W(u, d) ∂W ych pˇr´ıpadech (pro optick´e toky a Jakobi´an ∂d v d, oboj´ı obecnˇe z´avis´ı na d. V nˇekter´ sloˇzen´e pouze z translace ˇci toky afinn´ı) m˚ uˇze b´ yt Jakobi´an konstantn´ı, nicm´enˇe pro u ´plnost je tˇreba vˇsechny kroky v´ ypoˇctu algoritmu v kaˇzd´em kroku opakovat a toto zjednoduˇsen´ı vylouˇcit. Odhad parametru d se m˚ uˇze liˇsit mezi jednotliv´ ymi iteracemi. Pro optick´e toky W(u, d) m´ame pouze poˇzadavek, aby byly diferencovateln´e vzhle. Obecnˇe jsou tyto toky dem k parametru d, coˇz potˇrebujeme ke spoˇcten´ı Jakobi´anu ∂W ∂d diferencovateln´e dle u, ale tato podm´ınka nen´ı nutn´a. P
2.3.2
Varianty KLT
V praxi se pouˇz´ıvaj´ı nejˇcastˇeji ˇctyˇri varianty algoritmu, kter´e se liˇs´ı v z´amˇenˇe rol´ı modelu M a sn´ımku I ve v´ ypoˇctu a tak´e zp˚ usobem aktualizace odhadu pohybu pˇri iteraci. P˚ uvodn´ı algoritmus a dalˇs´ı tˇri odvozen´e od tohoto obecn´eho algoritmu. Tyto varianty poskytuj´ı jist´a zjednoduˇsen´ı pro v´ ypoˇcet optick´ ych tok˚ u t´ım, ˇze upravuj´ı tvar rovnice pro minimalizaci 6 a krok zmˇenu parametru d v kroku iterace. Tyto varianty jsou bl´ıˇze popsan´e a odvozen´e v ˇcl´anku ([2]) a poskytuj´ı empiricky podloˇzen´e shodn´e v´ ysledky (bez pˇridan´eho ˇsumu). Pokud zahrneme do procesu vyˇsˇs´ı hladinu ˇsumu, zvyˇsuje se nutn´ y poˇcet iterac´ı k dos´ahnut´ı konvergence a pˇri zvyˇsuj´ıc´ıch se hodnot´ach m´ıra u ´spˇeˇsnosti konvergence kles´a. Jednotliv´e algoritmy se liˇs´ı pouze v poˇzadavc´ıch na optick´e toky a na v´ ypoˇcetn´ı n´aroˇcnost, 6. Zrychlen´ım a zjednoduˇsen´ım v´ ypoˇctu m˚ uˇze b´ yt aproximace gradientu poklesu hodnoty kriteri´aln´ı funkce. Vˇetˇsina neline´arn´ıch optimalizac´ı a algoritm˚ u pro odhad parametr˚ u pracuje s iterac´ı skl´adaj´ıc´ı se ze dvou krok˚ u. Prvn´ım krokem je pˇribliˇzn´ y lok´aln´ı odhad kriteri´aln´ı funkce, nejˇcastˇeji pomoc´ı line´arn´ı ˇci kvadratick´e aproximace v okol´ı aktu´aln´ıho odhadu parametr˚ u. Druh´ ym krokem je pot´e aktualizace odhad˚ u tˇechto parametr˚ u na z´akladˇe odhadu kriteri´aln´ı funkce. V z´akladn´ım algoritmu KLT je pouˇzita Gauss-Newtonova metoda minimalizace, ale m˚ uˇzeme napˇr´ıklad pouˇz´ıt GaussNewtonovu minimalizaci s diagonalizac´ı Hessovy matice, Levenberg-Marquardtovu ˇci Newtonovu metodu minimalizace. Mimo tˇechto postup˚ u existuje nespoˇcet dalˇs´ıch, ne vˇsechny jsou vˇsak pro svoj´ı citlivost na ˇsum vhodn´e pro obecn´e pˇr´ıpady ˇci jsou v´ yznamnˇe rychlejˇs´ı neˇz Gauss-Newtonova metoda. Algoritmy sledov´an´ı zaloˇzen´e na KLT jsou obvykle pops´any pro intenzitn´ı sn´ımky. Existuj´ı vˇsak postupy, kter´e pouˇz´ıvaj´ı informaci o barvˇe ˇci barevnosti obr´azku (pˇr´ıpadnˇe jeho jednotliv´ ych ˇc´ast´ı), napˇr. ([3]) nebo vyuˇzit´ı nikoliv jednotliv´ ych barev, ale barevn´eho histogramu, popsan´eho v ([4]). 8/35
Kapitola 3
Navrˇ zen´ y algoritmus sledov´ an´ı V t´eto kapitole podrobnˇeji pop´ıˇseme konkr´etn´ı pouˇzit´ı KLT a jak´e jsme provedli jeho dodateˇcn´e u ´pravy pˇri ˇreˇsen´ı naˇs´ı u ´lohy.
3.1
Upraven´ y algoritmus KLT
Jak jiˇz bylo v pˇredchoz´ı kapitole uvedeno, existuj´ı r˚ uzn´e varianty KLT algoritmu, kter´e matematicky poskytuj´ı shodn´e ˇci dostateˇcnˇe bl´ızk´e v´ ysledky, a kter´e se liˇs´ı pˇrev´aˇznˇe v rozd´ıln´ ych minimalizac´ıch. Naˇsim potˇreb´am nejv´ıce vyhovoval KL algoritmus ve variantˇe dopˇredn´e sˇc´ıtac´ı( Forward additive“ ) s pouˇzit´ım Gauss-Newtonovy metody ” minimalizace. Tato varianta poskytuje vysokou robustnost pˇri zachov´an´ı pˇrimˇeˇren´e v´ ypoˇcetn´ı n´aroˇcnosti. Vybrali jsme si implementaci metody popsan´e v ˇcl´anku [5].
3.1.1
Popis algoritmu
Mˇejme dvojici 2D sn´ımk˚ u v odst´ınech ˇsedi poˇr´ızen´ ych kamerou, a oznaˇcme je It−1 a It . Jako prvn´ı sn´ımek budeme povaˇzovat sn´ımek It−1 a jako druh´ y It . Intenzitu v libovoln´em bodˇe takov´ ychto ˇsed´ ych sn´ımk˚ u m˚ uˇzeme lokalizovat jako It−1 (x, y), pˇr´ıpadnˇe It (x, y), kde souˇradnice x pˇredstavuje vodorovnou osu a y osu svislou, s poˇca´tkem v lev´em horn´ım rohu sn´ımku. T u M´ame-li n´aˇs sledovan´ y objekt na pozici u = ve sn´ımku It−1 , c´ılem algox uy ux + dx ritmu je nal´ezt jeho pozici v = u + d = ve sn´ımku It , pˇredpokl´ad´ame, ˇze u y + dy It−1 (u) a It (v) jsou shodn´e“. Jelikoˇz v praxi nechceme sledovat pouze objekt o velikosti ” jednoho obrazov´eho bodu, budeme pˇredpokl´adat, ˇze m´a urˇcitou velikost, popsanou jako ˇctverec o hranˇe q se stˇredem v bodˇe u, a budeme jej pokl´adat za model dan´eho objektu, (2.2.2). Pro hled´an´ı bodu u, respektive v, pouˇzijeme zmenˇsenou oblast sn´ımku It , jej´ıˇz rozmˇery pop´ıˇseme pro jednotliv´e osy jako (2 · ωx + 1) a (2 · ωy + 1), a d´ale ji budeme naz´ yvat prohled´avan´a oblast a znaˇcit jako Ω. Rozmˇery ωx a ωy odpov´ıdaj´ı vzd´alenosti stˇredov´eho obrazov´eho bodu od hrany t´eto oblasti. C´ılem algoritmu bude minimalizovat chybovou funkci popsanou jako X (d) = (dx , dy ) = [It−1 (u + xi ) − It+1 (u + xi + d)]2 . (13) xi ∈Ω
Obecnˇe pˇredpokl´ad´ame, ˇze velikost posunut´ı d bude v jednotliv´ ych os´ach nejh˚ uˇre shodn´a jako jsou rozmˇery prohled´avan´e oblasti, tedy dx ≤ ωx a dy ≤ ωy . Pro zajiˇstˇen´ı co nejvˇetˇs´ı robustnosti vzhledem k rychlosti algoritmu, je zde pouˇzita pyramidov´a implementace KLT. 9/35
´ ALGORITMUS KLT 3.1 UPRAVENY
3.1.2
Sledov´ an´ı objektu s pouˇ zit´ım pyramidov´ e reprezentace
Definujme si pyramidovou reprezentaci sn´ımku I o rozmˇerech nx × ny . Mˇejme I 0 = I, jakoˇzto nultou“ u ´roveˇ n sn´ımku (v p˚ uvodn´ım, maxim´aln´ım rozliˇsen´ı - n0x = nx a n0y = ” ny ). Pyramidov´a reprezentace pot´e spoˇc´ıv´a v postupn´em v´ ypoˇctu I 1 z I 0 , pot´e I 2 z I 1 , I 3 z I 2 , atd.. Mˇejme L = 1, 2, ..., odpov´ıdaj´ıc´ı u ´rovn´ım pyramidy, pak I L−1 odpov´ıd´a L−1 L−1 sn´ımku na u ´rovni L − 1 a nx , ny je pak ˇs´ıˇrka, resp. v´ yˇska sn´ımku I L−1 . Sn´ımek I L−1 pot´e definujeme jako 1 I L (x, y) = I L−1 + 4 1 L−1 (2x − 1, 2y) + I L−1 (2x + 1, 2y) + I L−1 (2x, 2y − 1) + I L−1 (2x, 2y + 1) + 8 1 L−1 I (2x − 1, 2y − 1) + I L−1 (2x + 1, 2y + 1) + 16 1 L−1 I (2x − 1, 2y + 1) + I L−1 (2x + 1, 2y − 1) (14) 16 Aby byla dodrˇzena podm´ınka pro rozmˇery sn´ımk˚ u mezi u ´rovnˇemi, mus´ı platit nLx
nL−1 + 1 ≤ x 2
nLy
nL−1 +1 y ≤ 2
(15)
C´ılem pyramidov´e reprezentace je zvl´adnout vˇetˇs´ı pohyby mezi sn´ımky It−1 a It , i pokud by byly vˇetˇs´ı neˇz je prohled´avan´a oblast. V praxi nen´ı potˇreba volit vyˇsˇs´ı u ´roveˇ n neˇz L = 4, pˇri nˇemˇz doch´az´ı k 16 n´asobn´emu sn´ıˇzen´ı rozliˇsen´ı sn´ımku. Vzhledem k tomu, ˇze se mˇen´ı rozliˇsen´ı pouˇzit´ ych sn´ımk˚ u na jednotliv´ ych u ´rovn´ıch T L u pyramidy, je tˇreba mˇenit i souˇradnice sledovan´eho bodu u. Mˇejme u = Lx uLy pro danou u ´roveˇ n pyramidy L, mezi jednotliv´ ymi u ´rovnˇemi m˚ uˇzeme pˇrech´azet pomoc´ı u L 0 pˇrepoˇctu u = 2L pro u = u. Samotn´e sledov´an´ı objektu pomoc´ı pyramid prob´ıh´a tak, ˇze se spoˇcte pohyb (posunut´ı) na nejhlubˇs´ı u ´rovni pyramidy Lm , tedy na sn´ımku s nejniˇzˇs´ım rozliˇsen´ım. Pot´e se v´ ysledek v´ ypoˇctu propaguje na u ´roveˇ n vyˇsˇs´ı (Lm − 1) jako poˇca´teˇcn´ı odhad posunut´ı d pro u ´roveˇ n (Lm − 1). Tento proces se opakuje aˇz na u ´roveˇ n L = 0, tedy na p˚ uvodn´ı rozliˇsen´ı vstupn´ıho sn´ımku. T y jsme si Mˇejme poˇca´teˇcn´ı odhad optick´eho toku na u ´rovni L, gL = gxL gyL , kter´ spoˇcetli na u ´rovni L + 1. Pot´e pro spoˇcten´ı optick´eho toku pro u ´roveˇ n L mus´ıme urˇcit vektor zbytkov´eho posunut´ı dL , pro kter´ y je chybov´a funkce L minim´aln´ı L (dL ) = L (dLx , dLy ) =
X
2 L It−1 (xi ) − ItL (xi + gL + dL ) .
(16)
xi ∈Ω
Velikost integraˇcn´ıho okna (2ωx + 1) × (2ωy + 1) se mezi jednotliv´ ymi u ´rovnˇemi nemˇen´ı a poˇc´ateˇcn´ı odhad zmˇeny polohy gL je pouˇzit pro pˇredzpracov´an´ı sn´ımku It . Vektor zbytkov´eho posunut´ı dL je n´aslednˇe mal´ y a je jednoduˇsˇs´ı jej spoˇc´ıst skrze standardn´ı krok KL algoritmu. 10/35
´ ALGORITMUS KLT 3.1 UPRAVENY Optick´ y tok mezi jednotliv´ ymi u ´rovnˇemi lze pˇrepoˇc´ıst pomoc´ı vztahu gL−1 = 2(gL + T dL ), kde jako poˇca´teˇcn´ı podm´ınku pro nejhlubˇs´ı u ´roveˇ n Lm vol´ıme gLm = 0 0 . Pro spoˇcten´ı vektoru dL−1 je nutn´e znovu prov´est minimalizaci rovnice L−1 (d)L−1 . PLm(16), V´ ysledn´ y vektor zbytkov´eho posunut´ı d m˚ uˇzeme urˇcit jako d = L=0 2L dL . V´ yznamnou v´ yhodou pyramidov´e implementace je pˇri v´ ypoˇctu vektoru dL , kter´ y m˚ uˇze b´ yt pro jednotliv´e u ´rovnˇe mal´ y, ale v celkov´em souˇctu d m˚ uˇze dosahovat vysok´ ych hodnot, pˇri zachov´an´ı relativnˇe mal´eho integraˇcn´ıho okna.
3.1.3
Iterativn´ı KLT
Na kaˇzd´e u ´rovni L je c´ılem nal´ezt vektor dL minimalizuj´ıc´ı funkci L (16). Z d˚ uvod˚ u opakov´an´ı shodn´ ych operac´ı na kaˇzd´e u ´rovni L nyn´ı provedeme odstranˇen´ı indexu L a uprav´ıme si pouˇzit´e sn´ımky ∀(x, y) ∈ [px − ωx − 1, px + ωx + 1] × [py − ωy − 1, py + ωy + 1] , . L A(x, y) = It−1 (x, y) ∀(x, y) ∈ [px − ωx , px + ωx ] × [py − ωy , py + ωy ] , . B(x, y) = ItL (x + gxL , y + gyL )
(17) (18)
Pro sn´ımek A(x, y) dojde ke zvˇetˇsen´ı rozsahu integraˇcn´ıho okna na (2ωx +3)×(2ωy +3), coˇz vyuˇzijeme d´ale v rovnici (19). Abychom zamezili chyb´am, provedeme zmˇenu znaˇcen´ı T i pro vektor posunut´ı ν¯ = νx νy = dL a pro pozici sledovan´eho objektu p = T px py = uL . S t´ımto nov´ ym znaˇcen´ım provedeme u ´pravu rovnice (16) na (¯ ν ) = (νx , νy ) =
px +ωx
py +ωy
X
X
(A(x, y) − B(x + νx , y + νy ))2
(19)
x=px −ωx y=py −ωy
V optimu t´eto rovnice plat´ı
∂(¯ ν) ∂(¯ ν)
= 0 0
T
, po dosazen´ı a upraven´ı rovnice (19)
ν¯=¯ νopt
z´ısk´ame px +ωx X ∂(¯ ν ) = −2 ∂(¯ ν ) ν¯=¯νopt x=p −ω x
Sn´ımek ν¯ = 0 protoˇze
py +ωy
X x
(A(x, y) − B(x + νx , y + νy )) ·
∂B ∂x
∂B ∂y
(20)
y=py −ωy
B(x + νx , y + νy ) nyn´ı rozvineme v Taylor˚ uv polynom prvn´ıho ˇra´du v bodˇe T 0 , coˇz m˚ uˇzeme prov´est s vysokou pravdˇepodobnost´ı na spr´avn´e aproximace, oˇcek´av´ame pouze mal´ y vektor posunut´ı (kv˚ uli pouˇzit´ı pyramid)
px +ωx y +ωy X pX ∂B ∂B ∂(¯ ν) ∂B ≈ −2 A(x, y) − B(x, y) − ∂B ¯ · ∂x ∂y , (21) ∂x ∂y ν ∂(¯ ν) x=px −ωx y=py −ωy ∂B kde matice ∂B pˇredstavuje vektor gradientu sn´ımku. Vztah (A(x, y) − B(x, y)) ∂x ∂y T m˚ uˇzeme ch´apat jako derivaci sn´ımku v ˇcase v bodˇe x y
∀(x, y) ∈ (px − ωx , px + ωx ) × (py − ωy , py + ωy ), . δI(x, y) = A(x, y) − B(x, y)
(22) 11/35
´ ALGORITMUS KLT 3.1 UPRAVENY Nyn´ı si oznaˇcme ∂B I . ∂x ∇I = x = ∂B Iy ∂y
(23)
Derivace sn´ımku Ix a Iy m˚ uˇzeme spoˇc´ıst pˇr´ımo ze sn´ımku A(x, y), pˇres okol´ı (2ωx + 1) × (2ωy + 1) bodu p, nez´avisle na sn´ımku B(x, y). Pˇrep´ıˇseme rovnici (21) do tvaru px +ωx X 1 ∂(¯ ν) ≈ 2 ∂ ν¯ x=p −ω x
1 2
∂(¯ ν) ∂ ν¯
px +ωx
T
X
≈
py +ωy
X x
(∇I T ν¯ − δI)∇I T ,
y=py −ωy
py +ωy
X I 2 Ix Iy δII x x ν¯ − Ix Iy Iy2 δIIy
(24)
x=px −ωx y=py −ωy
Zavedeme si substituci . G=
px +ωx
X
py +ωy
X I 2 Ix Iy x Ix Iy Iy2
x=px −ωx y=py −ωy
. ¯b =
px +ωx
X
py +ωy
X δIIx δIIy
(25)
x=px −ωx y=py −ωy
Rovnici (24) s pomoc´ı t´eto substituce m˚ uˇzeme pˇrepsat do tvaru 1 2
∂(¯ ν) ∂ ν¯
T
≈ G¯ ν − ¯b.
(26)
Z t´eto rovnice pak m˚ uˇzeme urˇcit optim´aln´ı vektor optick´eho toku jako ν¯opt = G−1¯b. Tento vztah plat´ı pouze za pˇredpokladu, ˇze matice G je invertovateln´a, coˇz odpov´ıd´a tomu, ˇze sn´ımek A(x, y) obsahuje informace o gradientu v obou os´ach x, y pro okol´ı bodu p. Tento v´ yraz je z´akladn´ı rovnice KL algoritmu pro optick´ y tok, plat´ıc´ı pro mal´a posunut´ı, kv˚ uli pouˇzit´ı Taylorova rozvoje prvn´ıho ˇr´adu. V praxi je pro dosaˇzen´ı v´ ysledku tˇreba iterovat nˇekolikr´at (Newton-Raphsonova metoda).
12/35
´ ALGORITMUS KLT 3.1 UPRAVENY Nyn´ı si pop´ıˇseme samotn´ y iterativn´ı algoritmus: 1. Mˇejme index iterace k s poˇca´teˇcn´ı hodnotou 1. Pro k−1 k ≥ 1 pak pˇredpokl´adejme ν x poˇca´teˇcn´ı odhad vektoru posunut´ı ν¯k−1 = , pro kter´ y mˇejme nov´ y posuνyk−1 nut´ y sn´ımek Bk ∀(x, y) ∈ (px − ωx , px + ωx ) × (py − ωy , py + ωy ), Bk (x, y) = B(x + νxk−1 , y + νyk−1 ).
(27)
k ηx minimalizuj´ıc´ı chybovou 2. C´ılem je urˇcit vektor zbytkov´eho posunut´ı η¯ = ηyk funkci k
k
k
k
(¯ η )=
(ηxk , ηyk )
=
px +ωx
py +ωy
X
X
2 A(x, y) − Bk (x + ηxk , y + ηyk )) .
(28)
x=px −ωx y=py −ωy
ˇ sen´ım t´eto minimalizace je (podobnˇe jako dˇr´ıve uvedeno) vztah η¯k = G−1¯bk , 3. Reˇ kde ¯bk je dvouˇr´adkov´ y sloupcov´ y vektor py +ωy
px +ωx
¯bk =
X δIk (x, y)Ix (x, y) , δIk (x, y)Iy (x, y)
X
(29)
x=px −ωx y=py −ωy
kde δIk pˇredstavuje k-t´ y rozd´ılov´ y sn´ımek definovan´ y jako ∀(x, y) ∈ (px − ωx , px + ωx ) × (py − ωy , py + ωy ), δIk (x, y) = A(x, y) − Bk (x, y).
(30)
4. Pˇred zaˇc´atkem iterace si m˚ uˇzeme spoˇc´ıst derivace sn´ımk˚ u Ix a Iy (v okol´ı bodu p) a matici G, kter´a tak´e z˚ ust´av´a konstantn´ı napˇr´ıˇc iteracemi. D´ıky tomuto zjednoduˇsen´ı budeme v pr˚ ubˇehu iterov´an´ı bˇehem kroku k pˇrepoˇc´ıt´avat pouze vektory ¯bk a ν¯k−1 . Po spoˇcten´ı zbytkov´eho optick´eho toku η¯k provedeme aktualizaci odhadu vektoru posunut´ı ν¯k pro dalˇs´ı krok iterace k + 1 jako ν¯k = ν¯k−1 + η¯k . Iterov´an´ı prov´ad´ıme tak dlouho, dokud nen´ı zbytkov´ y vektor posunut´ı menˇs´ı neˇz stanoven´a mez, pˇr´ıpadnˇe nen´ı dosaˇzeno urˇcit´eho poˇctu krok˚ u iterace. V prvn´ım kroku T 0 iterace pro k = 1 si stanov´ıme poˇc´ateˇcn´ı odhad ν¯ = 0 0 . Pˇredpokl´adejme, ˇze jsme k dosaˇzen´ı konvergence potˇrebovali celkem K krok˚ u, v´ ysledn´e ˇreˇsen´ı m˚ uˇzeme zapsat jako L
K
ν¯ = d = ν¯ =
K X
η¯k .
(31)
k=1
13/35
´ ALGORITMUS KLT 3.1 UPRAVENY
3.1.4
Sledov´ an´ı objektu pobl´ıˇ z okraj˚ u sn´ımku
Pro sledovac´ı algoritmus je uˇziteˇcn´e, aby byl schopn´ y sledovat vybran´ y objekt v cel´em vstupn´ım sn´ımku, tedy i v jeho okraj´ıch. Pokud m´ame Lm jakoˇzto nejhlubˇs´ı u ´roveˇ n pyramidy a integraˇcn´ı okno o velikosti (2ωx + 1) × (2ωy + 1), pak zak´azan´a oblast“ ” ych bod˚ u od okraje minul´eho sn´ımku. V t´eto zasahuje 2Lm ωx (resp. 2Lm ωy )7 obrazov´ oblasti pokraˇcuje algoritmus upraven´ ym zp˚ usobem, a to tak, ˇze v´ ypoˇcet prob´ıh´a pˇres obrazov´e body sn´ımku, kter´e jsou na pr˚ uniku integraˇcn´ıho okna a platn´ ych obrazov´ ych bod˚ u uvnitˇr sn´ımku (nepˇres´ahneme pˇri v´ ypoˇctu sum pˇres okraj). Toto se t´ yk´a sn´ımk˚ u Ix (x, y), Iy (x, y) a δIk (x, y). Tak´e pˇri kaˇzd´e iteraci bude potˇreba prov´est pˇrepoˇcten´ı matice G a n´aslednˇe vektor ¯bk , protoˇze jiˇz nad´ale matice G nebude konstantn´ı. T px py opust´ı sn´ımek Pokud ovˇsem sledovan´ y objekt, pˇredstavovan´ y bodem p = px + gxL + νxk−1 L opust´ı sn´ımek ItL , It−1 , pˇr´ıpadnˇe jemu odpov´ıdaj´ıc´ı vyhled´avan´ y bod py + gyL + νyk−1 prohlaˇsujeme objekt za ztracen´ y.
3.1.5
Prohl´ aˇ sen´ı objektu za ztracen´ y
Jak bylo zm´ınˇeno v podkapitole v´ yˇse (3.1.4), objekt prohl´as´ıme za ztracen´ y, pokud L L uˇzeme prohl´asit objekt za ztracen´ y, pokud chyopust´ı jeden ze sn´ımk˚ u It−1 , It . D´ale m˚ bov´a funkce (d) v rovnici (13) je vyˇsˇs´ı, neˇz je definovan´a mez. Tuto mez je obt´ıˇzn´e pevnˇe stanovit, proto vol´ıme dynamicky stanovenou dle postupu, kter´ y je uveden´ y v bakal´aˇrsk´e pr´aci [6]. Ta vych´az´ı z posledn´ıch 10 hodnot chybov´e funkce z nichˇz si vypoˇc´ıt´ame pr˚ umˇer e¯ a maxim´aln´ı hodnotu z 10 chyb max10 (e). Tuto dvojici hodnot dosad´ıme do vzorce: gmez =
max(e) + e¯ , m
(32)
kde gmez je stanoven´a mez a m pak empiricky urˇcen´a hodnota, dle bakal´aˇrsk´e pr´ace m = 2, 5. S touto mez´ı pak m˚ uˇzeme pro kaˇzdou sekvenci l´epe stanovit, kdy je objekt ztracen´ y a kdy nikoliv.
7
Pro kaˇzdou u ´roveˇ n pyramidy se jedn´a o ωx , resp. ωy obrazov´ ych bod˚ u.
14/35
Kapitola 4
Implementace Zvolen´ y algoritmus, popsan´ y v kapitole 3 (2.3.2), jsme implementovali do st´avaj´ıc´ıho k´odu SSD algoritmu tak, aby oba algoritmy byly od sebe oddˇelen´e. Tato implementace je realizov´ana s pouˇzit´ım knihovny OpenCV pro jazyk C++, v nˇemˇz je napsan´ y v´ ysledn´ y algoritmus. Z knihovny jsme vyuˇzili ˇc´asti funkc´ı, kter´e se t´ ykaj´ı KL algoritmu. Implementaci jsme provedli tak, aby v´ ysledn´ y program byl pˇreloˇziteln´ y pro dvˇe poˇzadovan´e platformy, Windows a Linux. V k´odu jsme provedli dodateˇcn´e zmˇeny, napˇr. sledov´an´ı vybran´eho objektu na u ´rovni sub-pixel˚ u, spuˇstˇen´ı algoritmu z v´ıce bod˚ u a naˇc´ıt´an´ı sekvenc´ı ze souboru.
4.1 4.1.1
Implementace navrˇ zen´ eho algoritmu P˚ uvodn´ı sch´ ema programu
Strukturu programu na obr´azku (4) m˚ uˇzeme rozdˇelit na vnˇejˇs´ı a vnitˇrn´ı ˇca´st. Ve vnˇejˇs´ı ˇc´asti je pˇrevodn´ık USB/CAN slouˇz´ıc´ı pro komunikaci ˇr´ıd´ıc´ım syst´emem kamerov´e hlavice a digitiz´er analogov´eho sign´alu pro pˇrevod vstupn´ıho videosign´alu kamery do digit´aln´ıho sign´alu zpracov´avan´eho poˇc´ıtaˇcem. Ve vnitˇrn´ı ˇc´asti jsou funkce ˇctveˇrice hlavn´ıch vl´aken (oznaˇcen´e textem Thread“) a dvojice rozhran´ı ( interface“) ” ” zastˇreˇsuj´ıc´ı sledovac´ı algoritmus, resp. dva r˚ uzn´e druhy pouˇz´ıvan´ ych USB/CAN pˇrevodn´ık˚ u. V n´asleduj´ıc´ıch odstavc´ıch si pop´ıˇseme ˇctveˇrici hlavn´ıch vl´aken programu a pouˇz´ıvan´e struktury v p˚ uvodn´ım programu s SSD sledovac´ım algoritmem. 4.1.1.1
Vl´ akno ThrTracking
Souˇc´ast´ı tohoto vl´akna je funkce ProcThreadTrack uveden´a ve sch´ematu (4), kter´a za sv´eho pr˚ ubˇehu vol´a funkci processTrack. Tato funkce jako vstupn´ı promˇenn´e pˇrij´ım´a rozmˇery sn´ımku image act, v nˇemˇz hled´ame sledovan´ y objekt. ProcessTrack je stavov´ y automat bez n´avratov´e hodnoty, kter´ y rozliˇsuje ˇsestici stav˚ u: 1. Zaˇca´tek sledov´an´ı ´ eˇsn´e nalezen´ı sledovan´eho objektu ve sn´ımku z kamery 2. Uspˇ ˇ asteˇcn´a ztr´ata sledovan´eho objektu (napˇr. kr´atkodob´ 3. C´ y z´akryt) ´ a ztr´ata sledovan´eho objektu (objekt nebyl nalezen v pr˚ 4. Upln´ ubˇehu 5 sn´ımk˚ u, zat´ımco byl ve stavu 3) 5. Chyba, jej´ımˇz d˚ usledkem je sledovan´ y objekt povaˇzov´an za ztracen´ y
15/35
ˇ EHO ´ 4.1 IMPLEMENTACE NAVRZEN ALGORITMU
Obr´azek 4: Blokov´e sch´ema proces˚ u v programu obrazov´e zpˇetn´e vazby, pˇrevzato z dokumentace projektu MAGYSKA. 6. Zastaven´ı sledov´an´ı Za bˇehu stavov´eho automatu doch´az´ı k vol´an´ı funkce objectTrack, jej´ımˇz vstupem je odkaz do operaˇcn´ı pamˇeti poˇc´ıtaˇce s uloˇzen´ ym aktu´aln´ım sn´ımkem z kamery (v nˇemˇz budeme hledat sledovan´ y objekt) a rozmˇery tohoto sn´ımku. V t´eto funkci pouˇz´ıv´ame line´arn´ıho prediktoru budouc´ı polohy sledovan´eho objektu z jeho pˇredchoz´ıho pohybu. Pokud je stav automatu 2 nebo 3, prob´ıh´a hlavn´ı funkce sledovac´ıho algoritmu SSD locateGrayModel. Pˇri stavu automatu 2 prob´ıh´a aktualizov´an´ı modelu sledovan´eho objektu pomoc´ı vztahu (3). Pokud doˇslo v pr˚ ubˇehu sledov´an´ı ke zmˇenˇe zoomu kamery, dojde k pˇrepoˇcten´ı poloh intenzit v modelu s vyuˇzit´ım referenˇcn´ı tabulky pro pˇrepoˇcet. LocateGrayModel jako vstupn´ı parametry pˇrij´ım´a aktu´aln´ı sn´ımek, model sledovan´eho objektu a polohu sledovan´eho objektu z pˇredchoz´ıho kroku. V t´eto funkci implementujeme rovnici vyj´adˇrenou matematicky v (1), jej´ı n´avratov´a hodnota je nalezen´a pozice sledovan´eho objektu v aktu´aln´ım sn´ımku a j´ı odpov´ıdaj´ıc´ı hodnota kriteri´aln´ı chybov´e funkce. Pokud hodnota chybov´e funkce je vyˇsˇs´ı neˇz stanoven´a v konfiguraˇcn´ım souboru, ˇci nedoˇslo k nalezen´ı sledovan´eho objektu, pˇrepneme stav stavov´eho automatu z 2 na 3 za pˇredpokladu, ˇze ve stavu 3 jiˇz nen´ı. Za bˇehu tohoto vl´akna doch´az´ı ke pˇrepisov´an´ı parametr˚ u struktur track cmd a track stat, kter´e v sobˇe maj´ı uloˇzenou konfiguraci sledovac´ıho algoritmu, polohu sledovan´eho objektu, atd. 4.1.1.2
Vl´ akno ThrCapture
Toto vl´akno m´a na starost zpracov´an´ı pˇr´ıchoz´ıch dat z digitiz´eru analogov´eho sign´alu, do nˇejˇz vstupuj´ı analogov´a video data poˇrizovan´a kamerou. Z´akladn´ı funkce ProcThreadCapture kontroluje aktu´aln´ı stav komunikace s digitiz´erem a konzistenci vˇcetnˇe platnosti 16/35
ˇ EHO ´ 4.1 IMPLEMENTACE NAVRZEN ALGORITMU pˇrij´ıman´ ych dat. Pˇrij´ıman´a data jsou ukl´ad´ana do z´asobn´ıku dat, z nˇejˇz se pˇri ovˇeˇren´ı kompletnosti a spr´avn´ ych rozmˇer˚ u uloˇz´ı do datov´eho pole act image. Poˇr´ızen´a data jsou uloˇzen´a jako tˇr´ırozmˇern´a matice o rozmˇerech ˇs´ıˇrka×v´ yˇska×3, kde kaˇzd´a ze tˇr´ı vrstev obsahuje intenzity v obrazov´ ych bodech pro z´akladn´ı barvy RGB8 . Tuto tˇr´ıvrstvou matici pˇrevedeme do matice jednovrstv´e obsahuj´ıc´ı pouze odst´ıny ˇsedi. Pˇrepoˇcet provedeme pomoc´ı vzorce Hˇsed´a = 0, 2989 · R + 0, 5870 · G + 0, 1140 · B,
(33)
kde hodnota ˇsed´eho obrazov´eho bodu Hˇsed´a odpov´ıd´a postupn´emu seˇcten´ı jednotliv´ ych hodnot obrazov´eho bodu z jeho tˇr´ı hodnot vyjadˇruj´ıc´ıch barvu. T´ımto v´ ypoˇctem dostaneme matici obsahuj´ıc´ı intenzity obrazov´ ych bod˚ u z naˇcten´eho sn´ımku v rozsahu 0 aˇz 255, kter´e uloˇz´ıme do promˇenn´e pImgDir. Pˇri pouˇzit´ı programu pod operaˇcn´ım syst´emem Windows je zde k dispozici grafick´e uˇzivatelsk´e rozhran´ı, v nˇemˇz je zobrazeno video poˇrizovan´e kamerou (aktu´aln´ı sn´ımek act image). Pˇres toto video (5) je zobrazena souˇcasn´a poloha sledovan´eho objektu (ˇctverec odpov´ıdaj´ıc´ı velikosti sledovan´eho objektu) a stav stavov´eho automatu (vyj´adˇreno barvou ˇctverce). V grafick´em rozhran´ı jsou d´ale kontroln´ı tlaˇc´ıtka pro ovl´ad´an´ı sledovac´ıho algoritmu: • Volba velikosti sledovan´eho objektu (velikost okol´ı) • Zapnut´ı / vypnut´ı sledovac´ıho algoritmu • Inicializov´an´ı kalibraˇcn´ıho pohybu kamerov´e hlavice
4.1.1.3
Vl´ akna ThrCommTx a ThrCommRx
Tato dvojice vl´aken zajiˇst’uje komunikaci sleduj´ıc´ıho algoritmu pomoc´ı rozhran´ı TrackerInterface s rozhran´ım CANInterface. Ve sch´ematu (4) jim odpov´ıdaj´ı hlavn´ı funkce ProcThreadTx a ProcThreadRx. Rozhran´ı CANInterface obsahuje funkce pro obousmˇernou komunikaci sledovac´ıho algoritmu s ˇr´ıd´ıc´ım syst´emem kamerov´e hlavice pomoc´ı specifick´ ych zpr´av pro ˇcten´ı a z´apis hodnot z CAN sbˇernice. Toto ˇcten´ı a z´apis prob´ıh´a pomoc´ı funkc´ı v souborech CANCanlab.cpp a CANKvaser.cpp pro pouˇzit´e pˇrevodn´ıky USB/CAN. Funkce v tˇechto souborech obsahuj´ı upraven´e zpr´avy pro pouˇzit´ı ovladaˇc˚ u tˇret´ıch stran pro kaˇzd´ y pouˇzit´ y pˇrevodn´ık. Konkr´etn´ı pˇrevodn´ık USB/CAN a jeho parametry nastavujeme v konfiguraˇcn´ım souboru pomoc´ı promˇenn´ ych: • CAN device - pˇrevodn´ık Kvaser nebo Canlab • CAN port - pˇrednastaven´e ˇc´ıslo komunikaˇcn´ıho portu • CAN speed - nastaven´ı komunikaˇcn´ı rychlosti pouˇzit´e CAN sbˇernice v KB/s 8
R - ˇcerven´ a (red), G - zelen´ a (green) a B - modr´a (blue)
17/35
ˇ EHO ´ 4.1 IMPLEMENTACE NAVRZEN ALGORITMU
Obr´azek 5: Grafick´e uˇzivatelsk´e rozhran´ı se zobrazen´ım sledovan´eho objektu. Zelen´a barva ˇctverce odpov´ıd´a stavu automatu 1 a 2, ˇzlut´a by odpov´ıdala stavu 6, fialov´a 3 a ˇcerven´a stav˚ um 4 a 5.
4.1.2
Vyuˇ zit´ı knihovny OpenCV
Novˇe jsme pro pr´aci s obrazem pouˇzili knihovnu OpenCV. Knihovnu OpenCV jsme zvolili z d˚ uvodu velk´eho mnoˇzstv´ı implementovan´ ych funkc´ı pro pr´aci se sn´ımky a kv˚ uli pˇrenositelnosti k´odu mezi platformami (v naˇsem pˇr´ıpadˇe mezi platformou vyuˇz´ıvaj´ıc´ı operaˇcn´ı syst´em Windows a Linux). Naˇs´ım poˇzadavkem byla moˇznost volby pˇren´aˇset tento v´ ysledn´ y soubor mezi zaˇr´ızen´ımi bez nutnosti instalovat OpenCV knihovnu, pouˇz´ıv´ame nikoliv dynamick´ ych, ale statick´ ych knihoven. Nutnost instalace OpenCV do poˇc´ıtaˇce v kamerov´e hlavici by byla omezuj´ıc´ı, protoˇze se jedn´a o nepˇr´ıliˇs v´ ykonn´e zaˇr´ızen´ı s malou u ´loˇznou kapacitou. Statick´e knihovny se pˇri pˇrekladu k´odu zahrnuj´ı do programu jiˇz pˇri kompilov´an´ı do spustiteln´eho souboru, nikoliv jako knihovny dynamick´e, kter´e jsou vol´any spuˇstˇen´ ym souborem aˇz pˇri jejich prvn´ım pouˇzit´ı. Statick´e knihovny zvˇetˇs´ı velikost v´ ysledn´eho souboru, ale zajist´ı, ˇze pro spouˇstˇen´ı programu se sledovac´ım algoritmem nebude tˇreba dodateˇcn´ ych soubor˚ u. Pro tuto aplikaci jsme pouˇzili v´ıcevl´aknovou realizaci, kter´e spolu sd´ıl´ı nˇekolik promˇenn´ ych. Tyto promˇenn´e pouˇz´ıv´ame pro definov´an´ı stavu algoritmu, komunikace s ˇr´ıd´ıc´ım syst´emem a oper´atorem. Abychom zamezili vz´ajemn´emu pˇrepisov´an´ı tˇechto hodnot a probl´em˚ um, pouˇz´ıv´ame zamyk´an´ı vybran´ ych u ´sek˚ u k´odu pro to vl´akno, kter´e bude pˇristupovat ke sd´ılen´ ym promˇenn´ ym a ˇc´ıst ˇci mˇenit jejich hodnoty. Pro naˇse ˇreˇsen´ı je pouˇzita verze OpenCV ve verzi 2.4.10 z ˇr´ıjna roku 2014. 18/35
ˇ EHO ´ 4.1 IMPLEMENTACE NAVRZEN ALGORITMU
4.1.3
Upraven´ e sch´ ema programu
Vych´az´ıme z p˚ uvodn´ı implementace SSD algoritmu a programu, do kter´e zakomponov´av´ame naˇs´ı implementaci KL algoritmu. Z p˚ uvodn´ıho k´odu SSD algoritmu pouˇz´ıv´ame pouze funkce pracuj´ıc´ı s modelem M (nat´aˇcen´ı, aktualizace pˇri zmˇenˇe zoomu). Veˇsker´e promˇenn´e a datov´e typy jsme pˇrepsali do takov´ ych, se kter´ ymi pracuj´ı funkce OpenCV. Do vnitˇrn´ıch funkc´ı t´eto knihovny jsme nezasahovali, pouze jsme lok´alnˇe upravili funkce sledov´an´ı objektu tak, aby splˇ novali naˇse poˇzadavky. V n´asleduj´ıc´ıch odstavc´ıch si porovn´ame, jak se liˇs´ı implementace p˚ uvodn´ıho SSD a KLT algoritm˚ u sledov´an´ı. P˚ uvodn´ı sch´ema programu (4 z˚ ust´av´a nezmˇenˇen´e. Vstupn´ı promˇenn´e upraven´ ych funkc´ı z˚ ust´avaj´ı shodn´e s p˚ uvodn´ı implementac´ı, liˇs´ı se pouze v pouˇzit´ ych datov´ ych typech. 4.1.3.1
Vl´ akno ThrTracking
Implementace KLT algoritmu se v tomto vl´aknˇe a vnoˇren´ ych funkc´ıch liˇs´ı v pouˇzit´ ych datov´ ych struktur´ach pro uloˇzen´ı a pr´aci se sn´ımky, nepouˇz´ıv´ame tedy dynamicky alokovan´a pole 8 bitov´ ych hodnot, ale struktury Mat z knihovny OpenCV. Pˇr´ınosem t´eto struktury jsou pˇridan´e obsluˇzn´e funkce, slouˇz´ıc´ı mimo jin´e k jednoduch´emu pˇr´ıstupu k rozmˇeru uloˇzen´eho sn´ımku, kop´ırov´an´ı dat tohoto sn´ımku ˇci jednoduch´ y v´ ybˇer podoblasti sn´ımku. Funkce objectTrack z˚ ustala prakticky nezmˇenˇen´a, liˇs´ı se pouze t´ım, jak jsme pouˇzili model pro KL algoritmus. Pˇredpokl´adali jsme, ˇze pro sledov´an´ı pouˇz´ıv´ame z dvojice sn´ımk˚ u jeden jako model a druh´ y pro vyhled´an´ı nov´e polohy sledovan´eho objektu. Pˇri implementaci neprov´ad´ıme aktualizaci modelu pˇres celou jeho velikost, ale pouze pˇres okol´ı polohy sledovan´eho objektu v pˇredchoz´ım sn´ımku. T´ımto si uˇsetˇr´ıme v´ ypoˇcetn´ı kapacitu a zamez´ıme pˇrepisov´an´ı cel´e matice intenzit modelu. Funkci LocateGrayModel jsme nahradili funkc´ı KLDiffImg cv, kter´a obsahuje n´ami upravenou implementac´ı KLT algoritmu (funkce calcOpticalFlowPyrLK), kter´a je souˇc´ast´ı knihovny OpenCV (4.1.3.4). 4.1.3.2
Vl´ akno ThrCapture
V tomto vl´aknˇe pouˇz´ıv´ame stejnˇe jako v ostatn´ıch ˇc´astech k´odu strukturu Mat pro ukl´ad´an´ı a pr´aci se sn´ımky. Vstupn´ı sn´ımek act image je tˇr´ırozmˇern´a matice Mat, kterou pomoc´ı funkce ImportRGB24 cv napln´ıme. Tuto matici pak pomoc´ı funkce cvtColor z knihovny OpenCV pˇrevedeme do matice intenzit se stejnou ˇs´ıˇrkou a d´elkou. Pˇri pouˇzit´ı na poˇc´ıtaˇci s operaˇcn´ım syst´emem Windows zobrazujeme pˇri zachov´an´ı p˚ uvodn´ı funkcionality tak´e aktu´aln´ı model sledovan´eho objektu v lev´em horn´ım rohu grafick´eho uˇzivatelsk´eho rozhran´ı, obr´azek (4). 4.1.3.3
Vl´ akno ThrCommTx a ThrCommRx
Komunikaˇcn´ı vl´akna z˚ ustala shodn´a s p˚ uvodn´ı implementac´ı, pouze byla doplnˇena a pˇreps´ana tak, aby pouˇz´ıvala na platformˇe nez´avislou knihovnu Pthread pro spr´avu vl´aken a jejich komunikaci. 19/35
ˇ EHO ´ 4.1 IMPLEMENTACE NAVRZEN ALGORITMU 4.1.3.4
Funkce KLDiffImg cv a calcOpticalFlowPyrLK
ybˇeru typu sledovac´ıho algoritmu Implementace funkce KLDiffImg cv nab´ız´ı moˇznost v´ KL dle poˇctu startovn´ıch pozic (4.2.1), kter´e jsme zvolili v hlaviˇckov´em souboru ConfigDef.h(4.4). Spuˇstˇen´ı algoritmu z v´ıce startovn´ıch poloh (4.2.1) je implementov´ano pro hodnoty 1,9,25,36,49 a 81, ze kter´ ych pouˇz´ıv´ame nejjednoduˇsˇs´ı start z jedn´e polohy (shodn´e s p˚ uvodn´ı implementac´ı calcOpticalFlowPyrLK) a z 25 bod˚ u. Tyto body jsou vyb´ır´any tak, aby byly rovnomˇernˇe rozm´ıstˇeny po cel´e prohled´avan´e oblasti. Prohled´avan´a oblast je obd´eln´ık v konfiguraˇcn´ım souboru nastaviteln´a hodnotami promˇenyˇsku a search width pro ˇs´ıˇrku oblasti. Pˇri spuˇstˇen´ı algoritmu z n´ ych search height pro v´ jedn´e startovn´ı polohy vr´at´ıme souˇradnici sledovan´eho objektu s minim´aln´ı hodnotou chybov´e funkce (6). Pokud jsme vybrali start z v´ıce neˇz jedn´e pozice, prov´ad´ıme v´ ybˇer takov´e nalezen´e souˇradnice sledovan´eho objektu z uloˇzen´ ych poloh, pro nˇeˇz hodnota kriteri´aln´ı funkce (6) minim´aln´ı ze vˇsech uloˇzen´ ych hodnot pro jednotliv´e souˇradnice bod˚ u. Jako n´avratovou hodnotu funkce KLDiffImg cv pak nastavujeme polohu, pro n´ıˇz byla chybov´a funkce minim´aln´ı. Upraven´a funkce calcOpticalFlowPyrKL umoˇzn ˇuje upraven´ı zvl´aˇst’ velikosti okol´ı sledovan´eho objektu a prohled´avan´e oblasti pro nalezen´ı souˇradnic objektu. V pr˚ ubˇehu funkce dojde k vypoˇc´ıt´an´ı pyramidov´e konstrukce pro oba vstupn´ı sn´ımky, po kter´e dojde ke spuˇstˇen´ı gradientn´ıho algoritmu. Algoritmus je spouˇstˇen ze zadan´eho poˇctu bod˚ u rozm´ıstˇen´ ych v prohled´avan´e oblasti. Pro kaˇzd´ y bod probˇehne minimalizaˇcn´ı gradientn´ı algoritmus, kter´ y vr´at´ı souˇradnici objektu s minim´aln´ı hodnotou chybov´e funkce (6) po skonˇcen´ı iterov´an´ı. Pro vˇsechny body si uloˇz´ıme hodnotu chybov´e funkce a nalezen´e souˇradnice.
4.1.4
Naˇ c´ıt´ an´ı ze souboru
Pro potˇreby testov´an´ı algoritmu KLT i SSD jsme pˇridali moˇznost naˇc´ıt´an´ı sekvenc´ı sn´ımk˚ u ze sloˇzky s lok´alnˇe uloˇzen´ ymi daty. Pˇri inicializaci programu je potˇreba zvolit pouze c´ılovou sloˇzku v poˇc´ıtaˇci, poˇca´teˇcn´ı sn´ımek sekvence a polohu sledovan´eho objektu v souˇradnic´ıch vzhledem k lev´emu horn´ımu rohu sn´ımku. Tyto parametry nastav´ıme v konfiguraˇcn´ım souboru Ini parameter.par pomoc´ı promˇenn´ ych data path, tracking col a tracking row. Promˇenn´e data path pˇred´ame cestu k prvn´ımu sn´ımku naˇc´ıtan´e sekvence v absolutn´ı podobˇe ( data path = C:\Data\Sekvence\01-00%003d.png) ˇci v relativn´ı ( data path = ..\.\Sekvence\01-00%003d.png). Zad´an´ı prvn´ıho sn´ımku sekvence prob´ıh´a pomoc´ı konstrukce 01-00%003d.png, kter´a se skl´ad´a ze zaˇc´atku n´azvu (01-00, kter´ y se u kaˇzd´eho sn´ımku opakuje), z poˇradov´eho ˇc´ısla sn´ımku sekvence (%003d)9 a d´ale datov´eho typu sn´ımku (.png). U sekvenc´ı pˇredpokl´ad´ame, ˇze jsou sn´ımky ˇc´ıslovan´e od ˇc´ısla 1 a v ˇc´ıseln´e sekvenci jejich poˇrad´ı nejsou mezery. Zad´an´ı poˇca´teˇcn´ı polohy sledovan´eho objektu prov´ad´ıme vzhledem k prvn´ımu sn´ımku sekvence. Promˇenn´a tracking row (resp. tracking col) obsahuje ˇra´dkovou (resp. sloupcovou) souˇradnici sledovan´eho objektu v cel´ ych ˇc´ıslech. Oba algoritmy pot´e od prvn´ıho sn´ımku sleduj´ı vybran´ y 9
Zad´ an´ım t´eto konstrukce ˇr´ık´ ame, ˇze chceme, aby program d´ale naˇc´ıtal sn´ımky s ˇc´ıslem od 1(resp. 0) do 999. Tato konstrukce lze dle potˇreby upravit, tvoˇr´ı se podobnˇe jako form´atovan´ y v´ ystup v programovac´ım jazyce C++.
20/35
4.3 IMPLEMENTACE PRO LINUX objekt napˇr´ıˇc celou zvolenou sekvenc´ı, dokud sekvence neskonˇc´ı ˇci nedojde ke ztr´atˇe sledovan´eho objektu. Naˇc´ıt´an´ı sn´ımk˚ u prob´ıh´a pomoc´ı funkce (sequence) z knihovny OpenCV, kter´a naˇcte celou sekvenci sn´ımk˚ u a z n´ıˇz postupnˇe vyˇc´ıt´ame sn´ımky do struktury Mat patˇr´ıc´ı knihovnˇe OpenCV.
4.2
Dalˇs´ı u ´pravy algoritmu
4.2.1
Vyhled´ av´ an´ı z v´ıce pozic
Pˇri rychl´em pohybu kamery i sledovan´eho objektu m˚ uˇze objekt mezi sn´ımky vykonat velk´ y pohyb (posun) a KL algoritmus sledov´an´ı by mohl objekt prohl´asit za ztracen´ y. D´ale ke ztr´atˇe m˚ uˇze doj´ıt, pokud se sledovan´ y objekt pˇrekr´ yv´a s aktu´aln´ım modelem z menˇs´ı ˇca´sti jak 50 procent d´elky modelu, pokud je v dostateˇcn´e bl´ızkosti aktu´aln´ı polohy dostateˇcnˇe podobn´ y objekt n´ami sledovan´emu. Abychom takto zp˚ usobenou ztr´atou sledovan´eho objektu zabr´anili, rozˇs´ıˇrili jsme KLT algoritmus tak, aby predikci poˇca´teˇcn´ı polohy ve sn´ımku nebral pouze polohu sledovan´eho objektu ve sn´ımku pˇredchoz´ım. Rozˇs´ıˇren´ı spoˇc´ıv´a v tom, ˇze jako predikovanou polohu vol´ıme postupnˇe z v´ıce bod˚ u rovnomˇernˇe rozm´ıstˇen´ ych po cel´e prohled´avan´e oblasti v pˇredchoz´ım sn´ımku. Kaˇzd´a tato startovn´ı predikovan´a poloha po dokonˇcen´ı iterov´an´ı (3.1.3) jako v´ ysledek vr´at´ı polohu s minim´aln´ı hodnotou kriteri´aln´ı chybov´e funkce (13). Z tˇechto vˇsech vr´acen´ ych minim, kter´a ve vˇetˇsinˇe pˇr´ıpad˚ u odpov´ıdaj´ı stejn´e poloze, vybereme to s nejniˇzˇs´ı hodnotou. D´ıky zvˇetˇsen´ı poˇctu startovn´ıch poloh pro predikci m˚ uˇzeme pˇredpokl´adat, ˇze sledovac´ı algoritmus neskonˇc´ı v lok´aln´ım minimu, ale v minimu glob´aln´ım.
4.2.2
Pouˇ zit´ı pohybliv´ e desetinn´ eˇ c´ arky
Oproti implementaci SSD pouˇz´ıv´ame pˇri sledov´an´ı a pr´aci se sn´ımky souˇradnic s pohyblivou desetinnou ˇc´arkou, nam´ısto p˚ uvodn´ıch celoˇc´ıseln´ ych souˇradnic. Toto zv´ yˇsen´ı pˇresnosti zlepˇsilo chov´an´ı sledovac´ıho algoritmu pˇri velmi mal´ ych posunech mezi sn´ımky, coˇz zp˚ usobovalo opakovan´e zmˇeny polohy v rozsahu jednoho obrazov´eho bodu. Takov´eto ˇcast´e a mal´e zmˇeny vyvol´avaly zbyteˇcn´e odchylky pro ˇr´ıd´ıc´ı syst´em.
4.3
Implementace pro Linux
V r´amci pr´ace bylo tak´e c´ılem upravit algoritmus i samotn´ y program tak, aby byl spustiteln´ y na ˇr´ıd´ıc´ı jednotce kamerov´e hlavice, kter´a funguje s operaˇcn´ım syst´emem Linux. Doˇslo tedy k oddˇelen´ı p˚ uvodn´ıch vl´aken aplikace a vytvoˇren´ı vl´aken nov´ ych, s vyuˇzit´ım knihovny Pthread [7], poskytuj´ıc´ı Linuxovou spr´avu vl´aken do operaˇcn´ıho syst´emu Windows. D´ale doˇslo k u ´pravˇe nˇekter´ ych datov´ ych typ˚ u a funkc´ı, kter´e jsou v´azan´e na operaˇcn´ı syst´em Windows tak, aby v´ ysledn´ y k´od mohl b´ yt pˇreloˇziteln´ y na zaˇr´ızen´ı s OS Linux. Pro n´asledn´e spuˇstˇen´ı algoritmu pˇr´ımo na kamerov´e hlavici je tˇreba vˇzdy k´od upravit tak, aby odpov´ıdal potˇreb´am pouˇzit´eho HW vybaven´ı (komunikace programu a HW, atd.).
21/35
´ ER ˇ VHODNEHO ´ ´ ´I 4.5 VYB OBJEKTU KE SLEDOVAN Verze pˇrekl´adan´a pod operaˇcn´ım syst´emem nem´a, na rozd´ıl od verze pro OS Windows, grafick´e uˇzivatelsk´e rozhran´ı a program bˇeˇz´ı pouze v pˇr´ıkazov´e ˇra´dce (termin´alov´e okno pro OS Linux). Toto sniˇzuje v´ ypoˇcetn´ı a grafick´e n´aroky na HW vybaven´ı v kamerov´e hlavici, kter´a pak m˚ uˇze komunikovat pouze pomoc´ı textov´eho v´ ypisu. Veˇsker´e nastavov´an´ı prob´ıh´a ˇcten´ım dat z konfiguraˇcn´ıho souboru nebo konfiguraˇcn´ımi zpr´avami z termin´alu oper´atora.
4.4
Pˇreklad
Implementaci navrˇzen´eho algoritmu a zmˇen jsme provedli tak, aby byla od p˚ uvodn´ıho k´odu kompletnˇe oddˇelena a my jsme si mohli pˇri kompilov´an´ı zvolit, kter´ y algoritmus a jak´e jeho varianty si pˇrejeme pouˇz´ıt. Tato moˇznost v´ ybˇeru je umoˇznˇena d´ıky hlaviˇckov´emu souboru ConfigDef.h. Tento v´ ybˇer m˚ uˇzeme uˇcinit vybr´an´ım promˇenn´e kl´ıˇcov´ ym slovem #define: ych sekvenc´ı z uloˇzen´ ych dat na • OFFLINE TRACK - slouˇz´ı k naˇc´ıt´an´ı pˇripraven´ disku poˇc´ıtaˇce specifikovan´ ych v souboru Ini parameters.par (4.1.4) uvodn´ıho SSD • KL TRACKER - pouˇzit´ı navrˇzen´eho KL algoritmu nam´ısto p˚ • TIME MEASURE - mˇeˇren´ı doby pr˚ ubˇehu algoritmu sledov´an´ı a uloˇzen´ı namˇeˇren´ ych hodnot do souboru timemeasure.txt • ALLOWED ROTATE MODEL - povolen´ı dodateˇcn´eho nat´aˇcen´ı modelu po nalezen´ı polohy sledovan´eho objektu pro pˇresnˇejˇs´ı aktualizov´an´ı modelu objektu (pouˇziteln´e pro algoritmus SSD) • KL TRACKER i - zvolen´ı poˇctu startovac´ıch pozic algoritmu pro nalezen´ı souˇradnic objektu ve sn´ımku (4.2.1). Implementov´ano pro hodnoty i = 1, 9, 25, 36, 49, 81, pouˇz´ıv´ame pro hodnoty 1 a 25. • OPEN CV TRACKER - pro pouˇzit´ı knihovny OpenCV, pro KL algoritmus je nutn´e pouˇz´ıt. Slouˇz´ı k pˇrep´ın´an´ı p˚ uvodn´ı implementace SSD algoritmu v jazyce C/C++ a implementace s pouˇzit´ım knihovny OpenCV. Vyuˇzit´ım direktiv preprocesoru v jazyce C++ (#define, #ifdef, atd.) pro tvorbu podm´ınˇen´ ych pˇreklad˚ u (v z´avislosti na volbˇe parametru z v´ yˇse uveden´eho seznamu) sn´ıˇz´ıme velikost v´ ysledn´eho programu po kompilace zdrojov´ ych k´odu s v´ıce algoritmy.
4.5
V´ ybˇ er vhodn´ eho objektu ke sledov´ an´ı
Jako sledovan´ y objekt nejˇcastˇeji chceme zvolit takov´ y, kter´ y se dostateˇcnˇe odliˇsuje od sv´eho okol´ı a d´ıky ˇcemuˇz bude dobˇre sledovateln´ y. Pˇri soubˇeˇzn´em pohybu kamerov´e hlavice i objektu pro oper´atora u termin´alu nen´ı jednoduch´e pˇresnˇe zvolit objekt, co chce sledovat10 . Aby algoritmus sledoval opravdu objekt, kter´ y chtˇel oper´ator a ne 10
Objekt ke sledov´ an´ı oper´ ator vyb´ır´ a postupn´ ym nat´aˇcen´ım kamery tak, aby byl objekt uprostˇred zorn´eho pole kamery, nebo pˇr´ımou volbou objektu na dotykov´em displeji termin´alu.
22/35
´ ER ˇ VHODNEHO ´ ´ ´I 4.5 VYB OBJEKTU KE SLEDOVAN ˇ anek vych´az´ı pouze jeho ˇca´st s okol´ım, pouˇzijeme metodu popsanou v ˇcl´anku [8]. Cl´ z toho, ˇze pouˇzit´ı pouze hranov´eho detektoru pro nalezen´ı nejl´epe sledovateln´eho objektu nen´ı dostateˇcn´e, protoˇze napˇr. objekt s pouze svisl´ ymi hranami nemus´ı b´ yt dobˇre sledovateln´ y. V ˇcl´anku je tato metoda rozˇs´ıˇren´a o v´ ypoˇcet rozd´ılnosti“ bod˚ u z´ajmu ” mezi dvojic´ı sn´ımk˚ u, zkouˇs´ı tedy sledovat detekovan´e rohy z prvn´ıho sn´ımku do sn´ımku druh´eho. Tato metoda vybere nejl´epe sledovatelnou oblast ve sn´ımku, tedy takovou, kterou bychom chtˇeli pravdˇepodobnˇe sledovat. Takov´a oblast nemus´ı b´ yt pouze jedna, ale ve sn´ımku jich m˚ uˇze b´ yt nˇekolik. Pro n´aˇs k´od jsme zvolili implementaci v knihovnˇe OpenCV, kterou jsme upravili tak, aby n´am vyhovovala. Tato upraven´a metoda pˇri zad´an´ı poˇca´teˇcn´ı polohy sledovan´eho objektu prohled´a jeho nejbliˇzˇs´ı okol´ı (10 × 10 obrazov´ ych bod˚ u od startovn´ı polohy) a vybere takovou oblast, kter´a bude nejl´epe sledovateln´a v algoritmu. Poloha t´eto oblasti s vysokou pravdˇepodobnost´ı bude pˇredstavovat n´aˇs zvolen´ y objekt ke sledov´an´ı. Na obr´azku (6) porovn´av´ame volbu sledovan´eho objektu oper´atorem (ˇcerven´ y ˇctverec) a nejl´epe sledovatelnou oblast zvolenou algoritmem (zelen´ y ˇctverec).
Obr´azek 6: Volba sledovan´eho objektu pomoc´ı funkce goodFeaturesToTrack, ˇcerven´ y ˇctverec pˇredstavuje volbu oper´atora a zelen´ y ˇctverec upraven´e souˇradnice objektu.
23/35
Kapitola 5
Experiment´ aln´ı v´ ysledky (testov´ an´ı algoritmu) Implementovan´ y algoritmus jsme testovali na 16 sekvenc´ıch sn´ımk˚ u poˇr´ızen´ ych z videoz´aznam˚ u, kter´e byly poˇr´ızeny pˇri testovac´ıch letech kamerov´e hlavice pˇri zavˇeˇsen´ı na spodn´ı ˇca´sti vrtuln´ıku. V tˇechto sekvenc´ıch je vˇzdy sledov´an objekt z´ajmu, u nˇejˇz pˇredpokl´ad´ame dostateˇcnou odliˇsitelnost od pozad´ı a kter´ y se pohybuje pobl´ıˇz stˇredu sn´ımku. Pouˇzit´e sn´ımky jsou uloˇzeny ve form´atu PNG pro zachov´an´ı vyˇsˇs´ı kvality sn´ımk˚ u. Rozliˇsen´ı sn´ımk˚ u je d´ano pouˇzitou kamerou 704 × 576 obrazov´ ych bod˚ u. Sekvence jsou uloˇzen´e v oddˇelen´e sloˇzce na poˇc´ıtaˇci Data\Sekvence a jsou ˇc´ıslov´any ve tvaru ˇc´ıslo sekvence-poˇrad´ı sn´ımku. Pro kaˇzdou sekvenci je d˚ uleˇzit´e dodrˇzen´ı inkrementace poˇrad´ı sn´ımku o 1 a ˇc´ısla (n´azvu) sekvence. Algoritmus pro porovn´an´ı algoritm˚ u SSD a KLT naˇc´ıt´a sekvence po jednom sn´ımku. Z kaˇzd´e sekvence je na obr´azku (napˇr. 7) zobrazen sledovan´ y objekt (resp. jeho model), kter´ y jsme inicializovali na poˇca´tku sekvence. Sledovali jsme napˇr. jedouc´ı automobil, ˇca´st tepeln´e elektr´arny, d˚ um na samotˇe, hrad a osoby. Kromˇe sekvenc´ı s jedouc´ımi automobily jsou vˇsechny objekty stacion´arn´ı a k pohybu doch´az´ı pouze vlivem pohybuj´ıc´ı se kamery. U sekvenc´ı s jedouc´ımi automobily doch´az´ı k pohybu sledovan´eho objektu i kamery. Velikost sledovan´eho objektu pouˇz´ıv´ame ˇctverec 40 × 40 obrazov´ ych bod˚ u, model sledovan´eho objektu (okol´ı polohy objektu, kter´e aktualizujeme) pouˇz´ıv´ame 60 × 60 obrazov´ ych bod˚ u a velikost prohled´avan´e oblasti, v n´ıˇz hled´ame sledovan´ y objekt je ˇctverec o rozmˇerech 50×50 obrazov´ ych bod˚ u. S rostouc´ı velikost´ı modelu a prohled´avan´e oblasti kvadraticky stoup´a n´aroˇcnost algoritmu a t´ım i doba bˇehu algoritmu. Pˇri zvolen´ı menˇs´ı velikosti sledovan´eho objektu, dos´ahneme v´ yrazn´e ˇcasov´e i v´ ypoˇcetn´ı u ´spory, ale jsme schopni pomoc´ı algoritmu sledovat pouze objekty srovnatelnˇe velik´e jako je nastaven´a velikost okol´ı polohy objektu. Pro aktualizov´an´ı modelu sledovan´eho objektu dle rovnice (3) pouˇz´ıv´ame hodnotu konstanty α = 0, 01. Tato hodnota odpov´ıd´a velmi pomal´emu zapom´ın´an´ı p˚ uvodn´ıho modelu (mˇen´ı se pouze 1% modelu). Pro pˇr´ıpady n´ami sledovan´ ych objekt˚ u pˇredpokl´ad´ame, ˇze jejich velikost, struktura a tvar se nebudou v ˇcase rychle mˇenit.
5.1
Sekvence
V sekvenc´ıch sn´ımk˚ u je sledov´an r˚ uzn´ y druh zvolen´ ych objekt˚ u pro ovˇeˇren´ı kvality algoritmu. Pro testov´an´ı algoritmu bylo pouˇzit 7 videoz´aznam˚ u ze zkuˇsebn´ıch let˚ u vrtuln´ıku s kamerovou hlavic´ı. Z´aznamy jsme rozdˇelili do sekvenc´ı sn´ımk˚ u, kter´e obsahuj´ı vˇsechny 24/35
5.1 SEKVENCE
(b)
(a)
(c)
Obr´azek 7: Sekvence ˇc´ıslo 1: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇc´atku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇca´st obrazu) sn´ımky. Z tˇechto sekvenc´ı jsme pot´e pouˇzili kratˇs´ı u ´seky (porovn´avan´e sekvence s ˇc´ısly 1 aˇz 10) a delˇs´ı u ´seky (sekvence s ˇc´ısly 11 aˇz 16). Sekvence s ˇc´ısly 1,2 a 12 jsou vybr´any jako u ´seky shodn´eho videoz´aznamu. V tˇechto sekvenc´ıch sledujeme automobil (pro sekvence 2 a 12 shodn´ y) jedouc´ı po rychlostn´ı komunikaci. V pr˚ ubˇehu sekvenc´ı kamera sleduje smˇer jedouc´ıho automobilu, vzd´alenost se ale kv˚ uli vyˇsˇs´ı rychlosti pohybu kamery v˚ uˇci automobilu postupnˇe zvˇetˇsuje. V sekvenci (obr´azek 7) sledujeme b´ıl´ y n´akladn´ı automobil, v sekvenc´ıch 2 a 12 sledujeme vozidlo d´alkov´e pˇrepravy (obr´azek 8). V sekvenc´ıch 3,4 a 14 je pouˇzit videoz´aznam pr˚ uletu vrtuln´ıku okolo tepeln´e elektr´arny (obr´azek 9). Jako sledovan´ y objekt jsme zvolili patu chlad´ıc´ıch kom´ın˚ u u okraje budovy. Sekvence 3 a 4 obsahuj´ı ˇca´st pr˚ uletu okolo elektr´arny, v sekvenci 14 je opakovan´ y pr˚ ulet se zmˇenou zoomu. Sekvence 5 a 15 sleduj´ı d˚ um obklopen´ y loukami (obr´azek 10), kter´ y je velmi dobˇre odliˇsiteln´ y od pozad´ı sn´ımku. Sekvence 5 je kratˇs´ı ˇca´st sekvence 15, v n´ıˇz doch´az´ı k postupn´emu oddalov´an´ı sledovan´eho objektu. V sekvenc´ıch 6 a 16 kamera prol´et´a okolo hradu na kopci (obr´azek 11), kter´ y nesledujeme cel´ y kv˚ uli jeho velikosti, ale pouze levou stˇenu. V sekvenci 16 doch´az´ı ke zmˇenˇe pouˇzit´eho zoomu a t´ım ke zmˇenˇe sledovan´eho velikosti objektu. Sekvence 7,8,10 a 11 sleduj´ı osoby, kter´e jsou velmi dobˇre odliˇsiteln´e od okoln´ıho prostˇred´ı. Sekvence 7 a 8 jsou u ´seky shodn´eho videoz´aznamu (obr´azek 12), v nˇemˇz doˇslo k v´ yznamn´e zmˇenˇe intenzity osvˇetlen´ı sc´eny. Tato zmˇena se vyskytuje pr´avˇe mezi tˇemito sekvencemi a pˇres tuto skokovou zmˇenu neˇslo prov´adˇet sledov´an´ı vybran´eho objektu. 25/35
5.1 SEKVENCE
(b)
(a)
(c)
Obr´azek 8: Sekvence ˇc´ıslo 2 a 12: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇc´atku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇc´ast obrazu)
(b)
(a)
(c)
Obr´azek 9: Sekvence ˇc´ıslo 3 a 14: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇc´atku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇc´ast obrazu) 26/35
5.1 SEKVENCE
(b)
(a)
(c)
Obr´azek 10: Sekvence ˇc´ıslo 5 a 15: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇca´tku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇc´ast obrazu)
(b)
(a)
(c)
Obr´azek 11: Sekvence ˇc´ıslo 6 a 16: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇca´tku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇc´ast obrazu) 27/35
´ ´I ALGORITMU ˚ 5.2 POROVNAN
(b)
(a)
(c)
Obr´azek 12: Sekvence ˇc´ıslo 7 a 8: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇc´atku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇc´ast obrazu) Sekvence 10 (obr´azek 13) je vybr´ana jako stabiln´ı ˇca´st sekvence 11, v n´ıˇz doch´az´ı ke zmˇenˇe zoomu kamery. V sekvenci 9 (obr´azek 14) sledujeme budovu v prostor´ach letiˇstˇe, pˇres n´ıˇz je prov´adˇen pˇrelet vrtuln´ıku s kamerou. D´ıky pr˚ uletu doch´az´ı ke zmˇenˇe velikosti sledovan´eho objektu a kv˚ uli rychlosti letu i k chvˇen´ı poˇr´ızen´eho videoz´aznamu. Sekvence s ˇc´ıslem 13 (obr´azek 15) je odliˇsn´a od vˇsech ostatn´ıch, sledujeme v n´ı vysokou chlad´ıc´ı vˇeˇz elektr´arny, kter´a je obklopena dalˇs´ımi vˇeˇzemi. V pr˚ ubˇehu sekvence doch´az´ı k opakovan´e zmˇenˇe zoomu kamery a pohybu sledovan´eho objektu. Jako sledovan´ y objekt vol´ıme hranu vrcholu chlad´ıc´ı vˇeˇze v jej´ımˇz okol´ı se nach´azej´ı vizu´alnˇe podobn´e objekty.
5.2
Porovn´ an´ı algoritm˚ u
Porovn´an´ı funkˇcnosti algoritmu SSD a KL je vidˇet v tabulce (1). KL algoritmus sledov´an´ı je porovn´av´an pˇri spouˇstˇen´ı z jedn´e startovn´ı pozice a z 25 pozic. Tˇechto 25 pozic je rovnomˇernˇe rozm´ıstˇeno v prohled´avan´e oblasti. Tato prohled´avan´a oblast pro KL je shodn´a s prohled´avanou oblast´ı KL algoritmu. U KL algoritmu v sekvenci 1 na obr´azku (7) doˇslo ke ztr´atˇe sledovan´eho c´ıle t´ım, ˇze v jeho tˇesn´e bl´ızkosti projel automobil s velmi podobnou strukturou jako sledovan´ y objekt. V sekvenci ˇc´ıslo 7 doˇslo ke ztr´atˇe sledovan´eho objektu v d˚ usledku v´ yrazn´e
28/35
´ ´I ALGORITMU ˚ 5.2 POROVNAN
(b)
(a)
(c)
Obr´azek 13: Sekvence ˇc´ıslo 10 a 11: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇca´tku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇc´ast obrazu)
(b)
(a)
(c)
Obr´azek 14: Sekvence ˇc´ıslo 9: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇc´atku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇca´st obrazu) 29/35
´ ´I ALGORITMU ˚ 5.2 POROVNAN
(b)
(a)
(c)
Obr´azek 15: Sekvence ˇc´ıslo 13: (a) u ´vodn´ı sn´ımek, (b) sledovan´ y objekt na zaˇc´atku sekvence, (c) sledovan´ y objekt na konci sekvence (zelenˇe oznaˇcena sledovan´a ˇca´st obrazu) skokov´e zmˇeny sc´eny ve sn´ımku mezi sn´ımky. Pro sekvence 10 − 16 poskytuje KL algoritmus s 25 startovn´ımi polohami lepˇs´ı v´ ysledky neˇz SSD algoritmus, doch´az´ı zde ke kmitav´ ym (opakuj´ıc´ım se tam a zpˇet) zmˇen´am polohy objektu a zkreslen´ı cel´eho sn´ımku, oproti ˇcemuˇz je KLT algoritmus robustnˇejˇs´ı. Pro sekvenci 14 je algoritmus KL s 25 startovn´ımi polohami lepˇs´ı a s jednou startovn´ı polohou horˇs´ı neˇz algoritmus SSD. Tento rozd´ıl je zp˚ usoben zmˇenou zoomu kamery a t´ım i velikosti sledovan´eho objektu. Zvolen´e testovac´ı sekvence maj´ı odliˇsn´e d´elky (poˇcty sn´ımk˚ u), sekvence s ˇc´ısly 1-10 jsou kratˇs´ı ˇca´sti vybran´e z vide´ı, sekvence s ˇc´ısly 11-16 obsahuj´ı delˇs´ı u ´seky vybran´e z vide´ı poˇr´ızen´ ych kamerou. V tabulce (1) porovn´av´ame ˇc´ıslo sn´ımku, v nˇemˇz algoritmus sledovan´ y objekt ztratil a ˇcas, kter´ y v pr˚ umˇeru potˇreboval na jeden pr˚ ubˇeh sledovac´ıho algoritmu. Jako jeden pr˚ ubˇeh uvaˇzujeme naˇcten´ı dvojice po sobˇe jdouc´ıch sn´ımk˚ u, inicializace algoritmu ze startovn´ı polohy, v´ ypoˇcet polohy ve sn´ımku z minim´aln´ı hodnoty (minim´aln´ıch hodnot) kriteri´aln´ı chybov´e funkce (6). Pokud algoritmus skonˇcil dˇr´ıve, neˇz je d´elka sekvence, pr˚ umˇern´a doba bˇehu je poˇc´ıt´ana z ˇcas˚ u do doby ztracen´ı objektu. Objekt povaˇzujeme za ztracen´ y, pokud pˇri jeho sledov´an´ı doˇslo ke vzd´alen´ı se predikovan´e polohy od sledovan´eho objektu o v´ıce neˇz 20 obrazov´ ych bod˚ u bez n´avratu na spr´avnou souˇradnici ve sn´ımku v pr˚ ubˇehu n´asleduj´ıc´ıch 3 sn´ımk˚ u. Pokud algoritmus ozn´am´ı ztr´atu sledovan´eho objektu, doch´az´ı k pozastaven´ı aktualizace modelu objektu a po 5 sekund´ach bez opˇetovn´eho nalezen´ı objektu se algoritmus pˇrepne do stavu 5. Ovˇeˇren´ı, ˇze je v testovan´ ych sekvenc´ıch st´ale sledov´an vybran´ y objekt na spr´avn´ ych souˇradnic´ıch, prov´ad´ı ˇclovˇek. 30/35
´ ˚ 5.3 ZHODNOCEN´I VYSLEDK U Podstatn´ ym parametrem pro porovn´an´ı algoritm˚ u je rychlost algoritmu pˇri v´ ypoˇctu polohy sledovan´eho objektu v nov´em sn´ımku. Mˇeˇren´ı doby pr˚ ubˇehu algoritmu jsme prov´adˇeli pomoc´ı funkc´ı QueryPerformanceCounter a QueryPerformanceFrequency. Funkce QueryPerformanceCounter jako n´avratovou hodnotu vrac´ı obsah ˇc´ıtaˇce v´ ykonu, kterou si poprv´e uloˇz´ıme pˇri startu algoritmu a podruh´e pˇri navr´acen´ı predikovan´e polohy sledovan´eho objektu. Pokud rozd´ıl tˇechto dvou hodnot vydˇel´ıme frekvenc´ı procesoru, na nˇemˇz prob´ıhal v´ ypoˇcet11 (kterou vrac´ı funkce QueryPerformanceFrequency), z´ısk´ame dobu bˇehu algoritmu v mikrosekund´ach. Pˇresnost funkce QueryPerformanceCounter je v dokumentaci uv´adˇena pod 1µs, d´ıky ˇcemuˇz m˚ uˇzeme povaˇzovat namˇeˇren´e hodnoty za dostateˇcnˇe pˇresn´e. Dvojice pouˇzit´ ych funkc´ı je pouˇziteln´a pouze pˇri bˇehu programu na operaˇcn´ım syst´emu Windows (vyuˇz´ıvaj´ı soubor windows.h). Pro operaˇcn´ı syst´em nepˇredpokl´ad´ame v´ yrazn´ y rozd´ıl mˇeˇren´ ych ˇcas˚ u, pouˇz´ıv´ame minimum funkc´ı z´avisl´ ych na konkr´etn´ım operaˇcn´ım syst´emu a v´ ysledky v tabulce (1) povaˇzujeme za platn´e pro Windows i Linux. V´ ypoˇcet namˇeˇren´ ych hodnot jsme prov´adˇeli tak, ˇze jsme mˇeˇrili pro kaˇzd´ y sn´ımek dobu pr˚ ubˇehu algoritmu zvl´aˇst’ a ze vˇsech hodnot pro sn´ımky, v nichˇz byl objekt u ´spˇeˇsnˇe sledov´an, jsme vypoˇc´ıtali pr˚ umˇer. Oˇcek´av´ame, ˇze pˇri zakomponov´av´an´ı KL algoritmu do p˚ uvodn´ıho programu se doba bˇehu zbyl´ ych ˇca´st´ı programu v´ yraznˇe nemˇenila a tud´ıˇz pro porovn´av´an´ı nemˇela vypov´ıdaj´ıc´ı hodnotu.
5.3
Zhodnocen´ı v´ ysledk˚ u
Porovn´ame-li dobu jednoho pr˚ ubˇehu SSD a KLT algoritmu s jedn´ım startovn´ım bodem, pak je KLT algoritmus v´ yraznˇe rychlejˇs´ı. V´ yrazn´a rozd´ılnost je zp˚ usobena t´ım, ˇze SSD algoritmus je kompletn´ı a KL je algoritmem gradientn´ım. Pˇri startu z 25 bod˚ u je doba bˇehu algoritmu KL srovnateln´a s SSD algoritmem. SSD algoritmus pouˇz´ıv´a pˇri v´ ypoˇctu minim´aln´ı hodnoty chybov´e funkce poloviˇcn´ı rozliˇsen´ı sn´ımku i modelu. Tohoto sn´ıˇzen´ı velikosti sn´ımku a modelu na ˇctvrtinu origin´aln´ı velikosti je pouˇzito pro zv´ yˇsen´ı rychlosti algoritmu s t´ım, ˇze poˇc´ıt´ame se sn´ıˇzen´ım pˇresnosti algoritmu pro urˇcen´ı nov´e polohy objektu na polovinu. Pokud bychom pouˇz´ıvali pro SSD algoritmus sn´ımky v pln´em rozliˇsen´ı, doˇslo by ke znateln´emu zpomalen´ı a sn´ıˇzen´ı poˇctu sn´ımk˚ u, v nichˇz jsme za vteˇrinu schopni nal´ezt sledovan´ y objekt. Pro algoritmus KLT pouˇz´ıv´ame sn´ımky v pln´em rozliˇsen´ı (704 × 576). Pr˚ umˇern´e doby bˇehu jednoho kroku uveden´e v tabulce jsou uvedeny pro SSD se zmenˇsen´ ymi sn´ımky a pro KLT s origin´aln´ı velikost´ı sn´ımk˚ u. Pˇri porovn´an´ı KL algoritmu s 1 a 25 startovn´ımi polohami se ˇcas pr˚ ubˇehu nav´ yˇsil pouze dvakr´at. Nejvyˇsˇs´ı v´ ypoˇcetn´ı n´aroˇcnost pˇredstavuje pˇredbˇeˇzn´e vypoˇc´ıt´an´ı pyramidov´e konstrukce pro dvojici sn´ımk˚ u. N´asledn´e vyhled´an´ı minim´aln´ı hodnoty kriteri´aln´ı chybov´e funkce pro jednotliv´ y startovn´ı bod trv´a pˇribliˇznˇe 2ms. Z tabulky (1) m˚ uˇzeme vidˇet, ˇze d´elka u ´spˇeˇsn´eho sledov´an´ı objektu pomoc´ı algoritmu KLT je srovnateln´a s SSD algoritmem. V 6 sekvenc´ıch z 15 je KL algoritmus (1 a 25 startovn´ıch pozic) stejnˇe u ´spˇeˇsn´ y pˇri sledov´an´ı vybran´eho objektu jako algoritmus SSD. 11
Pro v´ıce j´ adrov´e procesory funkce vrac´ı shodn´e hodnoty. Pˇri testov´an´ı jsme pouˇz´ıvali procesor Intel Core i3 s taktovac´ı frekvenc´ı 2,13GHz.
31/35
´ ˚ 5.3 ZHODNOCEN´I VYSLEDK U Pro 2 sekvence z 15 je KL algoritmus horˇs´ı neˇz SSD algoritmus sledov´an´ı. KL algoritmus v 7 sekvenc´ıch sleduje objekt d´ele neˇz SSD algoritmus, z nichˇz ve 3 sekvenc´ıch je rozd´ıl v d´elce u ´spˇeˇsnosti sledov´an´ı jednoznaˇcn´ y (sekvence 11, 13 a 16). Testov´an´ı prob´ıhalo nejenom na datech uloˇzen´ ych v poˇc´ıtaˇci, ale ovˇeˇrili jsme funkˇcnost i na extern´ı kameˇre. Pouˇzit´a kamera je Mintron OS-45D, jej´ıˇz analogov´ y obraz proch´az´ı do poˇc´ıtaˇce skrze digitiz´er videosign´alu Sensoray 2255S v rozliˇsen´ım 704 × 576 obrazov´ ych bod˚ u. Ovˇeˇrov´an´ı prob´ıhalo sledov´an´ım shodn´ ych objekt˚ u v re´aln´em prostˇred´ı, v nˇemˇz v´ ysledky byly srovnateln´e pro trojici porovn´avan´ ych algoritm˚ u. Doby pr˚ ubˇeh˚ u algoritm˚ u zachov´avaj´ı shodn´e pomˇery jako v tabulce (1). ˇc´ıslo sekvence 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
d´elka sekvence 142 191 151 191 151 81 128 130 112 171 108 276 679 659 321 329
SSD sn´ımk˚ u [ms] 142 69,71 191 69,62 135 71,11 191 73,58 151 69,84 81 69,23 116 70,07 130 71,19 102 72,53 70 73,80 40 70,96 85 69,85 289 70,86 560 69,17 321 69,93 15 72,47
KL(1) sn´ımk˚ u [ms] 133 31,74 191 31,63 151 32,06 191 32,20 151 31,45 81 32,38 117 31,44 130 31,63 112 32,23 171 31,99 75 31,64 276 31,87 355 31,84 480 32,03 321 31,93 90 32,48
KL(25) sn´ımk˚ u [ms] 94 77.74 191 67,56 151 65,27 191 63,19 151 63,28 81 65,12 76 62,76 130 64,77 112 69,70 171 66,25 108 66,05 276 70,25 679 69,55 640 70,47 321 65,39 329 73,10
Tabulka 1: Porovn´an´ı funkˇcnosti algoritm˚ u SSD a KL (start z 1 a 25 bod˚ u). Poˇcet ˇ sn´ımk˚ u odpov´ıd´a, jak dlouho algoritmus v dan´e sekvenci sledoval objekt. Cas v [ms] je pr˚ umˇern´a doba bˇehu algoritmu na jeden sn´ımek.
32/35
Kapitola 6
Z´ avˇ er V pr˚ ubˇehu pr´ace jsme navrhli algoritmus zaloˇzen´ y na metodˇe popsan´e [1], kter´ y vybrali kv˚ uli niˇzˇs´ım v´ ypoˇcetn´ım n´arok˚ um oproti st´avaj´ıc´ımu a pouˇz´ıvan´emu algoritmu zaloˇzen´em na metodˇe SSD. Pˇri n´avrhu jsme vych´azeli z dalˇs´ıch ˇcl´ank˚ u ([2], [9], [10], [11] a [8]), n´avrh jsme upravili tak, aby vyhovoval poˇzadavk˚ um pro pouˇzit´ı na kamerov´e hlavici M120 projektu MAGYSKA. Implementaci navrˇzen´eho algoritmu jsme provedli v programovac´ım jazyce C++ s vyuˇzit´ım knihovny OpenCV a jej´ıch datov´ ych typ˚ u a struktur, z nichˇz jsme vyuˇzili ˇca´sti nˇekter´ ych funkc´ı, kter´e jsme si upravili. Mezi tyto u ´pravy patˇr´ı napˇr´ıklad upraven´ı souˇradnic sledovan´eho objektu po zad´an´ı oper´atora (dle metody [8]), zpˇresnˇen´ı v´ ysledk˚ u algoritmu pouˇzit´ım re´aln´ ych ˇc´ısel (nam´ısto cel´ ych) v souˇradn´em syst´emu sn´ımku a moˇznost naˇc´ıtat sn´ımky z pˇripraven´ ych sekvenc´ı. P˚ uvodn´ı algoritmus SSD jsme pˇrepsali tak, aby vyuˇz´ıval knihovny OpenCV. Implementaci navrˇzen´eho i p˚ uvodn´ıho algoritmu jsme pˇredˇelali tak, aby programov´ y k´od byl pˇreloˇziteln´ y na platform´ach operaˇcn´ıch syst´em˚ u Windows a Linux. Operaˇcn´ı syst´em Windows byl pouˇzit pro testov´an´ı algoritmu na stoln´ım poˇc´ıtaˇci s pouˇzit´ım pˇripraven´ ych sekvenc´ı sn´ımk˚ u. Upraven´ y k´od a v´ ysledn´ y program pro operaˇcn´ı syst´em Linux bude pouˇzit pro instalaci na v´ ypoˇcetn´ı jednotku kamerov´e hlavice. Pro tuto u ´pravu jsme pouˇzili knihovnu Pthread [7] pro spr´avu vl´aken a mezivl´aknovou komunikaci. Testov´an´ı algoritmu jsme prov´adˇeli na pˇripraven´ ych sekvenc´ıch sn´ımk˚ u z videoz´aznam˚ u a extern´ı kameˇre pˇripojen´e k poˇc´ıtaˇci. Pˇri porovn´an´ı algoritm˚ u SSD a KL jsme ovˇeˇrili, ˇze KL algoritmus je stejnˇe rychl´ y jako SSD (pˇr´ıpadnˇe rychlejˇs´ı v z´avislosti na poˇctu startovn´ıch poloh). D´elka sledov´an´ı objektu v testovac´ıch sekvenc´ıch byla pro algoritmus KL shodn´a ˇci delˇs´ı ve vˇetˇsinˇe pˇr´ıpad˚ u v porovn´an´ı s SSD. Dodrˇzen´ım poˇzadavk˚ u na zv´ yˇsen´ı rychlosti sledovac´ıho algoritmu a zachov´an´ı shodn´e (ˇci delˇs´ı) doby sledov´an´ı jako pˇri pouˇzit´ı algoritmu SSD bylo dle naˇseho n´azoru splnˇeno zad´an´ı t´eto pr´ace. Ovˇeˇren´ı funkˇcnosti a pouˇzitelnosti navrˇzen´eho algoritmu probˇehne v bl´ızk´e dobˇe na kamerov´e hlavici M120 po dodateˇcn´e u ´pravˇe k´odu pro konkr´etn´ı pouˇzit´e technick´e vybaven´ı hlavice.
33/35
Literatura [1] Bruce D. Lucas and Takeo Kanade. An iterative image registration technique with an application to stereo vision. In Proceedings of the 7th International Joint Conference on Artificial Intelligence - Volume 2, IJCAI’81, pages 674–679, San Francisco, CA, USA, 1981. Morgan Kaufmann Publishers Inc. [2] Simon Baker and Iain Matthews. Lucas-kanade 20 years on: A unifying framework. International Journal of Computer Vision, 56(3):221–255, 2004. [3] P. Montesinos, V. Gouet, and R. Deriche. Differential invariants for color images. In Pattern Recognition, 1998. Proceedings. Fourteenth International Conference on, volume 1, pages 838–840 vol.1, Aug 1998. [4] T.S.Subashini S.Bhuvaneswari. Tracking manually selected object in videos using color histogram matching. Journal of Theoretical and Applied Information Technology, 67(3), 30 September 2014. [5] Jean-Yves Bouguet. Pyramidal implementation of the lucas kanade feature tracker description of the algorithm. OpenCV Document, Intel Microprocessor Research Labs, 1999. Technical report. [6] Petr V´avra. Detekce z´akrytu pˇri vizu´aln´ım sledov´an´ı algoritmem SSD, 2012, Praha. ˇ Bakal´aˇrsk´a pr´ace, CVUT v Praze, Fakulta elektrotechnick´a, Katedra kybernetiky. [7] J. Bossom, A. Terekhov, L. Thomas, T. Pfaff, and R. Johnson. Open Source POSIX Threads for Win32, 5 2012. https://sourceware.org/pthreads-win32/. [8] Jianbo Shi and Carlo Tomasi. Good features to track. In 1994 IEEE Conference on Computer Vision and Pattern Recognition (CVPR’94), pages 593 – 600, 1994. [9] Baojie Fan, Yingkui Du, Linlin Zhu, Jing Sun, and Yandong Tang. A robust template tracking algorithm with weighted active drift correction. Pattern Recognition Letters, 32(9):1317 – 1327, 2011. [10] I. Matthews, T. Ishikawa, and S. Baker. The template update problem. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 26(6):810–815, June 2004. [11] Vaclav Hlavac Milan Sonka and Roger Boyle. Image Processing, Analysis and Machine Vision. Thomson, 3rd edition, 2007. ISBN 978-0-495-08252.
34/35
Obsah DVD K t´eto diplomov´e pr´aci je pˇriloˇzeno DVD, na kter´em je elektronick´a verze odevzdan´e pr´ace ve form´atu PDF, zdrojov´e k´ody programu v jazyce C++, sekvence sn´ımk˚ u, videoz´aznamy z nichˇz byly vytvoˇreny sekvence sn´ımk˚ u a spustiteln´ y program pro prostˇred´ı Windows s konfiguraˇcn´ım souborem. Sloˇzky na pˇriloˇzen´em m´ediu s obsahem: • PDF - diplomov´a pr´ace ve form´atu PDF • Program - 2 spustiteln´e soubory SPTtracker online.exe a SPTracker offline.exe zkompilovan´e pro start s 25 body pro spuˇstˇen´ı s pˇripojenou kamerou, resp. s uloˇzen´ ymi sekvencemi. Konfiguraˇcn´ı soubor Ini parameters.par je pˇriloˇzen. • Sekvence - sekvence sn´ımk˚ u ve form´atu PNG pouˇzit´e pro testov´an´ı • Videa - videoz´aznamy poˇr´ızen´e kamerou, z nichˇz byly sekvence sn´ımk˚ u vytvoˇreny • Zdrojov´e k´ody - *.cpp a *.h zdrojov´e k´ody programu a projektov´e soubory pro v´ yvojov´e prostˇred´ı Visual Studio 2013
35/35