IDCT变换(JAVA)主要代码:
public static double[][] inverseDCTconvertion(double[][] Fp) {
int sizeX = Fp.length;
int sizeY = Fp[0].length;
double[][] fp = new double[sizeX][sizeY];
int u, v, x, y;
for(int xx = 0; xx < sizeX; xx += 8){
for(int yy = 0; yy < sizeY; yy += 8){
for(int x1 = xx; x1 < xx + 8; x1++){
x = x1 - xx;
for(int y1 = yy; y1 < yy + 8; y1++){
y = y1 - yy;
double subSum = 0.0;
for(int u1 = xx; u1 < xx + 8; u1++){
u = u1 - xx;
for(int v1 = yy; v1 < yy + 8; v1++){
v = v1 - yy;
subSum += Cfunc(u) * Cfunc(v) * Fp[u1][v1] * Math.cos(((2.0*x + 1.0)*u*Math.PI)/(16.0)) * Math.cos(((2.0*y + 1.0)*v*Math.PI)/(16.0));
}
}
fp[x1][y1] = ((1.0 / 4.0) * subSum);
}
}
}
}
return fp;
}