精华内容
下载资源
问答
  • 介绍了图像数字水印技术的概念与特点,从图像数字水印技术的系统模型、常见的典型算法和水印攻击方法等方面论述了图像数字水印技术的研究现状,讨论了图像数字水印技术的应用领域,展望了未来发展及研究方向。
  • 数字水印技术对于噪音叠加和常见的图像处理操作具有较强的稳健性。该技术根据光学级联分数傅里叶变换系统,利用两个随机相位分布函数对水印信息编码并经过迭代分数傅里叶变换嵌入到变换域的载体图像中。在水印检测...
  • 数字水印技术通过将水印信息嵌入原始数据中来证明数字作品的版权,是解决这个问题的一种有效方法。本文提出一种基于小波变换的图像数字水印算法,通过将低频子图分块并量化其小波系数,实现水印的嵌入和提取,并对其...
  • 目录1设计目的 12设计要求 23相关知识 33.1 数字水印的相关知识数字水印的相关知识 33.2 数字水印技术的基本原理 43.3数字水印的分类 54设计内容 64.1 LSB算法介绍 64.1.1 LSB算法的基本原理 64.1.2 LSB算法基本步骤...

    目录

    1设计目的 1

    2设计要求 2

    3相关知识 3

    3.1 数字水印的相关知识数字水印的相关知识 3

    3.2 数字水印技术的基本原理 4

    3.3数字水印的分类 5

    4设计内容 6

    4.1 LSB算法介绍 6

    4.1.1 LSB算法的基本原理 6

    4.1.2 LSB算法基本步骤 6

    4.2 LSB算法的实现 6

    4.3设计流程图 7

    4.3.1水印嵌入的流程图 7

    4.3.2水印提取的流程图 8

    5程序源代码 9

    6仿真结果与分析 12

    6.1 嵌入水印后的运行结果 12

    6.2 提取水印后的运行结果 13

    6.3 结果分析 14

    7结论语 15

    8参考文献 16



    1设计目的

    (1)了解数字水印的基本概念,深入理解基于LSB算法的数字水印嵌入与提取方法。

    (2)运用MATLAB语言编程实现图像水印的嵌入和提取。

    (3)能够显示水印嵌入前后的载体图像,能够显示嵌入与提取的水印。

    (4)熟练掌握 MATLAB软件的基本操作。

    (5)学会掌握 MATLAB软件的程序编程。

    (6)培养独立分析和解决问题的能力,学会撰写课程设计的总结报告。


    2设计要求

    本设计利用MATLAB进行编程及仿真,仿真内容为基于Matlab的数字水印设计,基于空域的水印实现。拟利用所学数字图象处理技术知识,在MATLAB软件系统上来实现对图像水印的嵌入和提取。

    (1)掌握课程设计的相关知识、概念、思路及目的。

    (2)程序设计合理、能够正确运行且操作简单,可实施性强。

    (3)掌握数字水印技术的基本原理。

    (4)掌握基于空域的LSB算法并明确程序操作步骤的先后顺序。


    3相关知识

    3.1 数字水印的相关知识数字水印的相关知识

    数字水印(Digital Watermark)技术是指用信号处理的方法在数字化的多媒体数据中嵌入隐蔽的标记,这种标记通常是不可见的,只有通过专用的检测器或阅读器才能提取。数字水印是信息隐藏技术的一个重要研究方向。

    在数字水印技术中,水印的数据量和鲁棒性构成了一对基本矛盾。从主观上讲,理想的水印算法应该既能隐藏大量数据,又可以抗各种信道噪声和信号变形。然而在实际中,这两个指标往往不能同时实现,不过这并不会影响数字水印技术的应用,因为实际应用一般只偏重其中的一个方面。如果是为了隐蔽通信,数据量显然是最重要的,由于通信方式极为隐蔽,遭遇敌方篡改攻击的可能性很小,因而对鲁棒性要求不高。但对保证数据安全来说,情况恰恰相反,各种保密的数据随时面临着被盗取和篡改的危险,所以鲁棒性是十分重要的,此时,隐藏数据量的要求居于次要地位。数字水印技术是通过一定的算法将一些标志性信息直接嵌到多媒体内容当中,但不影响原内容的价值和使用,并且不能被人的知觉系统觉察或注意到。水印信息可以是作者的序列号、公司标志、有特殊意义的文本等,可用来识别文件、图像或音乐制品的来源、版本、原作者、拥有者、发行人、合法使用人对数字产品的拥有权。与加密技术不同,数字水印技术并不能阻止盗版活动的发生,但它可以判别对象是否受到保护,监视被保护数据的传播、真伪鉴别和非法拷贝、解决版权纠纷并为法庭提供证据。为了给攻击者增加去除水印的难度,目前大多数水印制作方案都采用密码学中的加密(包括公开密钥、私有密钥)体系来加强,在水印的嵌入、提取时采用一种密钥,甚至几种密钥联合使用。

    随着计算机应用逐渐广泛、网络技术的迅速发展,使音频、视频等多媒体信息都能以数字形式传输和播放,从而使大规模非授权拷贝成为了可能,而这样会损害音乐、电影、书籍和软件等出版业的发展,为了保护知识产权引发了一个很有意义的研究方向:信息隐藏。本文首先介绍了了数字水印技术的原理和分类,接着对LSB算法原理及LSB算法实现进行了介绍,最后使用MATLAB 对其加密过程进行了仿真。

    3.2 数字水印技术的基本原理

    数字水印的主要目的是将特定的信息加入到需要保护的媒体信息中,加入的信息一般是能够代表媒体信息版权的内容,如公司标志、媒体作者、特定代码等,而且要保证数字水印能够抵抗一定的攻击,而不被轻易的破坏和修改,同时数字水印要能够被提取或者能够被检测到。数字水印的具体内容、算法、提取或检测过程根据实际应用有不同的要求。数字水印的嵌入和提取过程如图3.1,图3.2所示。

    图3.1 数字水印的嵌入过程

    图3.2 数字水印的提取过程

    图3.1是数字水印的嵌入过程,加入密钥可以提高数字水印的隐蔽性、抗攻击性,而并非是必须的。根据用途不同,嵌入的水印有些是需要还原的,而有些则只需验证水印的存在性,前者需要数字水印的提取算法,而图3.2需要数字水印的检测算法,根据具体的水印算法,嵌入或提取的过程可能有所不同。

    3.3数字水印的分类

    数字水印算法一般可分为两种空域法和频域法,频域法有以下优点:

    (1)嵌入的水印信号能量可以分布到空域的所有像素上,有利于保证水印的不可见 性;

    (2)视觉系统(HVS)的某些特性(如频率的掩蔽特性)可以更方便地结合到水印编码过程中;

    (3)频域法可与国际数据压缩标准兼容,从而实现在压缩域(compressed domain)内的水印编码。所以我们也以频域法为主介绍MATLAB在数字水印技术中的使用。

    按数字水印的特性可分为鲁捧数字水印和脆弱数字水印。鲁棒数字水印主要用于标识数字媒体信息的版权信息,它要求嵌入的水印能够抵抗对媒体的常规编辑和恶意攻击,在对媒体进行如:裁剪、旋转、缩放、压缩的变换后水印信息不受到较大损害。而脆弱水印相反,它对攻击敏感,可以根据脆弱水印的状态判断原始信息是否被修改过。

    按数字水印所附载的媒体可分为图像水印、音频水印、视频水印和文本水印等。每一种数字化的媒体都有相应的水印算法,这也造成了数字水印算法的复杂性。

    按数字水印隐藏的位置划分可以分为空 (时)域数字水印、频域数字水印、时/频域数字水印和时间/度数字水印。原始信息通常在空域或者时域上表示,根据信号处理理论有多种变换将信号变化到另外的域上,每一种域上都可以嵌入数字水 印,也就产生了相应的数字水印算法。

    按数字水印的可见性可以分为可见数字水印和非可见数字水印。可见数字水印通常是将公司表示叠加到原始图像上,算法比较简单,也有相应的应用软件,如Undreamt Marking Technologies公司的Photo Watermark。而不可见数字水印要求嵌入的水印是不能被人的视觉系统感知的,其算法相对复杂。

    关于数字水印算法的分类还有很多不同的分类方法,比如按用途划分,按检测过程划分等,限于篇幅,本文仅介绍了较为常见的基于空域的LSB算法。

    4设计内容

    4.1 LSB算法介绍

    LSB是一种简单传统的信息隐藏算法,属于数字水印技术中的一种。本文首先介绍了LSB技术的原理和特点,然后讨论了基于LSB的数字水印算法。最后利用MATLAB 2009 b对这一算法的加密过程进行了仿真。

    4.1.1 LSB算法的基本原理

    对空域的LSB做替换,用来替换LSB的序列就是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。然而针对空域的各种处理,如游程编码前的预处理,会对不显著分量进行一定的压缩,所以LSB算法对这些操作很敏感。因此LSB算法最初是用于脆弱性水印的。

    4.1.2 LSB算法基本步骤

    (1) 将得到的隐藏有秘密信息的十进制像素值转换为二进制数据.

    (2) 用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位.

    (3)将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像.

    4.2 LSB算法的实现

    LSB算法实现较为简单,首先,需要考虑嵌入的数字水印的数据量,如果嵌入最低的1位,则可以嵌入的信息量是原始图像信息量的1/8,如果适用最低两位则可以嵌入的信息量是1/4。但是嵌入的数字水印的信息量越大,同时对图像的视觉效果影响也越大。在这里要嵌入一个二值的图像。然后,适当调整数字水印图像的大小和比特位数,以适应数字水印图像数据量的要求。最后,对原始图像中要使用的最低位置0,再将数字水印数据放人原始图像的最低位即可。下面通过MATLAB 2009 b2实现这一算法。

    这里选用一幅3264*2448像素,256灰度的图像,数字水印用“万泉公园”的字样的二值图像。

    置0的方法是调用模2函数mod(a,2),将得到的数值与原水印相减,从而得到最低位为0的图片。(使用两位最低有效位的话则用模4函数mod(a,4)然后相减)。LSB算法简单,实现容易,同时可以保证数字水印的不可见性,由于可以在最低位的每个像素上都插人数字水印信息,因此有较大的信息嵌入量。LSB算法一般嵌入图像的最低一位或者两位,如果嵌入的位数太多,则会被人眼察觉到。但是由于数字水印位于图像的不重要像素位上,因此很容易被图像过滤、量化和几何型变等操作破坏,以致无法恢复数字水印。针对基本的LSB算法的缺点,一些研究者也提出了一些改进的算法,如奇偶标识位隐藏算法、索引数据链隐藏算法等,这些算法能增强数字水印的隐蔽性。

    4.3设计流程图

    4.3.1水印嵌入的流程图


    图4.1 水印嵌入的流程图

    4.3.2水印提取的流程图

    读取带有水印的图像和水印图像

    得到嵌入的水印

    图4.2水印提取的流程图


    5程序源代码

    1. 嵌入水印代码

    clear all;

    % 保存开始时间

    start_time=cputime;

    % 读入原图像

    file_name='E:\1.BMP;

    [cover_object,map]=imread(file_name);

    % 读入水印图像

    file_name='E:\2.BMP';

    [message,map1]=imread(file_name);

    message1=message;

    message=double(message); %%转换为double数

    message=fix(message./2); %%转换为0,1组成的矩阵

    message=uint8(message); %%转换为uint8数

    % 原图的行数与列数

    Mc=size(cover_object,1); %原图的行数

    Nc=size(cover_object,2); %原图的列数

    % 水印的行数与列数

    Mm=size(message,1); %水印的行数

    Nm=size(message,2); %水印的列数

    % 将水印扩展为原图像大小,并写入watermark

    for ii = 1:Mc

    for jj = 1:Nc

    watermark(ii,jj)=message(mod(ii,Mm)+1,mod(jj,Nm)+1);

    % 用mod函数进行求余处理

    end

    end

    % 将原图的最低有效位值换为水印的值

    watermarked_image=cover_object;

    for ii = 1:Mc

    for jj = 1:Nc

    watermarked_image(ii,jj)=bitset(watermarked_image(ii,jj),1,watermark(ii,jj));

    % 用bitset函数将原图的最低有效位值换为水印的值

    end

    end

    % 将嵌入水印图像写入lsb_watermarked.bmp

    imwrite(watermarked_image,'lsb_watermarked.bmp','bmp');

    % 显示运行时间

    elapsed_time=cputime-start_time,

    % 显示嵌入水印图像

    figure(1);

    subplot(1,2,1);

    imshow(watermarked_image,[]);

    title('嵌入水印图像');

    subplot(1,2,2);

    imshow(cover_object,[]);

    title('原图像');


    %%扩展后水印

    for ii = 1:Mc

    for jj = 1:Nc

    watermark1(ii,jj)=message1(mod(ii,Mm)+1,mod(jj,Nm)+1);

    %用mod函数对水印进行扩展

    end

    end

    %显示结果

    figure(2);subplot(1,2,1);

    imshow(watermark1,[]);

    title('扩展后的水印');

    figure(2);subplot(1,2,2);

    imshow(message1,[]);

    title('原水印');


    (2) 水印的提取过程


    clear all;

    % 保存开始时间

    start_time=cputime;

    % 读入嵌入水印图像

    file_name='lsb_watermarked.bmp';

    watermarked_image=imread(file_name);

    % 嵌入水印图像的行数与列数

    Mw=size(watermarked_image,1);%嵌入水印图像行数

    Nw=size(watermarked_image,2);%嵌入水印图像列数

    %读入原始水印

    file_name='E:\2.BMP';

    orig_watermark=imread(file_name);

    %%原始水印的行数与列数

    Mm=size(orig_watermark,1); %水印的行数

    Nm=size(orig_watermark,2); %水印的列数

    % 用嵌入水印图像的最低有效位重建水印

    for ii = 1:Mw

    for jj = 1:Nw

    watermark(ii,jj)=bitget(watermarked_image(ii,jj),1);

    % 用bitget函数重建水印

    end

    end

    % 将提取水印变为原始水印大小

    watermark=2*double(watermark);

    for ii = 1:Mm-1

    for jj = 1:Nm-1

    watermark1(ii+1,jj+1)=watermark(ii,jj);

    end

    end

    watermark1(1,1)=watermark(Mm,Nm);

    % 显示运行时间

    elapsed_time=cputime-start_time,

    % 显示嵌入水印图像,提取水印以及原始水印

    figure(1);

    subplot(1,2,1);

    imshow(watermarked_image,[]);

    title('嵌入水印图像');

    figure(2);

    subplot(1,2,1);

    imshow(watermark1,[]);

    title('提取水印');

    figure(2);

    subplot(1,2,2);

    imshow(orig_watermark,[]);

    title('原始水印');

    6仿真结果与分析

    6.1 嵌入水印后的运行结果

    (1) 根据水印嵌入算法及显示函数,得出原图像和嵌入水印后的图像,如图6.1



    v2-4cbacf2b34a3ba592e9c03a3b32d723c_b.jpg

    图6.1 原图像和嵌入水印后的图像











    (2) 将要嵌入到图像中的水印显示出来,如图6.2



    v2-7fbfbff15e8364caea2dee76d6639285_b.jpg

    图6.2 原水印的图像

    6.2 提取水印后的运行结果

    (1) 将水印通过嵌入算法嵌入到图像中,并将嵌入水印的图像写入到temp.jpg中,嵌入水印的图像如图6.3



    v2-a426b4e172054f238e0a8fd7b7dd96e2_b.jpg

    图6.3 嵌入水印的图像


    (2)通过提取水印的过程算法将水印从原图像中提取出来,如图6.4


    v2-ad63f7f9efadee8ef0b6bc1bb12443ee_b.jpg

    图6.4 原水印与提取的水印图像

    6.3 结果分析

    (1)嵌入水印后的运行结果

    结果图如上图6.1和图6.2,图6.1表示的是原图像和嵌入水印后的结果图像,图 6.2表示的是原水印和扩展后的水印的结果图像。通过图示显示,可知LSB算法的实现简单和保证水印的不可见性.

    (2)提取水印后的运行结果

    结果图如上图6.3和图6.4,图6.3表示的是嵌入水印的原图像,图6.4 表示的是原水印与提取的水印的图像。通过图示显示,正确的提取中水印,但是水印有一定的模糊性.

    7结论语

    通过本次的设计,理解到了水印的嵌入和提取的过程,了解到水印的用处和价值,在以后的实际生活中也可以采用LSB算法实现水印的嵌入.可以起到图像版权或者防止篡改的保护性.

    本设计采用的是基于空域的水印实现,通过LSB算法实现起来比较简单,同时可以保证数字水印的不可见性.

    但是在实践的课程中,发现如果嵌入的位数太多,则会被人眼察觉到。但是由于数字水印位于图像的不重要像素位上,因此很容易被图像过滤、量化和几何型变等操作破坏,以致无法恢复数字水印.所以通常可采用一些增强数字水印的隐蔽性的算法.如奇偶标识位隐藏算法、索引数据链隐藏算法等,从而使水印的隐蔽性更高.


    8参考文献

    [1] 林福宗.多媒体技术基础(第2版)课程设计与学习指导[M]. 北京:清华大学出版社, 2006

    [2] 姚敏.数字图像处理[M]. 北京:机械工业出版社,2006

    [3] 容观澳.计算机图像处理. 北京:清华大学出版社,2000

    [4] 周新伦.数字图像处理. 北京:国防工业出版社,2006

    [5] 吴健康.数字图像处理. 北京:邮电大学出版社,1989

    [6] 王积分.计算机图像识别. 北京:中国铁道出版社,1988

    [7] 贾永红.计算机图像处理与分析. 武汉:武汉大学出版社,2001

    [8] 陈桂明.应用MATLAB语言处理数信号与图像处理.北京:科学出版社,2000

    [9] 徐建华.图像处理与分析. 上海:上海交通大学出版社,1990

    [10] 王润生.图像理解. 北京:国防科技大学出版社,1995

    [11] 姚敏.数字图像处理. 北京:机械工业出版社,2006

    展开全文
  • 介绍了混沌数字水印的定义及常见分类,从混沌序列数字水印、混沌映射数字水印和混沌系统数字水印三个方面介绍了国内外研究情况,从文本水印、图形水印、音频水印、视频水印等领域详细综述了混沌数字水印研究理论和...
  • 随着网络技术与数字技术的发展,数字水印技术成为数字信息技术领域近年来研究的热 点之一。简要介绍了数字水印的背景知识、特征、研究现状,以及对常见的水印攻击方法,并分析了未 来数字水印技术发展的趋势。
  • 基于MATLAB的数字水印技术研究

    千次阅读 2018-11-10 07:10:08
    基于MATLAB的数字水印技术研究

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                    摘要:数字水印技术作为数字媒体版权保护的有效办法,近年来在国内外引起了人们极大的兴趣。但是由于数字水印技术涉及到的知识面比较广,即使是专业人员有时也感到力不从心,那么如何选择一种有效的编程工具便成为一个亟待解决的问题。本文从数字水印技术本身的特点、一般模型和典型算法出发,简要地介绍了一种可以快速上手的高效的实用语言——Matlab。最后,作者给出一个用Matlab实现数字水印实例。
    关键词:数字水印  Matlab Visual C++6.0 DWT  DCT

    1 引言
    作为传统加密系统的有效补充办法,从1993年Caronni正式提出数字水印到现在短短几年里,无论是在国内还是在国外对数字水印的研究都引起了人们极大的关注。但数字水印技术的发展还很不成熟,应用也处于初级阶段。在我国,知识产权问题是一个敏感的话题,只有深入开展数字水印技术的研究,尽快制定我国的版权保护水印标准,才能使我们在未来可能的国际知识产权纠纷中取得主动权。那么掌握高效的工具,便成为一个必须解决的问题。本文就针对数字水印本身的特点,介绍了一种高效的实用工具——MATLAB。
    2 数字水印技术
    2.1 数字水印技术的复杂性
    数字水印技术涉及到通信理论、编码理论、噪声理论、视听觉感知理论、扩频技术(Spread Spectrum)、信号处理(Signal Processing ) 技术、数字图像处理(Digital Image Processing)技术、多媒体(Multimedia)技术、模式识别(Pattern Reorganization)技术、算法设计(Algorithm Design)等理论,用到经典的DFT(Discrete Fourier Transform)、DCT(Discrete Cosine Transform)变换和近代最先进的数学工具----小波(Wavelet)。
    数字水印又是一个横跨计算机科学、生理学、密码学、数字、数字通信等多门学科,并与Internet的发展密切相关的交叉科学。数字水印的多学科性导致数字水印技术研究的难度和复杂性。所以,针对数字水印技术本身的跨学科特点,找出一种合适的编程工具,往往可以起到事半功倍的效果。下面我们从数字水印的一般模型出发,来逐步介绍MATLAB。
    2.2数字水印的一般模型
    数字水印的一般模型如图1所示:

    频域法加入数字水印的原理是首先将原始信号(语音一维信号、图像二维信号)变换到频域,常用的变换一般有DWT、DCT、DFT、WP和分形。然后,对加入了水印信息的信号进行频域反变换(IDWT、IDCT、DFT、WP),得到含有水印信息的信号。

    频域法检测水印的原理是将原始信号与待检测信号同时进行变换域变换,比较两者的区别,进行嵌入水印的逆运算,得出水印信息。如果是可读的水印,那么就此结束,如果是不可读水印,如高斯噪声,就将得出的水印与已知水印作比较,由相关性判断,待检测信号含不含水印,故水印的检测有两个结束点。
    2.3数字水印技术的常用算法
    数字水印算法一般可分为两种空域法和频域法,频域法有以下优点:1)嵌入的水印信号能量可以分布到空域的所有像素上,有利于保证水印的不可见性;2)视觉系统(HVS)的某些特性(如频率的掩蔽特性)可以更方便地结合到水印编码过程中;3)频域法可与国际数据压缩标准兼容,从而实现在压缩域(compressed domain)内的水印编码。所以我们也以频域法为主介绍MATLAB在数字水印技术中的使用。
     DCT法(Discreste Cosine Transformation)
    对原始信号做DCT的算法:Cox 和Piva 等人提出的DCT技术的经典之作。Cox利用随机数发生器产生标准正态序列作为水印信息对图像进行整体DCT变换后,选取除去DC系数之外部分较低频率系数叠加水印信息;Piva则修改整幅图像的中频部分。
    对原始信号分块后,再作DCT的算法:Hsu和Wu 把图像进行8*8分块,将一个二进制序列作为水印放入DCT的中频区;有些学者则计算整个图像的DCT,把一个实数序列嵌入DCT的中频系数上。选择中频区的好处是一方面尽量减少嵌入信息对图像主观视觉的影响;同时,尽量避免有损压缩对水印信息可能带来的损失。
    还有一种DCT方法就是把水印信息嵌入到高频系数上,但是采用这种方法,抗压缩性非常差。
     DFT法(Discrete Fourier Transformation)
    Swanson 等利用时域小波变换和频率掩蔽特性结合,实现多分辨率视频水印;Kundur和Hatzinakos 把水印植入灰度图像的小波变换域。
     其它变换域还有Fourier-mellin 域 、Fourier 变换域、分形 或WP(Wavelet Package)等。
    以上的变换域算法计算量都非常大,编程实现这些变换和逆变换也需要好好下一番功夫,由此造成研究人员把大量的时间和精力浪费在与水印算法研究无关的问题上。
    3 可实现数字水印技术的高效实用工具——Matlab
    3.1Matlab简介
    Matlab是当前在国内外十分流行的工程设计和系统仿真软件包。它是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一人方便的、界面友好的用户环境。
    Matlab的推出得到了各个领域专家、学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础。由各个专家学者相继推出了MATLAB工具箱,其中的信号处理(signal processing)、控制系统(control system)、神经网络(neural network)、图像处理(image processing)、鲁棒控制(robust control)、非线性系统控制设计(nonlinear system control design)、系统辨识(system identification)、最优化(optimization)、模糊逻辑(fuzzy logic)、小波(wavelet)、通信(communication)、统计(statistics)等工具箱,这些工具箱给各个领域的研究和工程应用提供了有力的工具,借助于这些“巨人肩上的工具”,各个层次的研究人员可直观、方便地进行分析、计算及设计工作,从而大大地节省了时间。
    3.2用Matlab研究数字水印的优点
     集成了DCT、DWT等函数有丰富的小波函数和处理函数,这不仅方便了研究人员,而且使源程序简洁明了、易实现。
     强大的数学运算功能。能够方便、高效地实现音频、视频中的大量矩阵运算。
     提供了图像处理工具箱、小波分析工具箱、数字信号处理工具箱。用来编制跨数字图像处理技术、数字信号处理等多学科的数字水印技术是非常好的选择。
     MATLAB与目前最强大的编程工具——Visual C++具有良好的接口。
    3.3Matlab函数介绍(以MATLAB5.3为例)
    在介绍函数之前,我们必须明确一点:作水印程序时,处理的图像数据是二维信号,而声音信号是一维信号。这里,我们仅仅简单介绍与水印有关的函数,具体函数的用法请读者参考文献[2]。
     数据输入输出函数
    imread()和imwrite():可以读写bmp,jpg/jpeg, tif/tiff, png, hdf, pcx, wxd格式文件。读索引文件时,还可以得到相应的调色板数据。
    auread()、auwrite()、wavread()和wavwrite():可以方便地读写au和wav文件,并可控制其中的位及频率。
     图像显示与声音播放
    imshow():显示一幅图像;
    imfinfo():可以得到读入图像的信息。如文件的大小、格式、格式版本号、图像的高度、宽度、颜色类型(真彩色,灰度图还是索引图)等
    wavplay():播放wav声音文件。当然,也可以把处理后的wav文件保存后再用其它工具播放。
    wavrecord():可以对处理后的wav文件进行录音。
     变换频函数
    对信号采用不同的变换,是实现频域法水印的至关重要的一步,MATLAB中对一维信号和二维信号分别提供了各种变换和逆变换函数。
     离散余弦变换(DCT)
    dct(),dct2():分别实现一维信号和二维信号的DCT(离散余弦变换);
    idct(),idct2():分别实现一维信号和二维信号的IDCT(逆向离散余弦变换);
     离散傅里叶变换(DFT)
    fft(),fft2():分别实现一维信号和二维信号的DFT(离散傅里叶变换);
    ifft(),ifft2():分别实现一维信号和二维信号的IDFT(逆向离散傅里叶变换);
     离散小波变换(DWT)
    dwt(),dwt2():分别实现一维信号和二维信号的DWT(离散小波变换);
    idwt(),idwt2():分别实现一维信号和二维信号的IDWT(离散小波变换);
    Wavedec2():多级二维小波分解函数;
    Waveinfo():提供小波包中所有的小波信息;
    另外,MATLAB中还有丰富的小波包处理函数,有兴趣的读者可参考文献[2]。
     攻击函数
    对算法进行攻击测试是对水印鲁棒性检测的一种重要手段,一个好的水印算法必须经过各种攻击测试才能对之做出客观的评价。MATLAB中的许多函数可以直接用来做的攻击测试。
    旋转:rotate()可以对图像进行任意角度的旋转;
    剪裁:imcrop()可以按精确定位的各点坐标进行剪裁;
    滤波:filter()和filter2()可实现对一维信号和二维信号的滤波;
    抖动:dither()对图像进行抖动;抖动攻击考验水印鲁棒性的一个很好的攻击;
    jpeg压缩:imwrite()中jpg和quality参数能对图像进行可控jpg压缩;
    加各种噪声:imnoise()可以对图像加入各种噪声,如白噪声、椒盐噪声等,加入噪声是对水印鲁棒性考验的一种常见的攻击;
    放大/缩小:imresize()可以以指定的插值方法来对图像进行放大和缩小。
    3.4一个用MATLAB编写的数字水印算法实例
    为证明MATLAB的高效性与实现简便性,我们以文献[1]的算法为例,给出在Windows98环境下MATLAB5.3中调试通过的完整源程序。
     嵌入水印
    %定义常量
    size=256;block=8;blockno=size/block;LENGTH=size*size/64;
    Alpha1=0.02;  Alpha2=0.1; T1=3; I=zeros(size,size); D=zeros(size,size); BW=zeros(size,size); block_dct1=zeros(block,block);
    %产生高斯水印,并显示水印信息;
    randn('seed',10);mark=randn(1,LENGTH);
    subplot(2,2,1);plot(mark);title('watermarc:Gaussian noise');
     

    %显示原图
    subplot(2,2,2);I=imread('lena264_264','bmp');   
    imshow(I);title('origine image:I');
    %显示prewitt为算子的边缘图
    BW=edge(I,'prewitt');subplot(2,2,3);imshow(BW);
    title('edge of origine image');
    %嵌入水印
    k=1;
    for m=1:blockno
       for n=1:blockno
          x=(m-1)*block+1;      y=(n-1)*block+1;
            block_dct1=I(x:x+block-1,y:y+block-1);
            block_dct1=dct2(block_dct1);
        BW_8_8=BW(x:x+block-1,y:y+block-1);
          if m<=1|n<=1
             T=0;
          else
             T=sum(BW_8_8);    T=sum(T);
          end
          if T>T1
             Alpha=Alpha2

    else
             Alpha=Alpha1;
    end
    block_dct1(1,1)=block_dct1(1,1)*(1+Alpha*mark(k));     block_dct1=idct2(block_dct1);
    D(x:x+block-1,y:y+block-1)=block_dct1; 
          k=k+1;
       end
    end
    %显示嵌入水印后的图像
    subplot(2,2,4);imshow(D,[]);title('embeded image:D');
    由些可以看到用MATLAB的编写一个完整的水印嵌入算法只需几十条语句便可以完成,而这些程序如果用C语言或其它高级语言编写程序至少在100行以上。这个例子充分证明了MATLAB在数字水印技术处理中的方便性和高效性。
    4 MATLAB与VC++6.0的接口
    用MATLAB编写数字水印程序的主要优点是语言本身适合水印技术所需的大量的函数库。并且MATLAB本身具有可扩展性、易学易用性和高效性的优点。除此之外,MATLAB还与VC++6.0有着良好的编程接口,必要时,可以采用MATLAB与VC6.0++的混合编程。有兴趣的读者可参考文献[3]。
    5 结束语
    数字水印软件作为数据安全领域中的新生事物,具有很高的技术含量和很强的生命力,同时也孕育着巨大的商机。我们有理由相信,有了一个高效实用的研究工具能起到事半功倍的效果,会有越来越多的有识之士投入到数字水印技术的研究和产业化进程中来。
    参考文献
    [1]黄继武 YunQ.SHI 程卫东 DCT域图像水印:嵌入对策和算法 电子学报 2000 vol.28 No.4 pp.57~60
    [2]伯晓晨 李涛 刘路等编著 《Matlab工具箱应用掼——信息工程篇》 电子工业出版社 2000年4月第1版
    [3]陶虹 周良柱 袁金荣 MATLAB与Visual C++混合编程的实现 计算机工程与应用 2000,10,pp.100-101,104
    [4] Cox I J,Killian J,Leighton T,.Shamoon T.Secure spread spectrum watermarking for images ,audio and video.In: Pro.IEEE ICIP(Int.Conf.on Image Processing),Lausane,Switzerland,1996,3,pp.243-246
    [5] Cox I J,Killian J,Leighton F T,etal.Secure spread spectrum watermarking for multimedia.In :IEEE Trans Image Processing,1997,6(12),pp.1673-1687.
    [6] Piva A.DCT-based watermark recovering without resorting to the uncorrupted original images.In:Proc of ICIP’97,1:520-523.
    [7] Hsu C-T,Wu J-L.Hidder signature in images.In :Proc of ICIP,1996,3,pp.223-226.
    [8] Swanson M D,Zhu B,Tewfik A H.Multiresolution scene-based video watermarking using perceptual models[J].In:IEEE Journal on Selected Areas in Communications,1998,16(4),pp.540-550.
    [9] O’Ruanaidh J,Pun T.Rotation,scale and translation invariant spread spectrum digital image watermarking[J].In:Signal Processing,1998,66(3),pp.303-317.
    [10] O’Ruanaidh J,Dowling W,Boland F.Phase watermarking of digital images[A].In:Proc of ICIP[C].1996,3,pp.239-242.
    [11] Bas P,Chassery J M,Davoiine f.Self-similarity based image watermarking[A].In:Proc of EUSIPCO[C], 1998, pp. 2277-2280. 
    [12] Kundur D,Hatzinakos D.Digital watermarking based on multiresolution wavelet data fusion. In: Proc. ICIP[C]. 1997, 1, pp. 544-547.
    E-mail:tianhp@263.net

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • 基于Matlab的数字水印技术研究

    千次阅读 2015-05-15 09:58:21
    ----- 数字水印技术作为数字媒体版权保护的有效办法,近年来在国内外引起了人们极大的兴趣。但是由于数字水印技术涉及到的知识面比较广,即使是专业人员有时也感到力不从心,那么如何选择一种有效的编程工具便成为一...
    摘要:
    
    ----- 数字水印技术作为数字媒体版权保护的有效办法,近年来在国内外引起了人们极大的兴趣。但是由于数字水印技术涉及到的知识面比较广,即使是专业人员有时也感到力不从心,那么如何选择一种有效的编程工具便成为一个亟待解决的问题。本文从数字水印技术本身的特点、一般模型和典型算法出发,简要地介绍了一种可以快速上手的高效的实用语言——Matlab。最后,作者给出一个用Matlab实现数字水印实例。
    关键词:数字水印  Matlab Visual C++6.0 DWT  DCT

    1 引言
    ---- 作为传统加密系统的有效补充办法,从1993年Caronni正式提出数字水印到现在短短几年里,无论是在国内还是在国外对数字水印的研究都引起了人们极大的关注。但数字水印技术的发展还很不成熟,应用也处于初级阶段。在我国,知识产权问题是一个敏感的话题,只有深入开展数字水印技术的研究,尽快制定我国的版权保护水印标准,才能使我们在未来可能的国际知识产权纠纷中取得主动权。那么掌握高效的工具,便成为一个必须解决的问题。本文就针对数字水印本身的特点,介绍了一种高效的实用工具——MATLAB。

    2 数字水印技术
    2.1 数字水印技术的复杂性
    数字水印技术涉及到通信理论、编码理论、噪声理论、视听觉感知理论、扩频技术(Spread Spectrum)、信号处理(Signal Processing ) 技术、数字图像处理(Digital Image Processing)技术、多媒体(Multimedia)技术、模式识别(Pattern Reorganization)技术、算法设计(Algorithm Design)等理论,用到经典的DFT(Discrete Fourier Transform)、DCT(Discrete Cosine Transform)变换和近代最先进的数学工具----小波(Wavelet)。
    数字水印又是一个横跨计算机科学、生理学、密码学、数字、数字通信等多门学科,并与Internet的发展密切相关的交叉科学。数字水印的多学科性导致数字水印技术研究的难度和复杂性。所以,针对数字水印技术本身的跨学科特点,找出一种合适的编程工具,往往可以起到事半功倍的效果。下面我们从数字水印的一般模型出发,来逐步介绍MATLAB。
    2.2数字水印的一般模型
    数字水印的一般模型如图1所示:

    频域法加入数字水印的原理是首先将原始信号(语音一维信号、图像二维信号)变换到频域,常用的变换一般有DWT、DCT、DFT、WP和分形。然后,对加入了水印信息的信号进行频域反变换(IDWT、IDCT、DFT、WP),得到含有水印信息的信号。

    频域法检测水印的原理是将原始信号与待检测信号同时进行变换域变换,比较两者的区别,进行嵌入水印的逆运算,得出水印信息。如果是可读的水印,那么就此结束,如果是不可读水印,如高斯噪声,就将得出的水印与已知水印作比较,由相关性判断,待检测信号含不含水印,故水印的检测有两个结束点。
    2.3数字水印技术的常用算法
    数字水印算法一般可分为两种空域法和频域法,频域法有以下优点:1)嵌入的水印信号能量可以分布到空域的所有像素上,有利于保证水印的不可见性;2)视觉系统(HVS)的某些特性(如频率的掩蔽特性)可以更方便地结合到水印编码过程中;3)频域法可与国际数据压缩标准兼容,从而实现在压缩域(compressed domain)内的水印编码。所以我们也以频域法为主介绍MATLAB在数字水印技术中的使用。
     DCT法(Discreste Cosine Transformation)
    对原始信号做DCT的算法:Cox 和Piva 等人提出的DCT技术的经典之作。Cox利用随机数发生器产生标准正态序列作为水印信息对图像进行整体DCT变换后,选取除去DC系数之外部分较低频率系数叠加水印信息;Piva则修改整幅图像的中频部分。
    对原始信号分块后,再作DCT的算法:Hsu和Wu 把图像进行8*8分块,将一个二进制序列作为水印放入DCT的中频区;有些学者则计算整个图像的DCT,把一个实数序列嵌入DCT的中频系数上。选择中频区的好处是一方面尽量减少嵌入信息对图像主观视觉的影响;同时,尽量避免有损压缩对水印信息可能带来的损失。
    还有一种DCT方法就是把水印信息嵌入到高频系数上,但是采用这种方法,抗压缩性非常差。
     DFT法(Discrete Fourier Transformation)
    Swanson 等利用时域小波变换和频率掩蔽特性结合,实现多分辨率视频水印;Kundur和Hatzinakos 把水印植入灰度图像的小波变换域。
     其它变换域还有Fourier-mellin 域 、Fourier 变换域、分形 或WP(Wavelet Package)等。
    以上的变换域算法计算量都非常大,编程实现这些变换和逆变换也需要好好下一番功夫,由此造成研究人员把大量的时间和精力浪费在与水印算法研究无关的问题上。

    3 可实现数字水印技术的高效实用工具——Matlab 
    3.1Matlab简介
    Matlab是当前在国内外十分流行的工程设计和系统仿真软件包。它是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一人方便的、界面友好的用户环境。
    Matlab的推出得到了各个领域专家、学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础。由各个专家学者相继推出了MATLAB工具箱,其中的信号处理(signal processing)、控制系统(control system)、神经网络(neural network)、图像处理(image processing)、鲁棒控制(robust control)、非线性系统控制设计(nonlinear system control design)、系统辨识(system identification)、最优化(optimization)、模糊逻辑(fuzzy logic)、小波(wavelet)、通信(communication)、统计(statistics)等工具箱,这些工具箱给各个领域的研究和工程应用提供了有力的工具,借助于这些“巨人肩上的工具”,各个层次的研究人员可直观、方便地进行分析、计算及设计工作,从而大大地节省了时间。
    3.2用Matlab研究数字水印的优点
     集成了DCT、DWT等函数有丰富的小波函数和处理函数,这不仅方便了研究人员,而且使源程序简洁明了、易实现。
     强大的数学运算功能。能够方便、高效地实现音频、视频中的大量矩阵运算。
     提供了图像处理工具箱、小波分析工具箱、数字信号处理工具箱。用来编制跨数字图像处理技术、数字信号处理等多学科的数字水印技术是非常好的选择。
     MATLAB与目前最强大的编程工具——Visual C++具有良好的接口。
    3.3Matlab函数介绍(以MATLAB5.3为例)
    在介绍函数之前,我们必须明确一点:作水印程序时,处理的图像数据是二维信号,而声音信号是一维信号。这里,我们仅仅简单介绍与水印有关的函数,具体函数的用法请读者参考文献[2]。
     数据输入输出函数
    imread()和imwrite():可以读写bmp,jpg/jpeg, tif/tiff, png, hdf, pcx, wxd格式文件。读索引文件时,还可以得到相应的调色板数据。
    auread()、auwrite()、wavread()和wavwrite():可以方便地读写au和wav文件,并可控制其中的位及频率。
     图像显示与声音播放
    imshow():显示一幅图像;
    imfinfo():可以得到读入图像的信息。如文件的大小、格式、格式版本号、图像的高度、宽度、颜色类型(真彩色,灰度图还是索引图)等
    wavplay():播放wav声音文件。当然,也可以把处理后的wav文件保存后再用其它工具播放。
    wavrecord():可以对处理后的wav文件进行录音。
     变换频函数
    对信号采用不同的变换,是实现频域法水印的至关重要的一步,MATLAB中对一维信号和二维信号分别提供了各种变换和逆变换函数。
     离散余弦变换(DCT)
    dct(),dct2():分别实现一维信号和二维信号的DCT(离散余弦变换);
    idct(),idct2():分别实现一维信号和二维信号的IDCT(逆向离散余弦变换);
     离散傅里叶变换(DFT)
    fft(),fft2():分别实现一维信号和二维信号的DFT(离散傅里叶变换);
    ifft(),ifft2():分别实现一维信号和二维信号的IDFT(逆向离散傅里叶变换);
     离散小波变换(DWT)
    dwt(),dwt2():分别实现一维信号和二维信号的DWT(离散小波变换);
    idwt(),idwt2():分别实现一维信号和二维信号的IDWT(离散小波变换);
    Wavedec2():多级二维小波分解函数;
    Waveinfo():提供小波包中所有的小波信息;
    另外,MATLAB中还有丰富的小波包处理函数,有兴趣的读者可参考文献[2]。
     攻击函数
    对算法进行攻击测试是对水印鲁棒性检测的一种重要手段,一个好的水印算法必须经过各种攻击测试才能对之做出客观的评价。MATLAB中的许多函数可以直接用来做的攻击测试。
    旋转:rotate()可以对图像进行任意角度的旋转;
    剪裁:imcrop()可以按精确定位的各点坐标进行剪裁;
    滤波:filter()和filter2()可实现对一维信号和二维信号的滤波;
    抖动:dither()对图像进行抖动;抖动攻击考验水印鲁棒性的一个很好的攻击;
    jpeg压缩:imwrite()中jpg和quality参数能对图像进行可控jpg压缩;
    加各种噪声:imnoise()可以对图像加入各种噪声,如白噪声、椒盐噪声等,加入噪声是对水印鲁棒性考验的一种常见的攻击;
    放大/缩小:imresize()可以以指定的插值方法来对图像进行放大和缩小。
    3.4一个用MATLAB编写的数字水印算法实例
    为证明MATLAB的高效性与实现简便性,我们以文献[1]的算法为例,给出在Windows98环境下MATLAB5.3中调试通过的完整源程序。
     嵌入水印
    %定义常量
    size=256;block=8;blockno=size/block;LENGTH=size*size/64;
    Alpha1=0.02;  Alpha2=0.1; T1=3; I=zeros(size,size); D=zeros(size,size); BW=zeros(size,size); block_dct1=zeros(block,block);
    %产生高斯水印,并显示水印信息;
    randn('seed',10);mark=randn(1,LENGTH);
    subplot(2,2,1);plot(mark);title('watermarc:Gaussian noise');
     

    %显示原图
    subplot(2,2,2);I=imread('lena264_264','bmp');    
    imshow(I);title('origine image:I');
    %显示prewitt为算子的边缘图
    BW=edge(I,'prewitt');subplot(2,2,3);imshow(BW);
    title('edge of origine image');
    %嵌入水印
    k=1;
    for m=1:blockno
       for n=1:blockno
          x=(m-1)*block+1;      y=(n-1)*block+1;
            block_dct1=I(x:x+block-1,y:y+block-1);
            block_dct1=dct2(block_dct1);
        BW_8_8=BW(x:x+block-1,y:y+block-1);
          if m<=1|n<=1
             T=0;
          else
             T=sum(BW_8_8);    T=sum(T);
          end
          if T>T1
             Alpha=Alpha2

    else
             Alpha=Alpha1;
    end
    block_dct1(1,1)=block_dct1(1,1)*(1+Alpha*mark(k));     block_dct1=idct2(block_dct1);
    D(x:x+block-1,y:y+block-1)=block_dct1;  
          k=k+1;
       end
    end
    %显示嵌入水印后的图像
    subplot(2,2,4);imshow(D,[]);title('embeded image:D'); 
    由些可以看到用MATLAB的编写一个完整的水印嵌入算法只需几十条语句便可以完成,而这些程序如果用C语言或其它高级语言编写程序至少在100行以上。这个例子充分证明了MATLAB在数字水印技术处理中的方便性和高效性。

    4 MATLAB与VC++6.0的接口
    用MATLAB编写数字水印程序的主要优点是语言本身适合水印技术所需的大量的函数库。并且MATLAB本身具有可扩展性、易学易用性和高效性的优点。除此之外,MATLAB还与VC++6.0有着良好的编程接口,必要时,可以采用MATLAB与VC6.0++的混合编程。有兴趣的读者可参考文献[3]。

    5 结束语
    数字水印软件作为数据安全领域中的新生事物,具有很高的技术含量和很强的生命力,同时也孕育着巨大的商机。我们有理由相信,有了一个高效实用的研究工具能起到事半功倍的效果,会有越来越多的有识之士投入到数字水印技术的研究和产业化进程中来。
    参考文献
    [1]黄继武 YunQ.SHI 程卫东 DCT域图像水印:嵌入对策和算法 电子学报 2000 vol.28 No.4 pp.57~60
    [2]伯晓晨 李涛 刘路等编著 《Matlab工具箱应用掼——信息工程篇》 电子工业出版社 2000年4月第1版
    [3]陶虹 周良柱 袁金荣 MATLAB与Visual C++混合编程的实现 计算机工程与应用 2000,10,pp.100-101,104
    [4] Cox I J,Killian J,Leighton T,.Shamoon T.Secure spread spectrum watermarking for images ,audio and video.In: Pro.IEEE ICIP(Int.Conf.on Image Processing),Lausane,Switzerland,1996,3,pp.243-246
    [5] Cox I J,Killian J,Leighton F T,etal.Secure spread spectrum watermarking for multimedia.In :IEEE Trans Image Processing,1997,6(12),pp.1673-1687.
    [6] Piva A.DCT-based watermark recovering without resorting to the uncorrupted original images.In:Proc of ICIP’97,1:520-523.
    [7] Hsu C-T,Wu J-L.Hidder signature in images.In :Proc of ICIP,1996,3,pp.223-226.
    [8] Swanson M D,Zhu B,Tewfik A H.Multiresolution scene-based video watermarking using perceptual models[J].In:IEEE Journal on Selected Areas in Communications,1998,16(4),pp.540-550.
    [9] O’Ruanaidh J,Pun T.Rotation,scale and translation invariant spread spectrum digital image watermarking[J].In:Signal Processing,1998,66(3),pp.303-317.
    [10] O’Ruanaidh J,Dowling W,Boland F.Phase watermarking of digital images[A].In:Proc of ICIP[C].1996,3,pp.239-242.
    [11] Bas P,Chassery J M,Davoiine f.Self-similarity based image watermarking[A].In:Proc of EUSIPCO[C], 1998, pp. 2277-2280.  
    [12] Kundur D,Hatzinakos D.Digital watermarking based on multiresolution wavelet data fusion. In: Proc. ICIP[C]. 1997, 1, pp. 544-547.
    E-mail:tianhp@263.net

     

    展开全文
  • 3.1 图像数字水印技术方案 在数据库中存储在国际互联网上传输的水印图像一般会被压缩,有时达到很高的压缩比。因此,数字水印算法所面临的第一个考验就是压缩。JPEG和EZW(Embedded Zero-Tree Wavelet)压缩是最...

    3.1 图像数字水印的技术方案

    在数据库中存储在国际互联网上传输的水印图像一般会被压缩,有时达到很高的压缩比。因此,数字水印算法所面临的第一个考验就是压缩。JPEG和EZW(Embedded Zero-Tree Wavelet)压缩是最常见的两种压缩方法。JPEG是基于离散余弦变换域的压缩方法,而EZW是基于小波变换域的压缩方法。前人的研究证明采用与压缩算法相同的变换域水印方法,对于压缩的稳健性较强。因此,我研究图像文件水印算法主要集中在变换域算法及利用人眼视觉特性上。

    数字水印的嵌入要求即要考虑视觉透明性,又要保证嵌入水印后图像的稳健性,这两个方面存在着矛盾。保证视觉透明性,就要将水印嵌入到人眼不敏感区,也就是嵌入到图像的高频分量中。而多数图像处理方法对于图像高频部分的损坏程度较高,如有损压缩、高频滤波等。水印很容易在经历图像处理的过程中丢失。这样,则无法保证图像数字水印的稳健性。如果要获得很好的稳健性,数字水印应加在人眼敏感的低频部分,图像的大部分能量集中在低频部分,如果对于低频部分进行处理,水印固然会失去,而图像也没有了利用价值,然而,水印的嵌入会对图像的质量有非常大的影响,这又无法保证视觉透明性。

    数字水印算法的实现基本分为三个部分:宿主图像的变换,水印的嵌入和水印的检测,分别描述如下。

    3.2 基于DCT域的图像数字水印技术

    离散余弦变换(Discrete Cosine Transform)属于正交变换图像编码方法中的一种。正交变换图像编码始于1968年。当时安德鲁斯(Andrews)等人发现大多数自然图像的高频分量相对幅度较低,可完全舍弃或者只用少数码字编码,提出不对图像本身编码,只对其二维傅立叶(DFT)系数进行编码和传输。但DFT是一种正交变换,运算量很大,常常使实时处理发生困难,第二年他们就用Walsh-Hadamard变换(WHT)取代DFT可以使运算量明显减少,这是因为WHT变换只有加减法而无需乘法。但是更有意义的是离散余弦变换和离散正旋变换的出现,它们具有快速算法,精确度高。其中最重要的是1974年提出的DCT,因为其变换矩阵的基向量很近似于托伯利兹矩阵的特征向量,而托伯利兹矩阵又体现了人类语言及图像信号的相关性。因此,DCT常常被认为是语音与图像信号变换的准最佳变换。

    图像是二维的,所以在研究时主要用到二维DCT,以及二维IDCT来对图像进行处理。

    3.2.1 离散余弦变换(DCT)的定义

    数字图像X(m,n)是具有M行N列的一个矩阵。为了同时减弱或去除图像数据相关性,可以运用二维DCT,将图像从空间域转换到DCT变换域。

    根据定义,二维离散余弦变换(DCT)定义如下:


    式中:m,k=0,1,…,M-1; n, =0,1,…,N-1。


    二维逆离散余弦变换(IDCT)的定义如下:

    式中:m,k=0,1,…,M-1; n,=0,1,…N-1。

    3.2.2 离散余弦变换的特点

    在基于DCT的变换编码中,图像是先经分块(8×8或16×16)后再经DCT,这种变换是局部的,只反映了图像某一部分的信息。当然也可以对整幅图像的特点,但是运算速度比分块DCT要慢。图像经DCT后,得到的DCT图像有三个特点:

    一是系数值全部集中到0值附近(从直方图统计的意义上),动态范围很小,这说明用较小的量化比特数即可表示DCT系数;

    二是DCT变换后图像能量集中在图像的低频部分,即DCT图像中不为零的系数大部分集中在一起(左上角),因此编码效率很高。

    三是没有保留原图像块的精细结构,从中反映不了原图像块的边缘、轮廓等信息,这一特点是由DCT缺乏时局域性造成的。


    v2-78bbde3f33a88a9c10d132bc556e5162_b.jpg

    如下左图3—1是原始图像经过DCT变换后的系数图像为图3—2。两条线划分出图像的低频、中频和高频分别所在的矩形区域。可以看出,图像DCT变换后大部分参数接近于零,只有左上角的低频部分有较大的数值,中频部分参数值相对较小,而大部分高频参数值非常小,接近于零。


    图 3—1:原图像 图 3—2:变换后的系数图像

    3.2.3 离散余弦变换的数字水印算法

    根据离散余弦变换后的参数性质,本文采用了以ZigZag方式重排变换域系数的方法,选出中频分量,用数字水印序列对其进行非线性调制。水印检测时,待检测图像仍按比方式选择变换域系数,与待水印进行相关运算,与阈值比较来判断是否所含水印。

    离散余弦域的数字水印算法的具体实现分为三步:宿主图像的变换,数字水印的嵌入,数字水印的检测。

    3.2.3.1 宿主图像的DCT变换

    对于N×N大小的256灰度级的宿主图像I进行N×N二维离散余弦变换(DCT)。以ZigZag方式对于DCT变换后的图像频率系数重新排列成一维向量Y={y1, y2,…yN×N}.

    并取出序列中第L+1到L+M的中频系数部分,得到YL={ YL+1, YL+2,…, YL+M}

    3.2.3.2 数字水印的嵌入

    假设数字水印W为一服从标准正态分布的随机实数序列,用数字序列表示为W={W1 ,W2 ,…WM }。用W对Y序列中第L+1到L+M的中频系数部分的值进行修改,按以下公式进行:

    v2-10ae981babdd1d4fe92fbe920a6e3659_b.jpg

    经过修改的系数序列Y′ ={ Y1′, Y2′,... Y′N×N} 以ZigZag逆变换形式重组,再进行N×N DCT逆变换,得到嵌有数字水印的图像I′。

    3.2.3.3 数字水印的检测

    待检测的可能含有水印的图像I" 。假设I"未损失大量信息,可以近似认为I"= I′。在此假设下可以运用统计的方法来检测水印。

    (1)待检水印域待检图像中频系数相关性的测定

    同样对I′进行DCT变换,以ZigZag方式将DCT系数排成一维向量Y "= { Y1 ", Y2 ",... YN×N"}。由于假设I"=I′,则Y"= Y ′。

    取出Y"(等于Y′)中第L+1到L+M的中频系数部分YL "={ YL+1 ", YL+2"’,... YL+M"}。假设待检测的数字水印X={X1,X2,... XM}为一符合标准正态分布的实数伪随机序列。则可以通过待检水印与图像中频系数作相关运算来判断是否所加入了水印。只有在待检水印为所加入的水印时,才能得到较大的相关值。否则相关值很小,接近于零。

    用符号E表示数学期望,得到:

    v2-cb87223103675680c1e18a2293456acd_b.jpg

    (2)阈值的确定

    根据中心极限定理,参照水印匹配与不匹配两种情况得到阈值为。由于原始图像难以得到,因此从实用性出发,阈值定义为:

    综上所述,满足时,则表明检测到匹配水印。否则,未检测到匹配的水印。

    3.3 MATLAB工具简介

    3.3.1. 简介

    Matlab是当前在国内外十分流行的工程设计和系统仿真软件包。它是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一人方便的、界面友好的用户环境。

    Matlab的推出得到了各个领域专家、学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础。由各个专家学者相继推出了MATLAB工具箱,其中的信号处理(signal processing)、控制系统(control system)、神经网络(neural network)、图像处理(image processing)、鲁棒控制(robust control)、非线性系统控制设计(nonlinear system control design)、系统辨识(system identification)、最优化(optimization)、模糊逻辑(fuzzy logic)、小波(wavelet)、通信(communication)、统计(statistics)等工具箱,这些工具箱给各个领域的研究和工程应用提供了有力的工具,借助于这些“巨人肩上的工具”,各个层次的研究人员可直观、方便地进行分析、计算及设计工作,从而大大地节省了时间。

    3.3.2. MATLAB研究数字水印的优点

    1. 集成了DCT、DWT等函数有丰富的小波函数和处理函数,这不仅方便了研究人员,而且使源程序简洁明了、易实现。
    2. 强大的数学运算功能。能够方便、高效地实现音频、视频中的大量矩阵运算。
    3. 提供了图像处理工具箱、小波分析工具箱、数字信号处理工具箱。用来编制跨数字图像处理技术、数字信号处理等多学科的数字水印技术是非常好的选择。
    4. MATLAB与目前最强大的编程工具——Visual C++具有良好的接口。

    3.3.3. MATLAB函数介绍

    在介绍函数之前,我们必须明确一点:作水印程序时,处理的图像数据是二维信号,而声音信号是一维信号。这里,我们仅仅简单介绍与水印有关的函数。

    1. 数据输入输出函数

    imread()和imwrite():可以读写bmp,jpg/jpeg, tif/tiff, png, hdf, pcx, wxd格式文件。读索引文件时,还可以得到相应的调色板数据。

    auread()、auwrite()、wavread()和wavwrite():可以方便地读写au和wav文件,并可控制其中的位及频率。

    ② 图像显示

    imshow():显示一幅图像;imfinfo():可以得到读入图像的信息。如文件的大小、格式、格式版本号、图像的高度、宽度、颜色类型(真彩色,灰度图还是索引图)等。

    ③ 变换频函数

    对信号采用不同的变换,是实现频域法水印的至关重要的一步,MATLAB中对一维信号和二维信号分别提供了各种变换和逆变换函数。

    • 离散余弦变换(DCT)

    dct(),dct2():分别实现一维信号和二维信号的DCT(离散余弦变换);

    idct(),idct2():分别实现一维信号和二维信号的IDCT(逆向离散余弦变换);

    • 离散小波变换(DWT)

    dwt(),dwt2():分别实现一维信号和二维信号的DWT(离散小波变换)

    idwt(),idwt2():分别实现一维信号和二维信号的IDWT(离散小波变换);

    Wavedec2():多级二维小波分解函数;

    Waveinfo():提供小波包中所有的小波信息;

    ④攻击函数

    对算法进行攻击测试是对水印鲁棒性检测的一种重要手段,一个好的水印算法必须经过各种攻击测试才能对之做出客观的评价。MATLAB中的许多函数可以直接用来做攻击测试。

    旋转:rotate()可以对图像进行任意角度的旋转;

    剪裁:imcrop()可以按精确定位的各点坐标进行剪裁;

    滤波:filter()和filter2()可实现对一维信号和二维信号的滤波;

    抖动:dither()对图像进行抖动;抖动攻击考验水印鲁棒性的一个很好的攻击;

    jpeg压缩:imwrite()中jpg和quality参数能对图像进行可控jpg压缩;

    加各种噪声:imnoise()可以对图像加入各种噪声,如白噪声、椒盐噪声等,加入噪声是对水印鲁棒性考验的一种常见的攻击;

    放大/缩小:imresize()可以以指定的插值方法来对图像进行放大和缩小。




    第四章: 图像数字水印技术的实现

    4.1 基于离散余弦变法(DCT)实现数字水印技术

    ① 打开原始及水印图像:

    subplot(2,2,1)

    I=uigetfile('*.bmp','打开原始彩色图像文件');

    RGB=imread(I);

    image(RGB);

    title('原始彩色图像');

    subplot(2,2,2)

    I=uigetfile('*.bmp','打开水印灰度图像文件');

    imshow(I);

    title('灰度水印图像');

    subplot(2,2,3)

    H=imread(I);

    J=dct2(H);

    imshow(log(abs(J)),[]),colorbar;

    title('水印图像经DCT变换后能量分布情况')

    运行结果:







    ② 水印全过程:

    0%水印加入程序

    Q=input('请输入放缩因子的值(建议小于1):Q=')

    subplot(2,3,1)

    RGB=imread('南京邮电大学','jpg');

    imshow(RGB);

    title('原始图像');

    subplot(2,3,2)

    N=dct2(RGB(:,:,3));

    imshow(log(abs(N)),[]),colorbar;

    title('Y分量能量分布');

    subplot(2,3,4)

    I=imread('lena1','bmp');

    imshow(I);

    title('灰度水印图像');

    subplot(2,3,5)

    M=dct2(I);

    imshow(log(abs(M)),[]),colorbar;

    title('水印能量分布');

    subplot(2,3,6)

    J=M(1:128,1:128);

    K=idct2(N);

    RGB(:,:,3)=K;

    imshow(RGB);

    title('加入水印后图像');

    %水印提取程序

    subplot(2,3,3)

    RGB1=imread('南京邮电大学','jpg');

    N=dct2(RGB(:,:,3));

    M=dct2(RGB1(:,:,3));

    M=(N-M)/Q;

    B=idct2(M(236:365,350:401));

    Y=mat2gray(B);

    imshow(Y);

    title('提取的水印图像')

    运行结果:






    ③ 水印全过程(经剪切检测水印)

    %水印加入程序

    Q=input('请输入放缩因子的值(建议小于1):Q=')

    subplot(3,3,1)

    RGB=imread('MM','jpg');

    imshow(RGB);

    title('原始图像');

    subplot(3,3,2)

    imshow(RGB(:,:,3));

    title('B分量');

    subplot(3,3,3)

    N=dct2(RGB(:,:,3));

    imshow(log(abs(N)),[]),colorbar;

    title('B分量能量分布');

    subplot(3,3,4)

    I=imread('lena1','bmp');

    imshow(I);

    title('灰度水印图像');

    subplot(3,3,5)

    M=dct2(I);

    imshow(log(abs(M)),[]),colorbar;

    title('水印能量分布');

    subplot(3,3,7)

    J(465:800,365:600)=0;

    J=rot90(J);

    J=rot90(J);

    N=N+Q*J;

    K=idct2(N);

    RGB(:,:,3)=K;

    imshow(RGB);

    title('加入水印后图像');

    subplot(3,3,8)

    I=imcrop(RGB,[1 1 598 798]);

    imshow(I);

    subplot(3,3,9)

    %水印提取程序

    subplot(3,3,6)

    RGB1=imread('MM','jpg');

    J=RGB1(:,:,3);

    X=J(1:799,1:599);

    N=dct2(I(:,:,3));

    M=dct2(X);

    M=(N-M)/Q;

    B=idct2(M(337:464,237:364));

    Y=mat2gray(B);

    imshow(Y);

    title('经放缩后提取的水印图像')

    运行结果:


    v2-d533e4b7d4e39fbc3437b91b47507669_b.jpg




    ④ 水印全过程(经空域压缩检测水印)

    程序源代码

    %水印加入程序

    Q=input('请输入放缩因子的值(建议小于1):Q=')

    P=input('请输入您所希望的图像放缩系数值(建议取值不要小于0.5):P=')

    subplot(3,3,1)

    RGB=imread('南京邮电大学','jpg');

    imshow(RGB);

    title('原始图像');

    subplot(3,3,2)

    imshow(RGB(:,:,3));

    title('B分量');

    subplot(3,3,3)

    N=dct2(RGB(:,:,3));

    imshow(log(abs(N)),[]),colorbar;

    title('B分量能量分布');

    subplot(3,3,4)

    I=imread('lena1','bmp');

    imshow(I);

    title('灰度水印图像');

    subplot(3,3,5)

    M=dct2(I);

    imshow(log(abs(M)),[]),colorbar;

    title('水印能量分布');

    subplot(3,3,7)

    J=M(1:128,1:128);

    J(128:364,128:400)=0;

    J=rot90(J);

    J=rot90(J);

    N=N+Q*J;

    K=idct2(N);

    RGB(:,:,3)=K;

    imshow(RGB);

    title('加入水印后图像');

    subplot(3,3,8)

    I=imresize(RGB,P,'nearest');

    imshow(I);

    title('压缩P倍图像');

    subplot(3,3,9)

    J=imresize(I,1/P,'nearest');

    imshow(J);

    title('再放大P倍还原图像')

    %水印提取程序

    subplot(3,3,6)

    RGB1=imread('浙江台州学院','jpg');

    N=dct2(J(:,:,3));

    M=dct2(RGB1(:,:,3));

    M=(N-M)/Q;

    imshow(Y);

    title('经放缩后提取的水印图像'):

    运行结果:






    4.2 图像水印的dwt算法

    %以下是水印提取算法

    clear all;

    clc;

    %保存时间

    start_time=cputime;

    figure(1);

    %读出原始图像

    subplot(1,2,1);

    input=imread('2.jpg');

    imshow(input);

    title('原始图像');

    %读出水印图像

    subplot(1,2,2);

    watermarked_image=imread('watermarked.bmp');

    imshow(watermarked_image,[]);

    title('水印图像');

    %三色分离

    input=double(input);

    watermarked_image=double(watermarked_image);

    inputr=input(:,:,1);

    watermarked_imager=watermarked_image(:,:,1);

    inputg=input(:,:,2);

    watermarked_imageg=watermarked_image(:,:,2);

    %水印图像R的分解

    [Cwr,Swr]=WAVEDEC2(watermarked_imager,2,'haar');

    %图像R的分解

    [Cr,Sr]=WAVEDEC2(inputr,2,'haar');

    %水印图像G的分解

    [Cwg,Swg]=WAVEDEC2(watermarked_imageg,2,'haar');

    %图像R的分解

    [Cg,Sg]=WAVEDEC2(inputg,2,'haar');

    %水印图像B的分解

    [Cwb,Swb]=WAVEDEC2(watermarked_imageb,2,'haar');

    %图像B的分解

    [Cb,Sb]=WAVEDEC2(inputb,2,'haar');

    %提取水印小波系数

    %提取水印R的小波系数

    r=0.06;

    for k=0:3

    whr(k+1,:)=Cwr(1+size(Cwr,2)/4+k*size(Cwr,2)/16:...

    size(Cwr,2)/4+(k+1)*size(Cwr,2)/16)-...

    Cr(1+size(Cr,2)/4+k*size(Cr,2)/16:...

    size(Cr,2)/4+(k+1)*size(Cr,2)/16);

    wvr(k+1,:)=Cwr(1+size(Cwr,2)/2+k*size(Cwr,2)/16:...

    size(Cwr,2)/2+(k+1)*size(Cwr,2)/16)-...

    Cr(1+size(Cr,2)/2+k*size(Cr,2)/16:...

    size(Cr,2)/2+(k+1)*size(Cr,2)/16);

    wdr(k+1,:)=Cwr(1+3*size(Cwr,2)/4+k*size(Cwr,2)/16:...

    3*size(Cwr,2)/4+(k+1)*size(Cwr,2)/16)-...

    Cr(1+3*size(Cr,2)/4+k*size(Cr,2)/16:...

    3*size(Cr,2)/4+(k+1)*size(Cr,2)/16);

    end

    whr=(whr(1,:)+whr(2,:)+whr(3,:)+whr(4,:))/(4*r);

    wvr=(wvr(1,:)+wvr(2,:)+wvr(3,:)+wvr(4,:))/(4*r);

    wdr=(wdr(1,:)+wdr(2,:)+wdr(3,:)+wdr(4,:))/(4*r);

    %提取水印小波系数

    %提取水印G的小波系数

    g=0.03;

    for k=0:3

    whg(k+1,:)=Cwg(1+size(Cwg,2)/4+k*size(Cwg,2)/16:...

    size(Cwg,2)/4+(k+1)*size(Cwg,2)/16)-...

    Cg(1+size(Cg,2)/4+k*size(Cg,2)/16:...

    size(Cg,2)/4+(k+1)*size(Cg,2)/16);

    wvg(k+1,:)=Cwg(1+size(Cwg,2)/2+k*size(Cwg,2)/16:...

    size(Cwg,2)/2+(k+1)*size(Cwg,2)/16)-...

    Cg(1+size(Cg,2)/2+k*size(Cg,2)/16:...

    size(Cg,2)/2+(k+1)*size(Cg,2)/16);

    wdg(k+1,:)=Cwg(1+3*size(Cwg,2)/4+k*size(Cwg,2)/16:...

    3*size(Cwg,2)/4+(k+1)*size(Cwg,2)/16)-...

    Cg(1+3*size(Cg,2)/4+k*size(Cg,2)/16:...

    3*size(Cg,2)/4+(k+1)*size(Cg,2)/16);

    end

    whg=(whg(1,:)+whg(2,:)+whg(3,:)+whg(4,:))/(4*g);

    wvg=(wvg(1,:)+wvg(2,:)+wvg(3,:)+wvg(4,:))/(4*g);

    wdg=(wdg(1,:)+wdg(2,:)+wdg(3,:)+wdg(4))/(4*g);

    %提取水印小波系数

    %提取水印B的小波系数

    b=0.12;

    for k=0:3

    whb(k+1,:)=Cwb(1+size(Cwb,2)/4+k*size(Cwb,2)/16:...

    size(Cwb,2)/4+(k+1)*size(Cwb,2)/16)-...

    Cb(1+size(Cb,2)/4+k*size(Cb,2)/16:...

    size(Cb,2)/4+(k+1)*size(Cb,2)/16);

    wvb(k+1,:)=Cwb(1+size(Cwb,2)/2+k*size(Cwb,2)/16:...

    size(Cwb,2)/2+(k+1)*size(Cwb,2)/16)-...

    Cb(1+size(Cb,2)/2+k*size(Cb,2)/16:...

    size(Cb,2)/2+(k+1)*size(Cb,2)/16);

    wdb(k+1,:)=Cwb(1+3*size(Cwb,2)/4+k*size(Cwb,2)/16:...

    3*size(Cwb,2)/4+(k+1)*size(Cwb,2)/16)-...

    Cb(1+3*size(Cb,2)/4+k*size(Cb,2)/16:...

    3*size(Cb,2)/4+(k+1)*size(Cb,2)/16);

    end

    whb=(whb(1,:)+whb(2,:)+whb(3,:)+whb(4,:))/(4*b);

    wvb=(wvb(1,:)+wvb(2,:)+wvb(3,:)+wvb(4,:))/(4*b);

    wdb=(wdb(1,:)+wdb(2,:)+wdb(3,:)+wdb(4,:))/(4*b);

    wab=(Cwb(1:size(Cwb,2)/16)-Cb(1:size(Cb,2)/16))/b;

    %重构水印图像

    cwr=[war,whr,wvr,wdr];

    swr(:,1)=[sqrt(size(war,2)),sqrt(size(war,2)),2*sqrt(size(war,2))];

    swr(:,2)=[sqrt(size(war,2)),sqrt(size(war,2)),2*sqrt(size(war,2))];

    wr = waverec2(cwr,swr,'haar');

    cwg=[wag,whg,wvg,wdg];

    swg(:,1)=[sqrt(size(wag,2)),sqrt(size(wag,2)),2*sqrt(size(wag,2))];

    swg(:,2)=[sqrt(size(wag,2)),sqrt(size(wag,2)),2*sqrt(size(wag,2))];

    wg=waverec2(cwg,swg,'haar');

    cwb=[wab,whb,wvb,wdb];

    swb(:,1)=[sqrt(size(wab,2)),sqrt(size(wab,2)),2*sqrt(size(wab,2))];

    swb(:,2)=[sqrt(size(wab,2)),sqrt(size(wab,2)),2*sqrt(size(wab,2))];

    wb=waverec2(cwb,swb,'haar');

    %将R,G,B叠加

    temp=size(wr);

    pic=zeros(temp(1),temp(2),3);

    for i=1:temp(1);

    for j=1:temp(2);

    pic(i,j,1)=wr(i,j);

    pic(i,j,2)=wg(i,j);

    pic(i,j,3)=wb(i,j);

    end

    end

    output=uint8(round(pic));

    %转化为uint8

    watermark_image_uint8=uint8(output);

    imwrite(watermark_image_uint8,'watermark.bmp','bmp');

    figure(2);

    imshow(watermark_image_uint8);

    title('提取出的水印');



    原始图像


    v2-833372b8516f545df790e333e29045ab_b.jpg




    加入小波的图像



    v2-405a7ccbe6a8f1d27c6164251aaa8c4c_b.jpg



    小波 提取的小波



    v2-5967a3c8d14a308cd4ef5143cc39bb1e_b.jpg

    v2-3b0f506a42499fd599c5ac7188d69c35_b.jpg

    展开全文
  • 分类论述了目前常见的一些数字水印攻击技术,并给出了相应的解决对策,对研究新型数字水印系统有一定的借鉴作用。
  • 概述 数字水印,是指将特定的信息嵌入数字信号中,数字信号可能是音频、图片或是视频等。数字水印可分为浮现式和...数字水印技术是一门新兴的多学科交叉的应用技术,它涉及不同学科领域的理论和技术,如信号处理、图
  • 数字水印技术和JPGE压缩技术进行了认真研究,主要完 成了以下工作: (1)提出了压缩域水印技术所要解决的一些问题,并在提出的算 法中给出部分问题的一些有效的解决方法。 (2)研究了水印信息的预处理技术。对目前...
  • 在分析视觉系统特征的基础上提出了一种新型的Contourlet域分层数字水印技术。该方法利用视觉系统对不同区域、不同局部特征的噪声敏感性不同设置相应的区域水印权重和局部水印权重,将水印按照设置的分层权重嵌入到...
  • 常见水印攻击方法进行了研究,建立了水印攻击规则库和质量评估指标库,在此基础上,进一步建立了数字图像水印的产生、嵌入、提取、验证的理论体系。利用智能分析和辨识的方法,实现了对水印系统可能发生的攻击...
  • 数字水印技术研究综述

    千次阅读 2010-01-22 21:40:00
    数字水印技术研究综述 引言 信息媒体的数字化为信息的存取提供了极大的便利性,同时也显著提高了信息表达的效率和准确性。特别是随着计算机网络通讯技术的发展,数据的交换和传输变成了一个相对简单的过程,...
  • 数字水印概念是Tirkel等人在1993年发表的一篇名为“A digital watermark”的文章中正式提出来。他们提出了两种在灰度图像最低有效位(Least Significant Bit,简称LSB)上添加水印的方法,这种方法虽然简单易行,...
  • 数字水印的关键技术

    千次阅读 2007-01-17 21:09:00
    数字水印的关键技术出处:——伯晓晨 沈林成 常文森---- 作为感觉器官的眼睛和耳朵并不是完美无缺的,它们有许多可以被数字水印技术利用的缺陷。近年来,认知科学的飞速发展为数字水印技术奠定了生理学基础,人眼的...
  • AC分量相结合的数字水印新方法,该方法将原始图像分块并根据人眼视觉系统纹理掩蔽特性,提取出原图像每块的纹理特征,由该纹理特征在原图像的每块DC系数和3个AC系数上嵌入水印。实验结果证明,该方案自适应性好、...
  • 数字水印综述

    2020-11-19 23:50:46
    目录1.1 数字水印技术发展历史1.2水印检测1.3数据恢复阶段1.4 性能影响1.4.1水印嵌入算法性能1.4.2水印检测计算性能1.4.3数据恢复算法的计算性能1.4.4 水印隐藏率1.4.5 水印容量性能1.4.6 小结2.1关系数据可逆水印参...
  • 基于Matlab 的数字图像水印技术课题介绍数字水印技术涉及到许多图像处理算法以及数学计算工具等,如果用普通编程工具实现上述算法,需要要花费大量的时间,MathWorks公司推出的一种简单、高效、功能极强的高级语言...
  • 数字水印与防伪技术

    千次阅读 2005-10-11 19:08:00
    数字水印与防伪技术出处:(计算机世界报 第44期 B3、B5) 防伪技术是用于保护物品使其难以被伪造的一类特殊技术,它既要惟一,又要难以伪造,同时还必须能准确识别。 防伪技术首先要具备惟一性,使相应技术无法从...
  • 基于Matlab 的数字图像水印技术摘要:数字水印技术涉及到许多图像处理算法以及数学计算工具等,如果用普通编程工具实现上述算法,需要要花费大量的时间,MathWorks公司推出的一种简单、高效、功能极强的高级语言——...
  • 视频数字水印

    千次阅读 2019-02-17 10:33:12
    视频数字水印
  • 视频数字水印总结

    千次阅读 2016-01-02 17:23:56
    由于视频序列是由一系列连续静止图像组成,图像水印技术可以直接应用于视频序列,然而图像与视频之间的重要区别也表明了针对视频会有特殊的方法。 近年来,学术界对数字水印的研究主要集中在静止图像,提出了各种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,954
精华内容 781
关键字:

常见的数字水印技术