数字水印matlab程序_第1页
数字水印matlab程序_第2页
数字水印matlab程序_第3页
数字水印matlab程序_第4页
数字水印matlab程序_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

./clearall;closeall;clc;V=double<imread<'D:\lena\lena.jpg'>>;imshow<mat2gray<V>>;[iu]=size<V>;%计算V的规格r=100;%设置分解矩阵的秩W=rand<i,r>%初始化WH,为非负数H=rand<r,u>maviter=100;%最大迭代次数foriter=1:maviterW=W.*<<V./<W*H>>*H'>;%注意这里的三个公式和文中的是对应的W=W./<ones<i,1>*sum<W>>;H=H.*<W'*<V./<W*H>>>;endimg_V=W*H;figure;imshow<mat2gray<img_V>>;首先读入原始图象并设置参数,然后嵌入水印信息,程序代码如下:clear

%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>;watermark1=randn<1,LENGTH>;subplot<2,2,1>;plot<watermark1>;title<'watermarc:Gaussiannoise'>;subplot<2,2,3>;title<'edgeoforigineimage'>

[Y0,I0]=sort<watermark1>;

%

%读入原图象trueImage=imread<'H:\DocumentsandSettings\sunhw\MyDocuments\MyPictures\biaozhun.bmp'>;

alfa=.1;

LENGTH=2500;

subplot<2,2,2>;

imshow<trueImage>;

title<'origineimage:I'>;

%

%对原图象进行DCT变换dctF1=dct2<'H:\DocumentsandSettings\sunhw\MyDocuments\MyPictures\biaozhun.bmp'>;

[m,n]=size<dctF1>;

%

%找出水印嵌入位置〔幅值较大的n个频域成分A=dctF1<:>;

[Y1,I1]=sort<A>;

x=m*n;

k=LENGTH;

M=zeros<x,1>;

%

%修改幅值较大的n个频域成分的幅值,嵌入水印〔因为两个问题不同,所以有两个注释符fori=1:x

ifk>=1

M<x>=Y1<x>*<1+alfa*Y0<k>>;

k=k-1;

else

M<x>=Y1<x>;

end

x=x-1;

end

N=zeros<x,1>;

x=m*n;

fori=1:x

N<I1<i>>=M<i>;

end

a=1;

forj=1:n

fori=1:m

dctF2<i,j>=N<a>;

a=a+1;

end

end

%

%DCT反变换,得到嵌入水印的图象idctF1=idct2<dctF2>;

subplot<2,2,4>;

imshow<log<abs<idctF1>>,[]>;

title<'embededimage:D'>;

%endI=imread<'D:\lena\1.jpg'>;disp<I>;I=double<I>/255;disp<I>;I=ceil<I>;%%%%%%%%%%显示水印图像%%%%%%%%%%%%%figure<1>;subplot<2,3,1>;imshow<I>,title<'水印图像'>dimI=size<I>;rm=dimI<1>;cm=dimI<2>;%%%%%%%%%%%%%%%5

以下生成水印信息%%mark=I;alpha=0.05;V=imread<'D:\lena\lena.jpg'>;[iu]=size<V>;%计算V的规格r=100;%设置分解矩阵的秩W=rand<i,r>%初始化WH,为非负数H=rand<r,u>maviter=100;%最大迭代次数foriter=1:maviterW=W.*<<V./<W*H>>*H'>;%注意这里的三个公式和文中的是对应的W=W./<ones<i,1>*sum<W>>;H=H.*<W'*<V./<W*H>>>;endk1=H;psnr_cover=double<V>;subplot<2,3,2>,imshow<a0,[]>,title<'载体图像'>;[r,c]=size<a0>;cda0=blkproc<a0,[8,8],'dct2'>;%%%%%%%%%%%%%%%%%%%%嵌入%%%%%%cda1=cda0;

%cda1=256_256fori=1:rm

%i=1:32

forj=1:cm

%j=1:32

x=<i-1>*10;y=<j-1>*10;

ifmark<i,j>==1

k=k1;

else

k=k2;

end

cda1<x+1,y+8>=cda0<x+1,y+8>*<1+alpha*k<1>>;

cda1<x+2,y+7>=cda0<x+2,y+7>*<1+alpha*k<2>>;

cda1<x+3,y+6>=cda0<x+3,y+6>*<1+alpha*k<3>>;

cda1<x+4,y+5>=cda0<x+4,y+5>*<1+alpha*k<4>>;

