2022年水印算法整理 .pdf
计算机数据安全论文题目:数字水印算法摘要 随着数字水印技术的发展,数字水印的应用领域也得到了扩展,数字水印的基本应用领域是版权保护、隐藏标识、认证和安全不可见通信。当数字水印应用于版权保护时,潜在的应用市场在于电子商务、在线或离线地分发多媒体内容以及大规模的广播服务。数字水印用于隐藏标识时,可在医学、制图、数字成像、数字图像监控、多媒体索引和基于内容的检索等领域得到应用。数字水印的认证方面主要ID卡、信用卡、ATM卡等上面数字水印的安全不可见通信将在国防和情报部门得到广泛的应用。多媒体技术的飞速发展和Internet的普及带来了一系列政治、经济、军事和文化问题,产生了许多新的研究热点,以下几个引起普遍关注的问题构成了数字水印的研究背景。关键词 数字水印现状工作模型算法1.数字水印的现状名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 8 页 -1994 年在一次国际重要学术会议上由Tirkel 等人发表了题目为“A digital watermark”的第一篇有关数字水印的文章,当时他们已经意识到了数字水印的重要性,提出了数字水印的概念及可能的应用,并针对灰度图像提出了两种向图像最低有效位中嵌入水印的算法。1996 年在英国剑桥牛顿研究所召开了第一届国际信息隐藏学术研讨会,标志着信息隐藏学的诞生,而作为信息隐藏学主要分支之一的数字水印技术的研究也得到了迅速的发展。到1999 年第三届国际信息隐藏学术研讨会,数字水印成为主旋律,全部33 篇文章中有18 篇是关于数字水印的研究。我国近年来已有少数的研究所和大学开展了对水印技术的研究工作,如:中科院自动化研究所的模式识别国家重点实验室、天津大学图像信息中心等。数字水印的研究引起了各种学科的研究人员的兴趣,但受关注的程度不及国外,研究的人员不多,研究的领域不广,从理论和实际成果两方面来看,国内在数字水印方面的研究工作还处于刚起步阶段。我国已明确表示:所有的知识产权保护和安全认证问题不可能依靠国外的力量,必须由我们自主开发解决。因此,无论从学术研究角度,还是从应用技术的角度,开展数字水印的研究都具有十分重要的意义。因特网的出现以及计算机、扫描仪和打印机的广泛使用使得数字化多媒体数据的获取、交换和传输变得异常简单。但是通过网络传播数据也使有恶意的个人或团体在没有得到数据文件所有者许可的情况下能肆意地复制和传播有版权保护的文档。数字水印技术则为这种问题提供了一个潜在的解决方案。数字水印(Digital Watermarking)是往多媒体数据(如图像、声音、视频信号等)中添加某些数字信息以达到版权保护等作用。如果没有鲁棒性(Robustness)的要求,水印与信息伪装技术上的处理本质上是完全一致的。在绝大多数情况下我们希望添加的信息是不可察觉的(Imperceptible),并且希望攻击者在不破坏数据本身质量的情况下无法将水印去掉。发展数字水印技术的原动力就是为了提供多媒体数据的版权保护。2.算法设计思路2.1 水印的基本原理和算法2.1.1 数字水印的工作模型通用的水印技术包含两个方面:水印的嵌入和水印的提取或检测,如图1 和图 2 所示。图 1 水印信号嵌入名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 8 页 -图 2 水印信号提取或检测对于水印嵌入和提取技术,纵观相关的报道和文献。从整体框架构思到具体实现细节,可以说是百花齐放,设计思想往往取决于研究人员的研究背景和不同的入手角度。2.1.2 数字水印的实现算法1)生理模型算法人的生理模型包括人类视觉系统HVS 和人类听觉系统HAS。该模型不仅被多媒体数据压缩系统利用,同样可以供数字水印系统利用。它们的基本思想均是利用从视觉模型导出的JND 描述来确定在图像的各个部分所能容忍的数字水印信号的最大强度,从而能避免破坏视觉质量,也就是说,利用视觉模型来确定与图像相关的调制掩模,然后再利用其来插人水印。这一方法同时具有好的透明性和鲁棒性。2)变换域算法基于变换域的技术可以嵌入大量比特数据而不会导致可察觉的缺陷,往往采用类似扩频图像的技术来隐藏数字水印信息。这类技术一般基于常用的图像变换,基于局部或是全部的变换,这些变换包括离散余弦变换(DCT)、小波变换(WT)、傅氏变换(FT 或 FFT)以及哈达马变换(Hadamard transform)等等。其中基于分块的DCT 是最常用的变换之一,现在所采用的静止图像压缩标准JPEG 也是基于分块DCT 的。最早的基于分块DCT 的一种数字水印技术方案是由一个密钥随机地选择图像的一些分块,在频域的中频上稍稍改变一个三元组以隐藏二进制序列信息。选择在中频分量编码是因为在高频编码易于被各种信号处理方法所破坏,而在低频编码则由于人的视觉对低频分量很敏感,对低频分量的改变易于被察觉。该数字水印算法对有损压缩和低通滤波是稳健的。另一种 DCT 数字水印算法是首先把图像分成8 8 的不重叠像块,在经过分块DCT 变换后,即得到由DCT 系数组成的频率块,然后随机选取一些频率块,将水印信号嵌入到由密钥控制选择的一些DCT 系数中。该算法是通过对选定的DCT 系数进行微小变换以满足特定的关系,以此来表示一个比特的信息。在水印信息提取时,则选取相同的DCT 系数,并根据系数之间的关系抽取比特信息。除了上述有代表性的变换域算法外,还有一些变换域数字水印方法,它们当中有相当一部分都是上述算法的改进及发展,这其中有代表性的算法是IPodichuk 和 Zeng Wen-jun 提出的算法。他们的方法是基于静止图像的DCT 变换或小波变换,研究视觉模型模块返回数字水印应加载在何处及每处可承受的JND(Just Noticeable Difference 恰好可察觉差别)的量值(加载数字水印的强度上限),这种水印算法是自适应的。3)压缩域算法基于 JPEG、MPEG 标准的压缩域数字水印系统不仅节省了大量的完全解码和重新编码过程,而且在数字电视广播及VOD(Video Oil Demand)中有很大的实用价值。相反地,水印检名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 8 页 -测与提取也可直接在压缩域数据中进行。Hartung 提出了一种针对MPEG-2 压缩视频数据流的数字水印案。在 Hartung 方案中,只有MPEG-2 数据流最后一部分数据被改变,其原理是,首先对DCT 编码数据块中每一输入的Huffman 码进行解码和逆量化,以得到当前数据块的一个DCT 系数;其次,把相应水印信号块的变换系数与之相加,从而得到水印叠加的DCT 系数,再重新进行量化和Huffman 编码,最后对新的Huffman 码字的位数n,与原来的无水印系数的码字n0 进行比较,只在 n1不大于 n0 的时候,才能传输水印码字,否则传输原码字,这就保证了不增加视频数据流位率。4)空间域水印LFTurner 的空间域水印算法是最低有效位算法(LSB)与改进算法。由于该算法是通过调整原始数据的最低几位来隐藏信息,使一般用户对于隐藏信息,在视觉上很难察觉。虽然其有较大的信息嵌入量,但作为数字水印算法,因其基本原理限制,所隐藏的数字水印信息是极为脆弱的,无法经受一些有损的信号处理。Bander 等人提出的基于统计的数字水印方案(Patchwork)和纹理块映射编码方法则是空间域水印技术的典型设计。Patchwork 任意选择 N 对图像点,增加其一点的亮度的同时,相应降低另一点的亮度值。通过这一调整过程完成水印的嵌入。Pitas 和 Kaskalis 利用“Patchwork”算法的基本原理,提出了数字图像签名的思想。这种算法可以有效抵抗二次采样攻击与JPEG压缩。2.2 水印图像的嵌入程序。水印图像嵌入:/转换公式为Gray(i,j)=0.11*R(i,j)+0.59*G(i,j)+0.3*B(i,j),/其中 Gray(i,j)为转换后的黑白图像在(i,j)点处的灰度值,/其中绿色所占的比重最大,所以转换时可以直接使用G 值。void CWaterMarkDlg:OnWaterEmbed()/TODO:Add your control notification handler code here if(bm0.bmHeight*bm0.bmWidth)3*(bm1.bmHeight*bm1.bmWidth)/不能嵌入水印 MessageBox(水印图象过大请更换较大宿主图象,错误,MB_OK);Mark=FALSE;if(!Mark)return;if(biBitCountbiBitCount1)MessageBox(水印受限制);return;RGBQUAD*m_copymater;/定义一个水印信息的数据副本名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 8 页 -m_copymater=new RGBQUAD WaterHeight*WaterWidth;int i,j;int count=0;BYTE m_r,m_b;if(m_waterEmbed!=NULL)/m_waterEmbed是水印.嵌入后.的位图数据全局变量 if(m_Ih!=0)for(int l=0;lm_Ih;l+)delete m_waterEmbedl;m_waterEmbed=new RGBQUAD*ImageHeight;for(i=0;iImageHeight;i+)m_waterEmbedi=new RGBQUAD ImageWidth;for(i=0;iImageHeight;i+)/将原来的图象的数据复制到m_waterEmbed 里 for(j=0;jImageWidth;j+)m_waterEmbedij=m_tOriPixelArrayij;for(i=0;iWaterHeight;i+)/将水印信息的数据复制到一维数组m_copymater 水印信息的数据副本里 for(j=0;jWaterWidth;j+)m_copymateri*WaterHeight+j=m_watermarkdataij;count+;number=count;/记录嵌入的点数 int k=0;if(biBitCount=24)/Operate_Byte()嵌入水印信息位操作 for(i=0;i0;i+)for(j=0;j0;j+,count-)/下面可以用一条语句的但为了测试还是多句 m_r=m_waterEmbedij.rgbRed;m_b=m_waterEmbedij.rgbBlue;BYTE&a=m_r;BYTE&b=m_b;BYTE c=m_copymateri*ImageHeight+j.rgbGreen;Operate_Byte(a,b,c);m_waterEmbedij.rgbRed=m_r;m_waterEmbedij.rgbBlue=m_b;PutInWaterMessage();名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 8 页 -else return;CDC*dc=GetDC();/将象素打印出来 RECT m_rect;float w,h,p,q;GetDlgItem(IDC_STA TIC2)-GetClientRect(&m_rect);if(m_rect.rightImageWidth&m_rect.bottom w=(float)m_rect.right/(float)ImageWidth;h=(float)m_rect.bottom/(float)ImageHeight;else w=h=1;for(p=0,i=0;iImageHeight;i+,p+)for(j=0,q=0;jSetPixel(2+(int)(q*w),235+(int)(p*h),RGB(m_waterEmbedij.rgbRed,m_waterEmbedij.rgbGreen,m_waterEmbedij.rgbBlue);ReleaseDC(dc);delete m_copymater;m_Ih=ImageHeight;/为保证直接更换水印信息而没有更换宿主图象提供原宽高void error bug m_Iw=ImageWidth;m_Wh=WaterHeight;m_Ww=WaterWidth;TRACE(n%dn,ImageHeight);GetDlgItem(IDC_BUTTON4)-EnableWindow(TRUE);GetDlgItem(IDC_BUTTON5)-EnableWindow(TRUE);3.程序运行开发环境Microsoft VC+6.0 程序功能在程序中打开宿主图像24 位(保存格式为:24 位位图),水印图像8 位(H*W 最好为:131*170)(保存格式为256 色位图)。使用的时候在“嵌入水印”、“保存水印图像”后,不能关掉使用软件,接着“打开水印过图像”、“提取水印”就可以实现。运行程序后,先点击“产生密钥”按钮,产生一对密钥。然后可以进行加密、解密运算。4.总结名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 8 页 -数字水印是近几年来出现的数字产品版权保护技术,是当前国际学术界的研究热点。该文论述了如下几个问题:1)数字水印的提出及研究现状;2)水印的基本原理和算法。尽管人们都在努力发展和完善数字水印技术,但水印技术仍然没有完全成熟和广为人们理解,而且还有很多问题没有得到解决。尽管水印技术很难在短期内取得突破,但是鉴于水印技术的广泛的应用价值,有必要对水印技术作一番深入研究。目前版权保护可能是水印最主要的应用领域其目的是嵌入数据的来源信息以及比较有代表性的版权所有者的信息,从而防止其它团体对该数据宣称拥有版权。这样水印就可以用来公正地解决所有权问题,但这种应用要求非常高的鲁棒性。随着水印技术的发展在将来的盗版跟踪、票据防伪等领域会有很大的发展。5.参考文献1.MFC 程序设计一本通,电子工业出版社2.C+程序设计,机械工业出版社3 数字水印应用,机械工业出版社指导教师评语:名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 8 页 -成绩:签名:名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 8 页 -