Java 将代码从DCT转换为离散余弦逆变换?
对于一个项目,我必须演示JPEG压缩,因此与DCTII和IDCT的转换。我不知道如何实施这个公式。但是我发现了一个提供Java代码和在线IDE进行测试的网站。 在这里你可以看到代码 来自Wikipedia/JPEG的公式 那么,必须对代码进行哪些更改Java 将代码从DCT转换为离散余弦逆变换?,java,image,compression,jpeg,dct,Java,Image,Compression,Jpeg,Dct,对于一个项目,我必须演示JPEG压缩,因此与DCTII和IDCT的转换。我不知道如何实施这个公式。但是我发现了一个提供Java代码和在线IDE进行测试的网站。 在这里你可以看到代码 来自Wikipedia/JPEG的公式 那么,必须对代码进行哪些更改 我尝试切换for循环和公式中的变量,但我得到的值肯定是错误的,其他尝试会导致错误消息。DCT和IDCT之间的唯一区别是考虑系数的位置 您应该将代码中的第46行替换为 sum = sum + ck*cl*dct1; 式中,ck和cl按第24-3
我尝试切换for循环和公式中的变量,但我得到的值肯定是错误的,其他尝试会导致错误消息。DCT和IDCT之间的唯一区别是考虑系数的位置 您应该将代码中的第46行替换为
sum = sum + ck*cl*dct1;
式中,ck和cl按第24-34行计算,但k和l除外
并抑制第49行中的ci*cj
顺便说一句,这个java代码非常低效。预先计算Math.sqrt2、Math.sqrtn,并将余弦放在一个表中,它将至少快3倍 你的求和是矩阵乘法。您可以将8x8数据矩阵乘以8x8 DCT矩阵 DCT矩阵是正交矩阵,因此其逆矩阵是其转置矩阵 因此,您应该能够通过交换u和v来反转