一个将文件隐写在视频中的工具
目前相关协议和基础编解码器都已经完成了,但是视频会被有损压缩导致无法正常编解码
可能需要设计更加鲁棒性的编解码器,暂且搁置吧
进度
- 文件、视频多线程读取写入迭代器
- 帧载波编码算法
- 数据帧格式
- 解决视频有损压缩问题
F5算法:是一种基于LSB替换的隐写算法。F5算法能够保持在JPEG压缩下的隐写鲁棒性。
Spread Spectrum Watermarking(SSW)算法:是一种使用扩频技术实现的数字水印算法,通过将水印信息分散到频域上,使得在JPEG压缩下仍能保持较好的鲁棒性。
QIM算法:是一种在DCT领域下的隐写算法,能够保持在JPEG压缩下的鲁棒性。
HILL算法:是一种使用直方图平移技术实现的隐写算法,其主要特点是在JPEG压缩下具有较好的隐写鲁棒性。
HUGO算法:是一种将秘密信息嵌入到图像的高斯金字塔中,具有较好的鲁棒性和隐蔽性。
量化矩阵隐写算法:是一种在JPEG压缩下具有较好鲁棒性的隐写算法,其主要**是将秘密信息嵌入到量化矩阵中。
以上都没有实现,未来可期
以kernel大小作为一个单位,为了保证低位均匀分布,所以[0,4]表示0,[5,9]表示1
为了对抗压缩算法,使用kernel均值作为最终数据,但是其实没用。
数据组成:
每个Header帧实际占用3帧存储,数目不定;数据帧在Header帧后面,每个数据帧实际占用2帧存储。
Header帧与数据帧之间可以存在若干个空载帧,用于填充空白。
Header帧数据格式:
所有的Header都必须通过默认编码器进行编码
- HEADER_MAGIC(64位)
- 第i页与当前页 (32位/32位)
- 构造类参数与信息(16位长度前缀)
- 版本信息(16位长度前缀)
- 数据哈希值(32位)
数据帧数据格式:
- CONTENT_MAGIC(64位)
- 第i页与当前页(32位/32位)
- 数据(32位长度前缀)
- 数据哈希值(32x8=256位)
空载帧数据格式:
- EMPTY_MAGIC
- 全0
各个MAGIC长度均为8字节