本发明涉及一般的图像数据处理,特别涉及基于数字水印的图像加密方法。
背景技术:
随着Internet技术的高速发展,数字信息的传播达到了前所未有的速度,各种传统的信息都被数字化。数字信息有着交流方便的天然优势,但这一优势在大大方便传播的同时使得伪造篡改图像的方式日益多样,给图像的产权保护和内容认证提出了更高的考验。数字作品的所有权问题,防篡改问题等等都是网络时代值得关注的热点问题。在充分享受传播便捷的同时,如何利用技术手段对数字作品的版权进行更好的保护,已经成为一个广泛研究的课题。数字水印即是该课题研究的核心技术。
数字水印技术可以应用在图像,声音,视频等各种数字作品当中,保护作品的版权。传统的加密技术可以起到保护作用,但一旦遭到解密,原创者将很难再追踪自己的作品并对其拥有合法的版权。目前,数字水印技术已成为实现数字产品版权保护和信息完整性验证的有效手段,是信息安全领域的一个研究热点。数字水印技术是将附加信息镶嵌在原始资料(宿主资料)中而不影响宿主资料可用性的一种信息加密技术,其中的具有可鉴别性的附加信息称为数字水印,其形式多种多样,如:文字信息、音频资料、图像等。数字水印通过信息隐藏技术,可谓为宿主资料打上了一个永久的版权烙印,并且隐蔽于其中,不论如何传播,数字水印信息都不会消失,并且可以提取出来。
经专利查询统计,国内外已有不少数字水印方面的专利:例如,一种基于DWT域的数字水印方法及系统(2011104009618)、一种流媒体数字水印系统(2007101798841)、超复数频域的有意义数字水印算法(2008100340277)、数字水印的嵌入方法、提取方法及其装置(200810240311X)等。
但目前的技术不能解决数字水印中重复嵌入水印的问题,即后一次嵌入的水印会导致前一次嵌入的水印被覆盖,从而无法实现防止数据被盗版拷贝的追踪和版权保护等问题。
技术实现要素:
为解决现有技术的不足,提供一种基于数字水印的图像加密方法,这种方法设计合理、实现简单,有解决重复水印的嵌入覆盖问题,防止数据被盗版拷贝,有利版权保护。
为实现上述目的,本发明采用以下技术方案:
一种基于数字水印的图像加密方法:
步骤a,获取坐标点:对字符型水印信息经预处理生成水印二维码嵌入的坐标点;
步骤a1,字符型水印信息序列为W,W={B0, B1, B2, B3, B4,…, Bn},其中,n为信息长度,Bn为水印信息的单位信息,Bn为ASCII值;
步骤a2,将Bn的ASCII值转换为8位字节字符串K,K={k0, k1, …, ki},ki的值取0或1,i=7;
步骤a3,设定bnj,其中j=1, 2,3,
bn0=000000 k0k1,bn1=00000k2k3 k4,bn2=00000k5k6k7,
将bnj进行十进制转化,得到anj=del(bnj);
步骤a4,对anj进行非线性映射如下:
(式1)
步骤a5,计算参数tn,即对Anj取平均数:
(式2)
步骤a6,取得图像的长为l,图像的宽为w,通过下式得到水印嵌入位置的坐标点(x, y):
(式3)
步骤b,在图像中嵌入二维码水印:
取步骤a中的每个坐标点所在的图像区块,将其称为子块,每个坐标点记为(x, y)n,子块记为Qn(x, y),子块集Q(x, y)={Q0(x, y), Q1(x, y), Q2(x, y), …, Qn(x, y)},将水印信息通过二维码生成器生成二维码,将二维码缩放至各个子块的大小,方法如下:
子块的总像素点个数为N,通过下式的区域投影公式更换子块:
(式4)
其中:
且0 <p< N,0 <q< N;
Yp代表二维码上黑色像素点对子块的投影,Cp代表二维码上白色像素点对子块的投影,xp代表子块的一行像素点,yp代表子块的一列像素点,
步骤c,检测信息中是否存在水印二维码:通过步骤a得到水印二维码的坐标点,提取坐标点所在子块的图像,通过像素点平均值比较检测信息中是否存在水印二维码,如果提取到的图像的像素点平均值等于加了水印二维码的图像的像素点平均值,则信息中存在水印二维码,反之,则不存在。
步骤b中,像素点更换完成后,坐标点上就嵌入了水印二维码,每个嵌入的水印二维码的长宽均为max(l, w)/20,即将二维码一个一个地嵌入到了图像上通过步骤a得到的坐标点上
式3中%为取余操作。
每个子块的大小可以自行设定。子块的长宽相等,且各子块间不可重叠。
步骤c中所述的像素点平均值指图像的所有像素点的值相加除于图像像素点的总个数。
步骤c中,图像的像素点平均值,指遍历整幅图像的所有像素点,累加取得所有像素点的灰度值总和,平均值为灰度值总和与像素点个数之商,其方法如下:
步骤c1,遍历待处理的源图像的像素;
步骤c2,对每个像素点的灰度值进行累加求和;
步骤c3,计算图像的像素点总个数;
步骤c4,求图像的平均灰度值。
本发明通过字符型水印信息计算图像中嵌入水印的坐标、将字符型信息通过二维码生成器生成水印,再将二维码水印嵌入图像中,并且检测原图像是否存在二维码水印,抵抗了水印重复嵌入攻击的方法。
同时,本发明基于数学理论和图像数据特点,结合变换域水印算法的特性并运用空域算法的理念,以水印信息映射算法、二维水印分布式嵌入技术以及相似度检测算法为关键技术,使得本方法既能满足抵抗重复嵌入的目的又拥有较好的鲁棒性和较高的数据容量。
附图说明
图1为一种本发明实施例的示意图;
图2为一种本发明的技术路线图;
图3为一种本发明的加密流程图。
图中标记为:1二维码图片,2需加密的原始图像,3坐标点在图上的示例,4用水印信息产生的二维码加密后的图像。
具体实施方式
参照附图,本实施例以“浙江工业大学”作为加密信息对图像进行水印覆盖加密。
具体使用以下:
步骤a,获取坐标点:
步骤a1,给定水印信息序列W “浙江工业大学”,W={B0, B1, B2, B3, B4,…, Bn},其中,n为信息长度5,B0为“浙”,B1为“江”,以此类推,B5为“学”;
步骤a2,将Bn的ASCII值转换为8位字节字符串K=(k0, k1, …, ki),ki的值取0或1,i=7:
将“浙”的ASCII值转换为8位字节字符串K=(01001011),其他几个字对应的ASCII值如下:
浙:01001011
江:01001011
工:01001011
业:01001011
大:01001011
学:01001011
步骤a3,得到bn0,bn1,bn2,bn0=000000 k0k1,bn1=00000k2k3 k4,bn2=00000k5k6k7然后将bnj进行十进制del转化,得到anj=del(bnj),j=1, 2,3:
则“浙”的k0=01,k1=001,k2=011,那么可知b00=0 0 0 0 0 001,b01=0 0 0 0 0 001,b02=0 0 0 0 0 011,然后将b00,b01,b02进行十进制del转化,得到a00=del(b00)=1,a01=del(b01)=1,a02=del(b02)=3;
步骤a4,对anj进行非线性映射,即Anj=G(anj):
(式1)
通过(式1)对“浙”的a00,a01,a02值进行非线性映射,得到A00=G(a00)=9,A01=G(a01)=9,A02=G(a02)=13;
步骤a5,通过下式得到tn, 即对Anj取平均数:
(式2)
通过(式2)得到;
步骤a6,取得图像的长为l,图像的宽为w,信息长度n,通过下式得到水印嵌入位置的坐标点(x, y),其中,%为取余操作:
(式3)
取图像的长为300像素,图像的宽为300像素,信息长度6,通过(式3)得到“浙”的坐标点(x, y)0=(3/9, (3/9)´3%3)0=(0.33, 1)0。
依上述方法得到其它字符的坐标;
步骤b,在图像中嵌入二维码水印:取步骤a中的每个坐标点所在的图像区块,将其称为子块。其中,每个坐标点记为(x, y)n,子块记为Qn(x, y)。将“浙江工业大学”这一水印字符信息利用二维码生成器生成的二维码,并且将二维码缩放至各个子块的大小,将此缩放的二维码嵌入于对应的坐标;
步骤b1,令子块的总像素点个数为N,通过下式的区域的投影公式更换子块,在子块中嵌入水印二维码后的像素点:
(式4)
其中,,,且0 <p< N,0 <q< N ,Yi代表二维码上黑色像素点对子块的投影,Ci代表二维码上白色像素点对子块的投影,xi代表子块的一行像素点,yj代表子块的一列像素点;
步骤b2,像素点更换完成后,坐标点上就成功嵌入了水印二维码,即将二维码一个一个地嵌入到了图像上通过步骤a得到的坐标点上。
取步骤a中得到的“浙”字的坐标点所对应的图像块,“浙”的坐标点记为(0.33, 1)0,子块记为Q0(0.33, 1),将利用二维码生成器生成的二维码缩放至各个子块的大小,通过式4更换子块嵌入水印二维码后的像素点。
步骤c,检测信息中是否存在水印二维码:通过步骤a得到水印二维码的坐标点,提取子块大小的图像,通过像素点值的平均值(即图像的所有像素点的值相加除于像素点的总个数)比较检测信息中是否存在水印二维码,如果提取到的图像的像素点值的平均值等于加了水印二维码的图像的像素点值的平均值,则信息中存在水印二维码,反之,不存在。其中,求取图像的像素点值的平均值,直接的方法就是遍历整幅图像的所有像素点,累加求取所有像素点的值总和,平均值为所有像素点值的总和与图像像素点的总个数之商,步骤如下:
(1)遍历待处理的源图像src的像素;
(2)对每个像素点的灰度值进行累加求和sum;
(3)计算图像的像素点总个数:m = src->width*src->height;
(4)求图像的平均灰度值:avg_value = sum/m。