我需要这个 Javascript 中的 IDCT 公式:
这就是逆离散余弦变换,用于 JPEG 压缩图像的解码。我的问题是我不知道如何实现它,我也无法在互联网上的其他地方找到任何帮助,实际上没有任何代码。我发现this DCT 的 Java 代码。我尝试更改参数和循环以使其符合公式,但值完全错误。
最佳答案
该函数计算结果表中的一个成员。
函数的第一个参数是具有 DC/AC 系数的表,第二个 (x) 和第三个 (y) - 结果表中成员的行和列。 C_u 和 C_v 是图片上的 a(u) 和 a(v)。表[u][v]是F(u,v)。
function IDCT(table, x, y){
let C_u = 0.0, C_v = 0.0;
let vSum = 0.0;
let result = 0.0;
for (let u = 0; u < 8; u++)
{
for (let v = 0; v < 8; v++)
{
if (u == 0)
{
C_u = 1.0 / Math.sqrt(2);
}
else { C_u = 1.0;}
if (v == 0)
{
C_v = 1.0 / Math.sqrt(2);
}
else {C_v = 1.0; }
vSum += C_u * C_v * table[u][v]
* Math.cos(((2 * x + 1) * u * Math.PI) / 16.0)
* Math.cos(((2 * y + 1) * v * Math.PI) / 16.0);
}
result += vSum;
vSum = 0;
}
result *= 0.25;
result = Math.trunc(result);
return result;
}
关于javascript - 如何在 JavaScript/Java 中实现 IDCT(JPEG 压缩)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54352713/