數(shù)字水印matlab程序_第1頁
數(shù)字水印matlab程序_第2頁
數(shù)字水印matlab程序_第3頁
數(shù)字水印matlab程序_第4頁
數(shù)字水印matlab程序_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

./clearall;closeall;clc;V=double<imread<'D:\lena\lena.jpg'>>;imshow<mat2gray<V>>;[iu]=size<V>;%計算V的規(guī)格r=100;%設(shè)置分解矩陣的秩W=rand<i,r>%初始化WH,為非負(fù)數(shù)H=rand<r,u>maviter=100;%最大迭代次數(shù)foriter=1:maviterW=W.*<<V./<W*H>>*H'>;%注意這里的三個公式和文中的是對應(yīng)的W=W./<ones<i,1>*sum<W>>;H=H.*<W'*<V./<W*H>>>;endimg_V=W*H;figure;imshow<mat2gray<img_V>>;首先讀入原始圖象并設(shè)置參數(shù),然后嵌入水印信息,程序代碼如下: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>;%產(chǎn)生水印序列并對其排序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'>;

%

%對原圖象進(jìn)行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的規(guī)格r=100;%設(shè)置分解矩陣的秩W=rand<i,r>%初始化WH,為非負(fù)數(shù)H=rand<r,u>maviter=100;%最大迭代次數(shù)foriter=1:maviterW=W.*<<V./<W*H>>*H'>;%注意這里的三個公式和文中的是對應(yīng)的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>;%產(chǎn)生全矩陣D=zeros<size,size>;BW=zeros<size,size>;Block_dct1=zeros<block,block>;%產(chǎn)生水印,并顯示水印信息;subplot<3,2,1>;Info='dcf';InfoStrSize=length<Info>;%將字符串轉(zhuǎn)換為位數(shù)組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;%算出每格圖像的坐標(biāo)〔x,y,block=8,8*8的圖像小格

block_dct1=H<x:x+block-1,y:y+block-1>;%取原始圖像小格中的像素點(diǎn)到block_dct1矩陣中。block_dct1=dct2<block_dct1>;%對二維數(shù)組進(jìn)行離散余弦變換。dct是有損壓縮如jpeg使用的技術(shù)。Dct是可逆的運(yùn)算

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;%算出每格圖像的坐標(biāo)〔x,y,block=8,8*8的圖像小格

block_dct1=I<x:x+block-1,y:y+block-1>;%取原始圖像小格中的像素點(diǎn)到block_dct1矩陣中。

block_dct2=D<x:x+block-1,y:y+block-1>;Block_dct1=dct2<block_dct1>;%對二維數(shù)組進(jìn)行離散余弦變換。dct是有損壓縮如jpeg使用的技術(shù)。Dct是可逆的運(yùn)算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<'提取出的水印'>;%

%攻擊實(shí)驗

disp<'inputyouchoiceaccordingtothefollowing

imageprocessingoperation:'>;

disp<'0--exit'>;

disp<'1--smoothingpatterns'>;

%添加噪音

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

%濾波

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

%剪切

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

%壓縮

disp<'5--10qualityJPEGcompressing壓縮'>;

%旋轉(zhuǎn)45度

disp<'6--rotate45旋轉(zhuǎn)'>;

%

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旋轉(zhuǎn)'>;

watemark_detect<WImage6,Y1,I0,waterMark1>;

case0

break;

otherwise

error<'youhaveavalidvalue<您的輸入錯誤>'>;

end

d=input<'pleaseinputyouchoice<請輸入您的選擇>:'>;

end

