Как насчет извлечения initializeCoefficients
и изменения конструктора с
public DCT() {
this.initializeCoefficients();
}
на
public DCT(int[][] f) {
this.f = f;
}
Затем можно использовать класс как
double[][] dctApplied = new DCT(yourTwoDimF).applyDCT();
Кроме того, я бы не стал использовать N
так, как вы.Я бы посмотрел размеры самого f
при применении DCT.
То есть я бы изменил
double[][] F = new double[N][N];
for (int u=0;u<N;u++) {
for (int v=0;v<N;v++) {
// ...
на что-то вроде
double[][] F = new double[f.length][];
for (int u = 0; u < f.length; u++) {
F[u] = new double[f[u].length];
for (int v=0;v<N;v++) {
// ...