cda1<x+5,y+4>=cda0<x+5,y+4>*<1+alpha*k<5>>;cda1<x+6,y+3>=cda0<x+6,y+3>*<1+alpha*k<6>>;

cda1<x+7,y+2>=cda0<x+7,y+2>*<1+alpha*k<7>>;

cda1<x+8,y+1>=cda0<x+8,y+1>*<1+alpha*k<8>>;

endend%%%%%嵌入水印后图像%%%%%%%%%%%%%%a1=blkproc<cda1,[8,8],'idct2'>;a_1=uint8<a1>;imwrite<a_1,'withmark.bmp','bmp'>;subplot<2,3,3>,imshow<a1,[]>,title<'嵌入水印后的图像'>;size=256;block=8;blockno=size/block;%一行有32格LENGTH=size*size/64;Alpha1=0.025;Alpha2=0.1;T1=3;I=zeros<size,size>;%产生全矩阵D=zeros<size,size>;BW=zeros<size,size>;Block_dct1=zeros<block,block>;%产生水印,并显示水印信息;subplot<3,2,1>;Info='dcf';InfoStrSize=length<Info>;%将字符串转换为位数组array=zeros<1,InfoStrSize*8>;form=1:InfoStrSize

Infochar=double<Info<m>>;

%%'c'为99forn=1:8

array<8*<m-1>+n>=bitget<Infochar,n>;%%获得Infochar第n位的值

endendplot<array>;title<'原始水印信息'>;%显示原图subplot<3,2,2>;i=imread<'lena.bmp'>;imshow<i,[]>;title<'原始图像'>%显示prewitt为算子的边缘图BW=edge<i,'prewitt'>;%BW=edge<I,’Roberts’>;%BW=edge<I,’Sobel’>;%BW=edge<I,’zerocross’>;subplot<3,2,3>;imshow<BW>;Title<'原始图像边缘图'>;%嵌入水印l=1;k=1;form=1:blockno

forn=1:blockno

x=<m-1>*block+1;

y=<n-1>*block+1;%算出每格图像的坐标〔x,y,block=8,8*8的图像小格

block_dct1=H<x:x+block-1,y:y+block-1>;%取原始图像小格中的像素点到block_dct1矩阵中。block_dct1=dct2<block_dct1>;%对二维数组进行离散余弦变换。dct是有损压缩如jpeg使用的技术。Dct是可逆的运算

BW_8_8=BW<x:x+block-1,y:y+block-1>;%得到边界矩阵。

ifm<=1|n<=1

T=0;

else

T=sum<BW_8_8>;

T=sum<T>;

end

ifT>T1

Alpha=Alpha2;

%block_dct1<1,1>=block_dct1<1,1>*<1+Alpha*mark<k>>;

ifl<=<InfoStrSize*8>

block_dct1<1,1>=block_dct1<1,1>*<1+Alpha*array<l>>;

l=l+1;

end

else

Alpha=Alpha1;

%block_dct1<1,1>=block_dct1<1,1>*<1+Alpha*mark<k>>;

end

Block_dct=idct2<block_dct1>;

D<x:x+block-1,y:y+block-1>=Block_dct;

k=k+1;

endend%显示嵌入水印后的图像subplot<3,2,4>;imshow<D,[]>;title<'嵌入水印图像'>%保存该图像D=uint8<D>;imwrite<D,'marked.bmp'>;2:

%提取水印

D=imread<'marked.bmp'>;

D=double<D>;I=imread<'lena.bmp'>;I=double<I>;array2=zeros<1,InfoStrSize*8>;K=1;l=1;form=1:blockno

forn=1:blockno

x=<m-1>*block+1;

y=<n-1>*block+1;%算出每格图像的坐标〔x,y,block=8,8*8的图像小格

block_dct1=I<x:x+block-1,y:y+block-1>;%取原始图像小格中的像素点到block_dct1矩阵中。

block_dct2=D<x:x+block-1,y:y+block-1>;Block_dct1=dct2<block_dct1>;%对二维数组进行离散余弦变换。dct是有损压缩如jpeg使用的技术。Dct是可逆的运算Block_dct2=dct2<block_dct2>;

BW_8_8=BW<x:x+block-1,y:y+block-1>;%得到边界矩阵。

ifm<=1|n<=1

T=0;

else

T=sum<BW_8_8>;

T=sum<T>;

end

ifT>T1

Alpha=Alpha2;

%block_dct1<1,1>=block_dct1<1,1>*<1+Alpha*mark<k>>;

ifl<=<InfoStrSize*8>

