Vývojová dokumentácia

Podobné dokumenty
Zachovanie mentálnej mapy pri interakcií s grafom. RNDr. Jana Katreniaková PhD.

Funkcia - priradenie (predpis), ktoré každému prvku z množiny D priraďuje práve jeden prvok množiny H.

Humanoidné systémy... počítačové videnie... Peter Sinčák & Mária Virčíková

Hromadná korešpondencia v programe Word Lektor: Ing. Jaroslav Mišovych

Predaj cez PC pokladňu

Návod na použite plaftormy ELMARK E- Business obsahuje popis hlavných možností a funkcií programu. Príručka je štruktúrovaná podľa poradia možností.

KOMISNÝ PREDAJ. Obr. 1

MATLAB (1) - úvod do programovania vedeckých problémov. LS 2017, 8.predn.

Základy algoritmizácie a programovania

Skákalka. Otvoríme si program Zoner Callisto, cesta je Programy Aplikácie Grafika Zoner Callisto.

Limita funkcie. Čo rozumieme pod blížiť sa? y x. 2 lim 3

MS PowerPoint - Úvod.

Príručka o HD-SDI CCTV

TomTom Referenčná príručka

JCDwin - prechod na EURO

Elektronické odosielanie výplatných pások

Zverejnené informácie k nevyčerpaným prostriedkom z plateného portálu.

KATEDRA DOPRAVNEJ A MANIPULAČNEJ TECHNIKY TESTOVANIE ŠTATISTICKÝCH HYPOTÉZ

Porovnanie dizajnu časopisu

Microsoft Project CVIČENIE 6 1

Modul PROLUC Podvojné účtovníctvo

Vytvorenie používateľov a nastavenie prístupov

SWS 500 SK POUŽÍVATEĽSKÁ PRÍRUČKA. Poznámka: Mobilný telefón nie je súčasťou dodávky.

ALGORITMY A PROGRAMOVANIE VO VÝVOJOVOM PROSTREDÍ LAZARUS. Vývojové prostredie Lazarus, prvý program

Kontrola väzieb výkazu Súvaha a Výkaz ziskov a strát Príručka používateľa

Dell S2718H/S2718HX/S2718HN/ S2718NX Dell Display Manager Návod na obsluhu

1. Gigabajty si hneď v prvom kroku premeníme na gigabity a postupne premieňame na bity.

i j, existuje práve jeden algebraický polynóm n-tého stupˇna Priamym dosadením do (2) dostávame:

Postup registrácie certifikátov do Windows

Návod na použitie LWMR-210

Astronomická fotografia -- kuchárka pre digitálnu fotografiu

Moderné vzdelávanie pre vedomostnú spoločnosť/projekt je spolufinancovaný zo zdrojov EÚ. Grafy

Stručný návod na inštaláciu Wi-Fi routra pre T-Mobile mobilný internet

Užívateľská príručka systému CEHZ. Základné zostavy Farmy podľa druhu činnosti

Návrh postupu pre stanovenie počtu odborných zástupcov na prevádzkovanie verejných vodovodov a verejných kanalizácií v správe vodárenských spoločnosti

Total Commander. Základné nastavenia

Ekvia s.r.o EKVIA PREMIUMPRO. Užívateľský manuál

Bezdrôtová sieť s názvom EDU po novom

Formuláre PowerPoint MGR. LUCIA BUDINSKÁ,

Microsoft Outlook. Stručný prehľad základných funkcií. Ing.Anna Grejtáková, SPP DFBERG

plagát Formát po odrezaní Formát pred odrezaním Spad Vnútorný okraj Formáty súborov Pomoc Sprievodca na prípravu súborov PLAGÁT - A1

Používateľská príručka pre autorov Prihlásenie

Finančné riaditeľstvo Slovenskej republiky

To bolo ľahké. Dokážete nakresliť kúsok od prvého stromčeka rovnaký? Asi áno, veď môžete použiť tie isté príkazy.

Referenčná ponuka na prístup ku káblovodom a infraštruktúre. Príloha 7 Poplatky a ceny

Task, async, await METÓ DY VÝPOČTOVEJ INTELIGENCIE A C# FA K ULTA E L E K T ROTECHNIKY A INFORMATIKY S LOVENSKÁ T E CHNICKÁ U NIVERZITA

Kajot Casino Ltd. Popis hry Classic 7

