第 12 章:隐写术¶
使用 LSB 技术¶
把图片的像素值表示成整数的形式。把
DCT 图像压缩¶
DCT 将图像分成由不同频率组成的小块,然后进行量化。在量化过程中,舍弃高频分量,剩下的低频分量被保存下来用于后面的图像重建。
- 将图像分解为
的图像块 - 将表示像素的 RGB 系统转换成 YUV (灰阶与色度)系统
- 然后从左至右,从上至下对每个图像块做 DCT 变换,也就是把每一个块表达为 64 个图案乘上不同系数的和;然后舍弃高频分量,保留 19 个低频分量
- 对余下的图像块进行量化压缩
- 解压缩时对每个图像块做DCT反转换(IDCT)
DCT 变换得到的 64 个系数中,第一个是 DC 系数,后 63 个是 AC 系数。“舍弃高频分量”这一步叫做 DCT 量化,是一种不可逆的有损压缩过程。使用一张量化表除以 DCT 系数的矩阵,量化后的比例系数中数值较大的被映射到非零的整数,数值较小的系数被映射到零。映射完的系数叫做 JPEG 系数。请看这里:链接。
量化系数
统计数据保存隐写术¶
现在拿一对
为了不让双方大小比例变得太奇怪,我们必须满足
基于模型的隐写术¶
说实话我不知道自己在写啥。
把载体看作是一个 8 位随机数,其中高 7 位和隐写无关,只有最低一位和隐写有关(可以修改)。设高 7 位是
在
在解读隐写信息的时候,就将广义柯西分布的字节流编码成均匀分布的字节流。
这种方法的效率是 2:每一位只有一半的几率改变,而可以表示一整位的编码信息。
信息熵
位的改变
效率
JSTEG¶
JSTEG 把信息用 LSB 编码到 JPEG 系数里面,它的问题是量化系数分布会有明显的特征。
F3¶
- 如果对应编码信息为 0,那么把 JPEG 值移到更靠近 0 的偶数(-3 到 -2, -2 到 -2,3 到 2)。
- 如果对应编码信息为 1,那么把 JPEG 值移到更靠近 0 的奇数(-3 到 -3, -2 到 -1,2 到 1)。
- 如果有人被移到了 0,那么不会消耗这一位要编码的信息。
其问题是,一般来说
F4¶
JPEG 值大于 0:
- 如果对应编码信息为 0,那么把 JPEG 值移到更靠近 0 的偶数。
- 如果对应编码信息为 1,那么把 JPEG 值移到更靠近 0 的奇数。
- 如果有人被移到了 0,那么不会消耗这一位要编码的信息。
JPEG 值小于 0 的时候,反过来:
- 如果对应编码信息为 0,那么把 JPEG 值移到更靠近 0 的奇数。
- 如果对应编码信息为 1,那么把 JPEG 值移到更靠近 0 的偶数。
- 如果有人被移到了 0,那么不会消耗这一位要编码的信息。
矩阵编码¶
现在想往三个灰度值
如果
海明码¶
- 把
个信息编码到一个大小为 的空间中。 - 对于一个
位的数 ,构造矩阵 提取出 位信息: 。这样就把信息 映射为了 。
对于一个
- 有
的概率 ,也就是没有错。 - 有
的概率 ,其中向量 里面只有一个 1,其他位置都是 0。
这样一来,改变的位数期望是
编码效率的上限¶
在一张 n 个像素的载体中,编码集合为
在这里,效率即是
当
根据信息论的知识(我不知道),
于是我们有相对消息长度
湿纸¶
只能更改一部分地方的载体叫做湿纸(Wet Paper),能被修改的地方叫做“干”的地方。现在有湿纸
设
规定矩阵