scale n_width width center scale left center range right center range value weight_sum left right weight value weight value weight_sum weight pixel



Podobné dokumenty
13 Barvy a úpravy rastrového

CZ.1.07/1.5.00/ Zefektivnění výuky prostřednictvím ICT technologií III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT

GEODETICKÉ VÝPOČTY I.

Jana Dannhoferová Ústav informatiky, PEF MZLU

Omezení barevného prostoru

Zpracování obrazů. Honza Černocký, ÚPGM

Circular Harmonics. Tomáš Zámečník

Výsledky = = width height 3 width height R + G + B ( )

1 Mnohočleny a algebraické rovnice

Operace s obrazem I. Biofyzikální ústav Lékařské fakulty Masarykovy univerzity Brno. prezentace je součástí projektu FRVŠ č.

Grafika na počítači. Bc. Veronika Tomsová

Geometrické transformace obrazu

Geometrické transformace obrazu a související témata. 9. přednáška předmětu Zpracování obrazů

Polynomy a interpolace text neobsahuje přesné matematické definice, pouze jejich vysvětlení

Bézierovy křivky Bohumír Bastl KMA/GPM Geometrické a počítačové modelování Bézierovy křivky GPM 1 / 26

MĚŘENÍ STATISTICKÝCH ZÁVISLOSTÍ

Interpolace pomocí splajnu

Použití splinů pro popis tvarové křivky kmene

Funkce kotangens. cotgα = = Zopakuj všechny části předchozí kapitoly pro funkci kotangens. B a

Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci

Funkce tangens. cotgα = = B a. A Tangens a cotangens jsou definovány v pravoúhlém trojúhelníku: a protilehlá b přilehlá.

Aproximace funkcí. x je systém m 1 jednoduchých, LN a dostatečně hladkých funkcí. x c m. g 1. g m. a 1. x a 2. x 2 a k. x k b 1. x b 2.

Datové struktury 2: Rozptylovací tabulky

Úvod do mobilní robotiky NAIL028

Požadavky k opravným zkouškám z matematiky školní rok

1 Mnohočleny a algebraické rovnice

Požadavky k opravným zkouškám z matematiky školní rok

Funkce tangens. cotgα = = Předpoklady: B a. A Tangens a cotangens jsou definovány v pravoúhlém trojúhelníku: a protilehlá b přilehlá

Interpolace, ortogonální polynomy, Gaussova kvadratura

Text úlohy. Která barva nepatří do základních barev prostoru RGB? Vyberte jednu z nabízených možností: a. Černá b. Červená c. Modrá d.

DIGITÁLNÍ ORTOFOTO. SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 4.ročník

Funkce a základní pojmy popisující jejich chování

Příklad. Řešte v : takže rovnice v zadání má v tomto případě jedno řešení. Pro má rovnice tvar

Křivky a plochy technické praxe

1 Projekce a projektory

Téma: Vektorová grafika. Určete pravdivost následujícího tvrzení: "Grafická data jsou u 2D vektorové grafiky uložena ve voxelech."

Metamorfóza obrázků Josef Pelikán CGG MFF UK Praha

Matematika I A ukázkový test 1 pro 2011/2012. x + y + 3z = 1 (2a 1)x + (a + 1)y + z = 1 a

Geometrické transformace

SEMESTRÁLNÍ PRÁCE X. Aproximace křivek Numerické vyhlazování

II. Úlohy na vložené cykly a podprogramy

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni

Funkce kotangens

Popis metod CLIDATA-GIS. Martin Stříž

KŘIVKY A PLOCHY. Obrázky (popř. slajdy) převzaty od

ZPRACOVÁNÍ DAT DÁLKOVÉHO PRŮZKUMU

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n

i=1 Přímka a úsečka. Body, které leží na přímce procházející body a a b můžeme zapsat pomocí parametrické rovnice

Vícerozměrná rozdělení

Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci

Interpolace, aproximace

Eukleidovský prostor a KSS Eukleidovský prostor je bodový prostor, ve kterém je definována vzdálenost dvou bodů (metrika)

Algoritmizace prostorových úloh

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

SEMESTRÁLNÍ PRÁCE Z X37SAS Zadání č. 7

Matematika 3. Úloha 1. Úloha 2. Úloha 3

4.3. GONIOMETRICKÉ ROVNICE A NEROVNICE

Aproximace funkcí. Numerické metody 6. května FJFI ČVUT v Praze

