基于DCT数字水印算法的Matlab实现源代码4页

上传人:文库****9 文档编号:173996389 上传时间:2021-03-15 格式:DOC 页数:4 大小:29.50KB
返回 下载 相关 举报
基于DCT数字水印算法的Matlab实现源代码4页_第1页
第1页 / 共4页
基于DCT数字水印算法的Matlab实现源代码4页_第2页
第2页 / 共4页
基于DCT数字水印算法的Matlab实现源代码4页_第3页
第3页 / 共4页
基于DCT数字水印算法的Matlab实现源代码4页_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于DCT数字水印算法的Matlab实现源代码4页》由会员分享,可在线阅读,更多相关《基于DCT数字水印算法的Matlab实现源代码4页(4页珍藏版)》请在金锄头文库上搜索。

1、MATLAB 产品族可以用来进行以下各种工作: 数值分析 数值和符号计算 工程与科学绘图 控制系统的设计与仿真 数字图像处理技术 数字信号处理技术 通讯系统设计与仿真 MATLAB在通讯系统设计与仿真的应用财务与金融工程 MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。 压缩域算法基于JPEG、MPEG标准的压缩域数字水印系统不仅节省了大量的完全解码和重新编码过程,而且在数字电视广播及VOD(Video

2、on Demand)中有很大的实用价值。相应地,水印检测与提取也可直接在压缩域数据中进行。下面介绍一种针对MPEG-2压缩视频数据流的数字水印方案。虽然MPEG-2数据流语法允许把用户数据加到数据流中,但是这种方案并不适合数字水印技术,因为用户数据可以简单地从数据流中去掉,同时,在MPEG-2编码视频数据流中增加用户数据会加大位率,使之不适于固定带宽的应用,所以关键是如何把水印信号加到数据信号中,即加入到表示视频帧的数据流中。对于输入的MPEG-2数据流而言,它可分为数据头信息、运动向量(用于运动补偿)和DCT编码信号块3部分,在方案中只有MPEG-2数据流最后一部分数据被改变,其原理是,首先

3、对DCT编码数据块中每一输入的Huffman码进行解码和逆量化,以得到当前数据块的一个DCT系数;其次,把相应水印信号块的变换系数与之相加,从而得到水印叠加的DCT系数,再重新进行量化和Huffman编码,最后对新的Huffman码字的位数n1与原来的无水印系数的码字n0进行比较,只在n1不大于n0的时候,才能传输水印码字,否则传输原码字,这就保证了不增加视频数据流位率。该方法有一个问题值得考虑,即水印信号的引入是一种引起降质的误差信号,而基于运动补偿的编码方案会将一个误差扩散和累积起来,为解决此问题,该算法采取了漂移补偿的方案来抵消因水印信号的引入所引起的视觉变形。 NEC算法该算法由NEC

4、实验室的Cox等人提出,该算法在数字水印算法中占有重要地位,其实现方法是,首先以密钥为种子来产生伪随机序列,该序列具有高斯N(0,1)分布,密钥一般由作者的标识码和图像的哈希值组成,其次对图像做DCT变换,最后用伪随机高斯序列来调制(叠加)该图像除直流(DC)分量外的1000个最大的DCT系数。该算法具有较强的鲁棒性、安全性、透明性等。由于采用特殊的密钥,因此可防止IBM攻击,而且该算法还提出了增强水印鲁棒性和抗攻击算法的重要原则,即水印信号应该嵌入源数据中对人感觉最重要的部分,这种水印信号由独立同分布随机实数序列构成,且该实数序列应该具有高斯分布N(0,1)的特征。 生理模型算法人的生理模型

5、包括人类视HVS(HumanVisualSystem)和人类听觉系统HAS。该模型不仅被多媒体数据压缩系统利用,同样可以供数字水印系统利用。利用视觉模型的基本思想均是利用从视觉模型导出的JND(Just Noticeable Difference)描述来确定在图像的各个部分所能容忍的数字水印信号的最大强度,从而能避免破坏视觉质量。也就是说,利用视觉模型来确定与图像相关的调制掩模,然后再利用其来插入水印。这一方法同时具有好的透明性和强健性。M=256; %原图像长度N=32; %水印图像长度K=8; I=zeros(M,M);II=zeros(K,K);B=zeros(M,M);Idct=zer

6、os(K,K);D=zeros(M,M);%读取原图像I=imread(33.png);subplot(2,2,1);%显示原图像imshow(I);title(原图像);%产生水印序列randn(seed,10);mark=randn(1024,1);subplot(2,2,2);plot(mark);title(水印序列);%嵌入水印T=1;for m=1:N for n=1:N x=(m-1)*K+1; y=(n-1)*K+1; II=I(x:x+K-1,y:y+K-1);%将原图分成8*8的子块 Idct=dct2(II);%对子块进行DCT变换if x=1&y=1 alfa=0.00

7、2;else alfa=0;end B=Idct*(1+alfa*mark(T);%嵌入水印 Bidct=idct2(B);%进行DCT反变换I(x:x+K-1,y:y+K-1)=Bidct; T=T+1;endendsubplot(2,2,3);imshow(I);%显示嵌入水印后的图像title(tu);imwrite(I,嵌入后的图像.bmp); %进行相关性比较 figure;for i=1:50 if i=10; mark2=mark1; else mark2=randn(1024,1); end %计算相关值 c=(mark2*mark)/sqrt(mark2*mark2);stem(i,c); hold on;end

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号