%結(jié)束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>;%根據(jù)密鑰樹分解[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的規(guī)格r=100;%設(shè)置分解矩陣的秩W=rand<i,r>%初始化WH,為非負(fù)數(shù)H=rand<r,u>maviter=100;%最大迭代次數(shù)foriter=1:maviterW=W.*<<V./<W*H>>*H'>;%注意這里的三個公式和文中的是對應(yīng)的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

%

%重構(gòu)圖像,得到嵌入水印的圖象

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<'對嵌入水印的圖像的攻擊實(shí)驗,請輸入選擇項:'>;disp<'1--添加白噪聲'>;disp<'2--高斯低通濾波'>;disp<'3--JPEG壓縮'>;disp<'4--圖像剪切'>;disp<'5--旋轉(zhuǎn)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<'經(jīng)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<'旋轉(zhuǎn)10度后圖像'>;figure<1>;M1=WImage6cl;otherwisedisp<'你輸入的是無效數(shù)字,圖像未受攻擊,將直接檢測水印'>;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>;%防止出現(xiàn)的那些小數(shù),影響10-2進(jìn)制的轉(zhuǎn)換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<'原水印圖像與提取水印圖像互相關(guān)系數(shù)'>NC=nc<mark1,mark>,數(shù)字水印的概念數(shù)字水印技術(shù)是指用信號處理的方法在數(shù)字化的多媒體數(shù)據(jù)中嵌入隱蔽的標(biāo)記,這種標(biāo)記通常是不可見的,只有通過專用的檢測器或閱讀器才能提取。通過這些隱藏在多媒體內(nèi)容中的信息,可以確定內(nèi)容的創(chuàng)建者,判斷內(nèi)容的真實(shí)完整性。數(shù)字水印技術(shù)需要增加魯棒性要求,以對抗各種可能的攻擊。數(shù)字水印的基本特征隱藏性:數(shù)字產(chǎn)品加入數(shù)字水印后,應(yīng)不會引起數(shù)字作品的明顯質(zhì)降,并不易被接收者察覺。安全可靠性:水印體制要商業(yè)應(yīng)用,其算法必須公開。算法的安全性完全取決于密鑰,而不是對算法進(jìn)行保密。另外,數(shù)字水印應(yīng)能對抗非法的探測和解碼,面對非法的攻擊也能以極低的差錯率識別作品,同時數(shù)字水印應(yīng)很難被他人復(fù)制和偽造。魯棒性:能在多種無意或有意的信號處理過程后,仍能保持水印的完整性和鑒別的準(zhǔn)確性。對數(shù)字水印來說,其隱藏水印的魯棒性在實(shí)際應(yīng)用中是有由兩部分組成:〔1在整體數(shù)據(jù)出現(xiàn)失真后,其內(nèi)嵌水印仍存在;〔2在數(shù)據(jù)失真后,水印探測算法仍能準(zhǔn)確探測出水印的存在。計算復(fù)雜度:不同應(yīng)用對水印嵌入算法和提取算法的計算復(fù)雜度有不同的要求。數(shù)字水印的應(yīng)用領(lǐng)域隨著數(shù)字水印技術(shù)的發(fā)展,數(shù)字水印的應(yīng)用領(lǐng)域也得到了擴(kuò)展,數(shù)字水印的基本應(yīng)用領(lǐng)域是版權(quán)保護(hù)、隱藏標(biāo)識、認(rèn)證和安全不可見通信。當(dāng)數(shù)字水印應(yīng)用于版權(quán)保護(hù)時,潛在的應(yīng)用市場在于電子商務(wù)、在線或離線地分發(fā)多媒體內(nèi)容以及大規(guī)模的廣播服務(wù)。數(shù)字水印用于隱藏標(biāo)識時,可在醫(yī)學(xué)、制圖、數(shù)字成像、數(shù)字圖像監(jiān)控、多媒體索引和基于內(nèi)容的檢索等領(lǐng)域得到應(yīng)用。數(shù)字水印的認(rèn)證方面主要ID卡、信用卡、ATM卡等上面數(shù)字水印的安全不可見通信將在國防和情報部門得到廣泛的應(yīng)用。多媒體技術(shù)的飛速發(fā)展和Internet的普及帶來了一系列政治、經(jīng)濟(jì)、軍事和文化問題,產(chǎn)生了許多新的研究熱點(diǎn),以下幾個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論