1、基于 QR 码数字水印技术的研究与实现 庞博 庞毅林 武警警官学院 华东理工大学信息学院 摘 要: 本文研究了一种基于 QR 二维码的数字水印算法并对其进行了改进以提高水印容量, 并在 Eclipse 平台上运用 Java 语言实现了 QR 码的生成、读取, 水印信息的嵌入和提取, 并形成一个 APP 应用, 具有一定的实用性。关键词: QR 码; 数字水印; 容量; 0 引言二维条码是近年来在一维条码的基础上发展起来的一种新型条码, 从本质上来说是一种特殊的二值图像。二值图像即是黑白图像, 其每个像素点只用一位表示, “0”代表黑, “1”代表白, 其存储简单、结构紧凑等特点使得二值图像在数
2、据传真、文字识别、条码识别中得到广泛应用1,2。在二维条形码中嵌入数字水印信息, 能够实现如电子票据二维条码的防伪等作用。目前, 国内外关于二维码信息隐藏技术的文献不是很多, 研究对象主要是PDF417 码 (Portable Data File 417) 和 QR (Quick Response) 码。文献3提出结合 Freeman 链码和 B 样条曲线误差对 PDF417 二维码先进行预处理, 再将与该图像内容相关的哈希值作为水印信息嵌入, 可进行篡改验证, 容量有所提高但算法实现繁琐, 而且水印信息受限。文献4利用变形技术对 PDF417 码符号字符组成单元的宽度进行适量的变动以实现隐藏
3、信息的嵌入, 能有效的抗打印和扫描攻击, 但隐藏信息容量不大。文献5提出了一种基于 QR 二维码的认证系统。文献6在 DCT (Discrete Cosine Transform) 基础上实现了一种结合 PDF417 码的水印嵌入算法, 采用 PDF417 编码将水印信号扩展成比信息带宽大得多的带宽信号, 提高了数字水印的稳健性, 该算法可有效满足水印的透明性和鲁棒性要求。文献7提出了一种 QR 码数字水印技术, 文献8提出了一种基于 QR 码数字水印技术, 但水印容量有限。文献9根据 PDF417 二维条码自身结构特点, 对其进行适量的结构微调, 提出明隐藏和暗隐藏方法, 将信息隐藏进条码当
4、中。文献10-11提出将二维码水印技术应用于身份证管理和电子票证中以实现防伪认证的目的。本文在文献8的基础上, 改进了水印嵌入算法, 提高了水印容量, 同时能正确实现水印的提取和原二维码信息的识读, 并实现APP 应用, 具有一定的实用性。1 基于 DCT 变换的 QR 码水印算法1.1 基于 DCT 变换的数字水印技术DCT 变换域数字水印技术具有鲁棒性强、隐蔽性好的特点。其主要思想是在图像的 DCT 变换域上选择中低频系数叠加水印信息, 之所以选择中、低频系数, 是因为人眼视觉敏感的部分主要集中在这一频段, 攻击者在破坏数字水印的过程中, 不可避免地会导致图像质量严重下降, 一般的图像处理
5、过程也不会改变这部分数据。数字水印的流程如图 1 所示。图 1 数字水印流程图 下载原图1.2 基于 QR 码数字水印算法基于 DCT 变换的 QR 二维码的数字水印算法, 具体嵌入算法如下:(1) 将载体图像按 8*8 像素分块, 对每个分块都做 DCT 变换得到如表 1 所示的DCT 系数矩阵。有字母的格子代表要通过操作该系数来嵌入水印信息的位置。(2) 修改 DCT 中频系数来嵌入水印, 每个 8*8 块中的 7 组系数表达 1bit 的水印信息。(3) 设 B (j) 代表要嵌入的第 j 位 bit 信息, a (i, 1) , a (i, 2) , a (i, 3) (i=1, 2,
6、 , 7) 代表嵌入的 B (j) 的相邻三个 DCT 中频系数, 文献8的嵌入算法描述为:1 当 B (j) =1 时, a (i, 2) 放绝对值最大的系数 max, a (i, 1) 放绝对值次大的系数 mid, a (i, 3) 放绝对值最小的系数 min;2 当 B (j) =0 时, a (i, 2) 放绝对值最小的系数, a (i, 1) 放绝对值最大的系数, a (i, 3) 放绝对值次大的系数。本文在文献8的基础上改进步骤 3 以提高水印容量。因备选的有三个中频系数, 可有六种排列方式, 所以能够一次不只嵌入 1bit 的信息, 而是嵌入 2bit 的信息, 即使用到四种排列
7、方式, 如表 1 所示, 可将允许嵌入的水印容量扩大了 2倍。(4) 多次重复嵌入水印信息, 对每块图像的 DCT 系数作 IDCT, 得到嵌入水印的空域图像。水印的提取过程通常是水印嵌入的逆过程, 具体算法为:1 将图像按 8*8 分块, 作 DCT 变换:2 根据每个分块的频域系数规则判定每分块嵌入的 7bit 信息;3 将提取出来的 7bit 信息按照模糊识别的最大隶属度原则来判决每分块嵌入的信息到底是 1 还是 0;4 将信息组合成完整水印信息。表 1 改进嵌入算法的 DCT 系数矩阵 下载原表 2 实验结果用 JAVA 编程实现了信息隐藏算法的嵌入与提取实验。本文的仿真实验选取大小为
8、 800800 的 QR 二维码样本图像, 携带信息“WWW”, 嵌入水印信息为100100 的 watermark.bmp 图像。QR 二维条码图像原始样本如图 2 (a) 所示。嵌入水印后的 QR 二维条码图像如图 2 (b) 所示, 对应的嵌入水印如图 2 (c) 所示。在嵌入过程中, 原 QR 码图像处理成灰度图像, 观察 QR 二维码原始图像与嵌入水印后的二值化图像, 二者差别很小, 且提取出的水印信息与原始水印信息几乎完全一致。实验结果表明, 该算法是有效的, 且水印容量是文献8的两倍。图 2 实验效果图 下载原图3 APP 的实现为更好地实现数字水印技术在实际生活的应用, 运用
9、Java 编程实现 APP 应用。APP 主要功能有:(1) 扫描获取 QR 码的携带信息 (基于 Google 的开源包 Zxing 完成) ;(2) 根据输入生成特定的 QR 码, 规格大小像素 800*800, 写入手机特定文件夹Pictures 目录下, 名字为 (信息) .png;(3) 选定好水印图像 (规格要求像素 100*100 二值图像) , 生成嵌入水印后的图像;(4) 通过生成水印后的图像恢复出嵌入的水印。基于 QR 码数字水印的 App 应用界面如图 3 所示。4 结语本文提出了一种改进的基于 DCT 变换的 QR 码数字水印算法, 实现了水印的嵌入和提取, 并正确识读
10、原二维码信息, 提高了隐藏容量, 最后设计并开发了相关的 APP 应用, 对实际生活中运用二维码进行防伪认证等方面具有一定的实用性。该方法不仅具有较大的嵌入水印容量, 对原有 QR 码信息影响较小, 针对 QR 码的抗扫描打印功能有待进一步研究。图 3 基于 QR 码数字水印技术的 App 应用 下载原图参考文献1蒋翠玲, 黄帅等.一种基于 PDF417 条码的鲁棒数字水印方法.网络与信息安全学报, 2016. 2Jiangxiao Han, Gang Wang, Johan Sidn, Fragment-type UHF RFID tag embedded in QR barcode lab
11、el.Electronics Letters, 2015. 3吴桐树.基于二维码的数字水印技术研究D.浙江理工大学, 2015. 4牛夏牧, 黄文军, 吴迪, 张慧.基于二维条码的信息隐藏技术J.中山大学学报 (自然科学版) , 2004. 5潘璐.基于二维码的证件认证技术研究与实现D.北京邮电大学, 2014. 6张基宏, 肖薇薇, 纪震.基于二维条码 PDF417 的数字图像水印算法J.深圳大学学报 (理工版) , 2002. 7孙丙, 高美凤.基于 QR 码的数字水印算法J.计算机与现代化, 2011. 8王瑞玲.面向二维条形码的数字水印技术研究D.杭州电子科技大学, 2011. 9赵博.二维条码研究D.西安电子科技大学, 2007. 10林海.二维码技术在身份证管理中的应用研究D.天津:天津大学, 2012. 11欧阳麒.移动二维条码电子票证安全数字水印方案研究D.上海交通大学, 2007.