1 / 10

Vektorizace Bitmapy

Vektorizace Bitmapy. 2005 / 2006, ZS, MFF-UK Cyril Höschl , MFF, 3.ro č. web: www.hoschl.cz/cyril email : cyril@hoschl.cz. www.hoschl.cz/cyril/vektorizace. Pozn.: prezentace je animovaná, doporučuji spouštět v PowerPointu 2002 a více. Vektorizace Bitmapy.

gilda
Download Presentation

Vektorizace Bitmapy

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Vektorizace Bitmapy 2005 / 2006, ZS, MFF-UK Cyril Höschl, MFF, 3.roč. web: www.hoschl.cz/cyril email:cyril@hoschl.cz www.hoschl.cz/cyril/vektorizace Pozn.: prezentace je animovaná, doporučuji spouštět v PowerPointu 2002 a více

  2. Vektorizace Bitmapy Doprovodný materiál k prezentaci metory pro vektorizaci bitmapy na semináři z Počítačové Grafiky, MFF-UK. Cílem je poskytnout ukázku, jak pracuje algoritmus pro převod bitmapy na vektorový obrázek (samozřejmě za cenu deformace obrázku). Existuje více způsobů, jak toho docílit, v následující prezentaci jsou zmíněny dva. První používá k proložení bodů Bezierovy křivky kvůli kompatibilitě s formátem EMF, obecně vhodnější matematický aparát pro tvorbu prokládaných hladkých křivek jsou však např. Catmull-Rom, viz. http://cgg.ms.mff.cuni.cz/~pepca/lectures/pdf/hwmath.pdf. Druhý způsob je založen na lineární interpolaci za pomoci triangulace. Prohlášení: Použitý algoritmus jsem vytvořil bez inspirace jinými algoritmy, proto nemusí být zaručeno, že je nejefektivnější – leč funguje celkem rychle. Zájemci si mohou stáhnout plug-in do PowerPointu, který v reálném čase dokáže interpolovat plochu a převést ji na vektory. Odkaz zde: www.hoschl.cz/cyril/vektorizace/plugin.zip.

  3. z [x2,y2,z2] [x3,y3,??] x [x1,y1,z1] y Obrázek 1.1: Červené body jsou zadané, výšku modrého bodu se snažím dopočítat 3D interpolace Popis problému Mám n bodů v rovině, které nejsou rovnoměrně rozprostřeny. Každý bod má nějakou výšku z. Potřebuji dopočítat („domyslet“) výšky ostatních bodů v rovině. Popis řešení(pomocí IDW – Inverse distance weights) Vytvořím pravidelnou síť bodů majících souřadnice x a y. Výšky (z-souřadnice) znám však jen od některých. Pro ostatní je dopočítám níže uvedenou rovnicí: zj…Výška (z-souřadnice) j-tého (neznámého) bodu zi…Výška (z-souřadnice) i-tého (známého) bodu n…počet známých bodů xi…x-souřadnice i-tého bodu yi…y-souřadnice i-tého bodu p…exponent … lze použít např. p=3; pN Poznámka Jedná se o vážený průměr výšek ze zadaných bodů. S určitou mocninou vzdálenosti se zanedbává výška známého bodu.

  4. 4 4 4 5 5 5 3 3 3 6 6 2 2 6 2 7 7 7 1 1 1 0 0 0 Princip Tracování I. Okrajový Bod (PB) = TRUE, je-li zelený (ci=TRUE) a jeho buď levý nebo pravý nebo horní nebo dolní soused je bílý (ci=FALSE) Tečkovaný zelený bod … bod na okraji • Krok…najít bod P pro který BP(P)=TRUE; Pfirst:=P • Krok…zkontrolovat bod ležící v Di-témsměru od aktuálního bodu. Pokud pro bod Q:=P+Di je PB(Q)=TRUE, pak P:=Q • Goto Krok 1 dokud P=Pfirst Směry Di NOTE 1: Ne každý bod je nutné si zapamatovat, můžeme ukládat třeba každý 20tý bod (a jimi pak proložit hladkou křivku) NOTE 2: V dalším kroku hledámě body jen v polorovině dané z předchozího směru Vybrali jsme D3 Vybíráme jen ze směrů ležících v polorovině určené posledním směrem D3 Další krok

  5. Hladká křivka Protože jádro Win32 API a formát EMF (Enhanced Meta File) má podporu Beziérových křivek, je užitečné vytvořit hladkou křivku pomocí bez. křivek. Docílí se toho nastavením vzdálenosti řídicích bodů od bodu P na 1/6 délky vektoru (Pi-1, Pi+1). Viz. obrázek: P4 x P2 x d/6 x P3 P1 x d

  6. Hledání vrstevnic: • Myšlenka: • Představíme si barvy obrázku jako výšku. Pro jednoduchost např. šedé obrázky, kde je stupeň šedi převeden na výšku. • Zvolíme počet vrstev, na který chceme obrázek nařezat a postupujeme od spodní (nejnižší): • V nějakém bodě tracujeme okraj bitmapy ve výšce požadované vrstvy. • Ak:= Útvar vzniklý tracováním • Platí: • (Max(Vi) – Min(Vi)) / #vrstev = ΔZ • Vi…výšky všech bodů obrázku • ΔZ…z-ová (výšková) vzdálenost mezi vrstvami • Procházíme další body bitmapy po nějak jemně zvolené mřížce a pokud je výška bodu vyšší, než hladina právě tracované vrstevnice a bod neleží v Ai, i=0..k, provedeme krok 2 a k:=k+1. • Musíme prozkoumat vnitřky oblastí dané tracováním z kroku 2, tj. body uvnitř Ai, i=0..k. • Pokud nalezneme uvnitř Aibod, který má nižší výšku, než výška právě tracované vrstevnice, provedeme opět tracování jako v kroku 2 (nechť tracovaný útvar je B) a nalezený útvar „vykrojíme“ zAi, tj. Ai := Ai \ B • Po projití mřížky do konce pokračujeme další vrstvou, znova od kroku 1.

  7. 4 5 3 6 2 7 1 0 Princip Tracování II. Zavede-li nás tracování do slepé uličky, je třeba se vrátit

  8. x x x x x x x x x x x x x x x x x Hledání vrstevnic x • hledání oblastí se stejně vysokým okrajem • - z nalezených oblastí vyříznutí „louží“, tj. míst s okrajem o výšce menší, nežvýška nějaké nižší vrstevnice 60 50 40 30 20 10 Vrstevnice v rastru

  9. ? ? ? ? Jednodušší způsob: Lineární hledání vrstevnic Myšlenka: • Vytvoříme triangulaci půdorysů bodů v prostoru • Např. pomocí Delauney triangulace (duální graf k Voronoi diagramu) • Na každé straně vzniklých trojúhelnících nalezneme bod o stejné z-výšce, které propojíme • triangulace např. viz. www.hoschl.cz/cyril/triangulation

  10. Odkazy • Web prezentace: • www.hoschl.cz/cyril/vektorizace • Plugin do PowerPointu: • www.hoschl.cz/cyril/vektorizace/plugin.zip • Matematický aparát ke křivkám: • http://cgg.ms.mff.cuni.cz/~pepca/lectures/pdf/hwmath.pdf • http://www.mvps.org/directx/articles/catmull/ • Jiná metoda vektorizace: • - Albrecht Preusser, Algorithm 684: C1- and C2-interplation on triangles with quintic and nonic bivariate polynomials, ACM Transactions on Mathematical Software (TOMS), v.16 n.3, p.253-257, Sept. 1990 • http://dev.acm.org/pubs/articles/journals/toms/1989-15-1/p79-preusser/p79-preusser.pdf (nutné být zaregistrován)

More Related