私はいくつかのビデオ処理を行っています。フレームごとに、二変量関数の勾配を取得する必要があります。関数は double の 2 次元配列として表されます。ドメインは行と列のインデックスで、範囲は対応するインデックス値の double 値です。またはもっと簡単に言えば、関数は次のようf
に定義されています。double[][] matrix
f(x,y)=matrix[x][y]
私はそれに Apache Commons Math ライブラリを使用しようとしています:
SmoothingPolynomialBicubicSplineInterpolator iterpolator = new SmoothingPolynomialBicubicSplineInterpolator();
BicubicSplineInterpolatingFunction f = iterpolator.interpolate(xs, ys, matrix.getData());
for (int i = 0; i < ans.length; i++) {
for (int j = 0; j < ans[0].length; j++) {
ans[i][j] = f.partialDerivativeY(i, j);
}
}
- x インデックスのソートされた配列として xs を使用
(0,1,...,matrix.getRowDimension() - 1)
- はい、列の次元で同じです
(0,1,...,matrix.getColumnDimension() - 1)
問題は、そのサイズの典型的なマトリックスの場合、実行に数秒150X80
かかる1.4
ため、私のニーズにはまったく関係がないことです。したがって、このライブラリの初心者ユーザーとして、またプログラムによる数値解析一般として、次のことを知りたいと思います。
- 私は何か間違ったことをしていますか?
- このタスクを達成できる別のより高速な方法はありますか?
- 解決策を提供する別のオープン ソース ライブラリ (できれば maven に適したもの) はありますか?