Transformace obrazu Josef Pelikán KSVI MFF UK Praha

1 LIMITA FUNKCE Definice funkce. Pravidlo f, které každému x z množiny D přiřazuje právě jedno y z množiny H se nazývá funkce proměnné x.

Projekt IMPLEMENTACE ŠVP. pořadí početních operací, dělitelnost, společný dělitel a násobek, základní početní operace

Občas se používá značení f x (x 0, y 0 ), resp. f y (x 0, y 0 ). Parciální derivace f. rovnoběžného s osou y a z:

UNIVERZITA PARDUBICE. 4.4 Aproximace křivek a vyhlazování křivek

Regresní a korelační analýza

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Vytyčení polohy bodu polární metodou

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Regresní a korelační analýza

DZDDPZ3 Digitální zpracování obrazových dat DPZ. Doc. Dr. Ing. Jiří Horák Institut geoinformatiky VŠB-TU Ostrava

Příklad 1/23. Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) d) g(x) Ω(f(x))

Matematika I A ukázkový test 1 pro 2014/2015

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

0.1 Úvod do lineární algebry

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

CVIČNÝ TEST 2. OBSAH I. Cvičný test 2. Mgr. Václav Zemek. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Funkce základní pojmy a vlastnosti

Úloha č. 2 - Kvantil a typická hodnota. (bodově tříděná data): (intervalově tříděná data): Zadání úlohy: Zadání úlohy:

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

1 Jasové transformace

Ukázka možností interpolace dat v softwaru Matlab

Mgr. Tomáš Kotler. I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

Content Aware Image Resizing

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014

polyfázové filtry (multirate filters) cascaded integrator comb filter (CIC) A0M38SPP - Signálové procesory v praxi - přednáška 8 2

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Funkce základní pojmy a vlastnosti

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

Matematika 1 pro PEF PaE

Rovnice 2 Vypracovala: Ing. Stanislava Kaděrková

VY_32_INOVACE_INF4_12. Počítačová grafika. Úvod

0.1 Úvod do lineární algebry

Cvičné texty ke státní maturitě z matematiky

FOURIEROVA ANAL YZA 2D TER ENN ICH DAT Karel Segeth

Aplikovaná numerická matematika

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Základy fuzzy řízení a regulace

Transkript:

