A. 数字水印和水印的区别
一、定义不同:
1.数字水印:
一种应用计算机算法嵌入载体文件的保护信息。
2.水印:
是指我国传统的用木刻印刷绘画作品的方法。
二、特点不同:
1.数字水印:
是将一些标识信息(即数字水印)直接嵌入数字载体当中(包括多媒体、文档、软件等)或是间接表示(修改特定区域的结构),且不影响原载体的使用价值,也不容易被探知和再次修改。
2.水印:
调和颜料用水,不用油质,跟一般彩印法不同,所以特称为“水印”。也叫“水印木刻”。
(1)数字水印软件怎么导出文件扩展阅读
按水印的特性可以将数字水印分为鲁棒数字水印和脆弱数字水印两类。鲁棒水印主要用于在数字作品中标识着作权信息,利用这种水印技术在多媒体内容的数据中嵌入创建者、所有者的标示信息,或者嵌入购买者的标示(即序列号)。
在发生版权纠纷时,创建者或所有者的信息用于标示数据的版权所有者,而序列号用于追踪违反协议而为盗版提供多媒体数据的用户。用于版权保护的数字水印要求有很强的鲁棒性和安全性,除了要求在一般图像处理中生存外,还需能抵抗一些恶意攻击。
B. 如何利用matlab软件实现水印添加和提取
3 视频水印的嵌入和检测方案
3.1水印的预处理
采用二值图像作为待嵌入的水印数据,本文针对的研究对象因为是二维图像故采用的是二维Arnold变换。
二维Arnold变换定义为:
(3-1)
其中,(x,y)是原图像的像素点,(x’,y’)是变换后新图像的像素点,N是图像阶数,即图像的尺寸大小,一般多为正方形图像。由于Arnold变换具有周期性,因此可利用其周期性Period来对图像进行反变换。即在水印嵌入过程中可将水印置乱次数作为密钥times,再进行水印嵌入,当水印提取出来时,再将其继续: (Period-times)次即可使其恢复至原图。这就是利用Arnold的正变换来进行的置乱恢复方案。Arnold变换次数由版权所有者保管。
对水印进行置乱有以下优点:
(1) 采用置乱技术的合法者可以自由控制算法的选择,参数的选择以及使用随机数技术,从而使非法使用者难以破译图像内容,可以提高水印信息的安全性;
(2) 置乱技术可以分散错误比特的分布,提高数字水印的视觉效果,从而增强其鲁棒性。
3.2 视频水印的嵌入
水印嵌入算法关键在于以下三点:
(1) 水印的结构;
(2) 水印的嵌入区域;
(3) 嵌入技巧;
本文选取二值图像作为水印。为了提高水印的鲁棒性,大多数的DCT域水印算法把水印信号嵌入到DCT系数的低频部分。但低频区域是图像的能量集中部分,嵌入到低频会降低透明性。而嵌入在高频虽然透明性比较好,但对大多数的图像处理对高频成分影响较大,从而降低水印的鲁棒性.于是大多数的水印算法将水印信号嵌入在载体图像DCT系数的中频部分,以达到透明性和鲁棒性的最佳折衷。各种嵌入技巧的最终目的还是为了尽量地提高水印的鲁棒性和透明性。
用于版权保护的数字水印在尽量提高鲁棒性的同时还要满足人类的视觉极限,因此必须根据HVS找到嵌入位置。
本文将HVS归纳为运动敏感性、纹理敏感性和亮度敏感性。在接下来的嵌入过程中,充分利用了这些特性。如图3-1中间分支所示。
嵌入过程如图3-1所示。
图3-1 水印嵌入过程
从视频中读取亮度分量Y,因为它是最有效的数据,根据NEC算法,嵌入到它里面的水印才具有最强的鲁棒性。根据式(3-2)所示的运动敏感性阈值计算公式,寻找32帧满足敏感性比较大的视频帧Yi (i=1,2,…32)。
(3-2)
其中 (t代表当前帧的编号)
接下来,将Y32中的数据按照64*64的尺寸切分成20块BYij (j=1,2,…20),于是我们可得到20块尺寸为64*64*32的三维数据块BYk (k=1,2,…20),如图2-3所示。
图3-2 亮度分量的分块
根据式(3-3)、式(3-4)所示的亮度敏感性Lk和纹理敏感性Dk计算公式,通过计算,我们选择计算值都比较高的20块数据中的一块 ( )作为水印的嵌入块。
(3-3)
(3-4)
其中, 是BYk中的亮度数据, 。
最后,折衷考虑复杂度和性能,我们对选定的一块数据块 实施了2阶三维DCT变换。根据NEC算法的思想,且为了抵抗滤波和压缩攻击,我们将置乱后的水印序列嵌入到了第一帧DCT系数c(u,v)中,详见式(3-5)。
(3-5)
其中,w(u,v)是水印序列中的数据,c(u,v)是DCT变换后第一帧中的系数,c’(u,v)是嵌入水印后的系数,S是非负整数(且满足T1=S/4, T2=3*T1)。
嵌入完成后,对c’(u,v)实施反2阶三维DCT变换就得到了嵌入水印后的视频数据,再将它们放回原来的位置即可。
需要说明的是,在整个嵌入过程中,所有用到的参数都应作为密钥保留。
具体方案如下所述:
第一步:抽取32帧视频Y分量数据:
(1) 读取视频文件;
(2) 提取所有的Y分量,把所有的Y分量分为32组;
(3) 每组4帧,从各组中选出一个最运动敏感的,判断每组中最大的Y_deltmax,存入变量m;
(4) 定位最大的Y_deltmax,存入变量w;
Y32是就是所需的视频帧中Y分量满足敏感性的32帧视频 (355*288*32)。
第二步:分块过程:
(1) 对行分块(4块);
(2) 对列分块(5块);
(3) 隔十帧取一帧,共从32帧中取4帧以降低运算量;
(4) 一个数一个数的赋值;
切成20块,每块为64*64*4的数据块BY,维数不同,只能逐个象素赋值。
第三步:根据公式计算数据块BY的亮度敏感性L和纹理敏感性D
第四步:选取L和D都比较大的一块嵌入水印
(1) 判断最大的L,存入变量Lm;
(2) 去掉这个最大的块再比较;
(4) 赋第一块的L的权重为20;
(5) 计算第2块到第20块的L的权重;
(6) 同理对D进行处理;
(7) 计算每块BY的权重;
(8) 对所有的20块BY的权重qz按由小到大的顺序进行排序,并保持原来的位置索引index,则index[20]就是所要选取的块;
第五步:三维DCT变换
由于视频是由图像数据流组成的,所以可以把视频的每一帧看作是一幅静止的图像。对运动图像序列进行3D-DCT,可以视为先对视频的每一帧进行2D-DCT,再对帧间方向进行1D-DCT。
第六步:嵌入水印数据
将置乱的水印序列嵌入所选的DCT系数中,即嵌入经过3D-DCT变换后的数据块中的第一帧数据中。然后把这些数据进行反3D-DCT变换后放回原位置。
第七步:将所选的数据放回原位置
最后一步:写视频文件
3.3视频水印的检测
水印提取是嵌入的逆过程,本算法的一大优势是,水印提取时无需原始视频数据的参与,但依然需要一些参数。它们是:
(1) 嵌入过程第四步产生的块BY的排序结果,由此我们可以得知水印的大致嵌入位置;
(2) 嵌入时指定的参数S;
(3) 需要Arnold变换的次数和周期;
获得了上面的各项参数,水印的提取就十分简单,具体过程如图3-3所示。
图3-3 水印盲提取过程
方案如下:
从待提取水印的视频数据 (可能是被攻击过后的视频)中抽取出亮度分量Y’,根据密钥,抽出32帧中的四帧亮度分量 ,然后分别从这组数据中提取水印。
在图3-3中,首先将 分隔成20块 ,并找到和 对应的 。然后,对 做二阶三维DCT变换,根据式(3-6)提取出水印数据 。
(3-6)
其中, 是DCT系数。
最后,我们将 进行Arnold变换,得到水印图像,作为最终提取出的水印。
具体步骤如下所述:
第一步:抽取32帧视频Y分量数据:
(1) 读取嵌入水印图像的视频文件;
(2) 提取所有的Y分量,把所有的Y分量分为32组;
(3) 每组4帧,从各组中选出一个最运动敏感的,判断每组中最大的Y_deltmax,存入变量m;
(4) 定位最大的Y_deltmax,存入变量w;
Y32是就是所需的视频帧中Y分量满足运动敏感性的32帧视频,Y32是一个355*288*32的三维数组。
第二步:分块过程:
(1) 对行分块(4块);
(2) 对列分块(5块);
(3) 隔十帧取一帧,从32帧中共取4帧以降低运算量;
(4) 一个数一个数的赋值;
切成20块,每块为64*64*4的数据块BY,维数不同,只能逐个象素赋值。
经过计算其亮度敏感性和纹理敏感性并排序,index[20]就是本文算法中嵌入水印的块;
第三步:三维DCT变换
第四步:Arnold变换
由于本算法中水印图像是二值图像,其Arnold变换是二维变换,周期是Period,嵌入水印时变换了times次,所以此处只需变换(Period-times)次就可得到结果。
第五步:写图像文件
提取水印图像数据并写成图像文件
第六步:检测水印图像存在与否,并与原水印图像比较。
最后一步:进行实验,验证本文算法的可见性和鲁棒性。
经过以上步骤就是水印图像信息嵌入视频中的方法,具体实现过程见第四章。
4 用MATLAB实现视频水印的嵌入和检测
Matlab是近年来在国内外广泛流行的一种可视化科学计算软件。它的特点是结构简单、数值计算高效、图形功能完备、图像处理方便,是国际公认的最优秀的科学计算与数学应用软件之一。利用Matlab实现数字水印图像算法便捷、高效,省去了繁琐的程序代码,避免了科研人员在编程上浪费精力。
其内容已涉及矩阵代数、微积分、应用数学、信号与系统、神经网络、小波分析及应用、数字图像处理、计算机图形学、自动控制与通信技术等诸多方面,是科学计算、系统仿真、信号与图像处理的主流软件,受到了各方科研人员的青睐,在数字水印技术中得到了广泛的应用。将Matlab应用于数字水印技术,其优点主要有以下几个方面:
(1) 强大的数值计算功能
视频水印技术是针对图像进行研究的,而图像是由矩阵表达的,将水印嵌入视频中及从视频中将水印提取出来都意味着大量的矩阵运算,而矩阵运算更是Matlab语言的核心,表达自然、直接。因此,利用Matlab强大的矩阵运算功能来实现图像水印技术非常合适。
(2) 方便的图像读取和显示功能
视频水印首先要将数据从视频中读取出来,嵌入水印后还要将嵌入水印后的数据还原为视频。Matlab为用户提供了专门的图像处理函数,用于读写显示图像数据。这种方法不像其他编程语言那样,需要编写复杂的代码,只需要简单地调用Matlab提供的函数即可,相关的函数及其功能主要有下列一些:
imread 将图像读入工作空间;
imwrite 将图像写入磁盘;
image 提供最原始的图像显示函数;
imshow 是最常用的显示各种图像的函数;
load将文件读入工作空间;
(3) 高效的图像变换功能
数字水印嵌入算法一般分空域方法和频域方法。空域方法指通过改变象素的亮度值来加入数字水印:频域方法指图像通过某种变换后再嵌入数字水印。与空域法相比,频域法具有如下优点:在变换域中嵌入的水印信号可以分布到空域的所有象素上,有利于保证水印的不可见性。在变换域中,视觉系统的某些特性(如视频特性)可以更方便地结合到水印编码过程中。变换域的方法可以与国际数据压缩标准兼容,从而实现压缩域内的水印编码。因此,变换域的方法应是水印算法未来趋势的主流。但是变换域的算法一般来讲计算量都比较大,需要复杂的编程运算,Matlab则改变了这种现状。在Matlab图像处理工具箱中,提供了常用的图像变换函数,复杂的变换域算法在Matlab中只需简单地调用函数即可实现,充分体现了使用Matlab的简便性和高效性。
主要图像变换函数如下:
dct是一维离散余弦变换;
idct是一维离散余弦逆变换;
dct2是二维离散余弦变换;
idct2是二维离散余弦逆变换;
(4) 丰富的图像处理函数
水印技术要求嵌入的水印不可见且有较强的鲁棒性。不可见性可通过视觉效果和计算图像的峰值信噪比来比较优劣,而鲁棒性则要对水印后图像进行各种攻击,通过比较攻击后图像提取出的水印情况来说明问题。Matlab有各种图像处理函数,可实现对图像的各种攻击。
综上所述,Matlab具有语言简洁、函数丰富、使用方便、数值计算高效等特点,将功能强大的Matlab软件应用于数字水印技术是有效的选择,因此,本文采用Matlab对图像水印进行研究。
4.1水印的嵌入过程
(1) 基于Arnold变换的图像置乱
Matlab实现如下:
Arnold变换由function r=Arnold(w0,row,colum,times) 实现,其中w0为读取的图像数据,row是行数,colum是列数,times是Arnold变换次数。
function r=Arnold(w0,row,colum,times)
for k=1:times
for i=1:row
for j=1:colum
i1=i+j;
j1=i+2*j;
if i1>row
i1=mod(i1,row);
end
if j1>colum
j1=mod(j1,colum);
end
if i1= =0
i1=row;
end
if j1= =0
j1=colum;
end
w1(i1,j1)=w0(i,j);
end
end
w0=w1;
end
r=w0;
用imwrite(w0,'Arnold.bmp', 'bmp')写置乱后的图像文件;在MATLAB中用imshow('Arnold.bmp')显示此图像。
本文采用二维的二值水印图像watermark.bmp,我们将图像数据(64*64)扫描到二维的矩阵中并实施Arnold变换,从而得到置乱后的二维矩阵。随着迭代次数的增加,图像逐渐趋于混乱,不过到一定次数时,又将回到原图。因为watermark.bmp大小为64*64,故经过试验图像迭代48次后将回到原图,即周期性Period=48。
本算法选择置乱8次,因为8次Arnold变换后原水印图像已经成为无形状的图像。实验结果表明,该方法能较好地刻划图像的置乱程度,与人的视觉基本相符。但需要指出的是不一定图像的置乱次数越多其置乱度就越高。所以,在水印嵌入时,为了提高其鲁棒性而增加置乱次数的方法是不科学的,合理的做法是计算置乱后图像的置乱度,达到较为满意的置乱度后就可停止置乱,避免盲目的提高置乱次数。
置乱次数作为密钥有视频版权所有者保管,如果非法所有者不知道置乱次数就很难恢复出原水印图像。
原水印图像如图4-1所示,本算法实现置乱8次后效果如图4-2所示:
图4-1 水印原图像 图4-2 置乱8次后
(2)Matlab实现嵌入过程:
本文中选取352×288×142的yuv格式视频流进行测试。YUV颜色模型是一种常用的颜色模型,其基本特征是将亮度信号与颜色信号分离,由于人眼对亮度的变化比对颜色的变化敏感,因此,YUV模型中Y分量的值所占带宽大于等于彩色分量所占带宽。YUV色彩空间模型可以在一定程度上避免RGB模型的高分散性和高相关性所带来的闭值划分问题,计算也较为简单。这种色彩空间模型中Y和UV分量是相互独立的,反映了人眼观察彩色的视觉规律,在实际中应用较多。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V”表示的则是色度(Chrominan“或Chroma),作用是描述影像色彩及饱和度,用于指定像素颜色。因此选择YUV颜色空间更加稳定,易于分析。
本文选择测试视频中的第39帧如图4-3所示。YUV格式的视频中Y:U:V=4:2:2,但通俗叫“420”格式。
图4-3 未嵌入水印的视频
第一步:读取文件;
读取视频文件由[yuv,Y,u,v,num_f]=loadyuv(filename)实现,filename是所选取得视频文件名称。yuv是一个四维数组,它返回的是视频的yuv分量,Y是亮度分量,u和v是色彩分量,num_f是视频文件中所有帧的数目。
读取一帧数据的YUV分量在Matlab中由以下源代码实现:
function [YUV,Y,U,V] = loadFileYUV(width,heigth,Frame,fileName,format)
[Teil_h,Teil_b]=YUVFormat(format);
fileId = fopen(fileName,'r');
其中width:每一帧的宽度;heigth:每一帧的高度;Frame:当前load的那一帧;filename:视频文件名;Teil_h:垂直比例参数;Teil_b:水平比例参数;YUV:返回值,返回YUV分量,是一个三维变量,本文算法中将U、V分量的宽度和高度设成与Y一样的了,因此U、V分量中有重复的。YUV(:,:,1)存放Y分量;YUV(:,:,2)存放U分量;YUV(:,:,3)存放V分量;Y,U,V是三个分量的实际值,二维矩阵,没有重复,他们的长度可能不一样。
Y_delt(j)=delt(Y(:,:,w(i)),Y(:,:,4*(i-1)+j));
其中Y_delt是当前帧与下一组各帧的Y的差,m(i)=max(Y_delt(j));判断每组中最大的Y_deltmax,存入变量m,以此来得到每组中最运动敏感的视频帧。w(i+1)=4*(i-1)+k定位最大的Y_deltmax,存入变量w。
最后得到Y32=double(Y(:,:,w)), Y32是视频帧中Y分量满足敏感性的32帧视频是一个355*288*32的三维数组。
第二步:分块;
分块时因为需要块标号,由此造成维数不同,所以只能逐个象素赋值,在Matlab中由BY(t1,t2,t3,j*5+k+1)= double(Y32((64*j+t1),(64*k+t2),i))实现,切成20块,每块为64*64*4的数据块BY ,其中t1是块的杭坐标,t2是块的列坐标,t3帧标号,j*5+k+1是快标号。
第三步:三维DCT变换;
运动图像序列的每一帧可以看作是静止图像 对运动图像序列进行3D DCT,可以视为先对每帧进行2D DCT,再对帧间方向进行1D DCT。
%对每一块的帧间方向进行1D DCT变换
for i=1:64
for j=1:64
dcta(i,j,1:4,index(20))=dct(BY(i,j,1:4,index(20)));
end
end
%对每一块的每一帧进行2D DCT
for i=1:4
dct3a(:,:,i,index(20))=dct2(dcta(:,:,i,index(20)));
end
第四步:嵌入水印过程;
读入二值水印图像由message=double(imread('watermark.bmp'))实现 ,message是一个由0和1组成的二维数组。
将置乱的水印序列嵌入所选的dct系数中,源代码如下所示:
其中dct3a是DCT系数,index[20]是纹理敏感性和亮度敏感性都比较好的一块,S作为密钥由版权所有者保管。
S=60;
T1=S/4;
T2=3*T1;
for i=1:64
for j=1:64
if (w2(i,j)==1)
if (dct3a(i,j,1,index(20))>=0)
dipin(i,j)=dct3a(i,j,1,index(20))-mod(dct3a(i,j,1,index(20)),S)+T1;
end
if (dct3a(i,j,1,index(20))<0)
dipin(i,j)=dct3a(i,j,1,index(20))+mod(abs(dct3a(i,j,1,index(20))),S)-T1;
end
end
if (w2(i,j,:)==0)
if (dct3a(i,j,1,index(20))>=0)
dipin(i,j)=dct3a(i,j,1,index(20))-mod(dct3a(i,j,1,index(20)),S)+T2;
end
if (dct3a(i,j,1,index(20))<0)
dipin(i,j)=dct3a(i,j,1,index(20))+mod(abs(dct3a(i,j,1,index(20))),S)-T2;
end
end
end
end
第五步:三维DCT反变换;
先对块的第一帧进行二维DCT反变换,然后在对其它三帧进行二维反变换,最后对帧间方向进行一维DCT反变换。此过程由Matlab实现如下:
二维DCT反变换:
idcta(:,:,1,index(20))=idct2(dipin);
for i=2:4
idcta(:,:,i,index(20))=idct2(dct3a(:,:,i,index(20)));
end
对每一块的帧间方向进行一维DCT反变换
for i=1:64
for j=1:64
idct3a(i,j,1:4,index(20))=idct(idcta(i,j,1:4,index(20)));
end
end
第六步:把这些数据放入原位置;
第七步:写视频文件;
写视频文件由以下程序实现,其中fileId为写入视频文件的位置。
fileId = fopen('vectra_w.yuv','wb')
fwrite(fileId,Y(:,:,i)' , 'uchar');
fwrite(fileId,u(:,:,i)' , 'uchar');
fwrite(fileId,v(:,:,i)' , 'uchar');
效果如图4-4所示:
图4-4 嵌入水印的视频
4.2水印的检测过程
水印的检测过程就是嵌入水印的逆过程,其Matlab实现如下所示:
filename='vectra_w.yuv';此文件是对含有水印的视频(可能是被攻击过后的视频)文件。
[yuv,Y,u,v,num_f]=loadyuv(filename);
读取视频文件和三维DCT正变换其原理和嵌入过程相同,此处不再赘述。
提取水印数据在Matlab中由以下程序实现,其中S、T1、T2等都是嵌入时的密钥,版权所有者拥有它。
for i=1:64
for j=1:64
if (mod(abs(dct3b(i,j,1,index(20))),S)<((T1+T2)/2))
shuiyin(i,j)=1;
end
if (mod(abs(dct3b(i,j,1,index(20))),S)>=((T1+T2)/2))
shuiyin(i,j)=0;
end
end
end
Arnold反变换如下所示:
w0=shuiyin;
w2=Arnold(w0,Hm,Wm,40);
w0是检测到的水印数据,Hm和Wm是水印数据的行和列,变换次数为40。
写水印文件,检测水印图像存在与否,并且和原水印图像有无差异。
imwrite(w2,'恢复.bmp', 'bmp');
imshow('恢复.bmp');
综上,水印的嵌入主要经过将视频和水印分别进行预处理,然后根据嵌入算法选择水印的合适嵌入位置以及合理嵌入策略,从而得到含水印的视频数据。在各个环节中采用HVS特性来提高视频水印的鲁棒性.最后用相应的视频水印检测策略提取出水印从而实现视频的保护。结果显示本文算法能成功提取出水印图像。
C. 如何给纯文本文件嵌入数字水印,并提取。
纯文本文件(*.txt)是实现不了你的功能的。TXT文件保存的信息量有限,WORD,EXCEL,WPS,PDF的出现就实现你想要的功能。如果你一定要在文本文件的基础上实现你的功能,必须你自己创立一种文件格式,并自己编写一个打开这种文件的软件才能实现你这个效果。当然这个工作量是比较大的,不是几天就可以完成的。PDF是个不错的选择,即可保存文本,又可以保存你说的水印等信息,还可以加密,让别人只能打开,不能编辑。
D. PS怎么批量给图层加水印并导出图片
批量加水印(photoshop)
1、首先把水印做成图案,假设下图的蝴蝶就是水印,水印做好之后点击菜单-定义图案
注意创建的水印背景为透明以及所在的位置(水印在当前图片中的右下角)
至此,批量导出图层到文件步骤完成!
(ps:以上内容纯手打,望尊重劳动成果!不喜勿喷,谢谢!)
E. 数字水印的编程
你把你的图片和程序放到同一个目录下才能够运行!比如说:你把图片存在C盘的一个子目录里,那同时你也要把你的程序保存在这个子目录里面!复制这个地址到matlab的相应位置敲回车键!然后打开文件才可运行!才能够读出图片。
F. 如何给纯文本文件嵌入数字水印,并提取。matlab或其他。
这个东西需要专门研究的吧,你看到网上有申请专利的了,就不是一般人能提供的
G. 用matlab做数字水印嵌入和提取,结果提取出来的水印与原水印完全不同,难道水印图像和原图像有一定的要求
clc
[a type]=myfunction(0.7,0);/a嵌入强度,type攻击类型
x=imread('E:ori1.bmp');
subplot(2,3,1);
image(x);
title('初始待加入水印图像');
w=imread('E:water1.bmp');
subplot(2,3,2);
imshow(w);
title('待用水印图像');
w=w/255;
[cA1,cH1,cV1,cD1]=dwt2(x,'haar');% 对原始图像x进行小波分解
[cA2,cH2,cV2,cD2]=dwt2(cA1,'haar');
[cA3,cH3,cV3,cD3]=dwt2(cA2,'haar');
title('加入水印后的图像');
%(1)放大两倍的操作,(当然提取之前要先缩小两倍)
xxx1=imresize(Y,2,'bicubic');
xxx2=imresize(xxx1,1/2,'bicubic');
Y= double(xxx2);
end
%(8) JPEG压缩
if type==8
A='JPEG压缩,强度=10'
imwrite(uint8(round(Y)),'jpeg_n.jpg','jpg','Quality',10);%按压缩因子Quality的比例,将J2压缩到jpeg_n.jpg中。
end
title('提取结果');
原图像512*512 水印64*64
函数声明为function [a type]=myfunction(a,type)
图像降维,是因为,音频是一维的,所以要用到 reshape 这个函版数。
置乱权,这个 有很多种的,一般用RandStream 这个来设定乱数。
密钥:图像(watermark)算法(比如XOR) 乱数 。
嵌入与提取: 根据算法和处理方法不同方法不同。小波 一般利用平均差值 嵌入的,提取的时候可以根据与差值比较 ,大的时候1小的时候0等方法。
(7)数字水印软件怎么导出文件扩展阅读:
MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。
而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
H. 大虾帮帮我关于 数字水印 !!
三、应用:数字水印
消息认证与数字签名可以应用到数字水印中。
传统水印用来证明纸币或纸张上内容的合法性,数字水印(digital watermark)用以证明一个数字产品的拥有权、真实性。数字水印是嵌在数字产品中的数字信息。可以是作者的序列号、公司标志、有特殊意义的文本等。
数字水印主要用于:阻止非法复制(间接的)、确定所有权(作者、发行人、分发商、合法的最终用户)、确定作品的真实性和完整性(是否伪造、被篡改)、证实收件人、不可否认的传送、法庭证据的验证、赝品甄别、识别文件来源与版本、Web网络巡逻监视盗贼等。
传统水印是人眼可以看得见的,而数字水印可以分为可感知的(Perceptible)和不易感知的(Inperceptible)两种。
可感知的数字水印,主要用于当场声明对产品的所有权、着作权及来源,起到一个宣传广告或约束的作用。可感知水印一般为较淡的或半透明的不碍观瞻的图案;比如电视台节目播放的同时,在某个角落插上电视台的半透明标志。另一个用途是为了在线分发作品,比如先将一个低分辨率的有可见水印的图像免费送人,其水印往往是拥有者或卖主的信息,它提供了寻找原高分辨率作品的线索,若想得到高分辨率的原作品则需付费。有些公司在产品出售前为了在网络上宣传其产品,先做上可逆可见水印分发,付费购买时,再用专用软件将可见水印去掉,加入不可见水印(发行人、分发商、最终用户等的信息)。可见水印还有另一些用途,那就是为了节约带宽、存储空间等原因,在VCD、DVD等电影拷贝中用嵌入不可见水印的方式配上多种语言的副标题和字幕,待播放时由硬件根据需要实时地解出每一帧中的水印文字,将其显示在屏幕上。
可见水印在某些产品中或多或少降低了作品的观赏价值,使其用途相对受到一定限制。不易感知的水印的应用层次更高,制作难度更大。
不易感知的数字水印就像隐形墨水技术中的看不见的文字,隐藏在数字产品中。水印的存在要以不破坏原数据的欣赏价值、使用价值为原则。数字水印按照某种方式植入被保护的信息中,在产生版权纠纷时,通过相应的算法提取出该数字水印,从而验证版权的归属。被保护的信息可以是图像、声音、视频或一般性的电子文档等。为了给攻击者增加去除水印的难度,大多数水印制作方案都在水印的嵌入、提取时使用密钥。
图5.7水印的嵌入与提取
数字水印技术虽然不能阻止盗版活动的发生,但它可以判别对象是否受到保护,监视被保护数据的传播、真伪鉴别和非法拷贝、解决版权纠纷并为法庭提供证据。
数字水印的设计需要考虑以下几个方面:
鲁棒性:是指被保护的信息经过某种改动后抵抗隐藏信息丢失的能力。例如传输过程中的信道噪音、滤波操作、重采样、有损编码压缩、D/ A或 A/ D转换、图像的几何变换(如平移、伸缩、旋转、剪裁等)。
不可检测性(不可见性):是指隐蔽载体与原始载体具有一致的特性。如具有一致的统计噪声分布等,以便使非法拦截者很难判断是否有隐蔽信息。
透明性:是指经过一系列隐藏处理后,原始数据没有明显的降质现象。
安全性:要求隐藏算法有较强的抗攻击能力(篡改、伪造、去除水印),使隐藏信息不会被破坏。如不因文件格式转换而丢失水印,且未经授权者不能检测出水印。
自恢复性:由于经过一些操作或变换后,可能会使原数据产生较大的破坏,如果只从留下的片段数据,仍能恢复隐藏信号,而且恢复过程不需要原数据,这就是自恢复性(自相似性)。
水印容量:水印容量和鲁棒性之间是相互矛盾的。水印容量的增加会带来鲁棒性的下降,对不可见性也有影响。为抵抗各种变换,水印通常需要按照一定的排列方式反复加入多次,当水印容量大时重复次数只好减少,而鲁棒性不好就会导致检测结果的不可靠。
数字水印技术有多种分类。
按作用可划分为鲁棒水印和脆弱水印。前者主要应用于数字作品中标志着作版权信息,需要嵌入的水印能够抵抗常见的编辑处理和有损压缩;后者主要用于完整性保护,判断信号是否被篡改。
按水印的载体可分为图像水印、视频水印、音频水印、文本水印和印刷水印等。
按检测方法可分为明水印和盲水印。在检测过程中需要原数据的技术称为明水印,其鲁棒性较强;在检测过程中不需要原数据的技术称为盲水印。
按内容可分为内容水印和标志水印。内容水印是指水印经过攻击受损后人们仍能通过感觉判断内容;标志水印是指通过检测判断来确定信号中是否有水印标志。
按用途可分为版权保护水印、篡改提示水印、票据防伪水印、隐蔽标识水印、印刷数字水印等。
数字水印其内容可以是任何具有代表意义的信息,如图像、文字、数字、符号等,为了便于隐藏,水印的体积越小越好。用文本作为水印信息是较好的选择,既节约空间又能直读出其含义。数字水印主要应用在版权保护、加指纹、标题与注释、篡改提示、使用控制等领域。
版权保护:即数字媒体的所有者可用密钥产生一个水印,并将其嵌入原始数据,然后公开发布他的水印版本作品。数字媒体包括音像制品、数字广播、DVD、MP3等。当该作品被盗版或出现版权纠纷时,所有者即可从盗版作品或水印版作品中获取水印信号作为依据,从而保护所有者的权益。
版权跟踪:为避免未经授权的拷贝制作和发行,出品人可以将不同用户的ID或序列号作为不同的水印嵌入作品的合法拷贝中,称为数字指纹。其目的是通过授权用户的信息来识别数据的发行拷贝,监控和跟踪使用过程中的非法拷贝。一旦发现未经授权的拷贝,就可以根据此拷贝所恢复出的指纹来确定它的来源。
标题与注释:即将作品的标题、注释等内容以水印形式嵌入该作品中,这种隐式注释不需要额外的带宽,且不易丢失。如在遥感图像等信息中隐藏日期、经纬度等。
篡改提示:当数字作品被用于法庭、医学、新闻及商业时,常需确定它们的内容是否被修改、伪造或特殊处理过。为实现该目的,通常可将原始图象分成多个独立块,再将每个块加入不同的水印。同时可通过检测每个数据块中的水印信号,来确定作品的完整性。与其他水印不同的是,这类水印必须是脆弱的,并且检测水印信号时,不需要原始数据。
使用控制:这种应用的一个典型的例子是DVD防拷贝系统,即将水印信息加入DVD数据中,这样DVD播放机即可通过检测DVD数据中的水印信息而判断其合法性和可拷贝性。从而保护制造商的商业利益。
典型数字水印算法包括以下几种算法。
空域算法:此算法首先把一个密钥输入一个m-序列发生器来产生水印信号,然后排列成2维水印信号,按象素点逐一嵌入到原始图象最不重要的像素位枣最低位(LSB:least significant bits)。这可保证嵌入的水印是不可见的。但是由于使用了图像不重要的像素位,算法的鲁棒性差,水印信息很容易为滤波、图像量化、几何变形的操作破坏,因此不够强壮。
文本水印算法:通过轻微改变字符间距,行间距或是增加、删除字符特征如底纹线等方法来嵌入水印。或是在符号级或语义级加入水印,例如,可以用big替换文本中的large。
基于改变图象数据统计特性的水印算法:Patchwork算法首先随机选取N对象素点,然后通过增加象素对中一个点的亮度值,而相应降低另一个点的亮度值。这样整个图像的平均亮度保持不变。适当地调整参数,Patchwork方法对JPEG压缩、FIR滤波以及图像裁剪有一定的抵抗力,但该方法嵌入的信息量有限。
频域算法:它是利用一个信号可以掩盖另一个较弱的信号这一频率掩盖现象。图象的频域空间中可以嵌入大量的比特而不引起可察的降质,当选择改变中频或低频分量(除去直流分量)来加入水印时,强壮性可大大提高。频域水印技术可以利用通用的离散余弦变换,小波变换和傅立叶变换等变换方法。其优点是隐藏效果好,人眼不能发觉与原始图象间的差别;使用密钥控制,只有知晓伪装密钥的人才能解密;可以有效的抵抗剪切及JEPG等有损压缩编码;水印图象可以是灰度图象。但该类算法的隐藏和提取信息操作复杂,隐藏信息量不能很大。
压缩域算法:水印检测与提取直接在压缩域数据中进行。把水印信号加到表示视频帧的数据流中去。MPEG-2数据流可分为数据头信息、运动向量(用于运动补偿)和DCT编码信号块3部分,该算法只有DCT编码信号块被改变。首先对DCT编码数据块中每一输入的Huffman码进行解码和逆量化,以得到当前数据块的一个DCT系数;其次,把相应水印信号块的变换系数与之相加,从而得到水印叠加的DCT系数,再重新进行量化和Huffman编码,最后对新的Huffman码字的位数n1与原来的无水印系数的码字n0进行比较,只在n1不大于n0的时候,才传输水印码字,否则传输原码字,这就保证了不增加视频数据流位率。该方法中水印信号的引入是一种引起降质的误差信号,而基于运动补偿的编码方案会将一个误差扩散和累积起来,为解决此问题,该算法采取了漂移补偿的方案来抵消因水印信号的引入所引起的视觉变形。
NEC算法:该算法由NEC实验室的COX等人提出,在数字水印算法中占有重要地位。COX认为水印信号应该嵌入源数据中对人的感觉最重要的部分。在频谱空间中,这种重要部分就是低频分量。这样,攻击者在破坏水印的过程中,不可避免地会引起图象质量的严重下降。水印信号应该由具有高斯分布的独立同分布随机实数序列构成。这使得水印经受多拷贝联合攻击的能力大大增强。实现方法是:首先以密钥为种子来产生伪随机序列,该序列具有高斯N(0,1)分布,密钥一般由作者的标识码和图象的哈希值组成,对整幅图象做DCT变换,用伪随机高斯序列来调制(叠加)该图象除直流分量(DC)外的1000个最大的DCT系数。该算法具有较强的鲁棒性、安全性、透明性等。
生理模型算法:人的生理模型包括人类视觉系统HVS(HumanVisualSystem)和人类听觉系统HAS。利用视觉模型的基本思想是利用从视觉模型导出的JND(Just Noticeable Difference)描述来确定在图象的各个部分所能容忍的数字水印信号的最大强度,从而能避免破坏视觉质量。也就是说,利用视觉模型来确定与图象相关的调制掩模,然后再利用其来插入水印。这一方法同时具有好的透明性和强健性。
数字水印在版权标识、隐藏标识和篡改提示、数据防伪上具有不可替代的作用,它将在商业、金融、军事和个人消费上带来巨大的商业利润。自1995年以来,该领域的研究工作已经取得了巨大的进展。随着数字水印技术的日趋成熟,数字水印技术将在电子商务、视频点播、远程教学和远程培训中发挥越来越大的作用。
I. 数字水印系统工作的一般步骤是什么
数字水印处理系统主要由水印嵌入和水印检测两个过程。
对数据变换处理操作的鲁棒性,要求水印本身应能经受得住各种有意无意的攻击。典型的攻击有添加噪音、数据压缩、滤波、重采样,A/D-D/A转换、统计攻击等。
听觉相似性,数字水印是在音频水印载体对象中嵌入一定数量的掩蔽信息,为使得第三方不易察觉这种嵌入信息,需谨慎选择嵌入方法,是嵌入信息前后不产生听觉可感知的变化。
(9)数字水印软件怎么导出文件扩展阅读:
当两个或者多个声音同时作用于人类听觉系统时就会产生掩蔽效应,应用此原理,人们发明了MP3等压缩的数字音频格式,在这些格式的文件里,只突出记录了人耳较为敏感的中频段声音,而对于较高和较低的频率的声音则简略记录。
听觉系统对绝对相位不敏感等特性来嵌入水印。听觉系统的掩蔽特性表明了在音频信号中添加水印的可行性。