-3

私は現在、C で Matlab 用の MEX ファイルを作成して、最初に画像を回転させてからバイキュービックに補間しています。調査中に、 https: //www.paulinternet.nl/?page= bicubic で C++ のバイキュービック補間の部分的な実装を見つけました。ただし、そこにあるコードは 4 x 4 の領域のみを補間し、最初の領域を埋めるのに十分な値ではなく、単一の補間値のみを返します。

バイキュービック補間が画像全体にどのように適用されるか教えてもらえますか? 画像は 4x4 のチャンクに分割され、補間されますか? 画像全体の値を取得するにはどうすればよいですか? また、関数「bicubicInterpolate」の「x」と「y」は正確には何ですか?

double cubicInterpolate (double p[4], double x) {
    return p[1] + 0.5 * x*(p[2] - p[0] + x*(2.0*p[0] - 5.0*p[1] + 4.0*p[2] - p[3] + x*(3.0*(p[1] - p[2]) + p[3] - p[0])));
}

double bicubicInterpolate (double p[4][4], double x, double y) {
    double arr[4];
    arr[0] = cubicInterpolate(p[0], y);
    arr[1] = cubicInterpolate(p[1], y);
    arr[2] = cubicInterpolate(p[2], y);
    arr[3] = cubicInterpolate(p[3], y);
    return cubicInterpolate(arr, x);
}

この投稿「https://stackoverflow.com/questions/20923956/bicubic-interpolation」のコードからそれを識別しようとしましたが、分数の計算方法がわかりません。

ご協力ありがとうございました。

4

1 に答える 1