Změna velikosti obrázku Převzorkování pomocí filtrů Ačkoliv jsou výše uvedené metody mnohdy dostačující pro běžné aplikace, občas je zapotřebí dosáhnout lepších výsledků. Pokud chceme obrázky zvětšovat z nebo na různé neobvyklé velikosti, nebo nám jde o to vygenerovat z celé obrazovky jen malý náhled čítající několik desítek pixelů, pak se ke slovu dostává filtrování, protože je v těchto ohledech velice flexibilní. Algoritmus pro převzorkování je jeden, avšak filtrů samotných existuje povícero. Jsou definovány kernelem, který má různý rozsah, nebo poloměr. Ten udává vzdálenost nejzazšího pixelu, který se ještě započítává do hodnoty výsledného pixelu zvětšeného/zmenšeného obrázku. Tato vzdálenost se počítá od umístění pixelu v původním (zvětšovaném/zmenšovaném) obrázku. Čím větší rozsah, tím vyšší výstupní kvalita. Vlastní kernel lze znázornit grafem sudé funkce, ze které lze vyčíst některé charakteristiky kernelu. Funkce s hladším průběhem má ekvivalent v hladkém výstupním obrázku, naopak špičaté a hranaté funkce přinášejí typické artefakty ve výstupním obrázku. Funkční hodnota v daném bodě, která je vždy v intervalu <0,> udává váhový koeficient pro určitý pixel, tedy důležitost toho kterého pixelu. Obecně platí, že čím je pixel v původním obrázku vzdálenější od zdrojového, tím menší má důležitost. Některé kernely jsou však připočítávají více vzdáleným pixelům trochu větší váhu, než pixelům méně vzdáleným, kvůli lepší aproximaci z frekvenčního hlediska, respektuje se tedy vlnová povaha signálu (obrázek chápeme jako dvourozměrný signál). Důvodem existence více různých kernelů je jejich rozličná náročnost a rozsah. Větší kernely potřebují podstatně více výpočetního času, protože pro každý bod zdrojového obrázku je třeba vypočítat více váhových koeficientů a rovněž jejich určení je o to náročnější, čím složitější má funkce předpis. Algoritmus je poměrně jednoduchý na implementaci, je však potřeba dát pozor na okraje obrázku. Často se dělá chyba v tom, že když okolní pixely leží mimo obrázek, vůbec se nezapočítají. To má však za následek ztmavení na okrajích obrázku, protože v těchto oblastech byl součet váhových koeficientů menší než jedna. Tato suma musí být vždy rovna jedné, protože každá hodnota pixelu cílového obrázku je vlastně vážený průměr pixelů v okolí ekvivalentní pozice ve zdrojovém obrázku. Pro dodržení definice je tedy nutné buď vícekrát započítat jeden bod, nebo si pamatovat součet váhových koeficientů a tím pak dělit. Protože jsou souřadnice na sobě nezávislé (stejně jako barevné složky), implementuje se algoritmus dvouprůchodově. Jeden průchod je horizontální, druhý vertikální. U takové varianty stačí použít jednorozměrné varianty kernelů a rychlost algoritmu bude vyšší než u jednoprůchodové verze s funkcemi (kernely) o dvou parametrech. Algoritmus pro převzorkování filtrem do většího obrázku vypadá následovně:. Urči škálovací faktor: scale = n_width/width 2. Pro každou pozici i v cílovém vektoru: a. Transformuj i na pozici center ve vstupním vektrou: center = i/scale b. Urči levou hranici vyhledávání: left = round(center range) c. Urči pravou hranici vyhledávání: right = round(center + range) d. Inicializuj pomocné proměnné: value = 0, weight_sum = 0 e. Pro každou pozici j ve vstupním vektoru v intervalu <left, right>: i. Urči váhový koeficient: weight = kernel(c j) ii. Inkrementuj hodnotu cílového pixelu: value += weight*value iii. Inkrementuj sumu váhových koeficientů: weight_sum += weight f. Urči výslednou hodnotu pixelu: pixel = value/weight_sum Tento pseudokód kvůli názornosti neřeší problém okrajů. Vektorem se zde myslí jeden skenovací řádek obrázku (scanline). Vertikální průchod je obdobný. Tento kód rovněž předpokládá, že zvetšujeme, tj. že scale >. Pro zmenšování platí tato varianta: 3. Urči škálovací faktor: scale = n_width/width 4. Pro každou pozici i v cílovém vektoru: a. Transformuj i na pozici center ve vstupním vektrou: center = i/scale b. Urči levou hranici vyhledávání: left = round(center range/scale) c. Urči pravou hranici vyhledávání: right = round(center + range/scale) d. Inicializuj pomocné proměnné: value = 0, weight_sum = 0 e. Pro každou pozici j ve vstupním vektoru v intervalu <left, right>: i. Urči váhový koeficient: weight = kernel((c j)*scale)*scale ii. Inkrementuj hodnotu cílového pixelu: value += weight*value iii. Inkrementuj sumu váhových koeficientů: weight_sum += weight f. Urči výslednou hodnotu pixelu: pixel = value/weight_sum Proměnná value reprezentuje hodnotu pixelu vstupního obrázku a proměnná range je rozsah daného kernelu. Ve variantě pro zmenšování bude rozsah procházených pixelů tím větší, čím radikálnější je zmenšování. Hodnotou

scale sice dělíme, ale ta je menší než jedna. Naopak při výpočtu váhového koeficientu násobíme jak argument funkce, tak její výsledek. Protože je koeficientů scale-krát víc, je potřeba je poměrně k tomu zmenšit, aby se součet vah opět vyladil. Box filtr Tento filtr dává pro zvětšování stejné výsledky, jako metoda nejbližšího souseda (proto se tak někdy nazývá). Vrací pouze hodnoty nebo 0, takže barvy pixelů ve zvětšeném obrázku nejsou nijak ovlivněny okolními pixely (ty mají totiž vzdálenost minimálně ). Při změnšování přidělí funkce bodům v nejbližším okolí stejné váhy, takže z váženého průměru se stane aritmetický průměr., x 2 = 0, jinak Triangle filtr Box filtr, zleva: originál, zvětšení 2x, 4x, 8x Filtr se také nazývá lineární, protože váha pixelu je nepřímo úměrná jeho vzdálenosti. Proto je filtr vhodný i na zmenšování, při mnohonásobném zvětšování obrázků s ostrými konturami se však objevují uzavřené přechody, způsobené malým rozsahem filtru. Interpolují se totiž vždy jen hodnoty dvou sousedních pixelů. x, x = 0, jinak

