Splineリサイズの係数式とその導出法
概要
タイトルの通り、このページではSpline16やSpline36といったSplineリサイズの係数式と、その導出法について記述します。
私がAviUtlプラグインを作るにあたり、Lanczosn リサイズの係数が で求められるということはすぐに調べられたのですが、Splineリサイズに関しては情報が少なく係数式を見つけるまでに時間がかかったため、Splineリサイズについてまとまったページがあったら良かったのに、ということでこのようなページを作りました。
ちょっと説明
Spline(2n)2 リサイズは、補間したい地点の周囲n ピクセルを参照します。
縦方向と横方向のそれぞれで距離に応じて以下の係数式から係数を算出し、それらを掛け合わせたものを最終的な係数とします。この際、距離の基準は拡大前または縮小後、すなわちサイズの小さい方を基準とします。また係数の和は必ずしも1になるとは限らないので、最後に係数の和で割る必要があります。
係数式
Spline16、Spline36、Spline64、Spline100、Spline144、Spline196、Spline256の係数式を以下に示します。なお、範囲外の係数は0です。ちなみに、Spline4は線形補間と同一となります。
正直Spline256とかが役に立つ日は来ないと思いますが、資料ということで参考までに。
Spline16
Spline36
Spline64
Spline100
Spline144
Spline196
Spline256
テキスト形式の係数式はこちら。
係数式の導出法
Spline(2n)2 の係数式の導出法を、Spline16 (n=2) の場合を実際に計算しながら説明していきます。
数式を羅列しますので、興味のある方はどうぞ。
として、区間 [-n+1, n] を定義域とする関数 を、次のように定めます。
Spline16の場合、 は次のようになります。
ここで、 は次の条件をすべて満たすものとします。
- は連続である。
- などのつなぎ目においても、 及び の値はただ1つに定まる。
- である。
次に、 を によって定義し、 を で表します。
Spline16の場合、次に示す12式を連立します。
文字を消去した結果は以下のようになります。この計算は、何らかの数式処理ソフトを利用しないと恐らく無理でしょう。
さらに、 を で整理します。Spline16では、次のようになります。
ここで、 の係数を と定めると、 が Spline(2n)2 の における係数式となります。
従って、Spline16の係数式は以下の通りとなります。
トップに戻る