tmp=<Block_dct2<1,1>/Block_dct1<1,1>-1>;

tmp=tmp/Alpha;

tmp2=round<tmp>;

array2<l>=double<tmp2>;

l=l+1;

end

else

Alpha=Alpha1;

%block_dct1<1,1>=block_dct1<1,1>*<1+Alpha*mark<k>>;

end

k=k+1;

endendsubplot<3,2,5>;plot<array2>;title<'提取水印'>;extractedInfo=zeros<InfoStrSize,1>;form=1:InfoStrSize

infochar=0;

forn=1:8

ifarray2<8*<m-1>+n>==1

infochar=infochar+bitset<0,n,1>;

end

end

extractedInfo<m>=infochar+extractedInfo<m>;endresultStr=char<extractedInfo>;subplot<3,2,6>;plot<array2>;r=Arnold<w0,row,colum,times>

fork=1:times

fori=1:row

forj=1:colum

i1=i+j;

j1=i+2*j;

ifi1>row

i1=mod<i1,row>;

end

ifj1>colum

j1=mod<j1,colum>;

end

ifi1==0

i1=row;

end

ifj1==0

j1=colum;

end

w1<i1,j1>=w0<i,j>;

end

end

w0=w1;

end

r=w0;%提取水印

forp=1:size/B

forq=1:size/B

x=<p-1>*B+1;y=<q-1>*B+1;

if<I_W<x,y>-P<x,y>>>0

F<p,q>=1;

else

F<p,q>=0;

end

end

end

figure<5>;imshow<F,[]>;title<'提取出的水印'>;%

%攻击实验

disp<'inputyouchoiceaccordingtothefollowing

imageprocessingoperation:'>;

disp<'0--exit'>;

disp<'1--smoothingpatterns'>;

%添加噪音

disp<'2--addinguniormnoise添加噪音'>;

%滤波

disp<'3--addingfilter[1010]滤波'>;

%剪切

disp<'4--cuttingpartoftheimage剪切'>;

%压缩

disp<'5--10qualityJPEGcompressing压缩'>;

%旋转45度

disp<'6--rotate45旋转'>;

%

d=input<'pleaseinputyouchoice<1,2,3,4,5,6>:'>;

whiled~=0

switchd

case1

watermark_detect<idctF1,Y1,I0,waterMark1>;

case2

WImage2=idctF1;

noise0=10*rand<size<WImage2>>;

WImage2=WImage2+noise0;

figure;

imshow<WImage2,[]>;

title<'addinguniformnoise添加噪音'>;

watemark_detect<WImage2,Y1,I0,waterMark1>;

case3

WImage3=idctF1;

H=fspcial<'gaussian高斯',[10,10],5>;

WImage3=imfilter<WImage3,H>;

figure;

imshow<WImage3,[]>;

title<throughfilter[10,10]滤波'>;

watemark_detect<WImage3,Y1,I0,waterMark1>;

case4

WImage4=idctF1;WImage4<1:128,1;128>=256;

figure;

imshow<WImage4>;

title<'cuttingpartoftheimage剪切'>;

watemark_detect<WImage4,Y1,I0,waterMark1>;

case5

WImage5=idctF1;

WImage5=im2double<WImage5>;

cnum=10;

dctm=dctmtx<8>;

p1=dctm;

p2=dctm.';

imageDCT=blkproc<WImage5,[8,8],'p1*p2*x',dctm,dctm.'>;

DCTvar=im2col<imageDCT,[8,8],'distinct'>.';

n=size<DCTvar,1>;

DCTvar=<sum<DCTvar.*DCTvar>-<sum<DCTvar>/n>.^2>/n;

[dum,order]=sort<DCTvar>;

cnum=64-cnum;

mask=ones<8,8>;

mask<order<1:cnum>>=zeros<1,cnum>;

im88=zeros<9,9>;

im88<1:8,1:8>=mask;

im128128=kron<im88<1:8,1:8>,ones<16>>;

dctm=dctmtx<8>;

p1=dctm.';

p2=mask<1;8,1:8>;

p3=dctm;

Wimage5=bikproc<imageDCT,[8,8],'p1*<x.8p2>*p3',dctm.',mask<1:8,1:8>,dctm>;

figure;

imshow<Wimage5>;

title<'JPEGImage压缩'>;

watemark_detect<WImage5,Y1,I0,waterMark1>;

case6WImage6=idctF1;

WImage6=imrotate<WImage6,45,'bilinear','corp'>;

figure;

imshow<Wimage6>;

