⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 detection2.m

📁 针对二值图像的广泛应用
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%检测水印                                        %%
%%其中水印图像为二维灰度图像                      %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
close all;
clear all;
%*************************************************************************************
%一:调用原始图像2
data=imread('E:\watermark\use picture\re.bmp','bmp');
[m,n]=size(data)

size=512;
mark=32;
nu=size/16;
number=nu*nu  
subplot(2,2,1);
imagesc(data);
title('original image');
colormap(gray);
axis equal;


%BW=im2bw(data,0.4);
%subplot(2,2,2);
%imagesc(BW);
%title('original BW image');
%colormap(gray);
%axis equal;
%构造二值图像

%*************************************************************************************
%二:作一维DWT,分块并得到Fn(1,n)
[a,h,v,d]=dwt2(data,'db1');
subplot(2,2,2);
imagesc(a);
colormap(gray);
axis equal;
k=1;

for i=1:nu
   for j=1:nu
      m=a(1+8*(i-1):8+8*(i-1),1+8*(j-1):8+8*(j-1));
      block(1:8,1:8,i,j)=m;
   end
end

for i=1:nu
   for j=1:nu
      m=dct2(block(1:8,1:8,i,j));
      d2(1:8,1:8,i,j)=m;
   end
end

for i=1:nu
    for j=1:nu
        m=d2(1,1,i,j);
        Fn2(1,k)=m;
        k=k+1;
    end
end

%***********************************************************************************
%***********************************************************************************
%三:检测水印
Q=0.71;

for k=1:number
    Zn2(1,k)=mod(Fn2(1,k),Q);                     %%%%%%%%%%%%%%Q
end

for k=1:number
    if Zn2(1,k)>=0&Zn2(1,k)<Q/2              %mod==2
        w(1,k)=1;
    elseif Zn2(1,k)>=Q/2&Zn2(1,k)<Q     %mod==0,6
        w(1,k)=0;
    end
end

rand('state',0);
tem=randperm(number);
for j=1:number
    i=w(1,j);
    w2(1,tem(j))=i;  
end

save watermark w2;

data2=zeros(mark,mark);
k=1;

for i=1:mark
   for j=1:mark
        m=w2(1,k);
        data2(i,j)=m;
        k=k+1;
   end
end

imwrite(data2,'E:\watermark\use picture\de_mark.bmp','bmp');
subplot(2,2,2);
imagesc(data2);
title('detect watermark image');
axis equal;

%************************************************************
wm2=[0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,0,0,1,0,1,0,1,1,0,1,0,1,1,1,0,1,1,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,0,0,1,0,1,1,1,1,1,0,0,0,0,1,1,1,0,1,1,0,1,1,1,0,0,1,0,1,1,1,0,1,0,1,0,0,1,1,0,0,0,0,1,1,1,0,1,1,0,0,1,0,0,0,1,0,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,1,0,1,0,1,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,1,0,0,0,0,1,0,1,0,1,0,0,1,1,0,0,0,0,1,1,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,1,1,0,0,1,0,0,0,0,1];                %test%
for i=1:128
    wi(1,i)=0;
end

for i=1:256
    for j=0:2
        a=wm2(1,i);
        wi(1,128+256*j+i)=a;
    end    
end
for i=128*7+1:1024
    wi(1,i)=0;
end    

k=1;
for i=1:mark
    for j=1:mark
        m=wi(1,k);
        w3(i,j)=m;   
        k=k+1;
    end
end

subplot(2,2,3);
imagesc(w3);
title('watermark image');
axis equal;
color(gray);
%******************************************************************
m=0;
n=0;    
for i=1:256
    for j=0:2
        if w2(1,128+256*j+i)==0
                n=n+1;              %1
        else
                m=m+1;
        end
    end
    if m<n
        ws(1,i)=0;                   %%% here we assume that when times of 0 equal times of 1 ,result is 0.
    elseif m>n
        ws(1,i)=1;    
    end    
end   

%*******************************************************************
%四:性能检测
k=0;
for i=1:1024
    if wi(1,i)~=w2(1,i)
        k=k+1;
    end
end    
total=k    

j=0;
for i=1:128
    if wm2(1,i)~=ws(1,i)
        j=j+1;   
    end
end    
error=j    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -