一种在数字图像中嵌入和提取水印的方法与装置的制作方法

文档序号:6615754阅读:189来源:国知局
专利名称:一种在数字图像中嵌入和提取水印的方法与装置的制作方法
技术领域
本发明涉及信息隐藏和图像隐写技术领域,尤其涉及一种在数字图像中嵌入和提取水印的方法与装置。

背景技术
信息隐藏是信息安全领域的一个新的研究热点,信息隐藏为在开放的网络环境下进行涉密的数据通信、数字产品的知识产权保护、重要文件和数字签名的真实性鉴别以及机密文件泄密后的消息源头追踪提供了可靠的信息安全保障。数字水印和图像隐写是信息隐藏技术的两大分支。
现有技术一提出将秘密信息按像素点逐一插入到原始图像像素值的最低位,可以保证在嵌入大量秘密信息的同时保持图像的视觉效果。现有技术一是图像隐写技术中一个经典方法,具有实现简单、隐藏信息量大、隐秘图像视觉效果好等优点。但由于隐秘图像的直方图的规则性,很容易被各种隐写分析方法检测到图像中隐藏了秘密信息。
现有技术二采用当水印信息和水印信息嵌入点的像素值的奇偶性不同时随机对像素值加1或者减1,此方法消除了现有技术一中隐秘图像的直方图的规则性,使算法抗隐写分析的能力得到加强。对于使用现有技术二得到的隐秘图像,可以得到下述结果, hw(i)=0.25×h(i-1)+0.5×h(i)+0.25×h(i+1) 其中函数h代表原始图像的直方图,hw代表隐秘图像的直方图。可以看到,使用现有技术二得到的隐秘图像的直方图相当于对原始图像直方图作了一个平滑,并不会使隐秘图像的直方图产生规则性,因此现有技术二能够更好的抵抗隐写分析。在现有技术二中,对于一幅包含N个像素点的灰度图像,并且保证图像每点(除去像素值为0或者255的像素点)像素值最多改变1,可将灰度图像嵌入N比特的秘密信息,同时其像素值改变量的平均值是0.5。
显而易见,隐秘图像和原始图像越接近,则越难探测到隐秘图像是否包含了秘密的信息,或者说在信息嵌入的过程中对原始图像的改动越少则越难探测到隐秘图像中是否包含了秘密信息。因此,倘若使原始图像每点像素值最多改变1并且保持相同的信息隐藏量,当每点像素值的平均改变量变得比0.5更小,则其抵抗隐写分析的能力就会得到加强。


发明内容
本发明的目的是提供一种数字图像中嵌入和提取水印的方法与装置,可更好的抵抗隐写分析问题。
本发明实施例公开了一种数字图像中嵌入水印的方法,包括, 将待嵌入数字图像的全部或者部分像素点分组,每组包含的像素点的个数大于等于三,由每组像素点的像素值组成像素值信号; 将待嵌入的水印位流串分组,每组包含一个水印信号,所述水印位流串分组组数与数字图像像素点分组组数相同; 根据每个像素值信号和与之对应的水印信号以及一数字信号计算对应所述像素值信号的像素值改变信号; 根据所述像素值改变信号改变对应的数字图像像素点分组的像素值,实现水印嵌入。
本发明实施例公开了一种数字图像中提取水印的方法,包括, 根据保存的分组信息,将嵌入水印后的数字图像的全部或部分像素点分组,由每组像素点的像素值组成像素值信号; 根据保存的一数字信号与每个像素值信号,提取水印信号。
本发明实施例公开了一种数字图像中嵌入水印的装置,包括 获取单元,用于获取数字图像、待嵌入的水印位流串和一数字信号; 第一分组单元,用于将所述获得的数字图像的全部或者部分像素点分组,每组包含的像素点个数大于等于三,由每组像素点的像素值组成像素值信号; 第二分组单元,用于将待嵌入的水印位流串分组,每组包含一个水印信号,第二分组单元分组组数与第一分组单元分组组数相同; 计算单元,用于根据每个像素值信号和与之对应的水印信号以及一数字信号计算对应所述像素值信号的像素值改变信号; 嵌入单元,用于根据所述计算得到的像素值改变信号改变数字图像像素点的像素值。
本发明实施例公开了一种数字图像中提取水印的装置,包括 获取单元,用于获取嵌入水印的数字图像; 分组单元,用于根据保存的分组信息,将所述获取单元获取的嵌入水印的数字图像的全部或者部分像素点分组,由每组像素点的像素值组成像素值信号; 提取单元,用于根据所述分组单元每个分组的像素值信号与保存的一数字信号,提取水印信号。
根据本发明实施例提供的方法和装置,通过将待嵌入数字图像和水印信号分组,和一个满足要求的至少包含三个分量的数字信号,计算出取值为-1、0或1的像素值改变信号,改变待嵌入数字图像的像素值,在图像每点像素值最多改变1以及保持一定信息隐藏容量的情况下,使每点像素值的平均改变量变得更小,从而可以更好的抵抗隐写分析。



