javascript - 如何在 JavaScript/Java 中实现 IDCT(JPEG 压缩)?

标签 javascript java compression jpeg dct

我需要这个 Javascript 中的 IDCT 公式:

formula for 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/

相关文章:

algorithm - 小数据 block 的良好压缩算法? (大小约2k)

javascript - 从 IIFE 访问变量

javascript - 如何将原始 JSX 标记传递给组件以作为代码显示在页面中?

java - 在 Android 中处理 XML 的最佳方式是什么

configuration - 为 Hive 中的 INSERT OVERWRITE SELECT 指定压缩编解码器

hadoop - Hive查询时如何知道数据文件是如何压缩的

javascript - 从 Flask 后端 react axios GET 空数据

javascript - Node.js:集群中具有不同代码的工作人员?

java - Eclipselink JPA、Oracle、Weblogic、调用 Persist 不提交到数据库

java - cucumber :循环场景中的步骤