http://www.mathworks.com/help/vision/ug/interpolation-methods.html#f13689のバイキュービック補間に関するMatlabの例に混乱しています
私は彼らのバイリニアの例を理解していると思います。どちらかの側で隣接する変換された値の平均を取ったようです。したがって、最初の行、最初の列で 0.5 を取得するために、0 と 1 の平均が取られました。
バイキュービック補間の例では、私は彼らの方法にかなり混乱しています。彼らは、「両側の 2 つの翻訳値の加重平均」を取ると言っています。
彼らの例では、
1 2 3
4 5 6
7 8 9
バイキュービック補間の最初のステップで、マトリックスにゼロを追加し、右に 0.5 ピクセル移動して、次のようにします。
0 0 0 1 1 2 2 3 3 0 0 0 0
0 0 0 4 4 5 5 6 6 0 0 0 0
0 0 0 7 7 8 8 9 9 0 0 0 0
次に、加重平均を使用して、
0.375 1.500 3.000 1.625
1.875 4.875 6.375 3.125
3.375 8.250 9.750 4.625
しかし、彼らがどのようにしてこれらの数字を入手したのかはわかりません。最初の行、最初の列の 0.375 の代わりに、代わりに (1 * 3/8 + 2 * 1/8) = 5/8 を実行します。これは、フォーマットが
0 _ 0 1 1 _ 2
3d d d 3d
ここで、d は距離です。
したがって、変換された値の加重平均を取るには、最初に (3d + d + d + 3d) = 1 を実行できるため、d = 1/8 となります。つまり、より近い変換された値のそれぞれに 3/8 の重みを付け、さらに変換された値のそれぞれに 1/8 の重みを付ける必要があります。これは (0 * 1/8 + 0 * 3/8 + 1 * 3/8 + 2 * 1/8) となり、これは 5/8 であり、3/8 の結果と一致しません。どこで間違えたのだろうと思いました。
ありがとう!