天天看點

用matlab做文字水印,3 一個用MATLAB編寫的數字水印算法執行個體

3 一個用MATLAB編寫的數字水印算法執行個體

為證明MATLAB的高效性與實作簡便性,給出在Windows98環境下MATLAB5.3中調試通過的完整源程式。

l 嵌入水印

%定義常量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;