验证伪 jpeg 压缩

信息处理 图像处理 dct 压缩
2022-02-12 04:45:00

我做了一些不完全是 jpeg 算法的事情。我所做的是给定图像IN×N大小,我计算了个人的 DCT8×8块。

完成此操作后,我已强制最左上角保持不变,但其他元素等于零。

然后我计算那个块上的逆 DCT 并用它来重建我的图像。

该算法似乎可以给出以下结果

在此处输入图像描述

在此处输入图像描述

鉴于我忽略了 jpeg 算法中的许多步骤(所有与霍夫曼编码、量化矩阵等相关的事情),为什么这个简单的算法有效?

谢谢。

1个回答

如果你计算一个8×82D-DCT,只保留左上角,你保留的数量与每个的平均值成正比 8×8堵塞。这是直流分量,类似于0傅里叶变换中的频率。这就像一个带有量化表的 JPEG 编码,看起来像:

(1)

使用这种“类型”量化执行逆 DCT 将平均值分布在8×8堵塞。你正在做的相当于执行一个移动平均线8×8统一窗口,然后通过下采样 8在这两个xy方向。您通过替换每个压缩64-像素块的平均值,导致(有效)64乘以较小的图像,并且您通过推断平均值来“伪造”原始大小的图像。

但是,您不能申请1/64尚未压缩,因为您保留的系数尚未量化,并且例如存储在32位浮点字。在你进入更高级的编码之前,你大约在 1/16=1/64×32/8压缩率。