精华内容
下载资源
问答
  • DCT水印算法

    2017-01-11 17:48:13
    DCT水印实现 Matlab
  • DCT水印算法实现MATLAB

    2015-10-26 20:28:14
    基于DCT水印算法实现,MATLAB版。附带实验图片,可以直接运行。
  • 基于DCT水印算法实现,MATLAB版。附带实验图片,可以直接运行。
  • 基于的DCT水印算法实现

    万次阅读 多人点赞 2015-10-26 20:38:11
    上学期帮同校本科的同学做了毕业设计的实验部分,用MATLAB实现DCT水印算法,并且包含了攻击测试。先讲一个大体概念,然后放出具体代码。一、DCTDCT(离散余弦变换),这里只以二维DCT为例。 信号经过DCT后,从空间...

    上学期帮同校本科的同学做了毕业设计的实验部分,用MATLAB实现DCT水印算法,并且包含了攻击测试。先讲一个大体概念,然后放出具体代码。

    一、DCT

    DCT(离散余弦变换),这里只以二维DCT为例。
    信号经过DCT后,从空间域变换到频域。是一种正交变换的方法。是图像处理中应用即为广泛的傅氏变换中一种特殊的情况(被展开函数是实偶函数,再离散化,即为离散余弦变换)。
    同傅氏变换一样,有正反两种变换。
    正DCT:从空间域变为频域。反DCT:从频域变为空间域。具体公式如下。

    正DCT:

    这里写图片描述
    其中:
    这里写图片描述

    反DCT

    这里写图片描述
    *f(x,y)是空间采样值,简单说,就是点(x,y)的像素值。F(u,v)是频域采样值。*

    二、水印算法

    水印,就好像给图片盖章,注明所有权。
    这里写图片描述
    具体的概念不多讲,若是想深入了解,可以自行百度。

    %图片加水印,提取出水印
    %林多
    %%%%%%%%%%%%%
    M=256; %原图像长度
    N=32; %水印图像长度
    K=8; %8x8的分块
    I=zeros(M,M);%创建一个MxM矩阵,元素全是0
    J=zeros(N,N);
    BLOCK = zeros(K,K);
    %显示原图像
    subplot(5,2,1);%显示多幅图像,在第一个位置显示
    I=imread('23.bmp');%将23.bmp读入I中
    imshow(I);%显示图像
    title('原始公开图像');%标题
    %显示水印图像
    subplot(5,2,2);
    J=imread('21.bmp');
    imshow(J);
    title('水印图像');
    %水印嵌入算法
    for p=1:N %从132循环
     for q=1:N %从132循环
      x=(p-1)*K+1; y=(q-1)*K+1;
      BLOCK=I(x:x+K-1,y:y+K-1);%取相应元素保存到BLOCKBLOCK=dct2(BLOCK);%二维离散余弦变换
      if J(p,q)==0 %如果元素为0
        a=-1;
      else
        a=1;
      end
      BLOCK=BLOCK*(1+a*0.03);  BLOCK=idct2(BLOCK);%反二维离散余弦变换
      I(x:x+K-1,y:y+K-1)=BLOCK;
     end
    end
    %显示嵌入水印后的图像
    subplot(5,2,3);
    imshow(I);
    title('嵌入水印后的图像');
    imwrite(I,'watermarked.bmp','bmp');%保存成watermarked.bmp
    I=imread('23.bmp');%未加水印的原图像
    P=imread('watermarked.bmp');%水印图像
    %提取水印算法
    for p=1:N
    for q=1:N
    x=(p-1)*K+1;
    y=(q-1)*K+1;
    BLOCK1=I(x:x+K-1,y:y+K-1);%赋给BLOCK1元素
    BLOCK2=P(x:x+K-1,y:y+K-1);%赋给BLOCK2元素
    BLOCK1=idct2(BLOCK1);%对其本身进行反二维离散余弦变换
    BLOCK2=idct2(BLOCK2);%对其本身进行反二维离散余弦变换
    a=BLOCK2(1,1)/BLOCK1(1,1)-1;
    if a<0
    W(p,q)=0;
    else
    W(p,q)=1;
    end
    end
    end
    %显示提取的水印
    subplot(5,2,4);
    imshow(W);
    title('从含水印图像中提取的水印');
    
    %----------攻击测试-----------------------%
    
    %----------中值攻击----------%
    P1=imread('watermarked.bmp');
    P1=double(P1(:,:,1));%取1通道
    P1=medfilt2(P1);%中值滤波
    subplot(5,2,5);
    imshow(P1,[]);
    title('中值滤波攻击');
    I1=imread('23.bmp');%未加水印的原图像
    %提取水印算法
    for p=1:N
    for q=1:N
    x=(p-1)*K+1;
    y=(q-1)*K+1;
    BLOCK1=I1(x:x+K-1,y:y+K-1);%赋给BLOCK1元素
    BLOCK2=P1(x:x+K-1,y:y+K-1);%赋给BLOCK2元素
    BLOCK1=idct2(BLOCK1);%对其本身进行反二维离散余弦变换
    BLOCK2=idct2(BLOCK2);%对其本身进行反二维离散余弦变换
    a=BLOCK2(1,1)/BLOCK1(1,1)-1;
    if a<0
    W1(p,q)=0;
    else
    W1(p,q)=1;
    end
    end
    end
    subplot(5,2,6);
    imshow(W1);
    title('从含中值滤波图像中提取的水印');
    
    %----------变小攻击----------%
    P2=imread('watermarked.bmp');
    P2=imresize(P2,0.5);%变为0.5倍,从256x256到128x128
    subplot(5,2,7);
    imshow(P2,[]);%显示变小后图像
    title('变小攻击,变为128x128像素');
    I2=imread('23.bmp');%未加水印的原图像
    I2=imresize(I2,0.5);%原图像一样变小
    %提取水印算法
    for p=1:32
    for q=1:32
    x=(p-1)*4+1;
    y=(q-1)*4+1;
    BLOCK1=I2(x:x+4-1,y:y+4-1);%赋给BLOCK1元素
    BLOCK2=P2(x:x+4-1,y:y+4-1);%赋给BLOCK2元素
    BLOCK1=idct2(BLOCK1);%对其本身进行反二维离散余弦变换
    BLOCK2=idct2(BLOCK2);%对其本身进行反二维离散余弦变换
    a=BLOCK2(1,1)/BLOCK1(1,1)-1;
    if a<0
    W2(p,q)=0;
    else
    W2(p,q)=1;
    end
    end
    end
    subplot(5,2,8);
    imshow(W2);
    title('从128x128图像中提取水印');
    
    %-------旋转攻击-------%
    P3=imread('watermarked.bmp');
    P3=imrotate(P3,90);%逆时针旋转90度;
    subplot(5,2,9);
    imshow(P3,[]);
    title('旋转攻击');
    I3=imread('23.bmp');%未加水印的原图像
    I3=imrotate(I3,90); %原图像逆时针旋转90度;
    %提取水印算法
    for p=1:N
    for q=1:N
    x=(p-1)*K+1;
    y=(q-1)*K+1;
    BLOCK1=I3(x:x+K-1,y:y+K-1);%赋给BLOCK1元素
    BLOCK2=P3(x:x+K-1,y:y+K-1);%赋给BLOCK2元素
    BLOCK1=idct2(BLOCK1);%对其本身进行反二维离散余弦变换
    BLOCK2=idct2(BLOCK2);%对其本身进行反二维离散余弦变换
    a=BLOCK2(1,1)/BLOCK1(1,1)-1;
    if a<0
    W3(p,q)=0;
    else
    W3(p,q)=1;
    end
    end
    end
    subplot(5,2,10);
    imshow(W3);
    title('从含旋转图像中提取的水印');

    这里写图片描述
    原图与加水印(右侧,仔细看)后的对比。
    这里写图片描述
    代码打包(附带实验图片):
    http://download.csdn.net/detail/zxc024000/9214845

    展开全文
  • 基于DCT数字水印算法

    2013-06-04 11:01:48
    基于DCT的数字水印算法,是用MATLAB开发的,里面有素材,可以直接运行。
  • dct数字水印算法

    2015-05-25 08:42:15
    算法基于DCT域,以图像为背景,以二进制比特位为水印,有提取有嵌入
  • DCT数字水印算法

    2014-04-04 20:37:50
    :近年来,随着数字与网络技术的发展,作为一种新兴的信息安全技术.数字水印已成为国内外的研究热 点同时拥有广阔的应用前景。本文简要介绍了数字水印...同时列举了几种典型算法.最后对数 字水印的发展趋势进行了展望
  • 一类新的DCT数字水印算法及其MATLAB实现.pdf一类新的DCT数字水印算法及其MATLAB实现.pdf一类新的DCT数字水印算法及其MATLAB实现.pdf一类新的DCT数字水印算法及其MATLAB实现.pdf一类新的DCT数字水印算法及其MATLAB...
  • DCT变换 图像 MATLAB 基于DCT数字水印算法的Matlab实现算法
  • 基于DCT数字水印算法的matlab实现
  • DCT离散余弦变换实现数字水印算法;在进行水印嵌入时,先对水印用了Arnold变换;包含了几种不同的水印攻击
  • 提出一种基于DCT域的数字水印算法,并用FPGA硬件实现其中关键部分DCT变换。采用VHDL语言有效设计和实现DCT变换,分析与仿真结果表明:与软件实现相比,用FPGA实现水印算法具有高速实时处理的优点。因此,该设计是一...
  • 一种基于DCT的图像水印算法.pdf一种基于DCT的图像水印算法.pdf一种基于DCT的图像水印算法.pdf一种基于DCT的图像水印算法.pdf一种基于DCT的图像水印算法.pdf
  • 数字水印是解决信息安全和版权保护已成为多媒体信息安全领域的热...仿真结果表明,该水印算法既满足不可见性又有较强的鲁棒性(JPEG压缩比约为10时,所提取水印归一化相关系数NC>0.80,含水印图像峰值信噪比PSNR>40dB)。
  • 该文结合扩频技术,提出了一种新的DCT域数字图像水印算法。先对原始图像分块作DCT,再将二值水印图像置乱,最后用置乱后的水印信息控制2个m序列对原始图像子块DCT部分中频系数进行修改,实现水印的嵌入。分析及实验结果...
  • Matlab实现基于DCT域的鲁棒水印算法摘要:数字水印技术(digital watermarking)是实现版权保护的有效办法,并已得到了广泛的应用。文章介绍了数字水印的相关知识,并借助于matlab环境实现了基于dct域的鲁棒水印嵌入和...

    Matlab实现基于DCT域的鲁棒水印算法

    摘要:数字水印技术(digital watermarking)是实现版权保护的有效办法,并已得到了广泛的应用。文章介绍了数字水印的相关知识,并借助于matlab环境实现了基于dct域的鲁棒水印嵌入和提取的方法。

    关键词:matlab;dct域;鲁棒水印

    中图分类号:tp391 文献标识码:a 文章编号:1674-1723(2012)10-0155-02

    当今,随着计算机网络和数字技术的发展,越来越多的多媒体数字作品不断出现在网络上,其版权保护成为一个迫切需要解决的问题。数字水印是实现版权保护的有效办法。数字水印是一种全新的信息隐藏技术,它的基本思想是在原始数据中嵌入秘密的信息(即水印)来证实该数据的所有权。通过对原始数据做微量修改来嵌入水印信息,从而达到信息隐藏的目的。水印的嵌人通常借助于算法进行实现,水印的提取用嵌入的逆算法进行实现。

    一、数字水印的概念

    数字水印技术是将一些标识信息(即数字水印)直接嵌入数字载体(包括多媒体、文档、软件等)当中,但不影响原载体的使用价值,也不容易被人的知觉系统(如视觉或听觉系统)觉察或注意到。通过这些隐藏在载体中的信息,可以达到确认内容创建者、购买者、传送隐秘信息或者判断载体是否被篡改等目的。数字水印是信息隐藏技术的一个重要研究方向。

    展开全文
  • DCT离散余弦变换实现数字水印算法;在进行水印嵌入时,先对水印用了Arnold变换;包含了几种不同的水印攻击。
  • 本文档为DCT域数字水印的源代码,包括水印的生成、嵌入和检测
  • JournalofHefeiUniversity(NaturalSciences) 2009年8月 第19卷第3期 Aug.2009Vol.19No.3 合肥学院学报(自然科学版) 基于DCT和DWT域的数字水印算法 李海燕 (安徽广播影视职业技术学院信息工程系,合肥 230022) 摘 要:...
  • 本文提出了一种基于DcT域图像水印新算 法 该算法利JH密钥生成l两个独立的随机序列,#~g---值水E【j 像比特位是O还是f,来决定此DcT块的候选系数上嵌入对应的随机序列。
  • 一种基于DCT的数字图像水印算法.pdf一种基于DCT的数字图像水印算法.pdf一种基于DCT的数字图像水印算法.pdf一种基于DCT的数字图像水印算法.pdf一种基于DCT的数字图像水印算法.pdf
  • 一种基于DCT域的多重水印算法.pdf一种基于DCT域的多重水印算法.pdf一种基于DCT域的多重水印算法.pdf一种基于DCT域的多重水印算法.pdf一种基于DCT域的多重水印算法.pdf
  • 本文介绍了数字水印的原理和应用方法,研究了一种基于离散余弦变换(DCT)的数字图像水印算法,并借助 MATLAB 编程工具实现数字水印的嵌入、提取和攻击测试。实验结果表明,对于JPEG 压缩和噪声处理,本算法具有较好的...
  • 基于多目标粒子群优化的DCT域数字水印算法
  • 基于DCT变换的数字水印算法 carry_x.bmp 为载体图片 water_x.bmp 为水印图片 test.fig 为图形界面 main.m 为程序执行入口 test.m 为程序主函数 ispsnr.m 为计算峰值信噪比函数(不会再程序中体现) nc.m ...
  • 因此,提出了一种结合快速响应码(QR)、混沌系统和DWT-DCT的鲁棒性水印方案。首先通过混沌系统产生的混沌序列对QR进行加密;然后将宿主图片进行DWT操作,并且对低高频子带进行4×4分割和DCT操作;最后利用水印信息...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 899
精华内容 359
关键字:

dct水印算法