水印嵌入算法图像处理_数字水印嵌入算法综述 - CSDN
  • 1.变换水印算法是现在主要的研究对象,这是因为该技术具有较好的不可感知性和鲁棒性(稳健性),变换水印算法是在没有嵌入数字数据前对原始数据信息进行的一种可逆的数字变换,通过一定的规则且按水印的相应指标对对...

    首先,我们常用的水印算法有空域水印算法 、变换水印算法。

    1.变换水印算法是现在主要的研究对象,这是因为该技术具有较好的不可感知性和鲁棒性(稳健性),变换水印算法是在没有嵌入数字数据前对原始数据信息进行的一种可逆的数字变换,通过一定的规则且按水印的相应指标对对变换域的某些系数进行修改来实现数字水印的嵌入,然后利用逆变换重新构造嵌入水印的数据,从而实现水印的提取。

        变换水印算法最大的优点是:(1)嵌入的水印能量信息能够遍布在整幅图形的空域之中的所有基元当中,因此,具有很强的恶意攻击和抗信号处理的能力,及稳健性较好。

    (2)能够方便的将人类的视觉系统的一些特征融合到水印算法之中(3)可以和jpeg 压缩方法兼容。因此比较容易实现压缩图形的水印嵌入问题。

    2.频域嵌入水印算法能够获得良好的图形保真度,和空域水印算法相比,具有较好的稳健性,可实现在网格环境下的图形版权保护,频域嵌入水印算法是在分析问题的时候,以频率作为基本变量。


    3。 空域水印算法

     空域水印算法就是在原始数据上修改嵌入水印,其稳健性不好。例如:如果以灰色图片水印为例,色素值域为0-255 ,每色素是8bit ,空间上可以分为最高位和最低位,最高位就是黑白色,只有这两个颜色,没有其他的颜色。

    展开全文
  • DWT的分块水印算法,对一幅灰度图像多分块处理,然后再做小波变换,嵌入水印信息。
  • 使用matlab实现的小波变换彩色图像水印嵌入和提取程序,里面有素材,可以直接运行。亲测可用, 谢谢支持。
  • 隐藏信息嵌入程序,老师写的! %------------------------------------------------------------------%% 基于DCT变换的信息隐藏(数字水印)嵌入算法的设计____2007.06.19 %% 

    隐藏信息嵌入程序,老师写的!

     

    %------------------------------------------------------------------%
    %     基于DCT变换的信息隐藏(数字水印)嵌入算法的设计____2007.06.19     %%                                                                %%                                                                %
    %-----------------------------------------------------------=------%
    clear all;
    close all;
    clc
    %-----------------读入"W",并进行WPP处理---------------------
    wm0=imread('watermark.bmp');
    % wm0=imresize(wm0,[64 64]);
    [Mm,Nm]=size(wm0) ; %计算水印图象的高度和宽度
    n=Mm*Nm;
    subplot(131)
    imshow(wm0);
    title('my watermark');
    wm=double(wm0);
    for i=1:Mm
        for j=1:Nm
            if wm(i,j)==0
               wm(i,j)=-1;
            end
        end
    end       

    %-----------------------读入"C",并进行CPP处理--------------------------
    % cover_image=imread('cameraman.tif');
    cover_image=imread('lena.bmp');
    [Mc,Nc]=size(cover_image); %计算载体图象的高度和宽度
    subplot(132);
    imshow(cover_image);
    title('my coverimage');
    cover_image=double(cover_image);%读入原始宿主图象,并转换为双精度数组

    %------------------分块DCT变换,嵌入水印----------------------------

    %设置水印嵌入强度
    % k=369;
    k=70;
    %设置嵌入位置
    x=3;            
    y=5;
    %设定图象的分块大小为8*8
    blocksize=8;   
    c=Mc/blocksize;
    d=Nc/blocksize;
    m=c*d;%计算图象划分的图象块

    %判断载体图像尺寸是否适合水印大小
    if n>m
        error('^_^ Dear classmates~~~~~~The watermark is too large to be imbeded into the coverimage,hehe~~~');
    end

    %分块DCT变换,嵌入水印
    for j=1:c
        for i=1:d
         dct_block=dct2(cover_image((1+(j-1)*8):j*8,(1+(i-1)*8):i*8));
         dct_block(x,y)=k*wm(j,i);
         watermarked_image((1+(j-1)*8):j*8,(1+(i-1)*8):i*8)=idct2(dct_block);
        end
    end
    %------------------------------------------------------------------

    %生成并输出嵌入水印后的图象
    imwrite(uint8(watermarked_image),'watermarked_image.bmp','bmp');
    %显示嵌入水印后的图象
    subplot(133);
    imshow(uint8(watermarked_image))
    title('watermarkedImage')  

     

    隐藏信息提取程序,我写的!

    clear all ;
    close all ;
    clc

    %定义一个空空间来存储提取的水印
    wm_image=zeros(32,32);
    % subplot(122);
    % imshow(wm_image);

    %read the marked image and transfer it to double precise
    %-------------------------------------------------------
    watermarked_image=imread('watermarked_image.bmp');
    [M_marked,N_marked]=size(watermarked_image);
    subplot(121);
    imshow(watermarked_image);
    title('The marked image') ;
    watermarked_image=double(watermarked_image);

    blocksize=8;
    k=1/70;
    x=3;
    y=5;

    c=M_marked/blocksize;
    d=N_marked/blocksize;

    for j=1:c
        for i=1:d
            dct_markedblock=dct2(watermarked_image((1+(j-1)*8):j*8,(1+(i-1)*8):i*8));
            if k*dct_markedblock(x,y)>0
                wm_image(j,i)=1;
            else
                vm_image(j,i)=0;
            end
        end
    end
        subplot(122);
        imshow(wm_image);
        title('mark image');
     
        imwrite((wm_image),'MYwm_image.bmp','bmp');

     
    展开全文
  • 电子科技大学 格拉斯哥学院 2017级吴子健2017200604029 ...这种被嵌入水印可以是一段文字、标识、序列号等,而且这种水印通常是不可见或不可察的 ,它与原始数据 (如图象、音频、视频数据 )紧密结...

    电子科技大学 格拉斯哥学院 2017级吴子健2017200604029
    前言
    在各类信息爆炸式增长的今天,大量图片形式的信息被上传到因特网上。为了防止图片版权被窃取,大量图片制造者使用水印来确保图片版权的安全。通过在原始数据中嵌入秘密信息–水印来证实该数据的所有权。这种被嵌入的水印可以是一段文字、标识、序列号等,而且这种水印通常是不可见或不可察的 ,它与原始数据 (如图象、音频、视频数据 )紧密结合并隐藏其中,并可以经历一些不破坏源数据使用价值或商用价值的操作而能保存下来。数字水印技术除了应具备信息隐藏技术的一般特点外,还有着其固有的特点和研究方法 。

    主体
    我们常用的水印算法有空域水印算法 、变换水印算法。

    1. 空域水印算法。空域水印算法就是在原始数据上修改嵌入水印,其稳健性不好。例如:如果以灰色图片水印为例,色素值域为0-255 ,每色素是8bit ,空间上可以分为最高位和最低位,最高位就是黑白色,只有这两个颜色,没有其他的颜色。
    2. 变换水印算法。变换水印算法是现在主要的研究对象,这是因为该技术具有较好的不可感知性和鲁棒性(稳健性),变换水印算法是在没有嵌入数字数据前对原始数据信息进行的一种可逆的数字变换,通过一定的规则且按水印的相应指标对对变换域的某些系数进行修改来实现数字水印的嵌入,然后利用逆变换重新构造嵌入水印的数据,从而实现水印的提取。

    鲁棒是Robust的音译,也就是健壮和强壮的意思。它是在异常和危险情况下系统生存的关键。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持其它某些性能的特性。根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器。

    结语
    现在不管做什么行业,有时候借用一下网络图片是必须的了,但是把图片保存下来后,上面的水印很是让人郁闷,针对不同的水印,有不同的处理方法,有时候,一个简单的方法可以省去很多事情,软件这东西,技巧很重要。

    展开全文
  • 算法是将数字水印置乱加密后微小的扰动原始彩色图像经离散余弦变换后的对应系数,从而达到数字水印嵌入的目的。 实验表明算法简单高效,原图像与嵌入水印后图像差异小,水印提取准确,能较好的保证数字水印不可感知性,...

    一、项目需求分析

    1.1项目介绍

    本算法是将数字水印置乱加密后微小的扰动原始彩色图像经离散余弦变换后的对应系数,从而达到数字水印嵌入的目的。 实验表明算法简单高效,原图像与嵌入水印后图像差异小,水印提取准确,能较好的保证数字水印不可感知性,在对嵌入水印图像进行各种加噪、裁剪、旋转、压缩等处理后,水印仍有较强的鲁棒性。

    1.2功能需求

    1. 实现混沌随机数的生成
    2. 实现图像加解密
    3. 实现数字水印置乱

      4、实现变换域图像数字水印的嵌入与提取

    5、对含水印图像进行鲁棒性测试和相关性分析

    • 项目分析与设计

    2.1项目需解决的关键技术问题

    1. 各种图像格式之间的相互转换,各种值类型间的转换
    2. DCT水印嵌入和提取
    3. 混沌随机数的生成和图像加解密

    4、对生成的水印图像进行攻击测试

    2.2项目流程

    1. 混沌序列的生成和图像加解密

     

    1. 水印和嵌入与提取

     

    1. 鲁棒性检测

       对含水印的图像进行加噪、加噪、裁剪、旋转、压缩等攻击,再提取出的水印与未受攻击的图像提取出的水印进行比较。

     

    2.3功能模块

    项目主要分为三部分:

    一、水印图像的生成:

       采用改进型logistic混沌序列生成算法,生成一维的混沌序列,再转为二维的二值矩阵与原始二值图片进行异或加密,加密后的图像再进行置乱,消除水印像素间的相关性,故能提高水印抗图像剪裁等操作的鲁棒性,因为有置乱操作,剪切攻击后恢复的水印也是完整的。置乱后的图片为水印图片。

    二、数字水印嵌入和提取:

    Step1: 将原始彩色载体图像进行 8伊8 的分块,得到(M*M2)/(8*8)个子块Block。

    Step2: 对每个子块进行 DCT 变换,各自得到 8*8 的系数矩阵。

    Step3: 对水印图像进行 Arnold 置乱。

    Step4: 依据 Arnold 置乱后的水印图像W(i,j) 来扰动对应的Block(i,j)系数矩阵,采用乘性扰动方式,微调系数矩阵各元素的值,即

    式中,a为扰动因子,通常琢 取很小的正数。 本算法的a 取值为0. 04。

    Step5: 对 扰 动 后 的 图 像 块 进 行 反 余 弦 变 换(IDCT,Inverse Discrete Cosine Transform) ,合并图像块,视其为嵌入水印的图像。

    水印提取只需采用与水印嵌入的逆操作即可实现。

     

    三、对含水印的图像进行攻击和测试

     对含水印的图片分别进行噪声攻击、压缩攻击、剪切攻击、旋转攻击,测试与不受攻击提取的水印间的相关性,改变攻击参数测试水印的鲁棒性强弱。

     

    三、项目设计与实现

    3.1项目设计

    3.3.1数字水印基本框架

    一个数字水印系统一般包括三个基本方面:水印的生成、水印的嵌入和水印的提取或检测。数字水印的嵌入和提取的一般过程基本框架如图3.1,图3.2所示。

    图3.1 水印嵌入的一般过程基本框架

    图3.2 水印检测的一般过程基本框架

     

     

    3.2项目实现

    3.2.1 水印图片的生成

    1. 混沌随机数的生成

       采用了改进型logistic映射,且为满映射状态,生成一维的混沌随机数序列再将其归一化,初始值为0.学号。

     

    混沌序列(double):

    归一化后(uint8):

    对归一化后的序列进行二值化(logical):im2bw(B)默认是0.5,换算成255就是127.5,小于127.5为0,所以7和9是0

     

    二维的混沌序列

     

    1.  二维混沌序列和图片进行异或操作加密

          

    1. 对加密后图像进行解密

    1.  对加密后的图像进行置乱

    图像置乱是一种图像加密技术,通过某种算法仅将一幅图像像素的次序打乱,而像素个数及图像的直方图不变。 由于对水印进行置乱可以消除水印像素间的相关性,故能提高水印抗图像剪裁等操作的鲁棒性。目前用的较多的置乱方法有 Fass 曲线,Gray 代码、Arnold 变换和幻方方式等。Arnold 变换直观且具有周期性,是 Arnold 在遍历理论中提出的一种变换,也称猫脸变换 ( Arnold忆s Cat Map)。

     

    3.2.2 DCT数字水印嵌入和提取

     

    1、 DCT水印嵌入

    DCT 变换的基本原理是将图像f(x,y) 分块后的每一子块单独进行二维 DCT 变换,将每个数据单元的值转化为 M伊N 个系数,构成系数矩阵。 将系数按Zig-Zag 顺序排列,左上角第一个元素是直流分量(DC,Direct Current),称为直流系数,表示该数据块的灰度平均值。本实验对直流层进行嵌入。

     

    2、 DCT对水印的提取

    3、 对提取出的水印进行置乱还原,再对还原的图像进行解密

     

     

     

    置乱还原:

     

    解密:置乱还原后的水印与混沌二值矩阵进行异或。

        

     

     

    3.2.3 对水印图像进行攻击和测试

    1、 对含水印的图像进行攻击和测试,主要用了高斯噪声攻击和椒盐噪声攻击、旋转攻击、压缩攻击、剪切攻击,除了旋转攻击之外抵抗攻击性挺强的,基本上能看出来原图形,旋转攻击只有是1度的时候效果还可以。

     

    2、相关性分析

     

     

    3、 剪切攻击测试

    剪切宽64像素长128像素时:

      

    剪切宽128 128时:

          

     

    剪切256 128时:已经不是很清楚了

       

    4、旋转攻击测试

    旋转1度

      

    相关性:

     

     

     

    旋转2度:图片已经很模糊了,相关性是还可以的

     

    相关性:

    旋转3度就完全看不清了

     

    相关性也降到了0.76

    1. 噪声攻击测试

    高斯噪声:

      

    相关性:

     

    椒盐噪声:

       

    相关性:

     

    1. 压缩攻击测试

    压缩比:75

     

       

    相关性:

     

    压缩比:60

      

    相关性:

     

    压缩比 40

       

     

    压缩比 30

     

     

     

    压缩比 15时图片已经看不怎么清楚了

      

    传图不易,如需完整代码请下载!

    https://download.csdn.net/download/qq_39980334/11258396

    展开全文
  • 上学期帮同校本科的同学做了毕业设计的实验部分,用MATLAB实现DCT水印算法,并且包含了攻击测试。先讲一个大体概念,然后放出具体代码。一、DCTDCT(离散余弦变换),这里只以二维DCT为例。 信号经过DCT后,从空间...
  • 提出了一种基于DCT变换的盲数字图像水印算法,主要思想是通过将原始图像分成8×8的子块,利用人眼视 觉特性对分块进行分类,按分类将不同强度水印信号...实验表明,该算法对常见的图像处理和噪声干扰具有较强的鲁棒性。
  • 基于DCT域数字图像水印的MATLAB实现 一个数字图像处理的实像
  • 数字水印算法

    2020-07-27 23:33:20
    (2) 编写出水印嵌入算法的matlab程序,并给出水印嵌入前后的版权图像,并对嵌入效果进行分析说明。 (3) 编写出水印提取算法matlab程序,并给出水印原图和提取出的水印图像,并对水印的提取效果进行分析说明。 ...
  • -----------图像均衡化数字水印嵌入与提取方法 图像处理中的直方图,也称为灰度级直方图,即一副图的灰度分布图,表示数字图像中每一灰度与该灰度级出现的频率之间的统计关系。直方图的定义为: ...
  • LSB Least Significant Bit 最低有效位嵌入,这里就不赘述了。很多参考,原理一搜就出来了。 下面是相应的代码 首先,编写encode 和decode 代码,使用位操作 def LSB_encode(cover, m, k): m = np.array(m, dtype =...
  • 一、图像基本操作图像读取及显示1.一般图像读取:x=imread('filename','permission'),permission 图像存储类型。例如:x=imread('lena.bmp'); 或者x=imread('lena','bmp');2.一般图像显示:imshow(x); 3.索引图像...
  • 针对多数图像水印算法将灰度图像嵌入宿主图像的研究现状,提出了一种基于整型小波变换将彩色数字水印嵌入到彩色宿主图像中的算法。本算法结合人眼的视觉掩蔽特性, 实现了数字水印嵌入位置的自适应确定,同时采用量化...
  • 提出了一种彩色图像数字水印算法,先将图像从RGB色彩空间变换到HSI色彩空间,在HSI模型中取I(强度)分量,结合JND自适应地嵌入水印,然后再反变换回RGB色彩空间,而且水印提取不需要原始图像和原始水印。...
  • 从基于标识性鲁棒水印出发,提出了一种脆弱性防篡改盲数字水印...在试验 结果里,通过对嵌入水印后的图像进行直接提取水印图像,从而验证了水印算法的可行性。再分别进行局部修改和做另存为处理后提取水..........
  • 水印嵌入到到载体图像像素值得最低有效位,也称最不显著位,改变这一位置对载体图像的品质影响最小。 基本步骤: 将水印的十进制像素值转换为二进制水印数据; 二进制水印数据中的每一比特信息替换载体数据中...
  • 由于第0位的数值在图像的显示上面往往作用非常小,所含能量非常小,因此我们可以利用该性质,在数字图像的最低位加入需要隐藏的信息,该信息称之为数字水印。数字水印的信息类型可以有很多种比如,文本、视频、音频...
  • 随着数字水印技术的发展,各种水印算法层出不穷,水印的隐藏位置也不再局限于上述四种。应该说,只要构成一种信号变换,就有可能在其变换空间上隐藏水印。 与传统的DCT变换相比,小波变换是一种变分辨率的,将时域...
1 2 3 4 5 ... 20
收藏数 881
精华内容 352
关键字:

水印嵌入算法图像处理