Logo. Logo je vytvorené z grafickej časti skratka AVF a textovej časti AUDIOVIZUÁLNY FOND. Text je vysádzaný písmom Vafle Mono v reze Mono.

Používateľská príručka pre autorov

Základy optických systémov

Základy - prihlásenie

Rozpočítavanie príjmov

Návod na aplikáciu Mobile Pay pre Orange

Osoba podľa 8 zákona finančné limity, pravidlá a postupy platné od

Príručka Mobility Tool + pre príjemcov grantu

Vytváranie trojrozmerných grafických zobrazení v prostredí MATLAB a interaktívne úpravy grafov pomocou Figure Toolbar

Ako započítať daňovú licenciu

Exero od te feu feugiamet. odiamconsent augait la feugiam commod eu facilissed tin et lumsan henibh eum at dolut venit nopraessequate

Súťaž Vráťme knihy do škôl je tu už po 7-krát!

Začínam so zadaním z NEPOUŽÍVAME ROZSAH POKIAĽ HO MUSÍME PRESKOČIŤ

CERTIFIKAČNÉ ELEKTRONICKÉ TESTOVANIA - PERSPEKTÍVA

AKO PRIPRAVIŤ MONEY S4 / S5 NA NOVÝ ÚČTOVNÝ ROK

Multihosting Užívateľská príručka

Fyzika 9. ročník 3. Laboratórna úloha

Vážení používatelia programu WISP.

Vývojová doska "ATMIA" pre ATMEGA8/16/32 - Update 05

CVIČENIE 1 : ZÁKLADNÉ VÝPOČTY PRAVDEPODOBNOSTI

MICROSOFT POWERPOINT PRÁCA S PROGRAMOM

Stiga Autoclip 200 Series

Virtuálna Registračná Pokladnica. Modul OPD pre ios

Úvodná strana IS ZASIELKY Prvky úvodnej stránky:

SKLADOVÁ INVENTÚRA 1 VYTVORENIE INVENTÚRY. 1.1 Nastavenie skladovej inventúry

Školská sieť EDU. Rozdelenie škôl. Obsah: Deleba škôl podľa času zaradenia do projektu: Delba škôl podľa rýchlosti pripojenia:

Veľké porovnanie HD technológií - HD-TVI, HD-CVI, HD-SDI, analógové a IP kamery

základný dizajnmanuál pre logotyp Tento manuál a logotyp sú chránené ochrannou značkou a nesmú byť kopírované alebo šírené iným spôsobom.

Fakulta sociálnych a ekonomických vied

v y d á v a m m e t o d i c k é u s m e r n e n i e:

R11 extremo. Odolný mobilní telefon pro dvě SIM karty. Návod k funkci SOS locator Návod na použitie SOS locator

Návod na používanie súboru na vyhodnotenie testov všeobecnej pohybovej výkonnosti

1.5 Spoločné a rozdielne vlastnosti kvapalín a plynov PL KEGA 130UK/2013

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ. Metodika verzií zdrojového kódu

Tipy na šetrenie elektrickej energie Použitie časového spínača Časť I Kuchynský bojler

Pozičné číselné sústavy. Dejiny. Číselná sústava je spôsob, akým sú zapisované čísla pomocou znakov (nazývaných cifry).

Všeobecné požiadavky na výrobu DPS

Súťaž MLADÝ ELEKTROTECHNIK 2010 Peter Kopecký 9.A, ZŠ Duklianska 1. Bánovce nad Bebravou Nastaviteľný zdroj

VYSPORIADANIE PREHRADENÝCH ZÁVÄZKOV A POHĽADÁVOK

s.r.o. HelpLine:

Ing. Peter Delinčák 9 / 2011

ONLINE POBOČKA. pre zamestnávateľov MANUÁL

Automatizovaný informačný systém technických kontrol

GPS KATASTER základné inštrukcie:

V nej je potrebné skontrolovať správnosť prenesených a prepočítaných zostatkov z roku 2008.

ANALÝZA PRÍPADNÉHO ROZDIELU A SPÔSOB JEHO ODSTRÁNENIA

Súmernosti. Mgr. Zuzana Blašková, "Súmernosti" 7.ročník ZŠ. 7.ročník ZŠ. Zistili sme. Zistite, či je ľudská tvár súmerná

Úvod. Prehľad funkcií NORMAL OPERATION

Vývoj cien energií vo vybraných krajinách V4