title<'rotate45旋转'>;

watemark_detect<WImage6,Y1,I0,waterMark1>;

case0

break;

otherwise

error<'youhaveavalidvalue<您的输入错误>'>;

end

d=input<'pleaseinputyouchoice<请输入您的选择>:'>;

end

%结束f=imread<'watermark.jpg'>;%将含水印图像f归一化,以便于攻击处理。m=max<max<I_W>;I_W=double<I_W>./double<m>;%攻击attack=0;switchattack

case0,

attackf=I_W;

att='未攻击';

case1,

%%1.JPEG压缩

imwrite<I_W,'attackf.jpg','jpg','quality',30>;

attackf=imread<'attackf.jpg'>;

attackf=double<attackf>/255;

att='JPEG压缩';

case2,%%2.高斯低通滤波h=fspecial<'gaussian',3,1>;attackf=filter2<h,I_W>;att='高斯低通滤波';

case3,%%3.直方图均衡化attackf=histeq<I_W>;att='直方图均衡化';

case4,%%4.图像增亮attackf=imadjust<I_W,[],[0.4,1]>;att='图像增亮';

case5,%%5.图像变暗attackf=imadjust<I_W,[],[0,0.85]>;att='图像变暗';

case6,%%6.增加对比度attackf=imadjust<I_W,[0.3,0.6],[]>;att='增加对比度';

case7,%%7.降低对比度attackf=imadjust<I_W,[],[0.2,0.8]>;att='降低对比度';

case8,%%8.添加高斯噪声attackf=imnoise<I_W,'gaussian',0,0.01>;att='添加高斯噪声';

case9,%%9.椒盐噪声attackf=imnoise<I_W,'salt&pepper',0.06>;att='椒盐噪声';

case10,%%10.添加乘积性噪声attackf=imnoise<I_W,'speckle',0.08>;att='添加乘积性噪声';end;%攻击后处理I_W=attackf.*double<m>;figure<2>;imshow<uint8<I_W>;%显示水印嵌入图攻击后效果title<att>;imwrite<uint8<I_W>,'watermark.jpg'>;%提取水印%clear;a=imread<'watermark.jpg'>;t=sdwt_ex<double<a>,'db2',tkey>;%根据密钥树分解[w,map]=extract<t,tkey>;%抽取水印[r,c]=size<w>;figure<3>;fori=1:r

subplot<ceil<r/3>,3,i>

imshow<255-100*abs<uint8<reshape<w<i,:>,map<1>,map<2>>>>>;

title<strcat<'抽取水印图',num2str<i>>>;end;V=imread<'D:\lena\lena.jpg'>;Alfa=0.05;LENGTH=2500;[iu]=size<V>;%计算V的规格r=100;%设置分解矩阵的秩W=rand<i,r>%初始化WH,为非负数H=rand<r,u>maviter=100;%最大迭代次数foriter=1:maviterW=W.*<<V./<W*H>>*H'>;%注意这里的三个公式和文中的是对应的W=W./<ones<i,1>*sum<W>>;H=H.*<W'*<V./<W*H>>>;end[Y1,10]=sort<H>L=imread<'D:\lena\1.jpg'>;[Y0,10]=sort<L>x=m*n;

k=LENGTH;

M=zeros<x,1>;

%

%修改幅值较大的n个频域成分的幅值,嵌入水印〔因为两个问题不同,所以有两个注释符

fori=1:x

ifk>=1

M<x>=Y1<x>*<1+alfa*Y0<k>>;

k=k-1;

else

M<x>=Y1<x>;

end

x=x-1;

end

N=zeros<x,1>;

x=m*n;

fori=1:x

N<I1<i>>=M<i>;

end

a=1;

forj=1:n

fori=1:m

N<i,j>=N<a>;

a=a+1;

end

end

%

%重构图像,得到嵌入水印的图象

B=W.*H;figure<1>;

imshow<B>;

title<'嵌入水印后的图象'>;

