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

问题描述 投票:1回答:1

我需要Java IDCT的此公式:

this Java代码。我尝试更改参数和循环以使其适合公式,但值完全错误。

javascript java compression jpeg dct
1个回答
0
投票

此函数计算结果表的一个成员。

函数的第一个参数是具有DC / AC系数的表,第二个(x)和第三个(y)-结果表中成员的行和列。 C_u和C_v在您的图片上分别是a(u)和a(v)。 table [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;
}
© www.soinside.com 2019 - 2024. All rights reserved.