基于改进LSB算法的QR条码数字水印 - 图文

更新时间:2023-10-07 19:21:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于改进LSB算法的QR条码数字水印

何小龙 安虎 张无忌 李科 杨文 (四川大学 锦江学院,四川 眉山 620860)

摘 要 讨论了基于LSB的数字水印算法,并对其改进,实现了灰度图像的二维条码QR码在Matlab7.0下用改进LSB算法进行了水印的嵌入和提取,最后把此算法与通用LSB算法提取的水印结果进行了鲁棒性的测试。 关键词 数字水印;二维条码;QR码;LSB;MATLAB

1 引言

如今二维条码技术在信息领域被广泛应用,各种二维条码也都有自己的一套完整编码体系。虽然条码的查错能力和纠错能力都比较完善,但条码水印技术还不太成熟,特别是在基于条码自身的水印上还没有一个较为健全的具有强鲁棒性的水印方法。这在很大程度上是因为一般的二维条码在计算机中都是以黑白的二值图像存储的,其优点是占用的存储空间少,但作为载体而言这是不可行的,而对于多级颜色深度的灰度图像就不存在此类问题。如果单从条码图片本身考虑,可采用基于图像本身黑白的二值图像进行0,1的编码水印。但这样做对于大量数据(特别是不规则的二进制数据)和高纠错级别的二维条码而言,反而会加大其水印信息,进而要增大载体的容量。本文是基于二维条码本身嵌入水印,首先讨论了基于LSB数字水印的算法,针对不同容错级别的QR码做了嵌入位数的测试,然后根据测试结果得出QR码的容错范围,从而对LSB算法进行改进,并对比QR码在Matlab7.0下用改进LSB算法进行了水印的嵌入,提取水印和条码信息,最后和常用LSB算法提取的水印结果进行了鲁棒性的测试。

[4]

2 传统的LSB算法

目前数字水印的方法主要分为空间域方法和变换域方法。LSB算法是空域法中常见的算法,其算法的核心思想是把水印信息嵌入到最不重要的像素位(LSB,Least Significant Bits)上。例如一张8位深度的256色的位图,LSB算法一般把水印信息嵌入到最低位,也就是在第0位上,那么此位图隐含的水印信息可达1/8,如果嵌入最低两位,0位和1位,那么此位图可嵌入的水印信息可达1/4。LSB算法以其水印信息量大,信息隐藏方便而被作为一种易碎的水印算法广泛使用。但由于使用了图像不重要的像素位,使得算法的鲁棒性差,隐写信息很容易被滤波、图像量化、几何变形的操作破坏。

3 QR码容错与允许嵌入位测试

3.1 QR码容错算法

QR码(Quick Response Code)是日本Denso公司于l994年研制的一种矩阵式二维条码。它除了具备普通二维条码所拥有的信息容量大、可靠性高等优点外,还具有超高速全方位识读、并通过Reed-Solomo容错算法实现了高达30%的数据码字的纠错能力(ECC)。Reed-Solomo算法是在数字通信和信息存储领域应用非常广泛的一种编码方法。不同的纠错级别编码的QR码它所使用的冗余校验位的大小就不同。最终导致和数据信息一起生成的QR码的图形大小有所不同。

[7]

3.2 QR码最大嵌入位测试

为了实现对QR码的水印嵌入,下面就进行允许嵌入位测试。使用的载体QR码规格是500字节,纠错级别为7%,如图1所示,水印信息,如图2所示,实验结果如图3所示。

图1 图2

图3

通过条码枪可识别嵌入位小于等于5位的信息,如图4所示。QR码的纠错能力可以允许最多嵌入低5位。但在QR码嵌入低5位时肉眼已经可以看出明显的水印迹象,如图5所示。

图4

图5

4 LSB算法改进及实现步骤

4.1 算法改进

[3]

