具体实施方式
针对现有技术中可逆水印嵌入时,没有充分考虑图像保真的要求,存在的图像失真问题。本发明实施例基于对图像保真度的两个基本要求指标:“almost-lossless”和“near-lossless”,提供了一种数字水印嵌入和提取方法及装置,用以解决现有技术中存在的问题,使得嵌入数字水印后的图像能够满足高保真应用环境中对图像保真度的要求。其中,“almost-lossless”是指对图像进行处理时,至少要有p%的像素点保持不变,其中,p根据保真度设定的能够满足保真度要求一个比例值。“near-lossless”,是指对图像进行处理时,对其中每个像素点像素值的最大修改只能为1。
本发明实施例提供的数字水印嵌入方法,其流程如图1所示,执行步骤如下:
步骤S10:获取待嵌入水印的原始图像所对应的一维像素值向量。
对待嵌入水印的原始图像进行往复式扫描,得到由其包含的所有像素点的像素值组成的一维像素值向量。
例如:如图2所示的一个8位灰度图像,按照图中带箭头的折线所指的路径,对图像中的各像素点进行逐一扫描,依次记录扫描到的各像素点的像素值,得到该图像对应的一维像素值向量I。
步骤S11:将得到的一维像素值向量划分为三部分,得到三个分向量。
依次获取得到的一维像素值向量的前m个像素值组成第一分向量,然后,获取接下来的m个像素值组成第二分向量,剩余的像素值组成第三分向量。其中,m的大小需要考虑选定的水印模板、以及下面确定出的第一阈值和第二阈值的二进制码的位数。
根据像素值的取值范围可以知道第一阈值和第二阈值不会大于255,当水印模板为W=(-1,1,-1),取4倍的第一阈值和第二阈值的二进制码,其均不会大于16位,所以一般可以选取m为16或大于等于16的值。当选用其他水印模板时,需要取得的倍数t可能会不同,从而需要选择的m值也不同。
沿用上边的例子,将图2所示的图像对应的一维像素值向量划分为三个分向量I1、I2、I3。分割方法如下:提取该一维像素值向量的前16个像素值,得到I1;提取接下来的16个像素值,得到I2,剩余的像素值组成I3。
步骤S12:根据设定的水印模板,将划分出的第三分向量中的像素值划分为若干像素值组。具体包括:
根据设定的水印模板确定每个像素值组中包含的像素值的数量,然后根据确定出的上述数量,将第三分向量中的像素值按顺序分为若干像素值组。
例如:设定的水印模块为W=(-1,1,-1),则每个像素值组中包含的像素值的数量3;若设定的水印模板W=(-1,-1,1,-1,-1),则每个像素值组中包含的像素值的数量5。
下面以将三个像素值分为一组为例,将第三分向量中的像素值按顺序每三个分成一组,得到若干像素值组。
假设第三分向量中包含n个像素值,则第三分向量分组后可以表示为:
其中,Ci=(xi,yi,zi);xi=a3i-2,yi=a3i-1,zi=a3i;
k=n/3的整数部分,i为大于等于1的正整数;
a3i-2,a3i-1,a3i为第三分向量中的第3i-2,3i-1,3i三个像素值。
步骤S13:计算各像素值组的预测值。
根据选定的水印模板和各像素值组中包含的像素值的数量,确定一个使得嵌入水印前后预测值能够保持不变的预测值计算公式,使用确定出的公式计算各像素值组的预测值。
例如:当设定的水印模板为W=(-1,1,-1),可以使用公式 来计算各像素值组的预测值;容易发现:当嵌入水印时,使用该水印模板对像素值组中的像素值进行调整后,该像素值组的预测值可以保持不变。
当然,当设定的水印模板为W=(-1,-1,1,-1,-1),也可以使用类似的公式实现预测值的计算。
沿用上边的例子,对于上述划分出的每个像素值组,由于其中包含的是三个像素值,所以可以通过公式 计算每个像素值组的预测值(也可以说是中间像素值y的预测值)。
步骤S14:根据包含像素值0的各像素值组的预测值确定第一阈值和根据包含像素值255的各像素值组的预测值确定第二阈值。
首先,确定出上述得到的像素值组中包含像素值0的第一像素值组集合和包含像素值255的第二像素值组集合。
由于本申请中是对像素值进行加上或减去一个水印模板W的处理来实现嵌入水印的,且本申请中对像素值的调整不会大于1;例如:W=(1,-1,1)。对于包含像素值0和像素值255的像素点在嵌入水印、对像素值进行调整时,可能会出现小于0和大于255的值,即其像素值可能出现-1或者256的情况。而这对于8位灰度图像来说是非法的。因此嵌入水印前需要将包含像素值0和像素值255的像素点组先剔除掉。具体为:
将得到的像素值组中包含像素值0的像素值组提取出来,得到第一像素值组集合No。即No中包含的每个像素值组中至少有一个像素值为0。
将得到的像素值组中包含像素值255的像素值组提取出来,得到第二像素值组集合Nu。即Nu中包含的每个像素值组中至少有一个像素值为255。
然后,确定出第一像素值组集合中各像素值组的预测值的最大值,作为第一阈值;确定出第一像素值组集合中各像素值组的预测值的最小值,作为第二阈值。
例如,确定出集合N
o的最大值为
和N
u的最小值
,则第一阈值为
第二阈值为
步骤S15:将确定出的第一阈值和第二阈值分别嵌入到划分出的第一分向量和第二分向量中。
一般可以采用采用替换的方式嵌入。由于第一阈值和第二阈值有可能不是整数,因此,可以采用嵌入tTmin和tTmax(即t倍的Tmin和Tmax)的方式,实现将第一阈值和第二阈值的分别嵌入到划分出的第一分向量和第二分向量中。其中,t根据选用的水印模板确定,当选用不同水印模板时,每个像素值组中的像素值个数会不同,导致计算预测值的计算公式不同,因此为了保证嵌入的的值为整数,需要扩大的倍数t也不同。
较佳的,可以采用替换最低有效位(Least Significant Bit,LSB)的方式实现。具体为:
将确定出的第一阈值的t倍所对应的二进制码依次替换到第一分向量的各像素值的最低有效位LSB中;以及将确定出的第二阈值的t倍所对应的二进制码依次替换到第二分向量的各像素值的最低有效位LSB中。
步骤S16:根据待嵌入的水印信息以及从第一分向量和第二分向量中替换出的二进制码,确定待嵌入二进制码。
从第一分向量和第二分向量替换出的二进制码,将作为后续要嵌入第三分向量中的待嵌入二进制码的一部分,嵌入到第三分向量中,以便在水印提取时能够恢复第一分向量和第二分向量中的像素值。
因此,待嵌入的二进制码中依次包括:从第一分向量中替换出的二进制码、第二分向量中替换出的二进制码和根据待嵌入的水印信息转化得到的二进制码。
例如,当采用替换最低有效位的方式时,上述从第一分向量中替换出的二进制码即为第一分向量中各像素值的最低位,从第二分向量中替换出的二进制码即为第二分向量中各像素值的最低位。
步骤S17:根据确定出的第一阈值、第二阈值和各像素值组的预测值,确定候选像素值组。具体为:
选取预测值大于第一阈值且小于第二阈值的像素值组,组成候选像素值组。即所选取的像素值组的预测值满足
由于确定出的第一阈值为包含像素值0的像素值组的预测值的最大值,第二阈值为包含像素值255的像素值组的预测值的最小值,因此,选取预测值大于第一阈值且小于第二阈值的像素值组,这些像素值组中必然不包含像素值0和255。
由于本申请中,对像素值的调整值不会大于1;因此,对这样的像素值组的像素值进行调整处理(加上或减去W)后,不会出现像素值小于0和大于255的情况。
步骤S18:计算确定出的各候选像素值组的预测误差。
根据设定的水印模板确定计算预测误差时所需要的像素值组中的参照像素点。例如:当水印模板为W=(-1,1,-1)或W=(-1,-1,1,-1,-1)时,选择水印模板中像素值调整量为1的中间像素点作为参照像素点。
将参照像素点的像素值减去该像素值组的预测值得到的差值作为预测误差。各像素值组的预测误差di的计算公式如下:
其中,yi为选定的参照像素点的像素值;
步骤S19:并根据确定出的待嵌入二进制码、预测误差和设定的预测误差阈值,对候选像素值组进行像素值调整,实现水印的嵌入。
根据计算出的预测误差,选择预测误差绝对值大于等于N-1且小于N的像素值组,依次嵌入需嵌入的水印信息的二进制码。嵌入水印信息时,对各像素值组像素值的改变是通过加减水印模板W=(-1,1,-1)来实现的。
注:由于预测值是通过公式
计算得到的,所以再加减水印模板后每个像素值组C
i的预测值
是保持不变的。
也就是说:首先需要依次将每个候选像素值组的预测误差绝对值与预测误差阈值N进行比较。
若候选像素值组的预测误差绝对值小于N-1,则确定该像素值组中不嵌入待嵌入的二进制码,且不对该像素值组中的像素值进行调整。
若候选像素值组的预测误差绝对值大于等于N-1且小于N,则确定该像素值组中嵌入待嵌入的二进制码;且根据需嵌入的二进制码的值和预测误差,确定不对该像素值组中的像素值进行调整,或对该像素值组进行加上或减去水印模板的调整。
若候选像素值组的预测误差绝对值大于等于N,则确定该像素值组中不嵌入待嵌入的二进制码,且根据预测误差,对该像素值组进行加上或减去所述水印模板的调整。
即嵌入水印时,对各像素值组中像素值的修改满足下列关系式:
其中,Ci w表示对像素值组Ci进行像素值调整后的像素值组;
sign(di)表示di值的正负符号;
b为需嵌入的水印信息中的一个二进制码。
上式表明,携带水印信息的像素值组为满足限制条件N-1≤|di|<N的像素值组,而为了避免嵌入水印信息之后,含有水印信息像素值组的预测误差di和未嵌入水印信息的像素值组的预测误差di冲突,必需把所有|di|≥N的像素值组的像素值进行调整,以改变其预测误差。
采用本发明实施例提供的上述水印嵌入方法嵌入水印信息后,即对像素值进行调整后第三分向量I3中各像素值组的预测误差di w的分布,可以包括下列四种情况:
(1)若果某个像素值组的预测误差 则说明该像素值组中的像素值没有被修改,且该像素值组也未携带水印信息。
(2)若果某个像素值组的预测误差 则说明该像素值组中的像素值没有被修改,且该像素值组携带的水印信息为二进制码b=0。
(3)若果某个像素值组的预测误差 则说明该像素值组加上或减去了一个水印模板W,即像素值被修改了,且该像素值组携带的水印信息为二进制码b=1。
(4)若果某个像素值组的预测误差 则说明该像素值组加上或减去了一个水印模板W,即像素值被修改了,且该像素值组也未携带水印信息。
本发明实施例还提供的一种数字水印提取方法,用于提取通过上述提供的数字水印嵌入方法嵌入图像中的水印,恢复原始图像。其流程如图3所示,执行步骤如下:
步骤S20:获取已嵌入水印的图像所对应的一维像素值向量。
对已嵌入水印的图像进行往复式扫描,得到由其包含的所有像素点的像素值组成的一维像素值向量。
具体实现过程同步骤S10,此处不再赘述。
步骤S21:采用与嵌入水印时相同的划分方式,将得到的一维像素值向量划分为三部分,得到三个分向量。其中,第一分向量和第二分向量中包含设定数量的像素值,第三分向量中包含划分出第一分向量和第二分向量后剩余的像素值。
例如:依次获取一维像素值向量的前m个值和接下来的m个值,分别组成第一分向量和第二分向量,剩余的像素值组成第三分向量;即将获取的一维像素值向量划分为三个分向量I1 w、I2 w、I3 w。其中,m与嵌入水印时的取值相同。
具体实现过程同步骤S11,此处不再赘述。
步骤S22:根据嵌入水印时使用的水印模板,将划分出的第三分向量中的像素值划分为若干像素值组。
根据嵌入水印时使用的水印模板确定每个像素值组中包含的像素值的数量,然后根据确定出的上述数量,将第三分向量中的像素值按顺序分为若干像素值组。
例如:设定的水印模块为W=(-1,1,-1),则每个像素值组中包含的像素值的数量3;若设定的水印模板W=(-1,-1,1,-1,-1),则每个像素值组中包含的像素值的数量5。
下面以将三个像素值分为一组为例,将第三分向量中的像素值按顺序每三个分成一组,得到若干像素值组。
假设第三分向量中包含n个像素值,则第三分向量分组后可以表示为:
其中,
k=n/3的整数部分,i为大于等于1的正整数;
a3i-2 w,a3i-1 w,a3i w为第三分向量中的第3i-2,3i-1,3i三个像素值。
步骤S23:计算上述确定出的像素值组的预测值。
根据嵌入水印时使用的预测值计算公式。
沿用上边的例子,当嵌入水印时使用的水印模板为W=(-1,1,-1),所使用的计算公式为
则将嵌入水印后的第三分向量中各像素值组的像素值带入上述公式中,即可以通过公式 计算每个像素值组的预测值。且嵌入水印后计算出的预测值与嵌入水印前计算出的预测值相同。
步骤S24:根据嵌入水印时所采用的替换方式,从划分出的第一分向量和第二分向量中提取出第一阈值和第二阈值
其中,由于为了保证嵌入时的值为整数,在将第一阈值和第二阈值嵌入时,嵌入的是第一阈值和第二阈值的t倍,因此,提取出嵌入的二进制码后需要作除以t的处理后,确定出第一阈值和第二阈值。
当嵌入水印时,采用替换最低有效位的方式将第一阈值和第二阈值嵌入到第一分向量和第二分向量中时,则从嵌入水印后的第一分向量中依次提取出其各像素值的最低有效位LSB,并确定由提取出的最低有效位组成的二进制码的1/t为第一阈值;以及从嵌入水印后的第二分向量中依次提取出其各像素值的最低有效位LSB,并确定由提取出的最低有效位组成的二进制码的1/t为第二阈值。其中,t根据所述水印模板确定,与嵌入水印时的取值相同。
即得到嵌入水印时,嵌入第一分向量和第二分向量中的第三分向量中包含像素值0的像素值组的预测值的最大值Tmin和包含像素值255的像素值组的预测值的最小值Tmax。
步骤S25:根据提取出的第一阈值、第二阈值和各像素值组的预测值,确定候选像素值组。
选取预测值大第一阈值且小于第二阈值的像素值组,组成候选像素值组。即所选取的像素值组的预测值满足
步骤S26:计算确定出的各像素值组的预测误差。
根据嵌入水印时所使用的水印模板,确定计算预测误差时所需要的像素值组中的参照像素点。例如:当嵌入水印时所使用的水印模板为W=(-1,1,-1)或W=(-1,-1,1,-1,-1)时,选择水印模板中像素值调整量为1的中间像素点作为参照像素点。此处选择参照像素点的原则和嵌入水印时相同,即所选择的参照像素点应与嵌入水印时相同。
将该参照像素点的像素值减去该像素值组的预测值得到的差值作为预测误差,各像素值组的预测误差dw的计算公式如下:
其中,yi w为选定的参照像素点嵌入水印后的像素值;
步骤S27:根据计算出的各像素值组的预测误差和嵌入水印时设定的预测误差阈值,从候选像素值组中提取出嵌入的二进制码并恢复各像素值组中的像素值。
首先,依次将每个候选像素值组的预测误差绝对值与嵌入水印时设定的预测误差阈值N进行比较。
根据上述嵌入水印后预测误差的的分布情况,采用下列公式下从各候选像素值组中提取嵌入的二进制码:
即:若候选像素值组的预测误差绝对值大于等于N-1且小于N,则确定该像素值组中嵌入的二进制码的值为0并提取;若候选像素值组的预测误差绝对值大于等于N且小于N+1,则确定该像素值组中嵌入了二进制码的值为1并提取。
相应的,在提取嵌入的二进制码的同时,需要对嵌入水印时调整过的像素值组的像素值进行恢复。根据上述嵌入水印后预测误差的的分布情况,具体可以通过下列公式来恢复:
sign(di w)表示di w值的正负符号;
即:若候选像素值组的预测误差绝对值小于N,则不对该像素值组中的像素值进行调整;若候选像素值组的预测误差绝对值大于等于N,则根据预测误差,对该像素值组中进行减去或加上所述水印模板的调整,得到嵌入水印前的的原始像素值。
步骤S28:根据提取出的嵌入的二进制码得到嵌入的水印信息和从第一分向量、第二分向量中替换出的二进制码。
根据第一分向量和第二分向量中包含的像素值的个数,依次获取对应数量的提取出的嵌入的二进制码,得到第一分向量和第二分向量中替换出的二进制码。以及由提取出的剩余的二进制码得到嵌入的水印信息。
一般,提取出的嵌入的二进制码中前m个二进制码为从第一分向量中替换出来的二进制码,接下来的m个二进制码为从第一分向量中替换出来的二进制码。剩余的二进制码即为嵌入的水印信息对应的二进制码,由该部分二进制码可以恢复出嵌入的水印信息。
步骤S29:将替换出的二进制码还原至第一分向量和第二分向量中的对应位置处,得到原始图像。具体包括:
将得到从第一分向量中替换出的二进制码,依次还原至第一分向量的对应位置处;以及将得到从第二分向量中替换出的二进制码,依次还原至第二分向量的对应位置处。
即将提取出的嵌入的二进制码中的前m个二进制码还原到第一分向量中的对应位置处;将提取出的嵌入的二进制码中的接下来的m个二进制码还原到第二分向量中的对应位置处。
较佳的,当采用替换LSB的方式,则将得到从第一分向量中替换出的二进制码(前m个二进制码),依次还原至第一分向量的各像素值的最低有效位LSB中;以及将得到从第二分向量中替换出的二进制码(接下来的m个二进制码),依次还原至第二分向量的各像素值的最低有效位LSB中。
经上述水印提取和像素值恢复还原的过程后,即可以得到嵌入水印前的原始图像了。
根据本发明实施例提供的上述数字水印嵌入方法,可以构建一种数字水印嵌入装置,其结构如图4所示,包括:向量划分模块101、预测计算模块102、替换模块103、误差计算模块104和嵌入模块105。
向量划分模块101,用于将待嵌入水印的原始图像的一维像素值向量划分为三个分向量。
较佳的,上述向量划分模块101,进一步可以包括:向量组成单元1011和划分单元1012。
向量组成单元1011,用于对待嵌入水印的原始图像进行往复式扫描,得到由其包含的所有像素点的像素值组成的一维像素值向量。
划分单元1012,用于依次获取向量组成单元1011得到的一维像素值向量的前m个像素值和接下来的m个像素值,组成第一分向量和第二分向量,剩余的像素值组成第三分向量;其中,m根据设定的水印模板、第一阈值和第二阈值的二进制码的位数确定。
预测计算模块102,用于根据设定的水印模板将向量划分模块101划分出的第三分向量中的像素值划分为若干像素值组,并计算所述像素值组的预测值;以及根据包含像素值0的像素值组的预测值确定第一阈值和根据包含像素值255的像素值组的预测值确定第二阈值。
较佳的,上述预测计算模块102,进一步可以包括:数量确定单元1021、分组单元1022、预测计算单元1023和阈值确定单元1024。
数量确定单元1021,用于根据设定的水印模板确定每个像素值组中包含的像素值的数量。
分组单元1022,用于根据数量确定单元1021确定出的数量,将第三分向量中的像素值按顺序分为若干像素值组。
预测计算单元1023,用于根据设定的水印模板和各像素值组中包含的像素值的数量,确定一个使得嵌入水印前后预测值能够保持不变的预测值计算公式,使用确定出的公式计算各像素值组的预测值。
阈值确定单元1024,用于确定包含像素值0的像素值组的预测值的最大值作为第一阈值,以及确定包含像素值255的像素值组的预测值的最小值作为第二阈值。
替换模块103,用于将第一阈值和第二阈值采用替换的方式分别嵌入划分出的第一分向量和第二分向量中;并根据待嵌入的水印信息以及从第一分向量和第二分向量中替换出的二进制码,确定待嵌入二进制码。
较佳的,上述替换模块103进一步可以包括:阈值嵌入单元1031和信息确定单元1032。
阈值嵌入单元1031。用于将确定出的第一阈值的t倍所对应的二进制码依次替换到划分出的第一分向量的各像素值的最低有效位LSB中;以及将确定出的第二阈值的t倍所对应的二进制码依次替换到划分出的第二分向量的各像素值的最低有效位LSB中。其中,t根据设定的水印模板确定。
信息确定单元1032,用于从第一分向量中替换出的二进制码、第二分向量中替换出的二进制码以及由待嵌入的水印信息转化得到的二进制码,确定出待嵌入二进制码。
误差计算模块104,用于根据替换模块103确定出的第一阈值、第二阈值和各所述像素值组的预测值,确定候选像素值组,并计算各候选像素值组的预测误差。
较佳的,上述误差计算模块104,进一步可以包括:选取确定单元1041和误差计算单元1042。
选取确定单元1041,用于选取预测值大于替换模块103确定出的第一阈值且小于替换模块103确定出的第二阈值的像素值组,组成候选像素值组。
误差计算单元1042,用于根据设定的水印模板确定计算预测误差时所需要的像素值组中的参照像素点,将参照像素点的像素值减去该像素值组的预测值得到的差值作为该像素值组的预测误差。
嵌入模块105,用于根据待嵌入二进制码、误差计算模块104计算出的各候选像素值组的预测误差和设定的预测误差阈值,对各候选像素值组进行像素值调整。
较佳的,上述嵌入模块105,进一步可以包括:比较单元1051和调整执行单元1052。
比较单元1051,用于依次将每个候选像素值组的预测误差绝对值与所述预测误差阈值N进行比较。
调整执行单元1052,用于若候选像素值组的预测误差绝对值小于N-1,则确定该像素值组中不嵌入所述待嵌入的二进制码,且不对该像素值组中的像素值进行调整;若候选像素值组的预测误差绝对值大于等于N-1且小于N,则确定该像素值组中需嵌入待嵌入的二进制码,且根据需嵌入的二进制码的值和预测误差,确定不对该像素值组中的像素值进行调整,或对该像素值组进行加上或减去设定的水印模板的调整;若候选像素值组的预测误差绝对值大于等于N,则确定该像素值组中不嵌入待嵌入的二进制码,且根据预测误差,对该像素值组进行加上或减去设定的水印模板的调整。
根据本发明实施例提供的上述数字水印提取方法,可以构建一种数字水印提取装置,其结构如图5所示,包括:向量划分模块201、预测计算模块202、阈值提取模块203、误差计算模块204、水印提取模块205和信息还原模块206。
向量划分模块201,用于采用与嵌入水印时相同的划分方式,将已嵌入水印图像的一维像素值向量划分为三个分向量。
较佳的,上述向量划分模块201,进一步可以包括:向量生成单元2011和向量划分单元2012。
向量生成单元2011,用于对已嵌入水印图像进行往复式扫描,得到由其包含的所有像素点的像素值组成的一维像素值向量;
向量划分单元2012,用于依次获取该一维像素值向量的前m个像素值和接下来的m个像素值,组成第一分向量和第二分向量,剩余的像素值组成第三分向量;其中,m与嵌入水印时的取值相同。
预测计算模块202,根据嵌入水印时使用的水印模板将划分出的第三分向量中的像素值划分为若干像素值组,并计算各像素值组的预测值。
较佳的,上述预测计算模块202,进一步可以包括:数量确定单元2021、分组单元2022和预测计算单元2023。
数量确定单元2021,用于根据嵌入水印时使用的水印模板确定每个像素值组中包含的像素值的数量。
分组单元2022,用于根据数量确定单元2021确定出的数量,将第三分向量中的像素值按顺序分为若干像素值组。
预测计算单元2023,用于采用和嵌入水印时相同的计算公式,计算分组单元2022划分出的像素值组的预测值;其中计算公式根据嵌入水印时设定的水印模板确定,且使得嵌入水印前后预测值能够保持不变。
阈值提取模块203,用于根据嵌入水印时所采用的替换方式,从划分出的第一分向量和第二分向量中提取出嵌入的第一阈值和第二阈值。
阈值提取模块203,具体用于从第一分向量中依次提取出其各像素值的最低有效位LSB,确定由提取出的最低有效位组成的二进制码的1/t为第一阈值;以及从第二分向量中依次提取出其各像素值的最低有效位LSB,确定由提取出的最低有效位组成的二进制码的1/t为第二阈值;其中t根据嵌入水印时设定的水印模板确定,与嵌入水印时的t值相同。
误差计算模块204,用于根据所述第一阈值、第二阈值和各所述像素值组的预测值,确定候选像素值组,并计算各所述候选像素值组的预测误差。
较佳的,上述误差计算模块204,进一步可以包括:选取单元2041和误差计算单元2042。
选取单元2041,用于选取预测值大于第一阈值且小于第二阈值的像素值组,组成候选像素值组;
误差计算单元2042,用于根据嵌入水印时所使用的水印模板,确定计算预测误差时所需要的像素值组中的参照像素点,将参照像素点的像素值减去该像素值组的预测值得到的差值作为该像素值组的预测误差。
水印提取模块205,用于根据所述预测误差和嵌入水印时设定的预测误差阈值,从所述候选像素值组中提取出嵌入的二进制码并恢复各像素值组中的像素值。
较佳的,上述水印提取模块205,进一步可以包括:误差比较单元2051、水印提取单元2052和像素恢复单元2053。
误差比较单元2051,用于依次将每个候选像素值组的预测误差绝对值与预测误差阈值N进行比较。
水印提取单元2052,用于若候选像素值组的预测误差绝对值大于等于N-1且小于N,则确定该像素值组中嵌入的二进制码的值为0并提取;若候选像素值组的预测误差绝对值大于等于N且小于N+1,则确定该像素值组中嵌入了二进制码的值为1并提取。
像素恢复单元2053,用于若候选像素值组的预测误差绝对值小于N,则不对该像素值组中的像素值进行调整;若候选像素值组的预测误差绝对值大于等于N,则根据该预测误差,对该像素值组中进行减去或加上水印模板的调整,得到嵌入水印前的的原始像素值。
信息还原模块206,根据所述嵌入的二进制码得到嵌入的水印信息和从所述第一分向量和第二分向量中替换出的二进制码;将所述替换出的二进制码还原至第一分向量和第二分向量中的对应位置处,得到原始图像。
较佳的,上述信息还原模块206,进一步可以包括:提取分离单元2061和信息还原单元2062。
提取分离单元2061,用于根据第一分向量和第二分向量中包含的像素值的个数,依次获取对应数量的提取出的二进制码,得到第一分向量和第二分向量中替换出的二进制码;以及由提取出的剩余的二进制码得到嵌入的水印信息。
信息还原单元2062,用于将第一分向量和第二分向量中替换出的二进制码分别还原至第一分向量和第二分向量中的对应位置处。
本发明实施例提供的上述数字水印嵌入和提取方法及装置,通过水印模板的设置,使得对图像像素值的最大改变为1,满足了高保真应用环境中对保真度的“near-lossless”指标要求;通过设定的误差阈值对嵌入水印的像素值组的筛选,对图像中像素值调整时,能够保证由设定比例的像素值不被改变,满足了高保真应用环境中对保真度的“almost-lossless”指标要求,从而使得嵌入水印后的图像不会出现较大程度的失真,能够满足高保真应用环境(例如医疗图像、军事图像等)的要求。
通过上述方法嵌入的水印能够正确提取和恢复原图像,也就是说该图像具有可逆性,且克服了以往图像嵌入可逆水印时失真较大的问题,使得图像使用者可以使用带有水印的图像,而不会给使用者带来误导和不便;同时也能有效的防止非法复制、盗版、随意篡改等非法侵权行为;在数字权限管理应用中具有普遍适用性和很好的应用灵活性。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化、替换或应用到其他类似的装置,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。