Univerzálne dia kové ovládanie TV SAT DVD AUX

Súťaž Vráťme knihy do škôl je tu už po 5-krát!

2. Čo a ako sa prenesie pri opakovanom prechode do nového roka? Po zopakovaní prechodu sa v novom roku v evidencii účtovných dokladov aktualizujú inte

Essox: Upgrade systému Microsoft Dynamics CRM

Transkript:

Ročnikový projekt: Simple Object Tracking Autor: Robert Sasák, robert.sasak@gmail.com Vývojová dokumentácia Platforma Program je určený pre operačný systém Windows a je napísaný v jazyku C/C++. Spracovanie obrazu je veľmi náročné na výpočtový výkon počítača. Z toho dôvodu som zvažoval aj písanie v ANSI C. Napokon som sa aj tak rozhodol pre prehľadnejšie programovanie v C++. Všetky operácie s obrazom sú robené cez knižnicu OpenCV, ktorá je napísaná v ANSI C. Aplikácia bola vyvíjaná vo vývojovom prostredí Microsoft Visual Studio 2008. V aplikácii som použil iba knižnice STD, OpenCV a OpenGL, ktoré sú dostupné pre všetky platformy. Z toho dôvodu by malo byť možné aplikáciu spustiť aj na iných operačných systémoch. Logické rozdelenie programu Získane obrazu Kalibrácia kamery Rozoznanie popredia Určenie ťažiska Určenie trojdimenzionálnych súradníc Vykreslenie 3D scény

Spracovanie obrazu Rozoznanie popredia v Určenie ťažiska Určenie trojdimenzionálnych súradníc Vykreslenie scény

Získanie obrazu Naj technickejšia časť je získať obraz z kamery pre ďalšie spracovanie. Spôsob sa mení od výrobcu k výrobcovi. Preto som zvolil knižnicu OpenCV, ktorá obsahuje jednotný spôsob získania obrazu bez ohľadu na rozhranie a typ kamery Situácia je ešte jednoduchšia s použitím interfejsu VideoInput. VideoInput je určený na prácu s viacerými kamerami. Samotné získavanie obrazu beží v osobitnom procese. Ďalej zabezpečuje, že obraz získaný s viacerých kamier je zosynchronizovaný. Metóda CAquarium::InitCams() inicializuje VideoInput a pole images[], ktoré obsahuje aktuálny snímok z kamery. Metóda CAquarium::queryImages() načíta najnovšie snímky do images[]. Kalibrácia kamery Na určenie polohy ryby v trojdimenzionálnom priestore pomocou kamery je nutné zistiť ohniskovú vzdialenosť kamery. Obraz môže byť taktiež z dôvodu lacnej optiky zakrivený. Alebo môže byť senzor upevnený mimo optickú os. Parametre popisujúce nedokonalosť kamery sa nazývajúci vnútorne parametre kamery(intrinsics parameters). Z toho dôvodu je nutné pre každú kameru urobiť kalibráciu. Kalibrácia v našom prípade neznamená nastavenie kamery, ale naopak určenie parametrov. OpenCV implementuje kalibráciu nasledovne. Na kalibráciu je potrebné získať aspoň 10 snímkov šachovnice v rôznych polohách. Šachovnica ma veľmi výraznú štruktúru, ktorá sa dá algoritmicky ľahko rozoznať na snímku. Na snímkoch sa strojovo identifikuje šachovnica. Body z 10 šachovníc sa skombinujú a na základe toho sa vypočítajú vnútorné parametre kamery. Kalibráciu v OpenCV implementuje CalibFIlter. V metóde CAquarium::calibrate2D() sa každých 20 snímkov pokúsi metóda CalibFilter.FindEtalon() nájsť šachovnicu na aktuálnom snímku. Po nájdení 15 šachovníc CalibFilter vypočíta vnútorné parametre kamery. Kalibrácia prebieha na oboch kamerách súčasne. Ďalšou výhodou CalibFilter je, že dokáže tiež určiť relatívnu pozíciu kamier voči sebe. Opäť je na výpočet použitá dvojica snímkov so šachovnicou. Táto informácia je uložená vo forme translačnej matice voči prvej kamere. Tá je neskôr určená na prevod 2D súradnic do 3D.

