Srovnání Bikubická interpolace s některými 1- a 2-dimenzionálními interpolacemi. Černé a červené / žluté / zelené / modré tečky odpovídají interpolovanému bodu a sousedním vzorkům. Jejich výšky nad zemí odpovídají jejich hodnotám.
v matematika, bikubická interpolace je příponou kubická interpolace pro interpolovat datové body na a dvourozměrný pravidelná mřížka. Interpolovaný povrch je hladší než odpovídající povrchy získané pomocí bilineární interpolace nebo interpolace nejbližšího souseda. Bikubickou interpolaci lze dosáhnout použitím kteréhokoli z nich Lagrangeovy polynomy, kubické splajny nebo kubická konvoluce algoritmus.
v zpracování obrazu, bikubická interpolace je často volena před bilineární nebo nejbližší sousední interpolací v převzorkování obrazu, když rychlost není problém. Na rozdíl od bilineární interpolace, která trvá pouze 4 pixelů (2 × 2), bikubická interpolace bere v úvahu 16 pixelů (4 × 4). Obrázky převzorkované bikubickou interpolací jsou plynulejší a mají méně interpolace artefakty.
Výpočet
Bikubická interpolace na čtverci
![{ displaystyle [0,4] krát [0,4]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ad39d6c0224c138cc09eaa0ae42be5d8f3e2dd94)
skládající se z 25 jednotkových čtverců dohromady. Bikubická interpolace podle
Matplotlib implementace. Barva označuje hodnotu funkce. Černé tečky jsou umístění předepsaných dat, která jsou interpolována. 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 spojité nad hranatými hranicemi.
Předpokládejme funkční hodnoty
a deriváty
,
a
jsou známy ve čtyřech rozích
,
,
, a
jednotkového čtverce. Interpolovaný povrch lze poté zapsat jako

Problém s interpolací spočívá v určení 16 koeficientů
.Vhodný
s funkčními hodnotami se získá čtyři rovnice:




Podobně osm rovnic pro deriváty v
a
Pokyny:








A čtyři rovnice pro
smíšená parciální derivace:




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



Tento postup poskytuje povrch
na jednotkový čtverec
který je spojitý a má spojité deriváty. Bikubická interpolace na libovolně velké pravidelná mřížka pak lze dosáhnout spojením těchto bikubických povrchů dohromady a zajistit, aby se deriváty shodovaly na hranicích.
Seskupení neznámých parametrů
ve vektoru
![alpha = left [ begin {smallmatrix} a_ {00} & a_ {10} & a_ {20} & a_ {30} & a_ {01} & a_ {11} & a_ {21} & a_ {31} & a_ {02} & a_ {12 } & a_ {22} & a_ {32} & a_ {03} & a_ {13} & a_ {23} & a_ {33} end {smallmatrix} right] ^ T](https://wikimedia.org/api/rest_v1/media/math/render/svg/0fd6f651f3dadce77a2d783292b915d0dcdd847e)
a nechat
![{ displaystyle x = left [{ begin {smallmatrix} f (0,0) & f (1,0) & f (0,1) & f (1,1) & f_ {x} (0,0) & f_ {x } (1,0) & f_ {x} (0,1) & f_ {x} (1,1) & f_ {y} (0,0) & f_ {y} (1,0) & f_ {y} (0,1 ) & f_ {y} (1,1) & f_ {xy} (0,0) & f_ {xy} (1,0) & f_ {xy} (0,1) & f_ {xy} (1,1) end {smallmatrix) }} doprava] ^ {T},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ef927b58762664c061d9a9159bad1c2f1776e55b)
výše uvedený systém rovnic lze přeformulovat do matice pro lineární rovnici
.
Obrácením matice získáte užitečnější lineární rovnici
, kde
![{ Displaystyle a ^ {- 1} = left [{ begin {smallmatrix} 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 - 3 3 0 0 -2 a -1 0 0 0 0 0 0 0 0 0 0 2 a -2 a 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -3 3 0 0 -2 - 1 0 0 0 0 0 0 0 0 0 0 2 a -2 a 0 0 1 1 0 0 - 3 0 3 0 0 0 0 0 -2 a 0 -1 0 0 0 0 0 0 0 0 0 -3 0 3 0 0 0 0 0 -2 a 0 -1 0 9 -9 a -9 a 9 6 3 -6 -3 6 -6 3 -3 4 2 2 1 - 6 6 6 -6 -3 -3 3 3 -4 4 -2 & 2 & -2 & -1 & -1 & -1 & 2 & 0 & -2 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 0 & 0 & 0 & 0 & 2 & 0 & -2 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & 0 - 6 & 6 & 6 & -6 & -4 & -2 & 4 & -3 & 4 & -2 & 4 & -3 & 2 & -2 & 2 & -2 & 2 & -2 & 1 & 1 & 1 & 1 end {smallmatrix}} right],}](https://wikimedia.org/api/rest_v1/media/math/render/svg/279914c7c5b02f1c582f49b33f3054c40910c36e)
což dovoluje
vypočítat rychle a snadno.
Může existovat další stručná maticová forma pro 16 koeficientů:

nebo

kde

Rozšíření na přímočaré mřížky
Aplikace často vyžadují bikubickou interpolaci pomocí dat na přímočaré mřížce, spíše než na jednotkový čtverec. V tomto případě identity pro
a
stát se



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ů
je nechat
![{ displaystyle x = left [{ begin {smallmatrix} f (0,0) & f (1,0) & f (0,1) & f (1,1) & Delta xf_ {x} (0,0) & Delta xf_ {x} (1,0) & Delta xf_ {x} (0,1) & Delta xf_ {x} (1,1) & Delta yf_ {y} (0,0) & Delta yf_ {y} (1,0) & Delta yf_ {y} (0,1) & Delta yf_ {y} (1,1) & Delta x Delta yf_ {xy} (0,0) & Delta x Delta yf_ {xy} (1,0) & Delta x Delta yf_ {xy} (0,1) & Delta x Delta yf_ {xy} (1,1) end {smallmatrix}} right] ^ {T},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/16cf673b5dac2b4e6a784256efe13c774ee6b2fd)
pak vyřešit
s
jako dříve. Dále se normalizované interpolační proměnné počítají jako
,
kde
a
jsou
a
souřadnice bodů mřížky obklopujících bod
. Poté se stane interpolační povrch

Hledání derivátů z funkčních hodnot
Pokud jsou derivace neznámé, jsou obvykle aproximovány z funkčních hodnot v bodech sousedících s rohy jednotkového čtverce, např. použitím konečné rozdíly.
Chcete-li najít jeden z jednotlivých derivátů,
nebo
pomocí této metody najděte sklon mezi nimi okolní body v příslušné ose. Například pro výpočet
pro jeden z bodů najděte
pro body nalevo a napravo od cílového bodu a vypočítat jejich sklon a podobně pro
.
Najít křížovou derivaci
, vezměte derivaci v obou osách, jednu po druhé. Například lze nejprve použít
postup k nalezení
deriváty bodů nad a pod cílovým bodem, pak použijte
postup u těchto hodnot (spíše než jako obvykle hodnoty
pro tyto body) k získání hodnoty
pro cílový bod. (Nebo to můžete udělat opačným směrem, nejprve to spočítejte
a pak
z těch. Ti dva dávají rovnocenné výsledky.)
Pokud na okrajích datové sady chybí některé z okolních bodů, lze chybějící body aproximovat řadou metod. Jednoduchou a běžnou metodou je předpokládat, že sklon z existujícího bodu do cílového bodu pokračuje bez další změny, a pomocí toho vypočítat hypotetickou hodnotu pro chybějící bod.
Algoritmus bikubické konvoluce
Bikubická 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 použitím a konvoluce s následujícím jádrem v obou rozměrech:

kde
je obvykle nastavena na −0,5 nebo −0,75. Všimněte si, že
a
pro všechna nenulová celá čísla
.
Tento přístup navrhl Keys, který to ukázal
produkuje konvergenci třetího řádu s ohledem na vzorkovací interval původní funkce.[1]
Použijeme-li maticovou notaci pro běžný případ
, můžeme rovnici vyjádřit přátelště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 vzorky. 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 bodu dotazu je označena
tady.
Pro dvě dimenze se nejprve aplikuje jednou dovnitř
a znovu dovnitř
:





Použití v počítačové grafice
Dolní polovina tohoto obrázku je zvětšením horní poloviny, což ukazuje, jak se vytváří zdánlivá ostrost levé čáry. Bikubická interpolace způsobuje překmit, který se zvyšuje
akutance.
Bikubický algoritmus se často používá pro změnu měřítka obrázků a videa pro zobrazení (viz převzorkování bitmap ). Zachovává jemné detaily lépe než běžné bilineární algoritmus.
Kvůli negativním lalokům na jádře to však způsobuje přestřelení (halo). To může způsobit výstřižek, a je artefaktem (viz také vyzváněcí artefakty ), ale zvyšuje se akutance (zdánlivá ostrost) a může být žádoucí.
Viz také
Matematický portál
Reference
externí odkazy