由于二维条码图像的颜色只有黑白两种,所以可把生成的条码转化成一张256的灰度图像。256灰度共需要8位来表示,但其中每一个位的作用是不一样的,越高位对图像的影响越大,反之越小。一章节可以得出QR码嵌入像素比特后3位是肉眼不可见的,同时条码枪可识别。这里对LSB算法进行改进,分别用A(i,j)7A(i,j)6A(i,j)5A(i,j)4A(i,j)3A(i,j)2A(i,j)1A(i,j)0代表长宽分别为M,N像素的条码的任意一个像素比特,取出最低3位A(i,j)2A(i,j)1A(i,j)0进行水印数据的嵌入,嵌入规则如下: (1)A(i,j)2=A(i,j+1)1; (2)A(i,j)1嵌入水印Bit; (3)A(i,j)0= A(i,j-1)1;

(4)于第1步嵌入A(i,j)2,如j等于N,则j赋值1,这时如i等于N,责令赋值1,即:A(i,j)2= A(M,N)1,否则i赋值i+1即:A(i,j)2 = A(i+1,1)1;

(5)于第3步嵌入A(i,j)0,如j等于1,则j赋值N,这时如i等于1,责令i赋值M,即: A(i,j)0= A(M,N)1,否则i赋值i-1即: A(i,j)0 = A(i-1,N)1 。

4.2 实现步骤

1)图像置乱

关于图像置乱的研究已有很多,常用的图像置乱的方法有Hilbert曲线、Fibonacci变换、幻方置乱、排列变换等。由于不考虑提高图像的置乱效果和增加图像置乱加密的密钥量。本文采用Arnold变换方法对QR码图像进行置乱。 2)记录Arnold数据

分别记录QR码载体图像的迭代次数K和Arnold变换的周期T。 3)嵌入水印信息

按照3.1 LSB嵌入水印规则在置乱图像中嵌入水印信息。

[2]

4)提取水印信息

对图像进行T-K次迭代,得到置乱的图像,这时提取最低3位A(i,j)2A(i,j)1A(i,j)0,并分别按照嵌入算法找到相应的嵌入位,可记为D(x,y)2D(x,y)1D(x,y)0,如果D(x,y)2+ D(x,y)1+ D(x,y)0小于2,则当前水印提取位取值为0,否则取值为1。

4.3 实验结果

分别对不同纠错级别QR码进行改进LSB算法的水印嵌入,如图6所示。

图 6

实验结果数据报告图如图7所示。

图 7

5 鲁棒性测试

常用的LSB算法和改进的LSB算法,进行攻击实验,实验内容是分别覆盖条码的1/5、1/4、1/3、1/2,然后对水印进行提取,实验结果如图8、图9所示。

图8 常用LSB算法

图9 改进LSB算法

实验结果数据如图10所示。

图10

不难看出常用LSB算法提取的水印图像其清晰度不如改进的LSB算法,由此可见改进的LSB算法在水印的健壮性上比常用的LSB算法更为突出。

6 结束语

本文讨论了基于LSB的数字水印算法的缺陷,并进行了改进,对QR码 在Matlab7.0下用改进LSB算法进行了水印的嵌入和提取,并和通用LSB算法提取的水印结果进行了鲁棒性的测试,实验结果表明此改进算法有较强的鲁棒性,但此算法只适用于如QR条码256灰度的位图。

参考文献

[1] Van SchyndelR.G.,TirkelA.Z.,Osbrne C.F..A Digital Watermark [J].Proc.IEEE International ConferenceonImage Processing,Austin,Texas,USA,1994,vo1.2,PP:86—90

[2] Petitcolas F A P,Anderson R J,Kuhn M G. Information hiding—a survey[J]. Proceedings of the IEEE[J],1999,87(7):1062—1077

[3]黄宏博,肖峻岭,佟俐鹏.基于Reed-Solomon算法的QR码纠错编码[J].计算机工程,2003,29(1):93—96 [4] 李建明,赖惠成.基于编码和二维条形码的数字水印[J] .计算机工程与应用,2008,44(2):62—69 [5]周琳娜,杨义先,郭云彪,胡岚. 基于二值图像的信息隐藏研究综述[J].中山大学学报(自然科学版):2004,43(S2):71—75

[6]高东发,黎绍发,沈既武,等.基于视觉和二维条码的数字水印[J].计算机工程与应用,2003,39(28):29—31

[7] 黄仿元.基于LSB的数字水印算法及MATLAB实验[J].计算机应用,2008,28(2):67—69

本文来源:https://www.bwwdw.com/article/cb3d.html

Top