www.pudn.com > Arnold.rar > hide.m, change:2014-07-11,size:955b


function WI=hide(w,m) 
%w为载体图像,m为水印图像,n为置乱次数 
n1=zhouqi(w);n2=zhouqi(m);%计算w,m的置乱周期 
n3=min(n1,n2); 
n=input('请输入置乱次数:'); 
while(1) 
    if n>=n3 || n<=0 
        n=input('n输入不符合条件,请重新输入:'); 
    else 
        break; 
    end 
end 
 
%(1)预处理:进行Arnold置乱 
w1=arnold(w,n);%对载体图像进行置乱 
m1=arnold(m,n);%对水印进行置乱 
 
%(2)寻找水印的嵌入位置 
[a,b]=size(w);[c,d]=size(m); 
y=zeros(c,d); 
x=input('请输入x的初始值(水印嵌入位置):'); 
e=min(a-c,b-d); 
while(1) 
    if x>e||x<=0 
        x=input('x初值不符合要求,请重新输入:'); 
    else 
        break; 
    end 
end 
y(1)=mod(x,4); 
for i=2:c*d 
    y(i)=mod(y(i-1)+n,4); 
end%y在0~3之间 
 
%(3)嵌入水印(在3位平面~6位平面内) 
k=1; 
for i=x:x+c-1 
    for j=x:x+d-1 
        w1(i,j)=bitset(w1(i,j),y(k)+3,m1(i-x+1,j-x+1)); 
        k=k+1; 
    end 
end 
 
%(3)逆变换将图像还原得到WI 
WI=iarnold1(w1,n); 
%WI=iarnold(w1,n,n1);