VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ
FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ
ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY
SEMESTRÁLNÍ PRÁCE - ROBOTIKA
M05 – Registrace snímků z RGB kamer
AUTOŘI PRÁCE
FILIP BAÁŠ
MARTIN TILGNER
LUKÁŠ REJCHLÍK
VEDOUCÍ PRÁCE
ING. ADAM LIGOCKI
BRNO 2018
ZADÁNÍ
Proveďte rešerší dostupných state-of-art řešení pro registraci RGB snímků a
tvorbu panoramat. Na dodaných fotografiích otestujte funkčnost metody a
předveďte spojení několika fotografií do panoramatu.
4
Obsah
1 Úvod........................................................................................................................... 6
2 Metody použivané pro tvorbu panoramat .................................................................. 7
2.1 SIFT – Scale invariant features transform .......................................................... 7
2.2 SURF – Speeded-Up Robust Features ................................................................ 8
2.3 RANSAC – Random Sample Consensus ............................................................ 9
3 Kalibrace kamery ..................................................................................................... 10
4 Programová část ....................................................................................................... 12
4.1 Použité prostředky ............................................................................................. 12
4.1.1 Microsoft Visual Studio ............................................................................. 12
4.1.2 Knihovna OpenCV .................................................................................... 12
4.1.3 Framework Qt ............................................................................................ 12
4.2 Koncept programu ............................................................................................. 13
4.3 Popis algoritmu ................................................................................................. 13
4.4 Grafické uživatelské rozhraní ........................................................................... 14
5 Výsledky programu.................................................................................................. 16
5.1 Operační náročnost algoritmu ........................................................................... 16
5.2 Limity algoritmu v počtu deskriptorů ............................................................... 17
5.3 Limity algoritmu v překrytí snímků .................................................................. 18
5.4 Srovnání s Microsoft Image Composite Editor ................................................. 20
6 Závěr ........................................................................................................................ 21
Bibliografie ...................................................................................................................... 22
5
Seznam obrázků
Obrázek 1 Kalibrační šachovnice .................................................................................... 11
Obrázek 2 Úvodní obrazovka programu .......................................................................... 14
Obrázek 3 Program po vytvoření panoramatického obrázku .......................................... 15
Obrázek 4 Záložka kalibrace ........................................................................................... 15
Obrázek 5 Jednotlivé snímky ........................................................................................... 17
Obrázek 6 Deskriptory ..................................................................................................... 18
Obrázek 7 Deskriptory ..................................................................................................... 18
Obrázek 8 Testovací scéna .............................................................................................. 19
Obrázek 9 Překrytí scény ................................................................................................. 19
6
1 ÚVOD
S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani
neuvědomujeme, ať už jde o širokoúhlé fotografie nebo o aplikace typu Google
Streetview.
Panoramatické fotografie jsou pro člověka velice přirozené, protože jsou velmi
blízké tomu, jak člověk vnímá své okolí. Proto je tvorba panoramatických fotografií velmi
žádaná.
Panoramatický snímek můžeme v zásadě vytvořit několika způsoby. A to použitím
speciálního panoramatického fotoaparátu, ořezem fotografie běžného formátu na formát
panoramatický nebo pořízení více snímků scény po částech a následné složení těchto
snímků v jeden – panoramatický.
Tato práce se bude zabývat automatizací poslední z vypsaných možností – tedy
automatickým skládáním více snímků jedné scény v jeden panoramatický snímek. Práce
je rozdělena do dvou tematických celků. V první části jsou teoreticky popsány metody,
používané pro tvorbu panoramatických fotografií. Druhá část se věnuje samotné tvorbě
programu – jak použitým prostředkům, tak samotnému algoritmu.
7
2 METODY POUŽIVANÉ PRO TVORBU
PANORAMAT
2.1 SIFT – Scale invariant features transform
Metoda SIFT se používá pro detekci a popis lokálních příznaků obrazu. Mezi hlavní
výhody této metody patří do značné míry nezávislost na měřítku a na rotaci
porovnávaných snímků pořízených v různých úhlech a vzdálenostech od scény.
SIFT algoritmus pracuje ve čtyřech fázích:
1. Detekce významných bodů ve scale-space,
2. Zpřesnění stability a lokalizace významných bodů,
3. Výpočet orientace těchto bodů,
4. Určení příznakového vektoru pro každý bod
Nezávislosti na měřítku je dosáhnuto detekcí významných bodů ve scale-space.
Velikost scale-space byla heuristicky určena na čtyři oktávy, kdy je snímek vždy
podvzorkován, a na každou oktávu je vytvořeno pět snímků s Gaussovským vyhlazením.
Poté autoři využili rozdílu dvou takto vyhlazených obrazů (DoG – Difference of
Gaussian), který je počítán v každé oktáv pro dva sousedící snímky. Následně jsou
filtrovány lokální extrémy v diferenčních snímcích a porovnávány s jejich osmiokolím.
Bod je určen jako významný, pokud je jeho hodnota menší než hodnota všech bodů
z osmiokolí.
V dalším bodu se vylučují body s nízkým kontrastem (šum) a filtrují se hrany, kde
mohly být chybně lokalizovány extrémy vzledem k použití DoG. Pro tento účel se používá
Hessovy matice (determinantu a stopy) a po vyfiltrování nevhodných bodů zůstávají body
se subpixelovou přesností.
Výpočet orientace bodů zajišťuje invarianci vůči rotaci snímku. Pro každý bod se
vybere jedno, z námi již určených měřítek, a vypočítá se k němu velikost gradientu m(x,y)
a jeho směr θ(x,y). [1]
𝑚(𝑥, 𝑦)
= √(𝐿(𝑥 + 1, 𝑦) − 𝐿(𝑥 − 1, 𝑦))2 + (𝐿(𝑥, 𝑦 + 1) − 𝐿(𝑥, 𝑦 − 1))2
(1)
𝜃(𝑥, 𝑦) = 𝑡𝑎𝑛−1((𝐿(𝑥, 𝑦 + 1) − 𝐿(𝑥, 𝑦 − 1))/(𝐿(𝑥 + 1, 𝑦) − 𝐿(𝑥
− 1, 𝑦))
(2)
Z vypočítaných hodnot gradientů se vytvoří histogram o 36 intervalech (tedy po
10°). Každý z přidaných gradientů je vážen Gaussovským oknem. O výsledné orientaci
bodu pak rozhoduje interval s nejvyšší hodnotou. Pokud některé další hodnoty histogramu
8
dosahují nebo převyšují 80 % prvního maxima, jsou na stejné pozici vytvořeny další
významné body.
Následně se sestavuje SIFT deskriptor klíčového bodu. SIFT deskriptor se pro daný bod
konstruuje s gradientu bodu v okolí daného klíčového bodu, v oktáve, ve které byl klíčový
bod nalezen. Jak je ukázané na obrázku 2.12 vezme se 8x8 okolí klíčového bodu a toto
okolí se rozdělí na čtyři samostatné 4x4 pod-okolí, v těchto pod-okolích je vypočten
histogram o osmi binech (směrech), a ten je umístěn do pole 2x2. Toto je již výsledný
deskriptor, který má velikost 2x2x8 = 32 hodnot.
Univerzální a nejčastěji používaná varianta je brát 16x16 okolí, které je rozděleno na 4x4
pod-okolí, v podokolích histogramy o osmi binech a 4x4 velký výsledný deskriptor, tudíž
4x4x8 = 128 hodnot.
2.2 SURF – Speeded-Up Robust Features
Algoritmus SURF vychází do značné míry z předešlého. Hlavním důvodem jeho vzniku
je vysoká výpočetní náročnost algoritmu SIFT. Je zde však též kladen důraz na dobrou
výkonnost a schopnost pracovat v reálném čase. SURF se podobně jako SIFT sestavuje
ze čtyř fází, které jsou velmi podobné jako v předešlé podkapitole.
SURF využívá pro detekci významných bodů determinantu Hessovy matice
namísto DoG. Pro rozmazání snímků jednotlivých oktáv se pro menší výpočetní náročnost
využily diskreditované a aproximované Haarovy vlnky.
𝐻(𝑥, 𝜎) = (
𝐿𝑥𝑥(𝑥, 𝜎) 𝐿𝑥𝑦(𝑥, 𝜎)
𝐿𝑥𝑦(𝑥, 𝜎) 𝐿𝑦𝑦(𝑥, 𝜎))
(3)
kde Lxx (x; 𝜎) vyjadřuje konvoluci vstupního snímku s druhou derivací Gaussovy funkce
v bodě x= (x; y), obdobně pro Lyy (x; 𝜎) a Lxy (x; 𝜎).
Determinant Hessovy aproximované matice v SURFu vyjadřuje hodnotu jedné položky v
Scale space. Při výpočtu, se pro urychlení, využívá integrální reprezentace obrazu.
Integrální obraz je speciální reprezentace obrazu, kdy každý bod vyjadřuje součet všech
předešlých bodu, které mají stejnou nebo menší x-ovou a y-novou souřadnici. To platí v
případě, že souřadnicový systém obrazu má počátek v levém horním rohu. Výpočet
integrálního obrazu je možné vypočítat v lineárním case. [diplomka tý holky]
Výpočet orientace bodu je realizován pomocí výpočtu odezvy Harových vlnek v okolí
daného bodu. Orientace je určena ve směru, kde je největší hustota odezev na Haarovy
vlnky. Velikost okolí bodu a vlnky závisí na měřítku, ve kterém byl bod nalezen. Následně
je ve směru orientace bodu provedeno oknování, které rozdělí oblast do 4x4 regionů.
V každém z těchto regionů je spočítána odezva na Haarovy vlny v horizontálním i
9
vertikálním směru. Následně je v každém z regionů vypočítán čtyř prvkový vektor.
Výsledný deskriptor tedy obsahuje 64 hodnot.
2.3 RANSAC – Random Sample Consensus
Je iterativní metoda, kdy jsou vstupní datové body rozděleny algoritmem do dvou skupin
(outliers a inliers). Outliers jsou nekorespondující body a inliers jsou body nacházející se
blízko k ideálnímu řešení.
Algoritmus pracuje v pěti základních bodech:
1. Vybere se náhodný počet bodů, který musí být vyšší než stanovené minimum
2. Vyřeší se model s danými parametry
3. Určí se počet bodů splňujících dané kritérium s definovanou tolerancí
4. Pokud počet těchto inliers bodů překročí stanovenou hranici, použije se tento
model a skončí se
5. Pokud počet inliers bodů nepřekročí stanovenou hranici, opakuj body 1-4
maximálně x-krát.
10
3 KALIBRACE KAMERY
Vzhledem k nedokonalé technologii výroby kamer, je většina dnes používaných kamer
zdrojem zkreslení obrazu. Mezi hlavní dvě deformace patří radiální zkreslení a
tangenciální zkreslení.
Díky radiálnímu zkreslení se přímé linie zobrazují jako zakřivené. Tento efekt je
silnější na krajích fotografie než v jejím středu. [2]
𝑥𝑧𝑘𝑟𝑒𝑠 = 𝑥(1 + 𝑘1𝑟2 + 𝑘2𝑟4 + 𝑘3𝑟6) (4)
𝑦𝑧𝑘𝑟𝑒𝑠 = 𝑦(1 + 𝑘1𝑟2 + 𝑘2𝑟4 + 𝑘3𝑟6) (5)
Obdobně se projevuje tangenciální zkreslení, k němuž dochází, protože obrazová
čočka není zarovnána dokonale paralelně k zobrazovací rovině. Některé oblasti obrazu
mohou vypadat blíž, než se očekávalo.
𝑥𝑧𝑘𝑟𝑒𝑠 = 𝑥 + [2𝑝1𝑥𝑦 + 𝑝2(𝑟2 + 2𝑥2)] (6)
𝑦𝑧𝑘𝑟𝑒𝑠 = 𝑦 + [𝑝1(𝑟2 + 2𝑦2) + 2𝑝2𝑥𝑦] (7)
Hledáme tedy pět parametrů - koeficienty zkreslení (distortion coefficients)
𝑑𝑖𝑠𝑡𝑜𝑟𝑡𝑖𝑜𝑛𝐶𝑜𝑒𝑓 = (𝑘1 𝑘2 𝑝1 𝑝2 𝑘3) (8)
Dále musíme najít intrinsické a extrinsické parametry. Intrinsické parametry jsou
specifické pro každou kameru. Jedná se o údaje jako ohnisková vzdálenost (fx, fy) a
optická centra (cx,cy). Dohromady tvoří kamerovou matici.
𝑐𝑎𝑚 = (𝑓𝑥 00 𝑓𝑦
𝑐𝑥
𝑐𝑦
0 0 1
)
(9)
Extrinsické parametry odpovídají rotačním a překladovým vektorům, které
překládají souřadnice 3D bodu do souřadného systému.
U stereofonních aplikací je třeba tyto zkreslení nejprve opravit. Abychom zjistili
všechny tyto parametry, musíme aplikaci poskytnout vzorové obrázky dobře
definovaného vzoru (např. Šachovnice). Těchto obrázků by mělo být alespoň 10. Z těchto
vzorů je vypočtena kalibrabrace kamery.
11
Obrázek 1 Kalibrační šachovnice
12
4 PROGRAMOVÁ ČÁST
4.1 Použité prostředky
Zde si v krátkosti popíšeme použitě prostředky pro tvorbu našeho programu.
4.1.1 Microsoft Visual Studio
Microsoft Visual Studio je vývojové prostředí (IDE) od Microsoftu. Visual Studio
podporuje jazyky prostřednictvím jazykových služeb, což umožňuje, aby editor kódu a
debugger podporoval jakýkoliv programovací jazyk. Mezi vestavěné jazyky patří C/C++,
VB.NET a C#. [3]
Visual Studio nepodporuje žádný programovací jazyk nebo nástroj samo o sobě.
Místo toho je mu možno přidat různá rozšíření funkčnosti. Každá funkčnost je zabalena
do balíčku VSPackage. Když je nainstalována, je dostupná jako služba. IDE poskytuje tři
služby: SVsSolution, která umožňuje očíslovat projekty a sestavy; SVsUIShell, který
poskytuje rozdělování na okna a UI funkce (jako panely, nástrojové lišty a okna nástrojů);
a SVsShell, který se stará o registraci balíčků VSPackage. IDE je také odpovědné za
koordinaci služeb a umožnění komunikace mezi nimi. Všechny editory, designery, typy
projektů a další nástroje jsou implementovány jako balíčky VSPackage.
4.1.2 Knihovna OpenCV
OpenCV (Open Source Computer Vision Library) je open source knihovna pro počítačové
vidění a strojové učení. OpenCV byla vytvořena tak, aby poskytovala společnou
infrastrukturu pro aplikace počítačového vidění a urychlila používání vnímání stroje v
komerčních produktech. [4]
OpenCV je vydána pod licencí BSD, a proto je zdarma pro akademické i komerční
využití. Má rozhraní C ++, Python a Java a podporuje operační systémy Windows, Linux,
Mac OS, iOS a Android. OpenCV byla navržena pro výpočetní efektivitu a se silným
zaměřením na aplikace v reálném čase.
4.1.3 Framework Qt
Qt je multiplatformní framework pro tvorbu GUI (grafické uživatelské rozhraní).
Aplikace napsané pomocí toolkitu je možno distribuovat pod licencí GPL, LGPL, nebo
po splnění určitých podmínek i komerčně.
Qt je knihovna programovacího jazyka C++, ale existuje například i pro jazyky
Python, C, Pascal, C#, Java. Podporuje lokalizaci aplikací a také SQL, zpracování XML,
správu vláken, přístup k souborům, práci s grafikou a multimédii. Velkou výhodou Qt je
velmi přehledně zpracovaná dokumentace a také vývojové programy Qt Creator nebo Qt
Designer. Aplikace vytvořené pro grafické uživatelské prostředí používají nativní vzhled
13
operačního systému, takže vyvinuté aplikace se vždy přizpůsobí vzhledu používaného
prostředí. [5]
4.2 Koncept programu
Náš program jsme se rozhodli vytvořit tak, aby umožňoval použití v robotice, ale aby byl
také použitelný pro běžného uživatele. Z tohoto důvodu jsme program koncipovali tak,
aby umožnil běh v grafickém rozhraní, ale aby běžel i jako samotná konzolová aplikace.
Defaultně se program spouští s GUI. Pomocí argumentu lze však při startu aplikace
GUI zakázat, program pak běží jako konzolová aplikace a jednotlivé fotky a upřesňující
volby je možné nastavit pouze jako argumenty aplikace při spuštění.
4.3 Popis algoritmu
Program umožňuje běh ve dvou režimech. Prvním režimem je běh v uživatelském modu.
Zde se zobrazuje GUI. Druhou možností je běh programu pouze jako konzolová aplikace.
Tyto dva mody je možné nastavit pomocí parametru při spuštění aplikace. Pokud aplikace
nedostane žádný parametr, spustí se defaultně v modu s GUI. Pokud aplikace dostane
parametry, spustí se pouze jako konzolová aplikace.
V této kapitole se budeme věnovat pouze aplikaci v konzolovém modu, běhu
aplikace s GUI se budeme věnovat v kapitole 4.4 Grafické uživatelské rozhraní.
Algoritmus pro skládání jednotlivých obrázku do jednoho obrázku panoramatického je
však pro oba mody stejný.
Nejprve je vyhodnocen počet argumentů. Pokud jsou zadány nějaké argumenty
programu, program se spustí v příkazové řádce. Následně jsou pomoci funkce
parseCmdArgs vyhodnoceny jednotlivé argumenty programu. Možné argumenty jsou:
• --help, pro vypsání nápovědy
• --try_use_gpu, pro pokus o vypočet pomoci grafické karty místo CPU
• --d3, moznost pro rozdělení obrázku k zvýšení přesnosti
• --output <name>, pojmenování výsledného obrázku
• --mode <panorama/scans>, pro vyber modu panorama/scans
• Zbylé argumenty jsou považovány jako názvy obrázků pro tvorbu panorama
Po načteni argumentu následuje kontrola, zda jsou argumenty validní. Následně jsou
pomocí funkcí Stitcher::create a stitcher->stitch vytvoříme výsledné panorama. Funkce
využívají algoritmu SURF.
14
4.4 Grafické uživatelské rozhraní
Grafické uživatelské rozhraní je vytvořené pomocí frameworku QT5. Při návrhu jsme
dbali na co nejintuitivnější ovládaní a přehlednost cele aplikace.
První, co uživatel uvidí po zapnuti programu je základní obrazovka umožňující
vytvoření panoramatu.
V levém horním rohu je v souladu s většinou programu pro operační systém
Windows umístěno základní menu, obsahující položky file a help. V položce file je možné
vybrat soubory pro uložení panorama nebo již hotové panorama uložit. Pod položkou help
se skrývá stručný návod k použiti a informace o autorech.
Jako další je na úvodní obrazovce viditelné záložkové menu, obsahující záložky
Panorama a Calibration.
Záložka Panorama slouží pro tvorbu panoramat nebo scanu. Tato záložka je
defaultně otevřena při spuštění programu. Záložka je dále rozdělena na dvě okna. V levém
okně je možné pomoci prvku push button vybrat soubory pro vytvoření panorama (viz.
Obr. 2). V pravém okně je možné panorama vytvořit pomoci tlačítka Stitch. Dále je zde
možně vybrat dodatečné nataveni, jako použití GPU pro výpočty místo CPU, zvolit mód
panorama nebo scans. Další možnou volbou je využití vytvořené kalibrační matice,
nicméně algoritmus je schopen kalibrovat si obrázky sám. Největší část této záložky zabírá
náhled na vytvořené panorama.
Obrázek 2 Úvodní obrazovka programu
15
V záložce Calibration probíhá vytvoření kalibrační matice pro spojovaní obrázku.
Nejprve je nutné nahrát alespoň čtyři kalibrační šachovnice. Pote je nutné vyplnit
skutečnou délku mřížky. Vyplnit počet sloupců a počet řádku. Pote lze vytvořit kalibrační
matici, kterou lze využít pro vytvoření panorama.
Obrázek 3 Program po vytvoření panoramatického obrázku
Obrázek 4 Záložka kalibrace
16
5 VÝSLEDKY PROGRAMU
V následujících podkapitolách bude probráno zhodnocení programu a dosažených
výsledků.
5.1 Operační náročnost algoritmu
Prvním kritériem je určení času potřebného pro vykonání algoritmu v závislosti na
velikosti vstupních dat. V našem případě je velikost vstupních dat dána počtem 15 Mpx
fotografií o velikostech přibližně 3 MB. Měření probíhalo ve dvou úlohách. V první úloze
algoritmus využíval pouze systémové prostředky bez GPU, ve druhé byla zapojena i GPU.
Co se týče GPU, v grafu č. 1 jsou znázorněny hodnoty pouze pro integrovanou grafickou
kartu, ne pro dedikovanou.
Závislost lze proložit exponenciální křivkou a časovou složitost lze vyjádřit:
𝑂(𝑓(1,911𝑒0,166𝑁)) (10)
Graf 1 Časová závislost panoramatu
Počet porovnávaných deskriptorů obrazu, nalezených pomocí SURF algoritmu,
vzrůstal s počtem fotografií od 17572 po 86507. Na většině fotografií bylo nalezeno
průměrně 4500 významných bodů, krajní hodnoty nalezených bodů byly 2*103 a 104.
0
10
20
30
40
2 4 6 8 10 12 14 16 18
t [s]
N [-]
Časová závislost zpracování panoramatu na počtu snímků
t_cpu [s]
t_gpu [s]
Intel CORE i5, 8GB RAM, Intel HD Graphic 4400
17
Fotografie použité k testování byly pořizovány uvnitř místnosti a jejich miniatury jsou
zobrazeny na následujícím obrázku pro znázornění složitosti scény. Úhel rotace objektivu
je 15°.
Obrázek 5 Jednotlivé snímky
5.2 Limity algoritmu v počtu deskriptorů
Pro nalezení stavu, ve kterém algoritmus začíná selhávat, bylo využito znalosti o počtu
významných bodů obrazu, respektive z nich vypočítaných deskriptorů v jednotlivých
snímcích určených ke spojení. V jednoduché scéně, obsahující co nejméně rohů, byly vždy
pořizovány dva snímky se změnou rotace objektivu o 30°. Při přidání jednoduchých
objektů do snímané scény se poté zvětšuje počet významných bodů v obraze a tím
nalezení více korespondencí mezi významnými body nalezenými v jednotlivých
snímcích.
V prvním případě, bez vloženého objektu, algoritmus dle očekávání selhává právě
v důsledku nenalezených korespondencí.
Druhá situace je na obrázku č. 6. Do scény byl vložen jednoduchý objekt a počet
společných deskriptorů v průniku snímků vzrostl z 33 na 150. V obou snímcích bylo
nalezeno přibližně o 30 významných bodů více, ty si však neodpovídaly. Při tomto počtu
společných deskriptorů algoritmus stále není schopen v dané scéně snímky spojit.
18
Obrázek 6 Deskriptory
Ve třetím případě byl vyměněn původní objekt za objekt se složitějším tvarem.
V oblastech průniku scény na jednotlivých snímcích je v tomto případě 300 a 380
významných bodů, přičemž si odpovídá 280 deskriptorů mezi snímky. Algoritmus při
nalezení tohoto počtu deskriptorů již dokáže snímky spojit.
Obrázek 7 Deskriptory
Hledaná hranice se tedy nejspíše nachází přibližně v intervalu od 150 do 280
deskriptorů. Tato hranice se ale bude měnit v závislosti na složitosti scény a míry překrytí
fotografií. Při složitější scéně lze nalézt více deskriptorů s větší vahou příznakových
vektorů a přesto, že bude překrytí minimální a počet deskriptorů pod spodní hranicí
určeného intervalu, větší váhy příznakových vektorů zajistí více si korespondujících bodů
a tím i spojení fotografií s minimálním překrytím.
5.3 Limity algoritmu v překrytí snímků
Jak již bylo předesláno, schopnost spojení snímků závisí především na počtu nalezených
deskriptorů, které si v jednotlivých snímcích odpovídají. V předešlé podkapitole byla
pozornost věnována pouze jednoduché scéně s konstantním pootočením objektivu.
19
V případě vybrání obecné scény exteriéru může být potřebné překrytí snímků pro spojení
mnohem menší právě v souvislosti s nalezením více významných bodů v obraze.
Pro experimentální zjištění potřebného procentuálního překrytí dvou snímků
v případě horizontální rotace objektivu byla úmyslně vybrána scéna s velkým
zastoupením deskriptorů ve vertikální ose. Pokud by byly nalezené významné body
soustředěné pouze v jednom místě, pravděpodobnost spojení by klesala. Scéna použitá
k testování je na obrázku č. 8.
Obrázek 8 Testovací scéna
Právě z vybraných fotografií na zmíněném obrázku bylo experimentálně zjištěné
nejmenší procentuální překrytí přibližně 13 % pro danou scénu. Pro orientaci o výskytu
vypočítaných deskriptorů v překrývajících se oblastech je přidán obrázek č. 9.
Obrázek 9 Překrytí scény
20
5.4 Srovnání s Microsoft Image Composite Editor
V závěru byl algoritmus srovnán s programem Microsoft Image Composite Editor. Pro
porovnání se opět změřila doba spojování snímků na stejné datové sadě, avšak výsledky
jsou pouze orientační z důvodu omezených možností měření času spojování programu
společnosti Microsoft. Ve vytvořeném projektu lze snadno implementovat časomíru, ale
u Image Composite Editoru byl čas měřen pouze pomocí stopek. Čas potřebný pro spojení
fotografií je v celém měřeném intervalu u programu Image Composite Editor vyšší, jak
ukazuje graf č. 2. Vzhledem k průběhům křivek lze však očekávat, že pro větší datovou
sadu (19 a více snímků) bude vytvořený program potřebovat více času než Image
Composite Editor.
Graf 2 Porovnání časové závislosti zpracování panoramatu s Microsoft ICE
0
5
10
15
20
25
30
35
40
45
2 4 6 8 10 12 14 16 18
t [s]
N [-]
Porovnání časové závislosti zpracování panoramatu na počtu snímků s Microsoft ICE
t_cpu
ICE
21
6 ZÁVĚR
Tato práce se zabývala tvorbou panoramatických fotografií. V rámci práce byl vytvořen
program pro tvorbu panoramatických snímků s využitím frameworků OpenCV a QT5 pro
operační systém Windows. Celá práce je rozdělena do několika tematických celků.
V první kapitole jsme seznámili s algoritmy pro tvorbu panoramatických snímků,
tedy s algoritmy SIFT, SURF a RANSAC.
V druhé kapitole jsme se zaměřili na proces kalibrace kamery a vytvoření
kalibrační matice.
Třetí kapitola je zaměřena na tvorbu programu. Jedná se o základní myšlenku,
stručný algoritmus našeho vytvořeného programu a návrh GUI. V poslední řadě je zde
popis ovládání jak konzolové aplikace, tak aplikace běžící v grafickém rozhraní.
Poslední kapitola se věnuje zhodnocení výsledků programu. Je zde popsána časová
složitost námi vytvořeného programu, která byla aproximována jako
𝑂(𝑓(1,911𝑒0,166𝑁)). Dále jsou zde popsány významné body pro spojování snímků –
deskriptory. Z námi získaných dat vyplývá, že je průměrně potřeba alespoň 13 % překrytí
snímků. V poslední řadě zde proběho porovnání s komerčním řešením Microsoft ICE.
Zjistili jsme, že náš program je pro menší počty snímků (pro maximálně 18 snímků)
rychlejší, od 19 snímků a více je rychlejší program ICE.
Úspěšně jsme vytvořili program na tvorbu panoramatických snímků, který jsme
posléze otestovali a porovnali s komerčním řešením. Zadání tedy bylo splněno.
22
BIBLIOGRAFIE
[1] LOWE, David G. Distinctive Image Features from Scale-Invariant Keypoints.
2004, , 28.
[2] What Is Camera Calibration?. Mathworks [online]. 2018 [cit. 2018-05-03].
Dostupné z: https://www.mathworks.com/help/vision/ug/camera-calibration.html
[3] Microsoft Visual Studio. In: Wikipedia: the free encyclopedia [online]. San
Francisco (CA): Wikimedia Foundation, 2001- [cit. 2018-05-03]. Dostupné z:
https://cs.wikipedia.org/wiki/Microsoft_Visual_Studio
[4] OpenCV. OpenCV [online]. 2018 [cit. 2018-05-03]. Dostupné z:
https://opencv.org/about.html
[5] Qt. Qt [online]. 2018 [cit. 2018-05-03]. Dostupné z: https://www.qt.io/
23
Seznam příloh
Příloha A Zabalený program
Příloha B Zdrojový kód programu
Příloha C Vytvořené panoramatické snímky a testovací soubory