主要方法:上个版本水印方法主要是采用基于JPEG的DCT系数量化的水印方案,该方案可以有效抵抗JPEG压缩攻击,且保证图像画质没有明显变化。 主要问题:根据反馈,上版本的JPEG水印虽然可以保证画质,但轻微的改动对于人脸识别的分类还是造成了一定的影响,使得准确度下降。因此,这版本寻求可逆水印的方案。
寻求基于JPEG的DCT系数的直方图平移技术,先解析JPEG系数,对于其中的交流AC系数,把所有小于等于-2的值减1,大于等于2的值加1,留出正负2的直方图空位,正负1的值,而系数0则保持不变,并且直流DC系数保持不变。 之后就可以映射到正负2,正负1表示信息“0”,正负2表示信息“1”。在扫描DCT系数过程中,采用Zigzag扫描。
虽然本版本可以将加入的水印可逆,但该图像水印不再具有鲁棒性,也即重编码、缩放、裁剪等操作都将破坏原有水印。
由于本项目较为仓促,目前基于之前开发的安卓APP上的信实“以图藏图”软件,因此开发语言为Java。无需其他库支持,JPEG系数编解码为自编函数实现。