補間

interpolate.png

B-splineと線形補間の違い

線形補間では線っぽいアーティファクトが見られるが、計算コストが低い
B-spline補間は計算コストが高いが、補間結果がより滑らかできれい

カーネルとは?

補間におけるカーネル関数は、補間の重み係数になる。
カーネルの真ん中=補間したいポイント
である。

カーネルの使い方

kernel.png

図のように、新たに生み出したい点をカーネルの真ん中に据える。
カーネル関数の値と、オリジナルのデータ値は掛け算する。
今、
f(-1)=0.4,f(0)=1.05,f(1)=0.9
というデータ値があるとする。
これにカーネル関数のフィルタをかけた値は
-0.02,0.38,0.66,-0.07
になる。
なので、補間値はこうなる。
0.4×-0.02+1.05×0.38+0.9×0.66+0.57×-0.07=0.945
図の新しく補間された値と書いてあるところの値は0.945になる。

Nearest Neighbor

nearestneighbor.png nne.png

これって補間っていうのかな?
"補間"するのに一番近い一個だけの値を使う。
フィルタの幅が1.0なので、フィルタの中に入るデータ値はかならず1個になるってこと。
カーネルの高さは1
上の図で言うと、補間値は1のデータと同じ値になる。

floor(address+0.5)
で取得することも出来る。Nearest Neighbotを使うとカクカク、ドット絵みたいな結果画像になる。

線形補間

liner-interpolation.png

線形補間のフィルタはこんな感じ。
欠点は、カーネルがradial(放射状?)じゃないので、補間した方向に線っぽいものが出やすくなること。

cubic convolution interpolation

cubic-convolution-interpolationを見よ。

サポートサイト Wikidot.com