图1A为本发明实施例在图像中嵌入水印的流程图; 图1B为本发明实施例在图像中提取水印的流程图; 图2A为本发明实施例提供的待嵌入的灰度图像; 图2B为本发明实施例提供的待提取的灰度图像; 图3为本发明实施例提供的待嵌入的灰度图像; 图4为本发明实施例提供的待嵌入的灰度图像; 图5为本发明实施例提供的待嵌入的灰度图像; 图6为本发明实施例提供的待嵌入的灰度图像; 图7为本发明实施例提供的待嵌入的彩色图像; 图8A为本发明实施例提供的水印嵌入装置示意图; 图8B为本发明实施例提供的水印提取装置示意图。

具体实施例方式 本发明实施例提出了一种在数字图像中嵌入水印的方法,使得在图像每点像素值最多改变1以及保持一定信息隐藏容量的情况下,使每点像素值的平均改变量变得比0.5更小,从而可以更好的抵抗隐写分析。
下面简要的描述本发明实施例在数字图像中嵌入水印的方法的公式推导。假定图像像素点分组中的像素值信号分别为, X1=(X1,1,X1,2,......,X1,N) X2=(X2,1,X2,2,......,X2,N) ............ XL=(XL,1,XL,2,......,XL,N) 其中,L表示像素点分组的组数,N表示每个分组中所包含的像素点个数,N大于等于3,分量Xi,j代表图像像素点的像素值或者说灰度值,其取值为0到255之间的整数。再假设, W=(W1,1,W1,2,...,W1,K,W2,1,W2,2,...,W2,K,......,WL,1,WL,2,...,WL,K)是由0、1组成的水印位流串,将其分成L组,得到L个水印信号, W1=(W1,1,W1,2,......,W1,K) W2=(W2,1,W2,2,......,W2,K) ............ WL=(WL,1,WL,2,......,WL,K) 其中每个水印信号的长度都为K,K为大于零的整数。在此将每个水印信号, Wi=(Wi,1,Wi,2,......,Wi,K)嵌入到像素值信号, Xi=(Xi,1,Xi,2,......,Xi,N)中去。
首先选取数字信号V=(V1,V2,......,VN),使得V满足以下条件 (1)所有的分量Vj都是整数,其中j∈{1,2,......,N}; (2)V包含至少三个分量,即N大于等于三; (3)对于任何整数M∈{0,1,......,2K-1},都存在整数向量S=(S1,S2,......,SN), 其中S的每个分量Sj取值为0、1或者-1,并使得, S·V=S1·V1+S2·V2+......+SN·VN≡M(mod 2K), 就是说,使用S与V的内积可以表示模2K的全部剩余类。
然后计算, Wi,1·20+Wi,2·21+......+Wi,K·2K-1-(Xi,1·V1+Xi,2·V2+......+Xi,N·VN),接着将计算所得的整数除以2K得到的余数记为M,即计算所得的整数模2K的剩余类为M,这里M∈{0,1,......,2K-1}。再选取像素值改变信号, S=(S1,S2,......,SN), 使得S的每个分量Si的取值都为0、1或者-1,并且满足, S·V=S1·V1+S2·V2+......+SN·VN≡M(mod 2K) 最后选取嵌入水印后的像素值向量为, Yi=(Yi,1,Yi,2,......,Yi,N), 其中, Yi,j=Xi,j+Sj,j∈{1,2,......,N}。
此时,嵌入水印后的像素值信号与一数字信号V的内积满足, Yi,1·V1+Yi,2·V2+......+Yi,N·VN ≡(Xi,1+S1)·V1+(Xi,2+S2)·V2+......+(Xi,N+SN)·VN ≡(Xi,1·V1+Xi,2·V2+......+Xi,N·VN)+(S1·V1+S2·V2+......+SN·VN) ≡(Xi,1·V1+Xi,2·V2+......+Xi,N·VN)+M ≡(Xi,1·V1+Xi,2·V2+......+Xi,N·VN)+ Wi,1·20+Wi,2·21+......+Wi,K·2K-1-(Xi,1·V1+Xi,2·V2+......+Xi,N·VN) ≡Wi,1·20+Wi,2·21+......+Wi,K·2K-1(mod 2K)即嵌入水印后的像素值信号与一数字信号的内积在模剩余类的意义下与嵌入的水印信号相对应。
注意到,此时, |Yi,j-Xi,j|=|Sj|≤1, 由上式可以得出在嵌入水印后,每点像素值的变化不会超过1。
下面进一步说明使用本发明实施例中所述的水印嵌入方法,图像像素值的平均改变量的理论公式推导。后面的讨论说明,平均改变量的理论值只和一数字信号V的选择有关,从而是V的函数。
首先给出几个定义。对于任何整数M∈{0,1,......,2K-1},定义集合 AM={(S1,S2,......,SN)Sj∈{0,±1},S1·V1+S2·V2+......+SN·VN≡M(mod 2K)},以及, |AM|=inf{|S1|+|S2|+......+|SN|(S1,S2,......,SN)∈AM}, BM={(S1,S2,......,SN)∈AM|S1|+|S2|+......+|SN|=|AM|}, 其中,符号“inf”表示实数集合中元素的最小值。集合AM代表使用一数字信号V的分量通过加减来表示模2K的剩余类M的所有表示方法,|AM|代表上述表示方法中的最小代价,即向量S的分量的绝对值之和最小值,BM代表所述最小代价的向量。注意到在水印嵌入前后,像素值信号的变化为, |Yi,1-Xi,1|+|Yi,2-Xi,2|+......+|Yi,N-Xi,N|=|S1|+|S2|+......+|SN|因此若使得该变化量最小则需要选取, (S1,S2,......,SN)∈BM, 则可知, |Yi,1-Xi,1|+|Yi,2-Xi,2|+......+|Yi,N-Xi,N|=|AM|。从而,在假设水印位流串中的0和1是随机分布的情况下(水印嵌入时的水印位流串一般都经过加密处理,所以这一假设是合理假设),可以计算出在水印嵌入后,图像像素点的像素值的平均改变量的理论值是, ρ(V)=(|A0|+|A1|+......+|A2K-1|)/(N·2K) 例如当V=(1,2,3)、(1,2,4)、(1,2,4,8,15)、(1,2,4,12,21,28)时都是满足要求的数字信号,假设水印位流串的长度和图像所包含的像素点的个数相同,则所对应的水印嵌入方法中的图像像素点的像素值的平均改变量的理论值分别是, ρ(1,2,3)=1/3 ρ(1,2,4)=0.375 ρ(1,2,4,8,15)=0.325 ρ(1,2,4,12,21,28)=29/96≈0.3021 上述结果表明,适当选择满足要求的数字信号并采用本发明实施例提供的嵌入水印的方法,可以嵌入和现有技术二中相同容量的水印,但每点像素值的平均改变量则会由0.5变为更小,其抵抗隐写分析的能力得到加强。
本发明实施例提供了一种在数字图像中嵌入水印的方法,参见图1A所示,包括以下步骤 步骤101获取数字图像和由0、1组成的水印位流串; 步骤102将图像的全部或者部分像素点分组得到像素值信号序列; 步骤103将水印位流串分组,得到水印信号序列,所述分组组数与数字图像像素点分组组数相同; 步骤104获取一数字信号; 步骤105根据水印信号改变像素值信号使得嵌入水印后的像素值信号与数字信号的内积在模剩余类的意义下与水印信号相对应; 步骤106水印嵌入完毕,得到包含水印信息的图像。
本发明实施例提供了一种在数字图像中提取水印的方法,参见图1B所示,包括以下步骤 步骤111获取嵌入水印的数字图像; 步骤112按照保存的分组信息,将数字图像的全部或者部分像素点分组; 步骤113计算像素值信号与数字信号的内积; 步骤114根据步骤113计算出的内积进行水印提取; 下面通过几个具体的例子来详细的说明在数字图像中嵌入和提取水印的方法。
实施例一、在数字图像中嵌入水印的方法 1、获取如图2A所示的灰度图像“Man”,其大小为512×512。
2、获取长度为512×512-1=262143的由0、1组成的水印位流串 W=(W1,W2,......,W262143)。
3、将灰度图像的所有像素点按照从左到右再从上到下的方式排序,然后将前262143个像素点按照排列顺序分成262143÷3=87381组,每组包含三个像素点。假定第i个像素点分组中所包含的三个像素点的像素值依次为Xi,1、Xi,2和Xi,3,由此得到像素值信号序列, X1,X2,......,X87381 其中标号为i的像素值信号为Xi=(Xi,1,Xi,2,Xi,3),i∈{1,2,......,87381}。
4、将水印位流串W分成262143÷3=87381组,每组包含三个位流信息,得到水印信号序列, DW1,DW2,......,DW87381 其中标号为i的水印信号为DWi=(W3i-2,W3i-1,W3i),i∈{1,2,......,87381}。
5、选取一三维数字信号V=(V1,V2,V3)=(1,2,3),所选满足要求的数字信号的每个分量都是整数,并且可以验证V满足下述条件对于任何整数M∈{0,1,......,7},都存在向量S=(S1,S2,S3),S的每个分量的取值都是0、1或者-1,并使得, S1·V1+S2·V2+S3·V3=S1+2S2+3S3≡M(mod 8); 事实上,S的存在性可以由下表给出, 注意,对于给定的M值,S的选择可以不止一种,例如当M=4时,还可以选择S=(-1,0,-1)。
另外,满足要求的三维数字信号也可以有其它的选择,在本发明实施例中,当V为以下信号时都满足上述的条件 (1,1,2)、(1,1,3)、(1,1,4)、(1,2,2)、(1,2,3)、(1,2,4)、 (1,3,3)、(1,3,4)、(2,2,3)、(2,3,3)、(2,3,4)、(3,3,4)。
6、对于i∈{1,2,......,87381},根据水印信号, DWi=(W3i-2,W3i-1,W3i) 改变与之对应的像素点分组中的像素值信号, Xi=(Xi,1,Xi,2,Xi,3) 得到嵌入水印后的像素值信号, Y1=(Yi,1,Yi,2,Yi,3), 使得, Yi,1·V1+Yi,2·V2+Yi,3·V3=Yi,1+2Yi,2+3Yi,3≡W3i-2·20+W3i-1·21+W3i·22(mod 8)。
上述计算公式可以详细的表述为以下形式,首先选取整数M∈{0,1,......,7}使得, M≡(W3i-2·20+W3i-1·21+W3i·22)-(Xi,1+2Xi,2+3Xi,3)(mod 8) 然后选择像素值改变信号S=(S1,S2,S3),其中S1、S2和S3的取值都是0、1或者-1,并使得, S1+2S2+3S3≡M(mod 8); 接着计算, Yi,1=Xi,1+S1,Yi,2=Xi,2+S2,Yi,3=Xi,3+S3; 于是便有, Yi,1+2Yi,2+3Yi,3 ≡(Xi,1+S1)+2(Xi,2+S2)+3(Xi,3+S3) ≡(Xi,1+2Xi,2+3Xi,3)+(S1+2S2+3S3) ≡(Xi,1+2Xi,2+3Xi,3)+(W3i-2·20+W3i-1·21+W3i·22)-(Xi,1+2Xi,2+3Xi,3) ≡W3i-2·20+W3i-1·21+W3i·22(mod 8) 此时,若Xi,j的取值不为0或者255,则有, |Yi,j-Xi,j|=|Sj|≤1, 并且Yi,j的取值介于0到255之间,其中j∈{1,2,3}。
注意,在上述过程中如果出现Yi,j=-1(此时Xi,j=0并且Sj=-1)或者Yi,j=256(此时Xi,j=255并且Sj=1)的情况,此情况超出了图像像素值的取值范围(0到255之间的整数),此时可以先将Xi,j的值由0变为1(Yi,j=-1的情况)或者由255变为254(Yi,j=256的情况),然后再对改变了的像素值信号Xi重新进行水印嵌入。
另外,嵌入水印的图像的像素点分组中的像素值信号相对于原始图像的像素点分组中的像素值信号的改变量是, |Yi,1-Xi,1|+|Yi,2-Xi,2|+|Yi,3-Xi,3|=|S1|+|S2|+|S3|, 于是在上述过程中,当像素值改变信号(S1,S2,S3)有多种选择时,为了使在水印嵌入过程中图像的改变尽可能的小,应选取使得|S1|+|S2|+|S3|的和为最小的这一个(S1,S2,S3)。例如当M=6时,(S1,S2,S3)的选择有多种,包括(0,-1,0)、(1,0,-1)、(-1,1,-1)和(1,1,1),显而易见,(0,-1,0)对应的(|S1|+|S2|+|S3|)的和最小,所以应该选择(S1,S2,S3)为(0,-1,0)。
下面将对几个不同的像素值信号更详尽地解释本发明实施例提出的在数字图像中嵌入水印的方法。
如图2A所示,在i=1时,第1个像素点分组中的像素值信号是, X1=(X1,1,X1,2,X1,3)=(100,104,108), 假定第1个水印信号是, DW1=(W1,W2,W3)=(0,1,0), 首先选取整数M∈{0,1,......,7}使得, M≡(W1·20+W2·21+W3·22)-(X1,1+2X1,2+3X1,3)(mod 8),计算得出M=2,然后选取像素值改变信号(S1,S2,S3)=(0,1,0),它满足, S1+2S2+3S3≡2(mod 8), 最后计算嵌入水印后的像素值信号Y1=(Y1,1,Y1,2,Y1,3)为, Y1,1=X1,1+S1=100,Y1,2=X1,2+S2=105,Y1,3=X1,3+S3=108。
此时,水印嵌入前后的像素值信号分别为, X1=(100,104,108)和Y1=(100,105,108), 水印嵌入前像素点分组中的每个取值介于1和254之间的分量在水印嵌入后,其像素值变化至多为1。
在i=2时,第2个像素点分组中的像素值信号是, X2=(X2,1,X2,2,X2,3)=(112,126,128), 假定第2个水印信号是, DW2=(W4,W5,W6)=(1,1,0), 首先选取整数M∈{0,1,......,7}使得, M≡(W4·20+W5·21+W6·22)-(X2,1+2X2,2+3X2,3)(mod 8),计算得出M=7,然后选取3个像素值改变信号(S1,S2,S3)=(-1,0,0),满足, S1+2S2+3S3≡7(mod 8), 最后计算嵌入水印后的像素值信号Y2=(Y2,1,Y2,2,Y2,3)为, Y2,1=X2,1+S1=111,Y2,2=X2,2+S2=126,Y2,3=X2,3+S3=128。
此时,水印嵌入前后的像素值信号分别为, X2=(112,126,128)和Y2=(111,126,128), 水印嵌入前像素点分组中的每个取值介于1和254之间的分量在水印嵌入后,其像素值变化至多为1。
在i=3809时,第3809个像素点分组中的像素值信号是, X3809=(X3809,1,X3809,2,X3809,3)=(0,3,4), 假定第3809个水印信号是, DW3809=(W11425,W11426,W11427)=(1,0,0),首先选取整数M∈{0,1,......,7}使得, M≡(W11425·20+W11426·21+W11427·22)-(X3809,1+2X3809,2+3X3809,3)(mod 8),计算得出M=7,然后选取像素值改变信号(S1,S2,S3)=(-1,0,0),它满足, S1+2S2+3S3≡7(mod 8), 接着计算嵌入水印后的像素值信号Y3809=(Y3809,1,Y3809,2,Y3809,3)为, Y3809,1=X3809,1+S1=-1,Y3809,2=X3809,2+S2=3,Y3809,3=X3809,3+S3=4。但如前所述,像素值的取值不能使Y3809,1=-1,于是在计算过程中需要将像素值信号X3809的分量X3809,1的值由0变为1得到, X13809=(X13809,1,X13809,2,X13809,3)=(1,3,4), 然后重新进行水印嵌入。首先选取整数M1∈{0,1,......,7}使得,M1≡(W11425·20+W11426·21+W11427·22)-(X13809,1+2X13809,2+3X13809,3)(mod 8),计算得出M1=6,然后选取像素值改变信号(S11,S21,S31)=(0,-1,0),它满足, S11+2S21+3S31≡6(mod 8), 最后计算嵌入水印后的像素值信号Y13809=(Y13809,1,Y13809,2,Y13809,3)为,Y13809,1=X13809,1+S11=1,Y13809,2=X13809,2+S21=2,Y13809,3=X13809,3+S31=4。此时,水印嵌入前后的像素值信号分别为, X3809=(0,3,4)和Y13809=(1,2,4),水印嵌入前像素点分组中的每个取值介于1和254之间的分量在水印嵌入后,其像素值变化至多为1。
在i=69984时,第69984个像素点分组中的像素值信号是, X69984=(X69984,1,X69984,2,X69984,3)=(0,0,0), 假定第69984个水印信号是, DW69984=(W209950,W209951,W209952)=(1,1,1), 首先选取整数M∈{0,1,......,7}使得, M≡(W209950·20+W209951·21+W209952·22)-(X69984,1+2X69984,2+3X69984,3)(mod 8),计算得出M=7,然后选取像素值改变信号(S1,S2,S3)=(-1,0,0),它满足, S1+2S2+3S3≡7(mod 8),接着计算嵌入水印后的像素值信号量Y69984=(Y69984,1,Y69984,2,Y69984,3)为,Y69984,1=X69984,1+S1=-1,Y69984,2=X69984,2+S2=0,Y69984,3=X699849,3+S3=0。但如前所述,像素值的取值不能是Y69984,1=-1,于是在计算过程中需要将像素值信号X69984的分量X69984,1的值由0变为1,得到, X169984=(X169984,1,X169984,2,X169984,3)=(1,0,0), 然后重新进行水印嵌入。首先选取整数M1∈{0,1,......,7}使得M1≡(W209950·20+W209951·21+W209952·22)-(X169984,1+2X169984,2+3X169984,3)(mod8), 计算得出M1=6,然后选取像素值改变信号(S11,S21,S31)=(0,-1,0),它满足,S11+2S21+3S31≡6(mod 8), 接着计算嵌入水印后的像素值信号Y169984=(Y169984,1,Y169984,2,Y169984,3)为, Y169984,1=X169984,1+S11=1,Y169984,2=X169984,2+S21=-1, Y169984,3=X1699849,3+S31=0。
此时,Y169984,2=-1,于是需要再将像素值信号X69984的分量X169984,2的值由0变为1,得到, X269984=(X269984,1,X269984,2,X269984,3)=(1,1,0), 然后重新进行水印嵌入。首先选取整数M2∈{0,1,......,7}使得, M2≡(W209950·20+W209951·21+W209952·22)-(X269984,1+2X269984,2+3X269984,3)(mod8), 计算表明M2=4,然后选取像素值改变信号(S12,S22,S32)=(1,0,1),它满足, S12+2S22+3S32≡4(mod 8), 接着计算嵌入水印后的像素值信号Y269984=(Y269984,1Y269984,2,Y2269984,3)为, Y269984,1=X269984,1+S12=2,Y269984,2=X269984,2+S22=1 Y269984,3=X2699849,3+S32=1 这时,所有三个分量Y269984,1、Y269984,2和Y269984,3的取值都介于0和255之间,可以作为嵌入水印后的像素值信号,水印嵌入前后的像素值信号量分别为, X69984=(0,0,0)和Y269984=(2,1,1)。
水印嵌入前像素值取值为0的像素点在水印嵌入后其像素值变化至多为2。
7、对所有像素点分组嵌入水印后得到如图2B所示的嵌入水印的图像。
实施例二、数字图像中提取水印的方法 1、获取如图2B所示的嵌入水印的灰度图像,其大小为512×512。
2、按照与嵌入水印相同的方式将灰度图像的全部或者部分像素点分组,共得到87381组,每组包含三个像素点。假定第i个像素点分组中所包含的三个像素点的像素值依次为Yi,1、Yi,2和Yi,3,其中i∈{1,2,......,87381}。
3、计算像素值信号, Yi=(Yi,1,Yi,2,Yi,3) 与一数字信号, V=(V1,V2,V3)=(1,2,3)的内积并根据所计算的内积确定水印信号。具体的说即为,首先计算, H=Yi,1·V1+Yi,2·V2+Yi,3·V3=Yi,1+2Yi,2+3Yi,3; 然后计算H除以23得到的余数,即找出M∈{0,1,......,7}使得, H≡M(mod 8); 接着将M写成二进制表达式 M=(M2M1M0)2=M0·20+M1·21+M2·22, 其中M2、M1以及M0的取值都为0或1;最后将(M0,M1,M2)作为提取出的水印信号。
下面将对几个不同的像素值向量更详尽地解释本发明实施例提出的提取水印的过程。
如图2B所示,i=1时,第1个像素点分组中的像素值信号是, Y1=(Y1,1,Y1,2,Y1,3)=(100,105,108),首先计算, H=Y1,1·V1+Y1,2·V2+Y1,3·V3=Y1,1+2Y1,2+3Y1,3,计算得出H=634,然后计算H除以23得到的余数M,得到M=2,接着将M写成二进制表达式 M=(010)2=0·20+1·21+0·22, 于是与该分组相对应的水印信号是(0,1,0)。
在i=2时,第2个像素点分组中的像素值信号是, Y2=(Y2,1,Y2,2,Y2,3)=(111,126,128), 首先计算, H=Y2,1·V1+Y2,2·V2+Y2,3·V3=Y2,1+2Y2,2+3Y2,3, 计算得出H=747,然后计算H除以23得到的余数M,得到M=3,接着将M写成二进制表达式 M=(011)2=1·20+1·21+0·22, 于是与该分组相对应的水印信号是(1,1,0)。
在i=3809时,第3809个像素点分组中的像素值信号是, Y3809=(Y3809,1,Y3809,2,Y3809,3)=(1,2,4), 首先计算, H=Y3809,1·V1+Y3809,2·V2+Y3809,3·V3=Y3809,1+2Y3809,2+3Y3809,3,计算得出H=17,然后计算H除以23得到的余数M,得到M=1,接着将M写成二进制表达式 M=(001)2=1·20+0·21+0·22, 于是与该分组相对应的水印信号是(1,0,0)。
在i=69984时,第69984个像素点分组中的像素值信号是, Y69984=(Y69984,1,Y69984,2,Y69984,3)=(2,1,1),首先计算, H=Y69984,1·V1+Y69984,2·V2+Y69984,3·V3=Y69984,1+2Y69984,2+3Y69984,3, 计算表明H=7,然后计算H除以23得到的余数M,得到M=7,接着将M写成二进制表达式 M=(111)2=1·20+1·21+1·22, 于是与该分组相对应的水印信号是(1,1,1)。
4、将由每个像素点分组中提取出的水印信号合并得到最终由0、1组成的水印位流串。
最后再通过几个实施例来说明,本发明实施例所述的水印嵌入提取方法使得在图像每点像素值最多改变1以及保持一定信息隐藏容量的情况下,可以使每点像素值的平均改变量变的更小,从而可以更好的抵抗隐写分析。
实施例一 对如图2A所示的灰度图像(大小为512×512),嵌入长度为512×512-1=262143的由0、1组成的水印位流串,具体的嵌入过程和所使用的满足要求的数字信号前面已经详述,这里不再赘述。此过程使平均每个像素点的水印嵌入量是(512×512-1)/(512×512)≈1,并且每个像素点的像素值的改变量的平均值是0.3444,接近于采用V=(1,2,3)计算的理论值ρ(1,2,3)=1/3≈0.3333,嵌入水印的图像相对于原始图像的峰值信噪比(Peak Signal to Noise Ratio,PSNR)为52.7295,其视觉效果良好。另外,使用同样的方法和同样的满足要求的数字信号V=(1,2,3)对如图3(“Lena”)、图4(“Baboon”)、图5(“Boat”)、图6(“Goldhill”)所示的几幅大小为512×512的灰度图像嵌入同样长度为512×512-1=262143由0、1组成的水印位流串,图像每点像素值的平均改变量分别是0.3333、0.3329、0.3343和0.3328,都与理论值1/3相吻合。
实施例二 使用本发明所述嵌入水印的方法并选取满足要求的数字信号V=(1,2,4),对图2A和图3、图4、图5、图6所示的灰度图像分别嵌入长度为512×512-1=262143的由0、1组成的水印位流串,此过程使图像平均每个像素点的水印嵌入量是(512×512-1)/(512×512)≈1,图像每点像素值的平均改变量分别是0.3829、0.3744、0.3747、0.3758和0.3745,都与理论值0.375相吻合。注意,与满足要求的数字信号V=(1,2,4)所对应的表示模剩余类的向量S的选择如下(注意在下表中当M=4时,向量S可以有两种选择(0,0,1)或者(0,0,-1),在水印嵌入时只要随机选择一个即可) 实施例三 使用本发明所述嵌入水印的方法并选取满足要求的数字信号V=(1,2,4,8,15),对图2A和图3、图4、图5、图6所示的灰度图像分别嵌入长度为512×512-4=262140的由0、1组成的水印位流串,此过程使图像平均每个像素点的水印嵌入量是(512×512-4)/(512×512)≈1,图像每点像素值的平均改变量分别是0.3343、0.3252、0.3259、0.3251和0.3250,都与理论值0.325相吻合。注意,与满足要求的数字信号V=(1,2,4,8,15)所对应的表示模剩余类的向量S的选择如下 实施例四 使用本发明所述嵌入水印的方法并选取满足要求的数字信号V=(1,2,4,12,21,28),对图2A和图3、图4、图5、图6所示的灰度图像分别嵌入长度为512×512-4=262140的由0、1组成的水印位流串,此过程使图像平均每个像素点的水印嵌入量是(512×512-4)/(512×512)≈1,图像每点像素值的平均改变量分别是0.3124、0.3017、0.3028、0.3022和0.3021,都与理论值0.3021相吻合。注意,与满足要求的数字信号V=(1,2,4,12,21,28)所对应的表示模剩余类的向量S的选择如下 实施例五 使用本发明实施例中所述方法并选取满足要求的数字信号V=(1,2,3),对图7所示的大小为512×512的彩色图像“Lena”的亮度通道,嵌入长度为512×512-1=262143的由0、1组成的水印位流串,此过程使图像平均每个像素点的水印嵌入量是(512×512-1)/(512×512)≈1,图像每点像素值的平均改变量为0.3338,与理论值1/3相吻合。
本发明实施例还提供了一种在数字图像中嵌入水印的装置,参见图8A所示,包括 获取单元801,用于获取数字图像、待嵌入的水印位流串和一数字信号。
所述数字图像为灰度图像或者彩色图像。
第一分组单元802,用于将所述获取单元801获得的数字图像的全部或者部分像素点分组,每组包含的像素点个数大于等于三,由每组像素点的像素值组成像素值信号。
第二分组单元803,用于将所述获取单元801获取的待嵌入的水印位流串分组,每组包含一个水印信号,第二分组单元803分组组数与第一分组单元802分组组数相同。
第一分组单元802将数字图像的全部或者部分像素点分组,每个所述像素点分组所包含的像素点个数都相等;第二分组单元803将水印位流串分组,每个所述分组得到的水印信号的长度都相等。
计算单元804,用于根据每个水印信号和与之对应的像素值信号以及一数字信号计算对应的像素值改变信号。
所述一数字信号V=(V1,V2,......,VN),满足以下条件 (1)所有的分量Vj都是整数,其中j∈{1,2,......,N}; (2)V包含至少三个分量,即N大于等于三; (3)对于任何整数M∈{0,1,......,2K-1},都存在整数向量S=(S1,S2,......,SN),其中,S的每个分量Sj取值为0、1或者-1,并使得 S·V=S1·V1+S2·V2+......+SN·VN≡M(mod 2K), 就是说,使用S与V的内积可以表示模2K的全部剩余类。其中,K是每个水印信号的长度。
第一分组单元802分组中所包含的像素点个数与一数字信号的维数相等。
所述计算单元804,包括第一计算单元、第二计算单元和转化单元。其中,第一计算单元,用于计算对应的像素值信号与一数字信号的内积;第二计算单元,用于计算所述第二分组单元得到的每个水印信号,与所述第一计算单元计算内积差值模2K的剩余类,其中,K为水印信号的长度,为大于零的整数;转化单元,用于将所述第二计算单元计算的剩余类表示为像素值改变信号与一数字信号的内积的形式。
嵌入单元805,用于根据所述计算单元计算得到的像素值改变信号改变数字图像像素点的像素值。
嵌入水印后的像素值信号与一数字信号的内积,使所述内积在模剩余类的意义下与所述水印信号相对应。
本发明实施例提供了一种在数字图像中提取水印的装置,参见图8B所示,包括 获取单元811,用于获取嵌入水印的数字图像; 分组单元812,用于根据保存的分组信息,将所述获取单元811获取的嵌入水印的数字图像的全部或者部分像素点分组,由每组像素点的像素值组成像素值信号; 提取单元813,于根据所述分组单元812每个分组的像素值信号与保存的一数字信号,提取水印信号。
所述提取单元813包括,第一计算单元、第二计算单元、转换单元和确认单元。其中,第一计算单元,用于计算所述分组单元每个分组的像素值信号与一数字信号的内积;第二计算单元,用于计算所述第一计算单元计算的内积模2K的剩余类,其中,K为水印信号的长度,为大于零的整数;转换单元,用于将所述第二计算单元计算的剩余类转换为二进制形式;确认单元,用于将所述转换单元转换的用于二进制表示的0、1位流串确定为所求水印信号。
综上,采用本发明实施例的有益效果在于,通过将待嵌入数字图像和水印信号分组,和一个满足要求的至少包含三个分量的数字信号,计算出取值为-1、0或1的像素值改变信号,改变待嵌入数字图像的像素值,使得在图像每点像素值最多改变1以及保持一定信息隐藏容量的情况下,使每点像素值的平均改变量变得比0.5更小,从而可以更好的抵抗隐写分析。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围,且所作的修改和变型属于本发明权利要求及其等同技术的范围之内,则所作的修改和变型也属于本发明的保护范围。
权利要求
1、一种在数字图像中嵌入水印的方法,其特征在于,包括
将待嵌入数字图像的全部或者部分像素点分组,每组包含的像素点的个数大于等于三,由每组像素点的像素值组成像素值信号;
将待嵌入的水印位流串分组,每组包含一个水印信号,所述水印位流串分组组数与数字图像像素点分组组数相同;
根据每个像素值信号和与之对应的水印信号以及一数字信号计算对应所述像素值信号的像素值改变信号;
根据所述像素值改变信号改变对应的数字图像像素点分组的像素值,实现水印嵌入。
2、如权利要求1所述的方法,其特征在于,所述数字图像为灰度图像或彩色图像。
3、如权利要求1所述的方法,其特征在于,每个所述像素点分组所包含的像素点个数都相等。
4、如权利要求1所述的方法,其特征在于,每个所述水印信号的长度都相等。
5、如权利要求1所述的方法,其特征在于,所述像素值改变信号的每个分量的取值都是0、1或-1。
6、如权利要求1所述的方法,其特征在于,所述根据每个像素值信号和与之对应的水印信号以及一数字信号计算对应所述像素值信号的像素值改变信号,包括
计算每个水印信号与一内积差值模2K的剩余类,所述内积为对应的像素值信号与一数字信号的内积,其中,K为水印信号的长度;
将所述剩余类表示为对应的像素值改变信号与一数字信号的内积的形式。
7、如权利要求1所述的方法,其特征在于,嵌入水印后的每组像素点的像素值与数字信号的内积在模剩余类的意义下与所述水印信号相对应,即
Y1·V1+Y2·V2+......+YN·VN≡W1·20+W2·21+......+WK·2K-1(mod 2K)
其中,Yi为像素点分组嵌入水印后的第i个像素点的像素值,i∈{1,......,N};Vi为一数字信号的第i个分量,i∈{1,......,N};N大于等于3为每个像素点分组中包含的像素点个数;Wi为水印信号的第i个分量,i∈{1,......,K};K为水印信号的长度。
8、如权利要求6或7所述的方法,其特征在于,所述一数字信号,满足
至少包含三个分量并且所有的分量都是整数;
所包含的分量个数与每个像素点分组所包含的像素点个数相等;
对于任何整数M∈{0,1,......,2K-1},都存在一个向量,使得该向量的每个分量的取值都是0、1或者-1,并且该向量与所述数字信号的内积模2K的剩余类是M;其中K为水印信号的长度。
9、一种在数字图像中提取水印的方法,其特征在于,包括
根据保存的分组信息,将嵌入水印后的数字图像的全部或部分像素点分组,由每组像素点的像素值组成像素值信号;
根据保存的一数字信号与每个像素值信号,提取水印信号。
10、如权利要求9所述的方法,其特征在于,所述根据保存的一数字信号与每个像素值信号,提取水印信号,包括
计算每个像素值信号与一数字信号的内积,计算所述内积模2K的剩余类;
将所述剩余类转换成二进制,并将用于二进制表示的0、1位流串确定为所求水印信号;
其中,K为水印信号的长度。
11、一种在数字图像中嵌入水印的装置,其特征在于,包括
获取单元,用于获取数字图像、待嵌入的水印位流串和一数字信号;
第一分组单元,用于将所述数字图像的全部或者部分像素点分组,每组包含的像素点个数大于等于三,由每组像素点的像素值组成像素值信号;
第二分组单元,用于将待嵌入的水印位流串分组,每组包含一个水印信号,第二分组单元分组组数与第一分组单元分组组数相同;
计算单元,用于根据每个像素值信号和与之对应的水印信号以及一数字信号计算对应所述像素值信号的像素值改变信号;
嵌入单元,用于根据所述像素值改变信号改变数字图像像素点的像素值。
12、如权利要求11所述的装置,其特征在于,所述第一分组单元将数字图像的全部或者部分像素点分组,每组包含的像素点个数都相等。
13、如权利要求11所述的装置,其特征在于,所述第二分组单元将水印位流串分组,每个水印信号的长度都相等。
14、如权利要求11所述的装置,其特征在于,所述计算单元包括
第一计算单元,用于计算对应的像素值信号与一数字信号的内积;
第二计算单元,用于计算所述每个水印信号与所述第一计算单元计算内积差值模2K的剩余类,
其中,K为水印信号的长度。
15、如权利要求11所述的装置,其特征在于,所述计算单元还包括
转化单元,用于将所述剩余类表示为像素值改变信号与一数字信号的内积的形式。
16、如权利要求11所述的装置,其特征在于,所述获取单元获得的一数字信号,满足
至少包含三个分量并且所有的分量都是整数;
所包含的分量个数与每个像素点分组所包含的像素点个数相等;
对于任何整数M∈{0,1,......,2K-1},都存在一个向量,使得该向量的每个分量的取值都是0、1或者-1,并且该向量与所述数字信号的内积模2K的剩余类是M;其中K为水印信号的长度。
17、一种在数字图像中提取水印的装置,其特征在于,包括
获取单元,用于获取嵌入水印的数字图像;
分组单元,用于根据保存的分组信息,将所述嵌入水印的数字图像的全部或者部分像素点分组,由每组像素点的像素值组成像素值信号;
提取单元,用于根据所述分组单元每个分组的像素值信号与保存的一数字信号,提取水印信号。
18、如权利要求17所述的装置,其特征在于,所述提取单元包括
第一计算单元,用于计算所述每个分组的像素值信号与一数字信号的内积;
第二计算单元,用于计算所述内积模2K的剩余类,
其中,K为水印信号的长度。
19、如权利要求18所述的装置,其特征在于,所述提取单元还包括
转换单元,用于将所述剩余类转换为二进制形式;
确认单元,用于将所述用于二进制表示的0、1位流串确定为所求水印信号。
全文摘要
本发明公开了一种在数字图像中嵌入水印的方法和装置,该方法包括将待嵌入数字图像的全部或者部分像素点分组,每组包含的像素点的个数大于等于三;将待嵌入的水印位流串分组,每组包含一个水印信号,水印位流串分组组数与数字图像像素点分组组数相同;根据每个像素值信号和与之对应的水印信号以及一数字信号计算对应所述像素值信号的像素值改变信号;根据所述像素值改变信号改变对应的数字图像像素点分组的像素值,实现水印嵌入。本发明还公开了一种提取水印的方法和装置。通过本发明实施例,在图像每点像素值最多改变1以及保持一定信息隐藏容量的情况下,使每点像素值的平均改变量变得更小,从而可以更好的抵抗隐写分析。
文档编号G06T1/00GK101246585SQ20071030444
公开日2008年8月20日 申请日期2007年12月27日 优先权日2007年12月27日
发明者李晓龙, 斌 杨, 程道放, 亓文法 申请人:北京大学, 北京北大方正电子有限公司, 北大方正集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1