Rozoznanie popredia Ryba ako taká môže mať z rôznych uhlov skoro ľubovolný tvar a farbu. Naopak pozadie je stále rovnaké. Metóda na rozoznanie popredie je založená na porovnaní modelu pozadia s aktuálnym snímkom. Najjednoduchší model pozadia je určený jeho farbou. Za akvárium umiestním zelené pozadie. Každý snímok porovnám voči zelenej farbe. Pixely, ktoré nie sú zelené označím ako popredie. Tým získam siluety objektov. Táto metóda vyžaduje však špeciálne jednofarebné pozadie, čo v akvaristike nebýva zvykom. Ďalší model uvažuje ako pozadie priemer posledných niekoľko snímkov. Popredie sa opäť získa porovnaním aktuálneho snímku s pozadím. Tento model je oproti predošlému omnoho lepší. Model sa sám aktualizuje a je odolný aj voči pomalým zmenám osvetlenia. V akváriu však sa okrem ryby pohybujú aj vodné rastliny a ovzdušňovacie bubliny. Tieto budú nesprávne označené ako popredie. Práve problém s monotónnymi pohybujúcimi objektami rieši model CodeBook. Pozostáva z dvoch fáz. V prvej fáze sa učí ako vyzerá pozadie a v druhej fáze sa, tak ako v predošlých modeloch, porovnáva s aktuálnym snímkom. Rozdielne pixely sú označené ako popredie. Pre každý pixel je udržiavaný zoznam povolených rozsahov farieb. Ak pri porovnaní farba s aktuálneho snímku je z jedného z povolených rozsahov farieb, tak je pixel označený ako pozadie. Inak je označený ako popredie. Počas prvej fáze učenia sa vytvára zoznam povolených farebných rozsahov. Táto fáza trvá v praxi niekoľko desiatok sekúnd. V druhej fáze prebieha porovnanie modelu pozadia s aktuálnym snímkom. CodeBook takto odfiltruje nežiadúce monotónne pohybujúce rastliny a bubliny. Preto som sa rozhodol práve o implementáciu tohto algoritmu. Knižnica OpenCV obsahuje implementáciu algortimu CodeBook. Moja trieda CCodeBook predstavuje objektový interface k tomuto algoritmu. Metóda init() inizializuje potrebné štruktúry. Pomocou metódy update(image) sa počas prvej fáze buduje model pozadia. V druhej fáze sa označia jednotlivé pixely ako pozadie alebo popredie. Metóda segmentation(), pospája pixely označené ako popredie do súvislých plôch. Určenie ťažiska Pre ďalšie spracovanie polohy ryby potrebujem určiť rybu ako jeden bod na každej kamere. Následne môžem pre tieto dva body vypočítať súradnice v trojdimenzionálnom svete. Algoritmus na určenie popredia mi vrátil bitovú masku popredie. Tvar plôch

popredia sa môže na oboch kamerách veľmi odlišovať. Preto je ťažké nájsť význačný bod. Z toho dôvodu som rozhodol pre vypočítanie ťažiska plochy. Ťažisko je stabilné voči chybám na okrajoch plôch. OpenCV obsahuje funkciu cvgetspatialmoment() na výpočet ťažiska plochy. Samotný výpočet prebieha tiež v metóde CCodeBook::segmentation(). Určenie trojdimenzionálnych súradníc Určením ťažiska som získal bod pre každú kameru. Oboma bodmi preložím priamku vychádzajúcu z kamery. Tam kde sa tieto dve priamky pretnú, tam v priestore sa pohybuje ryba. V praxi sa však dve priamky v priestore len zriedka pretnú. Preto je vhodnejšie nájsť dva body na priamkach, ktoré sú k sebe čo najbližšie. V strede medzi týmito bodmi určím pozíciu ryby. Funkcia ImageCStoWorldCS() prevedie body zo snímku na vektory. Ďalej funkcia intersection() vypočíta pozíciu najbližších bodov. Na záver midpoint() určí stredový bod. Vykreslenie 3D scény Získané 3D pozície som interpretoval v podobe 3D scény. Keďže sa jedná len o veľmi jednoduchú scénu, tak som si vybral na jej vyrenderovanie OpenGL. Konkrétne knižnicu GLUT. Metóda CGraphic::drawObject(point) nakreslí jednoduchú červenú bodku. Metóda CGraphic::specialKeyboard() zachytáva stlačené klávesy a upravuje translačnú maticu. Ako výsledok sa scéna otáča alebo približuje.