22
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

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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

Page 2: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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.

Page 3: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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

Page 4: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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

Page 5: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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.

Page 6: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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

Page 7: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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

Page 8: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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.

Page 9: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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.

Page 10: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

11

Obrázek 1 Kalibrační šachovnice

Page 11: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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

Page 12: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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.

Page 13: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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

Page 14: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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

Page 15: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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

Page 16: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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.

Page 17: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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.

Page 18: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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

Page 19: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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

Page 20: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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.

Page 21: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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/

Page 22: VYSOKÉ UČENÍ TECHNICKÉ V BRNĚrobotika/2018_MRBT/2018_M05... · 1 ÚVOD S panoramatickými fotografiemi se dnes setkáváme téměř denně a většinou si to ani ... VB.NET a

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