0

任意のものを異なる次元double[][]の別のものにスケーリングしたい。double[][]結果の配列の値は、バイキュービック補間を使用して入力配列に基づいて計算する必要があります。

これが何十年も画像処理で行われてきたことは知っていますが、特定の画像オブジェクトではなく任意の 2 次元配列で機能するライブラリまたは少なくとも機能するコード スニペットを見つけることができなかったので、ここで質問しています。

より具体的な要件:

私が理解している限り、3x3 グリッドのコーナー間の任意のポイントの値は、バイキュービック補間を使用して直接計算できるため、必要な最初の関数は次のようなものです。

double interpolate(double[][] grid3by3, double x, double y)`

ここで、x と y は 0.0 から 1.0 の間です

次のステップはもちろん、このプロセスを容易にすることで、すべてのポイントに対して 3x3 グリッドが自動的に選択され、次のようなものを取得できます。

`double[][] interpolate(double[][] input, int newWidth, int newHeight)`

これにより、指定された次元の新しい配列が得られますが、境界線は入力配列と同じです。

私が実際に取得したいのはこれです:

`double[][] interpolate(double[][] input, int newWidth, int newHeight,
                        double minX, double minY, double maxX, double maxY)`

最小値と最大値は境界ボックスを定義するので、必ずしも入力配列の正確なインデックス値で開始または終了する必要のない初期配列のサブセットを取得できます (たとえば、コーナーは (5,3) または(5.25、3.7)、したがって、入力配列をあるインデックス値で切り取ることはできません)。この境界ボックスは新しい配列の範囲になり、値は入力配列から補間されます。

ああ、参考までに: これは数値標高モデルに関するものなので、そもそも私のアプローチが完全に間違っているかどうか教えてください ;)

4

1 に答える 1