Odstraňování nežádoucích objektů z digitálních fotografií

Podobné dokumenty
STRUČNÝ NÁVOD KU IP-COACHU

STRUČNÝ NÁVOD KU IP-COACHU

Snímka 1

GEODETICKÝ A KARTOGRAFICKÝ ÚSTAV BRATISLAVA Chlumeckého 4, Bratislava II Obsah 1. Export údajov ZBGIS do CAD formá

Pokrocilé spracovanie obrazu - Fourierová transformácia

Operačná analýza 2

III. Diferenciálny počet funkcie viac premenných (Prezentácia k prednáškam, čast B) Matematická analýza IV (ÚMV/MAN2d/10) RNDr. Lenka Halčinová, PhD.

Metrické konštrukcie elipsy Soňa Kudličková, Alžbeta Mackovová Elipsu, ako regulárnu kužeľosečku, môžeme študovať synteticky (konštrukcie bodov elipsy

Microsoft Word - Priloha_1.docx

Pripojenie sa na počítač a ovládanie vzdialenej obrazovky cez CM Remote

Prenosový kanál a jeho kapacita

Slovenská technická univerzita v Bratislave Fakulta informatiky a informačných technológií Ilkovičova 2, , Bratislava 4 Internet vecí v našich ž

VSDC Free Video Editor stručný návod na používanie Link na sťahovanie softvéru: K prog

Microsoft Word - 06b976f06a0Matice - Uzivatelska Dokumentacia

Microsoft Word - prirucka_katedry_nova

Matematika 2 - cast: Funkcia viac premenných

Vzorové riešenia úlohy 4.1 Bodovanie Úvod do TI 2010 Dôvod prečo veľa z Vás malo málo bodov bolo to, že ste sa nepokúsili svoje tvrdenia dokázať, prič

Detekcia akustických udalostí v bezpečnostných aplikáciách

Resolution

Microsoft PowerPoint - OOP_prednaska_10.pptx

PowerPoint Presentation

1. KOMPLEXNÉ ČÍSLA 1. Nájdite výsledok operácie v tvare x+yi, kde x, y R. a i (5 2i)(4 i) b. i(1 + i)(1 i)(1 + 2i)(1 2i) (1 7i) c. (2+3i) a+bi d

Paralelné algoritmy, cast c. 2

Metódy dokazovanie v matematike 1 Základné pojmy Matematika exaktná veda vybudovaná DEDUKTÍVNE ZÁKLADNÉ POJMY základy každej matematickej teórie sú in

Obsah tejto príručky Microsoft Prechod na program Access 2010 z programu Access 2003 Vzhľad programu Microsoft Access 2010 sa výrazne odlišuje od prog

9.1 MOMENTY ZOTRVACNOSTI \(KVADRATICKÉ MOMENTY\) A DEVIACNÝ MOMENT PRIEREZU

Sirius II Sprievodca inštaláciou a návod na použitie Sirius II - sprievodca inštaláciou a návod na použitie (verzia 3) 1

Centrum vedecko-technických informácií, Odbor pre hodnotenie vedy, Oddelenie pre hodnotenie publikačnej činnosti Vyhľadávanie a práca so záznamami - C

Pravidelné úlohy verzia ku dňu SEAL IT Services, s.r.o. Kontakt: SEAL IT Services, s.r.o., Topoľová 4, Bratislava 1, tel.:

Operačná analýza 2

Priebeh funkcie

Navigácia po úvodnej stránke elektronickej schránky Dátum zverejnenia: Verzia: 10 Dátum aktualizácie: Navigácia po úvodnej st

Ako hrat Burlesque Queen V 1.4

7011

(Microsoft Word Zadanie na s\372\235a\236 KROS DESIGN AWARD .doc)

2.5. Dotyčnica krivky, dotykový kužeľ. Nech f je krivka a nech P V (f) (t.j. m P (f) 1). Ak m P (f) = r a l je taká priamka, že I P (f, l) > r, potom

Podpora metód operačného výskumu pri navrhovaní systému liniek doc. RNDr. Štefan PEŠKO, CSc. Katedra matematických metód, Fa

NÁVRH UČEBNÝCH OSNOV PRE 1

Microsoft Word - mnohouholnik.doc

Ďalšie vlastnosti goniometrických funkcií

SRPkapitola06_v1.docx

Ponuka Štart

Informačný systém pre externú časť a písomnú formu internej časti maturitnej skúšky Informačný systém pre EČ a PFIČ maturitnej skúšky Užívateľská prír

Import absencí z ASC

Analýza sociálnych sietí Geografická lokalizácia krajín EU

Pracovný postup pre vypĺňanie údajov elektronického formulára IŠIS pre spravodajskú jednotku 1

1

aplikácia do mobilého telefónu na stiahnutie digitálneho tachografu

Aplikace matematiky- záverečná práca Juraj Bodík 28. septembra 2017 Definície Žena - objekt ohodnotený celým číslom. Každé dve ženy sa dajú porovnat a

Paralelné algoritmy, cast c. 3

Agenda záverečnej práce pedagóg Celá agenda týkajúca sa záverečnej práce je dostupná v obrazovke Záverečná práca (menu Agenda pedagóga -> Záverečné pr

4. Pravidlo ret azenia. Často sa stretávame so skupinami premenných, ktoré zložitým spôsobom závisia od iných skupín premenných. Pravidlo ret azenia p

Externé mediálne karty Používateľská príručka

Oceňovanie amerických opcií p. 1/17 Oceňovanie amerických opcií Beáta Stehlíková Finančné deriváty, FMFI UK Bratislava

8 Cvičenie 1.1 Dokážte, že pre ľubovoľné body X, Y, Z platí X + Y Z = Z + Y X. 1.2 Dokážte, že pre ľubovoľné body A, B, D, E, F, G afinného priestoru

Tue Oct 3 22:05:51 CEST Začiatky s jazykom C 2.1 Štruktúra programu Štruktúra programu by sa dala jednoducho popísať nasledovnými časťami, kto

Manuál pre nastavenie tlače z VRP tlačiarní bluetooth Bluetooth Manuál pre nastavenie tlače z VRP tlačiarní -1-

Cvičenie 9 Riešené príklady 1. Príklad min f(x 1, x 2 ) = x x x 1 s.t. x 1 80 x 1 + x Pre riešenie úlohy vykonáme nasledujúce kroky

Objektovo orientované programovanie

Spracovanie obrazu a GUI v MATLABe Cvičenia z Počítač ového Videnia Zuzana Haladová

Digitálne technológie v každodennom živote 3. ročník akademický rok 2019/2020 Harmonogram prednášok

Informačná a modelová podpora pre kvantifikáciu prvkov daňovej sústavy SR

Užívateľský manuál FULL HD LED stropný monitor (AUX/HDMI/USB/FM-TX)

Microsoft Word - zapis-predmetov-AiS

Manuál pre nastavenie tlače z VRP Bluetooth, USB tlačiarne Bluetooth, USB tlačiarne Manuál pre nastavenie tlače -1-

Slovenská technická univerzita v Bratislave Fakulta informatiky a informačných technológií Ilkovičova 2, Bratislava 4 Používateľská príručka Vi

Manuál pre nastavenie tlače z VRP elio m500 Elio m500 Manuál pre nastavenie tlače -1-

2

Pokrocilé programovanie XI - Diagonalizácia matíc

MediatelYext

Používateľská príručka POUŽÍVATEĽSKÁ PRÍRUČKA Generátor XML dávok pre Informačný systém kontrolných známok z MS Excel šablóny Dátum: Verzia

Ako si mám nainštalovať nový upgrade z Internetu?

7002

Programátorské etudy - Pascal

ŤAHÁK PRAKTICKÁ ČASŤ Prerekvizity: LINUX: WINDOWS: Inštalácia Oracle VirtualBoxu a vytvorenie virtuálneho stroja /návod nižšie/ Operačný system Window

(Microsoft Word - Tuzemsk\341 a zahrani\350n\341 jazda \232tandardn\341 jazda.docx)

Komplexný informa ný a monitorovací systém Monitorovanie biotopov a druhov európskeho významu Používate ská dokumentácia KIMS modul Mobilná aplikácia

SK MATEMATICKA OLYMPIADA 2010/ ročník MO Riešenia úloh domáceho kola kategórie Z4 1. Doplň do prázdnych políčok čísla od 1 do 7 každé raz tak,

SAEAUT SNMP OPC Server

gis5 prifuk

Používateľská príručka elektronických služieb pre žiadateľov o štatistické informácie október 2016

TSS GROUP A.S. UŽÍVATEL SKÝ MANUÁL EČV 2: Basic a Light Plate recognition software Október 2015 V Dubnica nad Váhom, dňa Róbert Sokol

MO_pred1

Žiadosť o licenčnú zmluvu na podujatie Na adrese v sekcii hlavného menu kliknete na položku Používatelia. Zobrazí sa blokové menu,

Microsoft Word - 6 Výrazy a vzorce.doc

NU_ _001_

dFlex Nitra spol. s r.o.

tv2go_pouzivatelska_prirucka

iot business hub whitepaper isdd_em_New.pdf

Obsah:

0022-vub-mobilne-tokeny-200x200-v03.indd

Práca v programe Tracker Program Tracker je voľne šíriteľný a stiahnuteľný program vytvorený na platforme Open Source Physics (

eKasa

DediĊnosť

Microsoft Word - pouzivatelska_prirucka.doc

Inteligentné rozhodovacie systémy Heuristické prehľadávanie SP Október, 2018 Katedra kybernetiky

Prepis:

Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁRSKA PRÁCA Radovan Duga Odstraňování nežádoucích objektů z digitálních fotografií Katedra teoretické informatiky a matematické logiky Vedúci bakalárskej práce: RNDr. Pavel Surynek, Ph.D. Študijný program: Informatika, Programování 2009

Ďakujem vedúcemu tejto práce RNDr. Pavlovi Surynkovi, Ph.D. za trpezlivost a čas, ktorý mi venoval. Jeho nápady mi boli značnou motiváciou pri písaní tejto práce. Prehlasujem, že som svoju bakalársku prácu napísal samostatne a výhradne s použitím citovaných prameňov. Súhlasím s jej požičiavaním a zverejňovaním. V Prahe dňa 27. 7. 2009 Radovan Duga 2

Obsah 1 Úvod 6 2 Odstránenie objektu 8 2.1 Motivácia................................. 8 2.2 Retušovacie techniky........................... 9 2.2.1 Clone Stamp Tool......................... 9 2.2.2 Healing Brush Tool........................ 9 2.2.3 Kopírovanie podkladu a maskovanie, Patch Tool........ 10 2.2.4 Retušovanie pomocou práce s kanálmi............. 10 2.2.5 Retušovanie - ukážka....................... 10 2.3 Techniky obrazového vkresl ovania - digitálneho inpaintingu...... 11 2.4 Súčasné nástroje pre odstránenie objektu................ 11 3 Analýza, postup a princípy fungovania použitých algoritmov 13 3.1 Úvod do algoritmov a základné pojmy................. 14 3.2 Detekcia hrán v obraze.......................... 15 3.2.1 Cannyho hranový detektor.................... 18 3.3 Detekcia čiar - Houghova transformácia................. 19 3.4 Detekcia minimálnych oblastí (polygónov)............... 21 3.5 Dopĺňanie oblastí farbou, gradientom a textúrou............ 22 4 Prehl ad fungovania programu na ukážkových obrázkoch 24 5 Užívatel ská dokumentácia programu PhotoLab 30 5.1 Popis a ovládanie programu....................... 30 5.1.1 Manipulácia s obrázkom..................... 31 5.2 Popis nástrojov a ich vhodné nastavenia................ 31 5.2.1 Area Selector........................... 32 5.2.2 Edge Detector........................... 32 5.2.3 Line Selector........................... 33 5.2.4 Area Detector........................... 33 5.2.5 Area Filler............................. 33 3

5.2.6 Image Customizer......................... 34 5.2.7 Uloženie grafickej scény...................... 35 5.2.8 Klávesové skratky a toolbar................... 35 5.2.9 Zobrazenie dokumentácie..................... 36 6 Programátorská dokumentácia programu PhotoLab 39 6.1 Organizácia tried programu....................... 39 6.1.1 Document............................. 40 6.1.2 ToolManager a ATool....................... 40 6.1.3 Grafická scéna a grafické položky................ 41 6.2 Popis nástrojov.............................. 42 7 Záver 43 Literatúra 45 A Obsah priloženého média 47 B Kompilácia zdrojových kódov 48 4

Názov práce: Odstraňování nežádoucích objektů z digitálních fotografií Autor: Radovan Duga Katedra (ústav): Katedra teoretické informatiky a matematické logiky Vedúci bakalárskej práce: RNDr. Pavel Surynek, Ph.D. e-mail vedúceho: Pavel.Surynek@mff.cuni.cz Abstrakt: Ciel om tejto práce je preštudovat metódy súvisiace s odstraňovaním nežiadúcich objektov z digitálnej fotografie a následne navrhnút a implementovat grafický nástroj, ktorý bude poloautomaticky (za pomoci užívatel a) túto činnost prevádzat. Súčasné nástroje neponúkajú dostatočné metódy, preto sa v tomto programe pokúsime poskytnút užívatel ovi dostatočné nástroje pre jednoduché odstránenie označeného objektu. Spracovanie fotografie bude vykonané pomocou niekol kých nástrojov, kde každý nástroj získa z obrázku isté informácie, ktoré predá niektorému následujúcemu nástroju. Každý nástroj bude mat možnost konfigurácie. Po správnom nastavení parametrov nástrojov užívatel uloží výsledný obrázok. Program bol implementovaný v jazyku C++ pre jeho rýchlost a platformovú nezávislost. Kl účové slová: odstraňovanie nežiadúcich objektov, spracovanie digitálnej fotografie Title: Erasing of disturbing objects from digital pictures Author: Radovan Duga Department: Department of Theoretical Computer Science and Mathematical Logic Supervisor: RNDr. Pavel Surynek, Ph.D. Supervisor s e-mail address: Pavel.Surynek@mff.cuni.cz Abstract: The aim of this thesis is to study the methods for erasing disturbing objects from digital photography and to design and implement a software for semi-automatic executing of this task (with cooperation of the user). Currently available software tools are not suitable to do this task so we try to offer to the user sufficient tools for simple erasing of selected object. The process of erasement of the object is done by several configurable tools. Every tool obtains some information from a image and provides it to the following tool. After the right configuring of the tools the user saves the resulting image. The software is implemented in C++ for its performance and platform independency. Keywords: erasing of disturbing objects, processing of digital photography 5

Kapitola 1 Úvod V dnešnej digitálnej dobe už azda každý z nás mal v ruke digitálny fotoaparát, či už to bola profesionálna zrkadlovka, kompakt alebo jednoduchý fotoaparát v mobilnom telefóne. Proces digitalizácie a dnešný software nám ponúka široké možnosti pre úpravu digitálnej fotografie od jednoduchej zmeny jasu obrázku až po extrakciu špecifických dát z obrazu, ako sú črty l udskej tváre alebo detekcia rôznych objektov v obraze. Nejeden profesionálny fotograf už určite zažil situáciu, ked sa ocitol na nejakom významnom mieste pred nejakým známym objektom akým je napríklad architektonická budova, palác alebo kostol a potreboval získat záber z určitého pohl adu na objekt bez rušivých okolitých vplyvov, akými môžu byt napríklad zaparkované autá, stromy alebo okoloidúci turisti. Vtedy mu neostávalo nič iné ako danú fotografiu poriadit aj s rušivými vplyvmi a objektami a neskôr sa ich pokúsit pomocou vhodného nástroja odstránit. Dnešný software nám ponúka určité riešenia, ktorými sa dajú rušivé vplyvy a objekty poloautomaticky z určitého druhu fotografie vhodne zmazat, ale neponúka užívatel ovi žiadne možnosti nastavenia a konfigurácie pri odstránení daného objektu. Daný nástroj sa tak väčšinou tvári ako čierna skrinka, ktorá nám vráti nejaký výsledok, ktorý nebýva často uspokojivý. Preto často musí mat fotograf profesionálne schopnosti úpravy digitálnej fotografie a vlastnit drahý grafický nástroj, aby dokázal z fotografie vlastnými silami odstránit rušivý objekt. Ciel om tejto práce je rozobrat možnosti odstránenia objektu z fotografie a ponúknut užívatel ovi grafický nástroj, ktorým bude môct poloautomaticky nežiadúci objekt z fotografie zmazat a oblast objektu doplnit vhodným pozadím. Ked že ideálne odstránenie objektu sa len vel mi t ažko dosiahne automaticky, bude poskytnutý užívatel ovi na záver nástroj pre pixelovú editáciu obrazu. Organizácia textu je nasledovná. V nasledujúcej kapitole si popíšeme možné postupy pri odstraňovaní objektov, rozoberieme postup, pre ktorý sme sa rozhodli aj s dôvodmi a stručne ich porovnáme ich s existujúcimi nástrojmi. V tretej ka- 6

pitole rozoberieme detailnejšie jednotlivé kroky a princípy ich fungovania. Štvrtá kapitola nám odprezentuje fungovanie programu na ukážkový príkladoch. Piata kapitola nám popíše grafické užívatel ské rozhranie programu, jeho správanie a popis jednotlivých stavov programu z užívatel ského hl adiska. V poslednej kapitole rozoberieme významné implementačné detaily programu, spomenieme zdroje, z ktorých sme čerpali niektoré algoritmy a na záver sa zamyslíme nad požadovaným výsledkom, možnost ami rozšírenia a motiváciou pre nadväzujúce práce. 7

Kapitola 2 Odstránenie objektu 2.1 Motivácia Spôsoby odstránenia objektu z digitálnej fotografie sú rôznorodé. V súčasnosti nie je známy zaručený postup, ktorým by sa dal daný objekt z fotografie odstránit a dôvody sú jednoduché. Ak by sme si zobrali presný význam slovného spojenia odstránenie objektu, tak dospejeme k faktu,že by sa nám malo podarit nahradit oblast objektu pozadím alebo objektom nachádzajúcim sa za ním. Pre nedostatok informácií sa musíme spol ahnút na farby, rysy a vlastnosti obrázku v okolí spomínaného objektu a na kooperáciu užívatel a, pretože za odstraňovaným objektom sa môže nachádzat čokol vek. Preto si definujme pojem odstránenie objektu z digitálnej fotografie ako nahradenie oblasti objektu takým pozadím, aby neboli badatel né zmeny na obrázku, ktoré sme previedli a aby bežný užívatel nepozoroval na výslednom obrázku rušivé a neobvyklé javy. Možnosti odstránenia objektu Súčasné metódy odstraňovania objektov pri spracovaní obrazu môžeme rozdelit do dvoch skupín: retušovacie techniky techniky digitálneho obrazového vkresl ovania 1 V nasledujúcich kapitolách si stručne popíšeme tieto techniky, ktoré nám ponúkajú súčasné grafické nástroje a utility. 1 Pojem vkresl ovanie nájdeme v anglickej literatúre pod názvom digital inpainting alebo image interpolation. 8

2.2 Retušovacie techniky Retušovaním rozumieme úpravu fotografie užívatel om použitím grafického editora a niektorého typu klonovacieho nástroja, ktorý nám editor ponúka. Tieto nástroje sú väčšinou dobré pre odstránenie menšieho objektu z fotografie. Pre názornost si popíšeme nástroje v jednom z najznámejších grafických editorov súčasnosti, a to Adobe Photoshop[1]. Tieto techniky majú spoločného metovatel a a tým je prácnost, časová neefektívnost a princíp klonovania textúry. V grafickom editore Adobe Photoshop existuje niekol ko nástrojov a postupov vhodných pri retušovaní fotografie. Pri každom postupe si preto povieme, kedy a prečo je daný spôsob vhodné použit. Preberieme tieto nástroje: Clone Stamp Tool Healing Brush Tool a Patch Tool Kopírovanie podkladu a maskovanie Retušovanie pomocou práce s kanálmi 2.2.1 Clone Stamp Tool Tento nástroj umožňuje odstránit objekt na základe duplikácie časti obrázku. Oblast mazaného objektu doplníme klonovanou textúrou z okolia obrázku. Principiálne funguje tak, že sa najskôr vyberie zdrojový bod, premiestnime sa kurzorom myši nad oblast mazaného objektu, po stlačení tlačidla myši prechádzaním po danom objekte sa textúra kopíruje zo zdrojového bodu do ciel ového. Daný nástroj má dost obmedzené použitie, pretože vykazuje dobré výsledky len pri objektoch, kde pozadie má nemennú farbu a odtieň, napríklad pri mazaní nežiadúceho objektu z čisto modrej oblohy. 2.2.2 Healing Brush Tool Pracuje na tom istom princípe ako Clone Stamp tool, ale nástroj je už ovel a použitel nejší. Pri nahradzovaní oblasti už nejde len o jednoduché kopírovanie textúry na výsledné miesto, ale pixely sú vmiešavané do oblasti, ktorú odstraňujeme. Tento nástroj reaguje na texturu, svetelnost a tiene oblasti, kam kopírujeme zdrojovú textúru, teda umožňuje odstránit nežiadúci objekt z miesta, ktoré má premenlivú farbu, prípadne odtieň farby alebo nejakú textúru. 9

2.2.3 Kopírovanie podkladu a maskovanie, Patch Tool Skôr ako popíšeme metódu kopírovania podkladu, tak si vysvetlíme pojem maska vrstvy. Maska vrstvy je väčšinou 8-bitová pixelová mapa pevne zviazaná s danou vrstvou [14]. Je často zobrazovaná ako bitová mapa alebo obrázok o 256 stupňoch šedi. Informuje užívatel a, ktorá čast vrstvy je viditel ná a ktorá nie je. Čierna farba označuje oblast danej vrstvy, ktorá nie je viditel ná a postupným prechodom cez šedú až k bielej je daná oblast úplne viditel ná. Ide teda o mieru transparentnosti danej vrstvy. Táto technika napravuje niektoré nevýhody metódy Healing Brush tool, a to jej použitie v okolí ostrých hrán. Ak vyberieme za zdroj oblast, do ktorej zasahuje ostrá hrana, tak po prenesení nad mazanú oblast dôjde k vmiešaniu odtieňa tejto ostrej hrany do mazanej oblasti, čo je ale nežiadúce. Preto v takýchto prípadoch je vhodné použit metódu kopírovania zdroja za použitia masky. Princíp spočíva v skopírovaní zdrojovej oblasti do novej vrstvy, ktorá je prenesená nad mazaný objekt. Alternatívne teda môžeme napísat, že označíme oblast nazvanú záplata (patch) a ňou zaplátame odstraňovanú oblast. Vytvorením plynulých prechodov z danej vrstvy do pôvodnej vrstvy docielime vymazanie objektu pri nebadatel ných zmenách pri pohl ade na výsledný obrázok. Tieto plynulé prechody sa vytvoria pridaním masky do vrstvy. Na danú masku môžeme aplikovat povedzme radiály gradient s bielym stredom a čiernymi okrajmi, čím vytvoríme plynulý prechod z jednej vrstvy do druhej. 2.2.4 Retušovanie pomocou práce s kanálmi Táto technika naväzuje na predchádzajúcu a zaručí nám ešte lepšie výsledky výsledného obrázku po odstránení objektu. Po premiestnení záplaty nad vymazávaný objekt si pozrieme jednotlivé úrovne farebných zložiek a nastavíme hodnoty podobné okoliu pre každú farebnú zložku (červená, modrá, zelená)[5]. 2.2.5 Retušovanie - ukážka Výsledok retušovacích techník si ukážeme na obrázku. Z originálneho obrázku 2.1 sme pomocou techniky Perspektívneho klonovania (podobná technike Healing Brush tool) v editore GIMP[9] odstránili dve osoby. Výsledok ako vidíme na obrázku 2.2, nám dáva vel mi dobré výsledky, ale tento postup trpí podstatnou nevýhodou, a tou je časová náročnost uvedenej techniky. 10

Obr. 2.1: Ilustrácia retušovania - originál 2.3 Techniky obrazového vkresl ovania - digitálneho inpaintingu Tieto techniky sú založené na sofistikovaných algoritmoch pre obnovu stratených alebo poškodených častí obrázku. Všetky sa viacmenej zakladajú na princípe rekonštrukcie obrázku z bodov z okolia odstraňovaného objektu. Spoločnou metódou týchto postupov je použitie diferenciálnych rovníc s Dirichletovými okrajovými podmienkami pre spojitost [15]. Bližšie sa týmto technikám nebudeme venovat, pretože presahujú rozsah tejto práce. Bližšie sa o digitálnom inpainingu dozvieme napríklad v [7] alebo [20]. V súčasnosti dosahujú tieto techniky celkom dobré výsledky, ale väčšinou len pri malých objektoch. Boli už dokonca vyvinuté techniky vkresl ovania nielen do statického obrazu, ale aj do videa. Existujúce nástroje sú popísané v nasledujúcej kapitole. 2.4 Súčasné nástroje pre odstránenie objektu Retušovacie nástroje ponúka v súčasnosti vel ké množstvo rastrových grafických editorov. Medzi najznámejšie profesionálne nástroje patria už spomínaný editor Adobe Photoshop[1] alebo konkurent Corel PHOTO-PAINT[2]. Nevýhodou je ich zlá cenová dostupnost bežnému užívatel ovi a ich platformová závislost. Najznámejši multiplat- 11

Obr. 2.2: Ilustrácia retušovania - odstránenie dvoch l udí formový grafický nástroj, ktorý ponúka možnosti retušovania je program GIMP[9]. Nástroje využívajúce vkresl ovanie existuje niekol ko. V zásade však dosahujú uspokojivých výsledkov len pri odstraňovaní menšieho objektu z fotografie a nebývajú dostupné zdarma. Najlepšie výsledky dosahuje nástroj Inpaint[11] a utilita Smart Erase [8]. 12

Kapitola 3 Analýza, postup a princípy fungovania použitých algoritmov V tejto kapitole si popíšeme navrhnutý postup, ktorým sa pokúsime odstránit objekt z fotografie. Nami popísané techniky vkresl ovania textúry z 2. kapitoly sa snažili rekonštruovat pozadie objektu väčšinou len lokálne a to len rastrovo. Postup, ktorý my zvolíme sa bude líšit od existujúcich postupov v nasledujúcich bodoch: Detekujeme črty, hrany a čiary obrázku globálne, zvolíme vektorový prístup Zvolíme postup poloautomatického vymazávania za pomoci užívatel a tak, aby bol celkový čas strávený nastavovaním jednotlivých nástrojov kratší ako je čas manuálneho retušovania a takisto aby sa program nesprával ako čierna skrinka bez možnosti konfigurácie a nastavení a tak pri nevyhovujúcom výsledku by bola možnost rekonfigurácie nástrojov. Pri analýze obrázkov sme dospeli k pozorovaniu, že našou hlavnou úlohou bude detekovat hranovo a čiarovo súvislé oblasti v okolí mazaného subjektu. Problém hl adania súvislých oblastí môžeme l ahko previest na problém hl adania polygónov v obrázku. Ale, tu nám vznikne problém, že ako detekujeme okraje polygónov v oblasti mazaného objektu. Tieto okraje doplníme z detekcie čiar (detekciu čiar prevádzame v dôsledku detekcie hrán polygónov, detaily budú popísané v sekciách 3.3 a 3.4 ), kde konce čiar, ktoré zasahujú do mazanej oblasti, predĺžime nad mazanú oblast. Ďalšia podstatná čast bude doplnenie farby, gradientu alebo textúry do odstraňovanej oblasti. Túto farbu doplníme podl a viacerých techník popísaných v sekciách 3.5 a??. Ale základným princípom týchto metód je dopočítanie farby, gradientu, textury do časti oblasti polygónu, ktorá zasahuje do mazanej oblasti, teda nie je vyplnená. Stručne teda zhrnieme použitý postup pri riešení nášho problému a v d alších sekciách budú vysvetlené detailnejšie algoritmy jednotlivých krokov: 13

Detekcia hrán v obraze Detekcia čiar obrázku Detekcia polygónov Doplnenie vhodnej farby, gradientu alebo textúry do polygónov. 3.1 Úvod do algoritmov a základné pojmy Algoritmy a techniky, ktoré si popíšeme v nasledujúcich kapitolách, spadajú pod vednú disciplínu Počítačové videnie 1. Počítačové videnie si kladie za úlohu vytvárat systémy, ktoré sú schopné získavat z obrázkov určité informácie, ktoré patrične spracovávajú a tak môžeme povedat, že dané systémy majú schopnost videnia. Práve určitý druh takého systému sme si dali za úlohu vytvorit. Ďalej tieto uvedené algoritmy spadajú pod vedné smery, ktorými sú Analýza obrazu 2 a Digitálne spracovanie obrazu 3. Ďalej v tejto sekcii nájdeme popis niektorých pojmov, ktoré budeme používat v nasledujúcich kapitolách. Konvolúcia Konvolúcia je matematický operátor, ktorý spracováva dve funkcie do jednej výslednej. Tento pojem sa dá l ahko predstavit na príklade filtrovania vstupného signálu. Vstupný signál je jedna vstupná funkcia. Filter, ktorý je aplikovaný na danú funkciu je druhá vstupná funkcia. Výsledný signál je výsledná funkcia. Spojitá konvolúcia dvoch vstupných funkcií f : R R, g : R R (značí sa operátorom ) je funkcia h : R R definovaná následovne: h(x) = (f g)(x) = f(α)g(x α) dα kde funkcii g(x) sa hovorí konvolučné jadro (alebo aplikovaný filter na vstupný signál). Konvolúcia hraje dôležitú rolu v digitálnom spracovaní obrazu, používa sa vo viacerých algoritmoch. My ju využijeme v hranovom detektore. Preto budeme používat jej diskrétnu verziu v priestore funkcií dvoch premenných. Tu je konvolučné jadro definované ako funkcia g : [1..X] [1..Y ] R, kde [1..X] značí postupnost 1, 2,...X a [1..X] [1..Y ] značí kartéziánsky súčin dvoch postupností, čiže maticu. Výpočet 1 V anglickej literatúre označované pod názvom Computer Vision 2 V anglickej literatúre označované pod názvom Image Analysis 3 V anglickej literatúre označované pod názvom Digital image processing 14

konvolúcie funkcie vstupného obrazu f : [1..W ] [1..H] R, (kde W H sú rozmery obrazu) v jeho bode f(x, y) s konvolučnou maskou g : [1..X] [1..Y ] R je nasledujúci: h(x, y) = (f g)(x, y) = X 1 k=0 ( Y 1 ( ) ) f(x k, y l)g(k, l) Konvolúcia má d alšie vlastnosti ako sú asociativita, komutativita, distributivita a d alšie. Jasová funkcia Jas je svetelná veličina, definovaná ako svetelná veličina svietivosti. V RGB farebnom pristore 4 farieb sa jej hodnota v obrazovom bode najčastejšie počíta prevedením farby bodu do stupňa šedi pomocou vzt ahu[21]: l=0 µ = R 0.299 + G 0.587 + B 0.114 Obrazová funkcia Týmto pojmom budeme v následujúcich kapitolách označovat funkciu dvoch premenných s predpisom f : [1..X][1..Y ] [0..255][0..255][0..255], kde X Y sú rozmery obrázku a hodnoty sú jednotlivé farebné zložky (najčastejšie v poradí červená, zelená, modrá). 3.2 Detekcia hrán v obraze Hranová detekcia je termín vzt ahujúci sa k množine algoritmov, ktoré sa zameriavajú na detekciu a extrakciu hrán z obrazu. Spadá najmä pod oblast Analýzy obrazu. Skôr ako uvedieme jej princíp fungovania, tak si vysvetlíme pojem hrany obrazu. Hrana obrazu V bežnom kontexte hrany charakterizujú okraje nejakého objektu. Pri detekcii hrán nám nestačí získat okraje nejakého objektu, pretože objekty nebývajú jednoliaté a hranice objektu bývajú nejednoznačne určen. Preto si hranu obrazu definujeme ako množinu bodov v obraze, kde sa hodnota jasu prudko mení, resp. kde je funkcia hodnoty jasu nespojitá: väčšinou sa jedná o nespojitosti spôsobené farebnou hĺbkou, nespojitosti pri orientácii povrchu, nespojitosti spôsobené vlastnost ami povrchu (textúra, odraz od povrchu atd.) a nespojitost i spôsobené zmenou osvetlenia. Popisuje teda rýchlost zmeny a smer najväčšieho rastu obrazovej funkcie f(x, y) a je vhodnou diskrétnou aproximáciou gradientu obrazovej funkcie f(x, y). S týmto 4 Farebný priestor založený na RGB farebnom modeli zloženom z troch základných farieb červená (R), zelená (G) a modrá (B) 15

pojmom súvisí d alší pojem hranový bod označuje sa tak bod s vel kou hodnotou gradientu. Súčasné hranové detektory sú založené na troch postupoch: na diferenciálnych metódach: na hl adaní lokálneho maxima prvej derivácie (Robetsov, Prewottovej, Sobelov, Cannyho detektor) na hl adaní priechodu druhej derivácie nulou (Marr-Hildrethov detektor) na lokálnej aproximácii obrazovej funkcie parametrickým modelom, napr. polynómom a výpočtom druhých a tretích derivácií (detektor Haralicka) Úlohou obidvoch princípov je nájst, kde je vel kost intenzity gradientu dostatočne vel ká pre identifikáciu hrany nejakého objektu. Tiet postupy sa v podstate líšia v tom ako lokálne počítajú hodnotu gradientu a ako pri ňom rozhodujú o smere hrany. Gradient obrazovej funkcie Z matematickej analýzy vieme, že gradient spojitej funkcie n premenných dvoch premenných je vektor zložený zo zložiek ich parciálnych derivácií. Gradient funkcie sa označuje operátorom (nabla). Teda: f(x 1, x 2,..., x n ) = [ f x 1, f x 2,..., f x n ] My budeme uvažovat gradient pre dvojrozmerný priestor, teda pre n = 2 je to vektor: f(x, y) = [ f x, f y ] Vel kost tohoto vektoru vypočítame ako odmocninu súčtu druhých mocnín jeho parciálnych derivácií: f(x, y) = ( f x )2 + ( f y )2 a smer gradientu je určený uhlom α: (sin α, cos α) = [ f x, f y ] Ked že pracujeme v diskrétnom obrazovom priestore, tak budeme musiet jednotlivé parciálne derivácie vhodným spôsobom aproximovat. Aproximácia sa prevádza najčastejšie konvolúciou s nejakou konvolučnou maskou. Aproximácia môže byt nesymetrická (počítame l avú alebo pravú deriváciu v danom pixeli) alebo symetrická 16

(vtedy ale zanedbávame hodnotu daného pixelu a deriváciu počítame zo susedných pixelov). Medzi vlastnosti, ktoré sa nám budú hodit patrí asociatívnost parciálnej derivácie funkcie a konvolúcie, preto ich môžeme zjednotit do jedného operátora: f (f g) = x x g kde operátor značí konvolúciu. Detekciu hrán si predvedieme použitím konvolučnej masky Robertsovho priečneho operátora[16]: [ ] [ ] 1 0 0 1 a 0 1 1 0 Jednotlivé konvolúcie sú aplikované samostatne pre každú konvolučnú masku pre výpočet hodnoty gradientu v smere každej súradnice. Následne tieto gradienty sa môžu skombinovat pre výpočet absolútnej hodnoty gradientu. Hodnota gradientu je pre rýchlost vypočítaná aproximáciou: f(x, y) = f x + f y miesto pôvodnej odmocniny druhých mocnín jej zložiek. Orientácia gradientu je daná vzt ahom: α = arctan (y) (x) 3π 4 kde orientácia 0 znamená maximálnu zmenu jasu z čiernej na bielu zl ava doprava a kladné hodnoty uhlu sú orientované v protismere hodinových ručičiek. Uvedený postup ilustruje algoritmom 1. Algoritmus 1 Konvolúcia obrazu s Robertsovym priečnym operátorom[16] 1: input image 2: for all x [1..X], y [1..Y ] do 3: temp image1 input image(x, y) input image(x + 1, y + 1) ; 4: temp image2 input image(x, y) input image(x + 1, y + 1) ; 5: end for 6: 7: for all x [1..X], y [1..Y ] do 8: output image(x, y) = temp image1 + temp image2; 9: end for 10: output image Robertsov detektor ale neposkytuje príliš dobré výsledky hlavne kvôli citlivosti na šum a schopnostiam detekovat hrany s maximálnym sklonom 45. Na podob- 17

nom princípe fungujú aj detektory Prewittovej a Sobelov, akurát používajú inú konvolučnú masku a dosahujú uspokojivejšie výsledky. 3.2.1 Cannyho hranový detektor V problematike spracovania obrazu sa často využíva Cannyho hranová detekcia, ktorá je často označovaná za najlepší hranový detektor. Stručne si ho popíšeme, pretože sme sa ho ako najlepší rozhodli použit v našom programe. Na úvod vysvetlíme niekol ko pojmov: Gaussov filter Je jedna z metód odstránenia šumu z obrázku (jeho vyhladenie, rozmazanie) aplikovaním konvolučnej masky na vstupný obrázok. Konvolučná maska sa skladá z hodnôt určených Gaussovou funkciou, ktorá má tvar zvonu, kde hodnota pri funkciách dvoch premenných je určená vzt ahom: g(x, y) = 1 e x2 +y 2 2σ 2 2πσ kde x, y sú súradnice obrázku a σ je radiálna vzdialenost okraju od osy tohoto zvonu.[17]. je funkcia, ktorá upravuje hodnotu vstupnej funkcie f(x) podl a pred- Prahovanie pisu: f(x) = A pokial x dolný prah f(x) = B pokial x horný prah Algoritmus Cannyho hranového detektora je rozdelený do niekol kých krokov: nájdeme približné smery gradientu pre každý pixel nájdeme deriváciu v smere gradientu optimálnej konvolučnej masky vykonávajúcej vyhladenie (použitím Gaussového filtra) a deriváciu nájdeme lokálne maxima týchto derivácií pomocou prahovania s hysterézou určíme hranové body Optimálna konvolučná maska Na konvolučnú masku kladieme niekol ko požiadavok, ktoré sú protichodné, ale chceme ich maximalizovat : maximalizovat počet detekovaných hrán minimalizovat chybné hrany 18

minimalizovat násobné hrany odpovedajúce jednej hrane Canny ukázal, že optimálna maska môže byt dobre aproximovaná prvými deriváciami gaussovho filtra. Na začiatku je preto obrázok vyhladený konvolúciou s Gaussovým jadrom. Následne aplikujeme nejaký jednoduchý operátor prvých derivácií pre dvojrozmerný priestor (napr. Robertsov priečny operátor) pre zvýraznenie oblastí s vysokými prvými deriváciami. Vo výsledných hodnotách gradientu tak vzniknú oblasti vyvýšenia. Následným prahovaním s histerézou sa zmažú oblasti mimo tieto oblasti, čím docielime to, že sa vo výsledku objaví len jedna hrana, kde boli pôvodne násobné hrany. Proces dohl adávania hrán pri hysteréze je kontrolovaný dvoma prahmi: T1 a T2 (T 1 T 2, T 1 R, T 2 R). Dohl adávanie hrán vždy začína v oblasti vyvýšenia s hodnotou väčšou ako T1, pokračuje v oboch smeroch z daného bodu až dokial nepadne výška vyvýšenia pod hodnotu T2. Hysteréza tak zabezpečuje, aby sa zašumené hrany nedostali do fragmentov násobných hrán[4]. Účinok detekcie hrán v Cannyho detektore je závislý na nastavení troch parametrov: na šírke Gaussovho jadra použitého vo fáze vyhladenia vstupného obrazu a na dolnom a hornom prahu pri procese dohl adávania hrán s histerézou. Zväčšením šírky Gaussovho jadra redukujeme citlivost detektora na šum ale je to na úkor straty niektorých presnejších detailov v obraze a stúpa nám tiež chybovost určenia detekovanej hrany. Hoci bol Cannyho detektor jeden z prvých vynájdených detektorov hrán, stále patrí medzi najlepšie detektory súčasnosti[18]. 3.3 Detekcia čiar - Houghova transformácia Zatial čo sme v hranovej detekcii výrazne redukovali množstvo informácií z obraze na hrany, stále reprezentujeme data ako pixely. Preto ak budeme d alej chciet redukovat množstvo informácií, je dobrým nápadom použit určitý druh rozpoznávania útvarov v obrázku a tak ho transformovat do primitívnych útvarov akými sú čiary, kružnice a d alšie, ktoré sa dajú popísat parametricky. K tomuto účelu je dobré použit Houghovu transformáciu, ktorá obecne dokáže nájst parametrický model l ubovolného útvaru zo vstupných dát. My sa uspokojíme s transformáciou na parametrické čiary, na ktorých detekciu bol algoritmus pôvodne určený. Teda výstupom tohto algoritmu bude množina čiar. Tieto čiary následne orežeme podl a hraníc obrázku, čím nám vzniknú úsečky. Popíšeme si preto princíp fungovania algoritmu na detekcii čiar. Pomocou týchto úsečiek spolu s hraničnými úsečkami budeme d alej určovat polygóny. Ale tento algorimus budeme opísaný až v d alšej sekcii tejto kapitoly. Algoritmus je rozdelený do niekol kých krokov: 19

prevedieme hranové detekciu, kde môžeme použit napríklad Cannyho hranový detektor popísaný v predošlej sekcii. mapovanie hranových bodov do Houghoveho priestoru a ich uschovanie v akumulátore prevedenie akumulátora na výsledné čiary použitím prahovania a iných sofistikovaných techník Reprezentácia čiar v polárnom Houghovom priestore Čiara býva často parametricky popísana následujúcou rovnicou v karteziánskej súradnicovej sústave (pre parametre a, b R) : y = a x + b ktorou ale nemôžeme popísat vertikálu čiaru, pretože hodnota a je smernica priamky alebo taktiež tangens uhla, ktorý zviera priamka s kladnou čast ou osy x, ale tan 90 =. Preto je vhodnou rovnicou pre popis čiary jej normálny tvar: r = x cos θ + y sin θ kde r je dĺžka normály z počiatku súradnicovej sústavy a θ je jej orientácia vzhl adom ku kladnej časti osy x. Preto je možné každú čiaru v obraze jednoznačne určit bodom [θčiary, rčiary ] za podmienok, že θ [0, π] a r R[19]. Pre každý bod [x, y] na jednej čiare sú hodnoty θ a r konštantné. Houghov polárny priestor pre čiary je dvojdimenzionálny a určený práve týmito dvoma parametrami. Mapovanie hraničných bodov do akumulátora Houghova transformácia používa akumulátor, ktorého dimenzia zodpovedá počtu hl adaných parametrov, teda pre čiary je to 2. Pri implementácii čiar Houghovou transformáciou sa Houghov priestor vhodne disketizuje. Vzdialenost od počiatku sústavy budeme počítat v celých čislach a uhly priamok po určitých diskrétnych krokoch, napr. po 5 alebo 10. Následne sa prechádza celý obrázok a pre každý bod hrany z hranového detektora a pre každý uhol θ vyriešime rovnicu danej priamky r = x cos θ +y sin θ a inkrementujeme akumulátor na pozícii [θ, r] Tento proces je označovaný ako proces hlasovania 5, kde každý bod hrany hlasuje za čiary definované bodmi [θčiary, rčiary ]. Ak zobrazíme možné hodnoty [θčiary, rčiary ] vytvorené z jedného konkrétneho bodu [θčiary, rčiary ], tak sa v Houghovom priestore zobrazia do krivky. Uvedomíme si jednu dôležitú vec, že body, ktoré ležia na jednej čiare v pôvodnom obrázku sa zobrazia do jedného bodu v Houghovom priestore. Výsledné lokálne maximá v tomto priestore (dostali najviac hlasov z okolitých bodov) určujú teda vysokú pravdepodobnost 5 V anglickej literatúre označovaný ako voting process 20

výskytu čiary daných parametrov v pôvodnom obraze. Takto za použitia prahovania a hysterézy určíme výsledné parametre čiar. Existuje niekol ko druhov detektorov založených na Houghovej transformácii, ktoré sa v podstate líšia tým, ako prebieha proces hlasovania. V našom programe sme použili implementáciu Houghovej transformácie založenej na eliptickom Gaussovom jadre 6, ktorá dosahuje významne lepšie časové výsledky, je viac odolná voči chybám a je použitel ná aj v real-time prostredí. 3.4 Detekcia minimálnych oblastí (polygónov) Po fáze detekcie čiar nasleduje rozpoznanie polygónov. Vstupné data do tohoto algoritmu bude množina úsečiek získaná z predošlého algoritmu a následným orezaním úsečiek podl a hraníc obrázku a pridaním úsečiek z týchto hraníc. Tento algoritmus vychádza z [3] a detekuje správne len konvexné polygóny. Algoritmus rozdelíme do týchto krokov: detekcia priesečníkov úsečiek a skonštruovanie hrán a vrcholov rovinného grafu nájdenie minimálnej bázy priestoru kružníc daného grafu 7 konštrukcia polygónov z minimálnej bázy kružníc Pre výpočet priesečníkov množiny úsečiek sa najčastejšie používa niektorý zo zametacích algoritmov, napríklad Bentley-Ottmanov algoritmus, ktoré majú ovel a lepšiu časovú zložitost [13]. Hl adanie minimálnych polygónov môže byt prevedené na problém hl adania minimálnej bázy priestoru kružníc v rovinnom grafe. Kružnica sa nazýva elementárna, ak sa v nej neopakuje žiaden vrchol z grafu. Priestor kružníc grafu má dimenziu rovnú E V + k[6], kde E je počet hrán v grafe, V je počet vrcholov a k je počet komponent. Hl adanie minimálnej bázy priestoru kružníc v grafe G je popísané algoritmom 2. Na začiatok si množinu M nainicializijeme na prázdnu množinu. Funkcia na riadku 2 počíta najkratšie cesty pre všetky dvojice vrcholov v grafe G (napr. použitím Floyd-Warshallovho algoritmu pre výpočet najkratšej cesty z jedného vrcholu do ostatných) a ukladá ich zoznam do množiny N. Následne sa pre každý vrchol v vezme každá hrana grafu (x,y) a hl adá sa najkratšia cesta z vrcholu x do vrcholu v, d alej najkratšia cesta z vrcholu y do vrcholu v. Ak sa nájdu, tak v prípade, že ich prienikom je len vrchol v, tak celý cyklus zložený z týchto dvoch ciest a hrany (x, y) vložíme do množiny M. Vo funkcii order by length utriedime tieto cykly 6 V anglickej literatúre označovaná Kernel-based Hough transform 7 V anglickej literatúre označovaný ako Minimum Cycle Basis 21

Algoritmus 2 Hl adanie minimálnej bázy priestoru kružníc[3] 1: M 2: N all pairs shortest paths(g); 3: for all v V (G) do 4: for all (x, y) E(G) do 5: if Π x,v Π v,y = {v} then 6: O Π x,v Π v,y (x, y); 7: M M O 8: end if 9: end for 10: end for 11: order by length(m); 12: return select cycles(m) vzostupne podl a ich dĺžok a odstránime duplicitné cykly. Funkcia select cycles(m) vyberá hladovým algoritmom minimálne cykly z priestoru všetkých kružníc grafu. Postup, ktorým to robí je nasledujúci. Vytvoríme si maticu s hodnotami 0 a 1, kde stĺpce matice budú odpovedat hranám a hrany grafu jednotlivým incidenčným vektorom pre každý cyklus. Výsledne minimálne cykly určíme z pozorovania, že každá hrana je najviac v dvoch minimálnych cykloch. Tým pádom nám stačí prechádzat stĺpce matice a počítat, či už daná hrana nebola najviac dva krát. V prípade, že sa hrana v danom stĺpci vyskytla viac ako dva krát tak všetky riadky matice, ktoré sa nachádzajú pod aktuálnym riadkom a obsahujú v danom stĺpci jednotku môžeme zmazat pretože hrana už sa vyskytla v dvoch kratších cykloch a tým pádom cyklus na danom riadku nie je najkratší. Výsledný algoritmus vydá pre rovinný graf zoznam jeho najkratších cyklov, z ktorých už l ahko zložíme hl adané polygóny. 3.5 Dopĺňanie oblastí farbou, gradientom a textúrou V tejto sekcii si popišeme princíp, ktorý sme použili pri implementácii pri dopĺňaní daného polygónu farbou a gradientom a popíšeme ako by sa dalo spravit dopĺňanie textúrou. Tomuto postupu zodpovedá nástroj Area Filler, ktorý je popísaný v uživatel skej dokumentácii. Pre doplnenie farby alebo gradientu do vymazávaniej obasti sme zvolili nasledujúci jednoduchý postup: na vstup dostaneme zoznam všetkých detekovaných polygónov vyberieme len tie polygóny, ktoré zasahujú do oblasti, ktorá sa bude vymazávat pre každý polygón z výsledného zoznamu vykonáme: 22

ak je polygón celý vo vymazávanej oblasti skončíme, jeho farbu nedokážeme odhadnút spravíme rozdiel daného polygónu s obdĺžnikom vymazávanej oblasti ak dopĺňame len jednu farbu, tak vypočítame priemernú farbu orezanej oblasti ak dopĺňame gradient oblasti, tak vypočítame priemernú farbu okolí dvoch krajných bodov a nastavíme príslušný gradient Týmto postupom sme dokázali detekovat základné farby oblastí a zaručit tak relatívne dobrý výsledok v prípade, že v pozadí je textura jednoliatejšieho charakteru skladajúca sa prevažne z čiar. Dopĺňanie oblasti textúrou by sa spravilo podobným princípom. Druhý problém, ktorý by trebalo vyriešit je vyhladzovanie hrán susedných oblastí, kde by mohlo byt použité priemerovanie farieb a zakomponovaný princíp maskovania smerom k hranám polygónov. 23

Kapitola 4 Prehl ad fungovania programu na ukážkových obrázkoch V tejto kapitole si zobrazíme 10 obrázkov 10 krokov, ktoré sme potrebovali pre odstránenie dvoch l udí stojacich pred budovou z obrázku 2.1. Obr. 4.1: Označenie oblasti 24

Obr. 4.2: Detekcia c iar Obr. 4.3: Detekcia polygo nov 25

Obr. 4.4: U prava textu ry prve ho polygo nu Obr. 4.5: U prava textu ry druhe ho polygo nu 26

Obr. 4.6: U prava textu ry tretieho polygo nu Obr. 4.7: U prava textu ry s tvrte ho polygo nu 27

Obr. 4.8: U prava textu ry piateho polygo nu Obr. 4.9: U prava textu ry s iesteho polygo nu 28

Obr. 4.10: Záverečná úprava - odstránenie ostrej hrany 29

Kapitola 5 Užívatel ská dokumentácia programu PhotoLab Program PhotoLab je multiplatformový nástroj pre spracovanie fotografií, pomocou ktorého sa dá dosiahnút odstránenie označeného objektu z digitálnej fotografie. Je to multiplaformový program, čomu vd ačíme použitiu grafickému toolkitu Qt. Pre spustenie programu nám preto stačí mat nainštalovanú túto knižnicu. PhotoLab je skratka ktorá znamená Photography Laboratory, teda laboratóriu pre spracovanie fotografií. Pôvodne vznikla ako zjednodušenie pre názov Photo- Lab KGB. Tento názov mal metaforický označovat funkciu tohoto programu, a to odstránit, zmazat identitu nejakej osoby z fotografie. Neskôr bol ale tento názov skrátený na súčasný názov z toho dôvodu, že jednotlivé nástroje tohoto programu je možné použit aj samostatne bez nutnosti odstránenia daného predmetu z fotografie a následne exportovat pohl ad scény. V tejto časti si popíšeme fungovanie programu PhotoLab, naučíme sa ako sa s jednotlivými nástrojmi pracuje a popis si obohatíme o screenshoty z programu, ktoré budú ilustrovat prevádzané akcie. 5.1 Popis a ovládanie programu Program pozostáva z dvoch základných častí a tým je hlavné okno a panel nástrojov (Tools). Po spustení programu je aktívne len hlavné okno. Po spustení programu je potrebné otvorit obrázok, z ktoréhu budeme odstráňovat nejaký objekt. Obrázok otvoríme z aplikačného manu File Open (obrázok 5.3). Po otvorení obrázku sa nám zjaví Panel nástrojov s aktivovaným prvým nástrojom, ktorým je AreaSelector. Každý nástroj aktivujeme označením v zozname nástrojov v Paneli nástrojov (v hornej časti). Po aktivácii daného nástroja sa nám v dolnej časti v Editore vlastností 30

Obr. 5.1: Program po spustení zobrazia jeho možnosti konfigurácie. Každý nástroj ma svoje špecifické správanie a je previazaný s inými nástrojmi, s ktorými si vymieňa informácie. Spoločné pre každý nástroj je jeho aktivácia pri označená a deaktivácia pri označení iného nástroja. Správania jednotlivých nástrojov si popíšeme v nasledujúcich častiach. 5.1.1 Manipulácia s obrázkom Program poskytuje základnú manipuláciu s obrázkom vo forme zoomu a scrollbarov. Zoomovat je možné troma spôsobmi: výberom akcie z menu File Zoom In, File Zoom Out, výberom zoomovacích akcií z toolbaru alebo pomocou scrollovacieho koliečka myši. Rozsah zoomu je obmedzený na rozsah 10 4000%, kde sa od hodnoty zoomu 700% zobrazuje čierna mriežka ohraničujúca jednotlivé pixely (Obrázok 5.2 ). Ďalšia dôležitá informácia je aktuálna pozícia myši v obrázku, ktorá je zobrazená v spodnom status bare. Jednotlivé nástroje manipulujú s obrázkom a scénou rôzmymi spôsobmi. Spôsob manipulácie v informáciach pre daný nástroj v Paneli nástrojov v stĺpci Tool Info. 5.2 Popis nástrojov a ich vhodné nastavenia Zoznam nástrojov v programe je zobrazený v hornej časti Panelu nástrojov. Následne si popíšeme jednotlivé nástroje a ich vhodné nastavenia. 31

5.2.1 Area Selector Obr. 5.2: Program so zobrazenou mriežkou Tento nástroj slúži pre označenie oblasti, ktorú budeme chciet zmazat. Tento nástroj nám umožní vybrat obdĺžnik, ktorý vymedzuje objekt, ktorý budeme mazat. 5.2.2 Edge Detector Tento stav slúži pre konfiguráciu detektora hrán a úpravu hrán. Po aktivácii daného nástroja sa na obrazovke zobrazia detekované hrany, ktoré sú zobrazené bielou farbou. Ostatné pixely sú označené čiernou farbou. Výslednú detekciu čiar môžeme následne editovat : pravým tlačidlom myši pridáme hranu a l avým ju odstránime z konkrétneho bodu. Vysvetlenie významu parametrov v Editore vlastností hranového detektora nájdeme v tabul ke 5.1. Parameter skratka SIGMA TRESHOLD LOW TRESHOLD HIGH ACTION Vysvetlenie Parameter Gaussového filtra Dolná hranica prahu pri prahovaní hrán Horná hranica prahu pri prahovaní hrán Zobrazenie/Skrytie hrán Tabul ka 5.1: Vysvetlenie významu parametrov hranového detektora Hranový detektor vidíme na obrázku 5.4. 32

5.2.3 Line Selector Obr. 5.3: Program po otvorení obrázku Tento nástroj slúži na detekovanie čiar v obraze, na ich pridávanie a úpravu. V grafickej scéne je možné kreslit čiary stlačením l avého tlačidla myši, následne tiahnutím po grafickej scéne. Po pustení tlačidla myši sa vloží nová čiara, ktorá je prípadne automaticky orezaná podl a hraníc obrázku. Ak chceme zmenit koncový bod čiary, tak po kliknutí naň ho môžeme chytit a potiahnút na nejaké iné miesto. V prípade, že na koncový bod klikneme dvakrát, tak je po dvojkliku možné chytením za koncový bod celú čiaru posúvat. V prípade, že cheme čiaru z obrázku odstránit, tak ju presunieme nad oblast mimo obrázku a ona sa automaticky zmaže. Detektor čiar vidíme na obrázku 5.5. 5.2.4 Area Detector Tento nástroj nám z čiar z predošlého nástroja detekuje priesečníky a následne polygóny, ktoré sa nám zobrazia na obrazovke. Ak si prajem polygóny skryt, tak v Editore vlastností nastavíme vlastnost Action na hodnotu SHOW POLYGONS. Detekciu polygónov vidíme na obrázku 5.6. 5.2.5 Area Filler Tento nástroj vypočítava farbu alebo gradient v detekovaných polygónoch z predchádzajúceho nástroja. Každý detekovaný polygón je možné označit tak, že naňho klikneme myšou. Pre načítanie aktuálnych polygónov je potrebné, aby hodnota 33

Obr. 5.4: Program pri konfigurácii hranového detektora up to date bola nastavená na true. Potrebné polygóny načítame Následne sa po označení zobrazia v paneli vlastností jeho hodnoty. Máme na výber z týchto možností: FillAverageColor - vyplní polygón priemernou farbou oblasti (vymedzená žiarami z nástroja LineDetector), do ktorej zasahuje FillGradientLeftRight - vyplní polygón gradientom, kde začiatočný a koncový bod gradientu sú položené v l avom a pravom bode oblasti v ktorej je polygón FillGradientTopBottom - to isté pre body v hornej a dolnej časti oblasti FillCustomColor - vyplní polygón farbou definovanou vo vlastnosti Custom Avarage Color FillCustomGradientLeftRight - umožňuje vyplnit polygón gradientom s farbami definovanými Custom Gradient Start Color a Custom Gradient Stop Color FillCustomGradientTopBottom - podobne pre vertikálny smer FillTexture - po vybratí tohto nástroja je zapnutý dodatočný nástroj výberu obdĺžnika zo scény (textura polygónu), ktorým sa vyplní daný polygón Vypĺňanie polygónov farbou vidíme na obrázku 5.7. 34

Obr. 5.5: Program pri konfigurácii detektora a manuálnej úprave čiar 5.2.6 Image Customizer Image Customizer je nástroj, ktorý umožňuje manuálnu úpravu obrázkov na úrovni pixelov. Pre načítanie aktuálneho obrazu z predchádzajúceho stavu je potrebné, aby hodnota up to date bola nastavená na true. Zmena farby pixelu na konkrétnej pozícii v obrázku sa prevedie kliknutím l avého tlačidla myši na danej pozícii. Pravé tlačidlo myši nastaví ako aktuálnu farbu tú farbu, nad ktorou bolo kliknuté. Aktuálna farba sa zobrazuje v Editore vlastností v riadku Foreground Color. Je možné ju nastavit aj z Editora vlastností dvojklikom na danú farbu a výberom v checkboxe bud zo základných farieb alebo z vlastnej farby vybratím poslednej položky Custom Manuálnu úpravu obrázku vidíme na obrázku 5.8. 5.2.7 Uloženie grafickej scény Program PhotoLab umožňuje kedykol vek uložit obsah grafickej scény, čím získava aj seknundárne použitie, a tým je samostatné využitie nástrojov pre extrakciu určitých vlastností a následné uloženie do externého obrázku. Postup pre uloženie obrázku je nasledujúci. Po použití niektorého nástroja (napríklad hranového detektora) vyberieme z menu vol bu File Save as (Obrázok 5.9), kde sa nám zjaví dialógové okno pre uloženie obrázku. Uloží sa vždy grafická scéna v takom istom rozlíšení aké má vstupný obrázok. 35

Obr. 5.6: Program pri konfigurácii detektora polygónov 5.2.8 Klávesové skratky a toolbar Hlavné okno obsahuje toolbar, kde sú najčastejšie používané akcie: otvorenie obrázku, uloženie, export grafickej scény, tlačidlo zobrazenia toolboxu (panela nástrojov), tlačidlá pre zoom a checkbox pre presnejšie nastavenie zoomu. Klávesové skratky umožňujú l ahšiu navigáciu v programe, ich zoznam nájdeme v tabul ke 5.2. Klávesová skratka Ctrl+O Ctrl+S Ctrl+Shift+S Ctrl+W Ctrl+Q Ctrl+Plus Ctrl+Minus Ctrl+T Ctrl+ScrollDown Ctrl+ScrollUp Akcia Otvorenie obrázku Uloženie aktuálne otvoreného obrázku Uloženie kópie obrázku Zatvorenie aktuálneho obrázku Koniec programu Kladné priblíženie Záporné priblíženie Zobrazenie panelu nástrojov Kladné priblíženie Záporné priblíženie Tabul ka 5.2: Klávesové skratky programu. 36

Obr. 5.7: Program pri konfigurácii vypĺňania oblastí farbou, gradientom, textúrou 5.2.9 Zobrazenie dokumentácie Z programu je možné zobrazit užívatel skú a prográmatorskú dokumentáciu cez aplikačné menu About Programmer Docs alebo About User Docs, kde sa následne spustí prehliadač dokumentácie. V prehliadači je možná základná navigácia pomocou tlačidiel spät, vpred, obnovit alebo zastavit a možnost prepínania medzi programátorskou a užívatel skou dokumentáciou (obrázok 5.10). Dokumentácia je štandardne zobrazovaná z lokálnych súborov z adresárov docs/programmer a docs/user. 37

Obr. 5.8: Program pri záverečnej editácii obrázku Obr. 5.9: Program pri uložení grafickej scény 38

Obr. 5.10: Browser s dokumentáciou 39

Kapitola 6 Programátorská dokumentácia programu PhotoLab Program PhotoLab je grafický editor, ktorý využíva potenciál grafického toolkitu Qt. Tento toolkit sa v dnešnej dobe stáva čoraz viac populárny a ponúka užívatel ovi bohatú sadu objektov nielen pre vykreslenie okien, ale aj pre prácu s datami. My sme z tohto toolkitu použili niekol ko kl účových technológií a vlastností, ktoré výrazne pomohli k zrýchleniu vývoja aplikácie, konkrétne sú to: komunikáciu spôsobom slot-signál a metaobjekty graphics view framework pre rýchle vykreslenie scény a položiek model/view framework pre oddelenie dát od ich prezentácie WebKit integrácia - použitie browsera pre prehliadanie dokumentácie programu V čase vývoja programu bola aktuálna verzia tejto knižnice 4.5.2 a na tejto verzii bol program aj testovaný. 6.1 Organizácia tried programu Zdrojové kódy programu sa delia do štyroch základných kategórii a to: Interfaces - rozhrania nástrojov pre výmenu dát SceneItems - manipulačné položky scény Tools & ToolManager - jednotlivé nástroje a ich správca Properties & PropertyEditor - reprezentácia vlastností nástrojov do gui editora 40

Organizáciu tried a ich volania z hlavného okna nám ukazuje obrázok 6.1. Hlavné okno v sebe obsahuje objekt Document, ktorý združuje v sebe modely nástrojov, PropertyEditora, zoznamu nástrojov. Tieto modely sú prepojené na princípe slotov a signálov s okolitými Viewsmi s d alšími widgetami. Komunikácia spôsobom slotsignál je analógiou návrhového vzoru Observer, teda umožňuje pohodlné riešenie závislosti nejakých objektov na jednom objekte notifikácie vo forme emitácie signálu, kedy sa následne zavolajú sloty (špeciálne metódy objektu) objektov, ktoré sú pripojené k danému signálu. Obr. 6.1: Organizácia tried v programe 6.1.1 Document Táto trieda je základnou triedou programu, ktorá spĺňa niekol ko funkcií: uchováva v sebe aktuálne otvorený obrázok po otvorení obrázku vytvára nový objektu ToolManageru informuje View pri zmene aktuálneho obrázku poskytuje nástrojom grafickú scénu (potomok triedy QGraphicsScene) s grafickou položkou typu ImageItem obsahujúcou obrázok, ktorý máme otvorený 6.1.2 ToolManager a ATool ATool je abstraktná trieda, od ktorej je zdenený každý grafický nástroj. Grafický nástroj je objekt, ktorému sú poskytnuté možnosti pre grafickú manipuláciu objektov scény (pridaním grafickej položky do scény), model pre užívatel skú úpravu vlastností 41

a komunikáciu s okolitými objektami vo forme signálov a slotov alebo implementáciou niektorého interfacu popísaného v súbore Interfaces.h. Dôležitý graf volaní je znázornený na obrázku 6.2. Hovorí nám o tom, aké objekty dostáva k dispozícii konkrétny nástroj a to sú: pointer na Dokument (dáva možnost vkladat a odoberat zo scény grafické položky) a pointer na QPopertyModel. QPopertyModel je model property ToolManager je trieda, ktorá spravuje tieto nástroje v objekte Document. Táto trieda je zároveň modelom (potomkom triedy QAbstractItemModel) a Každý grafický nástroj má svoj behový cyklus a tým je: 1. Vytvorenie nástroja: (a) konštrukcia nástroja (b) napojenie slotov nástroja na signály a nastavenie rozhraní závislých nástrojov (c) pridaním nástroja do zoznamu nástrojov. 2. Aktivácia alebo deaktivácia daného nástroja pri jeho označení/odznačení v zozname nástrojov (objekt tools view typu QTreeView pohlad napojený na model ToolManagera). Prepínanie medzi stavmi riadi metóda ToolManager::switchStateSelection. Pri aktivácii nástroja sa zavolá metóda ATool::activateState, ktorá je virtuálna a môže byt vhodne predefinovaná v konkrétnom nástroji. Pri deaktivácii sa volá metóda ATool::deactivateState. Obr. 6.2: Prepojenie ATool s editorom vlastností a s ToolManagerom 6.1.3 Grafická scéna a grafické položky Ked že každý nástroj obsahuje pointer na grafickú scénu, tak má preto právo do scény pridávat a odoberat položky. Významné položky tvoria triedy ako LineManipulationArea, AreaManipulationArea a PolygonManipulationArea. Tieto položky sú 42

potomkami triedy QGraphicsRectItem, teda ak chceme užívatel ovi v danom nástroji dat možnost zobrazit, prípadne upravit nejaké grafické položky, ktoré potom môžeme predat niektorému inému nástroju. 6.2 Popis nástrojov Pri návrhu programu sme mali zoznam nástrojov, kde sme od každého nástroja požadovali špecifické správanie a špecifické nastavenia. Preto sme sa rozhodli pre využitie technológie Meta-Object System, ktorú nám poskytuje Qt toolkit. Táto technológia nám umožňuje nadefinovanie vlastností (properties) objektu, ku ktorým môzeme pristupovat za behu programu, prípadne pridávat dynamické vlastnosti (analógia k iným jazykom, ktoré poskytujú túto vol bu). Základná požiadavka pre použitie tohto systému je zdedenie od objektu QObject a pridanie makra Q OBJECT ktoré nám zaregistruje vlastnosti objektu do Meta-Object systému. Vlastnost objektu definujeme nasledujúcim makrom: Q_PROPERTY(typ nazov_vlastnosti READ gettermetoda [WRITE settermetoda] [USER bool]) kde uvedieme názov typu vlastnosti, implementujeme getter metódu gettermetoda ak má byt vlastnost čitatel ná, setter metódu settermetoda ak má byt vlastnost zapisovatel ná, následne musíme nastavit, aby bola vlastnost užívatel ská (USER true), aby sa dala metóda editovat v editore vlastností[10]. Zoznam nástrojov, ktoré ponúka program PhotoLab a ich závislosti na iných nástrojoch ilustruje tabul ka 6.1. Nástroj AreaSelector EdgeDetector LineSelector AreaDetector AreaFiller ImageCustomizer jeho závislosti (nástroje, na ktorých závisí) žiadna AreaSelector EdgeDetector AreaSelector, LineSelector AreaDetector AreaFiller Tabul ka 6.1: Zoznam nástrojov programu PhotoLab a ich závislosti na iných nástrojoch 43