用Java调整矩阵大小

时间:2015-09-06 09:27:43

标签: java arrays matrix interpolation resampling

我有一个矩阵double[][],其任意尺寸但大于300(可能在一个或两个维度上)。我想将其缩放到double[300][300]

我的主要方法是插入矩阵并将其提升到double[600][600],然后取四个元素并找到它们的平均值,即元素0,00,1,{{1} }和1,0将是最终300x300矩阵的1,1

我在JAVA中找到了插值库,但我无法弄清楚如何使用它。任何人都可以提供一些示例或信息吗?

图书馆是:http://docs.oracle.com/cd/E17802_01/products/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/Interpolation.html

日Thnx。

1 个答案:

答案 0 :(得分:1)

如何编写一个将源单元映射到目标的简单方法,然后平均出来?

public static boolean matrixReduce(double[][] dst, double[][] src) {
    double dstMaxX = dst.length - 1, dstMaxY = dst[0].length - 1;
    double srcMaxX = src.length - 1, srcMaxY = src[0].length - 1;
    int count[][] = new int[dst.length][dst[0].length];

    for (int x = 0; x < src.length; x++) {
        for (int y = 0; y < src[0].length; y++) {
            int xx = (int) Math.round((double) x * dstMaxX / srcMaxX);
            int yy = (int) Math.round((double) y * dstMaxY / srcMaxY);

            dst[xx][yy] += src[x][y];
            count[xx][yy]++;
        }
    }

    for (int x = 0; x < dst.length; x++) {
        for (int y = 0; y < dst[0].length; y++) {
            dst[x][y] /= count[x][y];
        }
    }

    return true;
}