Triangle filtr, zleva: originál, zvětšení 2x, 4x, 8x Hermite filtr 3 2 x x + x 2 3, = 0, jinak Hermite filtr, zleva: originál, zvětšení 2x, 4x, 8x Bell filtr 3 2 x, x 4 2 2 3 = x, < x 2 2 2 2 0, jinak

Bell filtr, zleva: originál, zvětšení 2x, 4x, 8x Cubic B-Spline filtr Tento filtr používá pro interpolaci kubickou Beziérovu křivku, která je definována čtyřmi body (proto má kernel rozsah 2 2 body na každé straně). Křivka však těmito body přímo neprochází. Body se připodobňují k magnetům, které elastickou křivku přitahují. Výhodou filtru je prakticky eliminace artefaktů za cenu velkého rozmazání obrázku, proto není filtr příliš vhodný pro vícenásobné zvětšování. Vzhledem k tomu, že křivka přesně nefituje původní hodnoty, má zvětšený obrázek také menší kontrast, než při použití jiných filtrů. 3 3 2 2 B C x + 3+ 2B + C x + B, x 2 3 3 2 4 = B C x + B + 5C x + 2B 8C x + B + 4 C, < x 2 6 3 0, jinak B =, C = 0

Cubic B-Spline filtr, zleva: originál, zvětšení 2x, 4x, 8x Lanczos3 filtr Trojka v názvu filtru znamená jeho rozsah (existují také filtry Lanczos4, Lanczos6 nebo Lanczos8, viz níže). x sinc( x ) sinc, x 3 = 3 0, jinak sinc ( x) sin ( π x), x 0 = π x, jinak Mitchell filtr Lanczos3 filtr, zleva: originál, zvětšení 2x, 4x, 8x 5 3 2 2 C x + ( 3+ 3C ) x + C, x 2 3 7 3 2 6 = C x + 6C x 0 C x + C, < x 2 6 3 0, jinak C = 3

Mitchell filtr, zleva: originál, zvětšení 2x, 4x, 8x Cosine filtr U tohoto filtru je zajímavé, že se můžeme v implementaci vyvarovat výpočtu absolutní hodnoty díky sudé funkci (ta nemusí být ani v pomínce, když se nahradí podmínkou, že x >= - a zároveň x <= ). Tím se ušetří jedna výpočetní operace, i když je náročnost filtru diskutabilní kvůli použití funkce kosinus. xπ + cos, x = 2 0, jinak Cosine filtr, zleva: originál, zvětšení 2x, 4x, 8x Catmull-Rom filtr C = 0, B = 2

Catmull-Rom filtr, zleva: originál, zvětšení 2x, 4x, 8x Quadratic filtr Tento filtr vznikl ze snahy o kompromis mezi rychlostí a výslednou kvalitou. K rychlosti přispívá výpočet pouze kvadratické křivky, která se však tvarově podobá složitějším interpolačním křivkám. 2 2 x +, x 2 2 5 3 3 = x x +, < x 2 2 2 2 0, jinak Quadratic B-Spline filtr Quadratic filtr, zleva: originál, zvětšení 2x, 4x, 8x Podobně jako u kvadratického filtru máme opět kvadratický polynom, avšak při použití Beziérovy křivky.

2 x +, x 2 2 5 3 3 = x x +, < x 2 2 2 2 0, jinak Quadratic B-Spline filtr, zleva: originál, zvětšení 2x, 4x, 8x Cubic Convolution filtr Kubický konvolutivní filtr se snaží přiklánět k ostrým hranám obrázku, avšak při zachování tvaru optimální křivky. 4 3 7 2 x x +, x 3 3 7 3 2 59 5 3, 2 x + x x + < x = 2 2 2 3 2 2 x x + 7 x 3, 2 < x 3 2 3 4 2 0 jinak

Cubic Convolution filtr, zleva: originál, zvětšení 2x, 4x, 8x Lanczos8 filtr Jde vlastně o Lanczos filtr, tedy také o tzv. windowed sinc interpolaci, ovšem velikost okna je v tomto případě větší než u filtru Lanczos3. Tento filtr je nejpomalešjí ze všech, avšak zejména při zmenšování dosahuje nejlepší interpolace. x sinc( x ) sinc, x 8 = 8 0, jinak Fraktální zoom