endclearall;clc;start_time=cputime;%%%%%%%%%%%%读取水印图像%%%%%%%%I=imread<'mark.bmp'>;I=rgb2gray<I>;I=double<I>/255;I=ceil<I>;%%%%%%%%%%显示水印图像%%%%%%%%%%%%%figure<1>;subplot<2,3,1>;imshow<I>,title<'水印图像'>dimI=size<I>;rm=dimI<1>;cm=dimI<2>;%%%%%%%%%%%%%%%5以下生成水印信息%%mark=I;alpha=50,k1=randn<1,8>;k2=randn<1,8>;a0=imread<'lena.bmp'>;psnr_cover=double<a0>;subplot<2,3,2>,imshow<a0,[]>,title<'载体图像'>;[r,c]=size<a0>;cda0=blkproc<a0,[8,8],'dct2'>;%%%%%%%%%%%%%%%%%%%%%嵌入%%%%%%%%%%cda1=cda0;%cda1=256_256fori=1:rm%i=1:32forj=1:cm%j=1:32x=<i-1>*8;y=<j-1>*8;ifmark<i,j>==1k=k1;elsek=k2;endcda1<x+1,y+8>=cda0<x+1,y+8>+alpha*k<1>;cda1<x+2,y+7>=cda0<x+2,y+7>+alpha*k<2>;cda1<x+3,y+6>=cda0<x+3,y+6>+alpha*k<3>;cda1<x+4,y+5>=cda0<x+4,y+5>+alpha*k<4>;cda1<x+5,y+4>=cda0<x+5,y+4>+alpha*k<5>;cda1<x+6,y+3>=cda0<x+6,y+3>+alpha*k<6>;cda1<x+7,y+2>=cda0<x+7,y+2>+alpha*k<7>;cda1<x+8,y+1>=cda0<x+8,y+1>+alpha*k<8>;endend%%%%%嵌入水印后图像%%%%%%%%%%%%%%a1=blkproc<cda1,[8,8],'idct2'>;a_1=uint8<a1>;imwrite<a_1,'withmark.bmp','bmp'>;subplot<2,3,3>,imshow<a1,[]>,title<'嵌入水印后的图像'>;disp<'嵌入水印处理时间'>;embed_time=cputime-start_time,%%%%%%%%disp<'对嵌入水印的图像的攻击实验,请输入选择项:'>;disp<'1--添加白噪声'>;disp<'2--高斯低通滤波'>;disp<'3--JPEG压缩'>;disp<'4--图像剪切'>;disp<'5--旋转10度'>;disp<'6--直接检测水印'>;disp<'其他--不攻击'>;d=input<'请输入选择〔1-6:'>;start_time=cputime;figure<1>;switchdcase6subplot<2,3,4>;imshow<a1,[]>;title<'未受攻击的含水印图像'>;M1=a1;case1WImage2=a1;noise0=20*randn<size<WImage2>>;WImage2=WImage2+noise0;subplot<2,3,4>;imshow<WImage2,[]>;title<'加入白噪声后图像'>;M1=WImage2;M_1=uint8<M1>;imwrite<M_1,'whitenoise.bmp','bmp'>;case2WImage3=a1;H=fspecial<'gaussian',[4,4],0.2>;WImage3=imfilter<WImage3,H>;subplot<2,3,4>;imshow<WImage3,[]>;title<'高斯低通滤波后图像'>;M1=WImage3;M_1=uint8<M1>;imwrite<M_1,'gaussian.bmp','bmp'>;case4WImage4=a1;WImage4<1:64,1:512>=512;%WImage4<224:256,1:256>=256;%WImage4<1:256,224:256>=256;%WImage4<1:256,1:32>=256;WImage4cl=mat2gray<WImage4>;figure<2>;subplot<1,1,1>;%subplot<2,3,4>;imshow<WImage4cl>;title<'部分剪切后图像'>;figure<1>;M1=WImage4cl;%M_1=uint8<M1>;%imwrite<M_1,'cutpart.bmp','bmp'>;case3WImage5=a1;WImage5=im2double<WImage5>;cnum=10;dctm=dctmtx<8>;P1=dctm;P2=dctm.';imageDCT=blkproc<WImage5,[8,8],'P1*x*P2',dctm,dctm.'>;DCTvar=im2col<imageDCT,[8,8],'distinct'>.';n=size<DCTvar,1>;DCTvar=<sum<DCTvar.*DCTvar>-<sum<DCTvar>/n>.^2>/n;[dum,order]=sort<DCTvar>;cnum=64-cnum;mask=ones<8,8>;mask<order<1:cnum>>=zeros<1,cnum>;im88=zeros<9,9>;im88<1:8,1:8>=mask;im128128=kron<im88<1:8,1:8>,ones<16>>;dctm=dctmtx<8>;P1=dctm.';P2=mask<1:8,1:8>;P3=dctm;WImage5=blkproc<imageDCT,[8,8],'P1*<x.*P2>*P3',dctm.',mask<1:8,1:8>,dctm>;WImage5cl=mat2gray<WImage5>;%figure<2>;subplot<2,3,4>;imshow<WImage5cl>;title<'经JPEG压缩后图像'>;%figure<1>;M1=WImage5cl;case5WImage6=a1;WImage6=imrotate<WImage6,10,'bilinear','crop'>;WImage6cl=mat2gray<WImage6>;figure<2>;subplot<1,1,1>;imshow<WImage6cl>;title<'旋转10度后图像'>;figure<1>;M1=WImage6cl;otherwisedisp<'你输入的是无效数字,图像未受攻击,将直接检测水印'>;subplot<2,3,4>;imshow<a1,[]>;title<'未受攻击的含水印图像'>;M1=a1;end%6666666666666666666666666666666666666666提取水印%%%%%psnr_watermarked=M1;dca1=blkproc<M1,[8,8],'dct2'>;p=zeros<1,8>;fori=1:dimI<1>forj=1:dimI<2>%j=1:32x=<i-1>*8;y=<j-1>*8;p<1>=dca1<x+1,y+8>;p<2>=dca1<x+2,y+7>;p<3>=dca1<x+3,y+6>;p<4>=dca1<x+4,y+5>;p<5>=dca1<x+5,y+4>;p<6>=dca1<x+6,y+3>;p<7>=dca1<x+7,y+2>;p<8>=dca1<x+8,y+1>;%sd1=sum<sum<p.*k1>>/sqrt<sum<sum<p.^2>>>;%sd2=sum<sum<p.*k2>>/sqrt<sum<sum<p.^2>>>;%ifsd1>sd2ifcorr2<p,k1>>corr2<p,k2>,warningoffMATLAB:divideByZero;mark1<i,j>=1;elsemark1<i,j>=0;endendend%mark=round<mark1>;%防止出现的那些小数,影响10-2进制的转换subplot<2,3,5>;imshow<mark1,[]>,title<'提取的水印图像'>;subplot<2,3,6>;imwrite<mark1,'getmark.bmp','bmp'>;imshow<mark>,title<'原嵌入水印比较'>;%%%%time%%%%%%%disp<'攻击与提取处理时间'>attack_recover_time=cputime-start_time,%%%%%psnr%%%%%%%disp<'载体图像与含水印图像峰值信噪比'>PSNR=psnr<psnr_cover,psnr_watermarked,c,r>,%%%%%%%Oringinalmarkandmarktest%%%%%%%%%%disp<'原水印图像与提取水印图像互相关系数'>NC=nc<mark1,mark>,数字水印的概念数字水印技术是指用信号处理的方法在数字化的多媒体数据中嵌入隐蔽的标记,这种标记通常是不可见的,只有通过专用的检测器或阅读器才能提取。通过这些隐藏在多媒体内容中的信息,可以确定内容的创建者,判断内容的真实完整性。数字水印技术需要增加鲁棒性要求,以对抗各种可能的攻击。数字水印的基本特征隐藏性:数字产品加入数字水印后,应不会引起数字作品的明显质降,并不易被接收者察觉。安全可靠性:水印体制要商业应用,其算法必须公开。算法的安全性完全取决于密钥,而不是对算法进行保密。另外,数字水印应能对抗非法的探测和解码,面对非法的攻击也能以极低的差错率识别作品,同时数字水印应很难被他人复制和伪造。鲁棒性:能在多种无意或有意的信号处理过程后,仍能保持水印的完整性和鉴别的准确性。对数字水印来说,其隐藏水印的鲁棒性在实际应用中是有由两部分组成:〔1在整体数据出现失真后,其内嵌水印仍存在;〔2在数据失真后,水印探测算法仍能准确探测出水印的存在。计算复杂度:不同应用对水印嵌入算法和提取算法的计算复杂度有不同的要求。数字水印的应用领域随着数字水印技术的发展,数字水印的应用领域也得到了扩展,数字水印的基本应用领域是版权保护、隐藏标识、认证和安全不可见通信。当数字水印应用于版权保护时,潜在的应用市场在于电子商务、在线或离线地分发多媒体内容以及大规模的广播服务。数字水印用于隐藏标识时,可在医学、制图、数字成像、数字图像监控、多媒体索引和基于内容的检索等领域得到应用。数字水印的认证方面主要ID卡、信用卡、ATM卡等上面数字水印的安全不可见通信将在国防和情报部门得到广泛的应用。多媒体技术的飞速发展和Internet的普及带来了一系列政治、经济、军事和文化问题,产生了许多新的研究热点,以下几个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论