Bicubická interpolace - Bicubic interpolation

Porovnání bikubické interpolace s některými 1- a 2-dimenzionálními interpolacemi.
Černé a červené / žluté / zelené / modré body odpovídají interpolovanému bodu a sousedním vzorkům.
Jejich výšky nad zemí odpovídají jejich hodnotám.

V matematice je bikubická interpolace rozšířením kubické interpolace (nezaměňovat s kubickou spline interpolací , metodou aplikace kubické interpolace na soubor dat) pro interpolaci datových bodů na dvourozměrné pravidelné mřížce . Interpolovaný povrch je hladší než odpovídající povrchy získané bilineární interpolací nebo interpolací nejbližšího souseda . Bicubickou interpolaci lze provést buď Lagrangeovým polynomem , kubickým splajnem nebo algoritmem kubické konvoluce .

Při zpracování obrazu je při převzorkování obrazu často volena bicubická interpolace před bilineární nebo nejbližší sousední interpolací . Na rozdíl od bilineární interpolace, která bere v úvahu pouze 4 pixely (2 × 2), bikubická interpolace uvažuje o 16 pixelech (4 × 4). Obrázky převzorkované pomocí bikubické interpolace jsou hladší a mají méně interpolačních artefaktů .

Výpočet

Bicubická interpolace na čtverci skládajícím se z 25 jednotkových čtverců spojených dohromady. Bicubická interpolace podle implementace Matplotliba . Barva označuje hodnotu funkce. Černé tečky jsou umístění interpolovaných předepsaných dat. Všimněte si, že vzorky barev nejsou radiálně symetrické.
Bilineární interpolace na stejné datové sadě jako výše. Deriváty povrchu nejsou přes hranice čtverce spojité.
Interpolace nejbližších sousedů na stejné datové sadě jako výše.

Předpokládejme, že hodnoty funkce a deriváty , a jsou známé ve čtyřech rozích , , , a jednotkové čtverce. Interpolovaný povrch pak lze zapsat jako

Interpolační problém spočívá v určení 16 koeficientů . Shoda s hodnotami funkce poskytne čtyři rovnice:

Podobně osm rovnic pro deriváty v a směrech:

A čtyři rovnice pro smíšenou parciální derivaci :

Výše uvedené výrazy použily následující identity:

Tento postup poskytne povrch na jednotkovém čtverci, který je spojitý a má spojité derivace. Bicubickou interpolaci na libovolně velké pravidelné mřížce pak lze provést tak, že se takové bikubické povrchy spojí a zajistí, aby se deriváty shodovaly na hranicích.

Seskupení neznámých parametrů do vektoru

a nechat

výše uvedený systém rovnic lze přeformulovat na matici pro lineární rovnici .

Invertováním matice získáte užitečnější lineární rovnici , kde

což umožňuje rychlý a snadný výpočet.

Pro 16 koeficientů může existovat další stručná maticová forma:

nebo

kde

Rozšíření na přímočaré mřížky

Aplikace často vyžadují bicubickou interpolaci pomocí dat na přímočaré síti, nikoli na jednotkovém čtverci. V tomto případě se identity pro a stanou

kde je rozteč buňky obsahující bod a podobně pro . V tomto případě je nejpraktičtější přístup k výpočtu koeficientů nechat

pak řešit se jako dříve. Dále se normalizované interpolační proměnné vypočítají jako

,

kde a jsou a souřadnice bodů mřížky obklopující bod . Poté se interpolační povrch stane

Hledání derivací z funkčních hodnot

Pokud deriváty nejsou známy, jsou obvykle aproximovány z funkčních hodnot v bodech sousedících s rohy jednotkového čtverce, např. Pomocí konečných rozdílů .

Chcete -li najít buď jednotlivé derivace, nebo pomocí této metody najít sklon mezi dvěma okolními body v příslušné ose. Chcete -li například vypočítat pro jeden z bodů, najděte body nalevo a napravo od cílového bodu a vypočítejte jejich sklon a podobně pro .

Chcete -li najít křížovou derivaci , vezměte derivaci v obou osách, jednu po druhé. Například lze nejprve použít postup k nalezení derivací bodů nad a pod cílovým bodem, poté použít postup pro tyto hodnoty (spíše než jako obvykle pro hodnoty pro tyto body) k získání hodnoty pro cílový bod. (Nebo to lze provést v opačném směru, nejprve vypočítat a poté z nich. Oba poskytují ekvivalentní výsledky.)

Když na okrajích datové sady chybí některé z okolních bodů, chybějící body lze aproximovat několika způsoby. Jednoduchou a běžnou metodou je předpokládat, že sklon od stávajícího bodu k cílovému bodu pokračuje bez dalších změn, a použít to k výpočtu hypotetické hodnoty pro chybějící bod.

Bicubický konvoluční algoritmus

Bicubická spline interpolace vyžaduje řešení lineárního systému popsaného výše pro každou buňku mřížky. Interpolátor s podobnými vlastnostmi lze získat aplikací konvoluce s následujícím jádrem v obou dimenzích:

kde je obvykle nastaveno na -0,5 nebo -0,75. Všimněte si toho a pro všechna nenulová celá čísla .

Tento přístup navrhl Keys, který ukázal, že vytváří konvergenci třetího řádu s ohledem na interval vzorkování původní funkce.

Pokud pro běžný případ použijeme maticový zápis , můžeme rovnici vyjádřit přívětivěji:

pro mezi 0 a 1 pro jednu dimenzi. Všimněte si, že pro 1-dimenzionální kubickou konvoluční interpolaci jsou vyžadovány 4 vzorkovací body. U každého dotazu jsou dva vzorky umístěny vlevo a dva vzorky vpravo. Tyto body jsou v tomto textu indexovány od −1 do 2. Vzdálenost od bodu indexovaného 0 k dotazovacímu bodu je zde označována .

Pro dvě dimenze nejprve aplikované jednou a znovu v :

Použití v počítačové grafice

Dolní polovina tohoto obrázku je zvětšením horní poloviny a ukazuje, jak se vytváří zdánlivá ostrost levé linie. Bicubická interpolace způsobuje překročení, což zvyšuje akutnost .

Bikubický algoritmus se často používá pro škálování obrázků a videa pro zobrazení (viz převzorkování bitmapy ). Zachovává jemné detaily lépe než běžný bilineární algoritmus.

Kvůli negativním lalokům na jádře však způsobuje překmit (haloing). To může způsobit oříznutí a je to artefakt (viz také vyzváněcí artefakty ), ale zvyšuje to akutnost (zjevnou ostrost) a může to být žádoucí.

Viz také

Reference

externí odkazy