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.
Rozšíření kubické interpolace pro interpolaci datových bodů na dvourozměrné pravidelné mřížce
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é.
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