www.pudn.com > testimage.rar > testimage.m


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%    测试hash算法抵抗高斯低通滤波的能力 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
% clear all; 
% %I = imread('E:\图片\256图象\brain.bmp'); 
% %m_size = size(I); 
% filename = '1'; 
% mpath = 'E:\图片\连续读入图象\'; 
% fullname = [mpath filename]; 
%  
% hhashing = @hashing; 
% hhamdis = @hamdis; 
% m_dist = ones(1,11); 
%  
% for ser = 1:15    
%     index = 1; 
%     I = imread(fullname,'bmp'); 
%     m_size = size(I); 
%     originhash = feval(hhashing,I); 
%     filename = str2num(filename); 
%     filename = filename+1; 
%     filename = num2str(filename);    
%     fullname = [mpath filename]; 
%     for xigema = 0.1:0.05:0.6    
%         h = fspecial('gaussian',[3 3],xigema); 
%         imafter = filter2(h,I,'same'); 
%         gauhash = feval(hhashing,imafter); 
%         m_dist(index) = feval(hhamdis,originhash,gauhash); 
%         index = index+1; 
%     end 
%      mdist(ser,:) = m_dist; 
% end 
% if size(mdist,1)==1 
%     m_dist = mdist; 
% else 
%     m_dist = sum(mdist)/size(mdist,1); 
% end 
% x = 0.1:0.05:0.6; 
% save('gaosi.mat','m_dist'); 
% figure(1); 
% plot(x,m_dist,x,m_dist,'r*'); 
% axis([0.1,0.6,0,0.02]); 
% xlabel('高斯低通滤波掩模的标准差'); 
% ylabel('规范化的汉明距离'); 
% title('高斯低通滤波的影响'); 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%    测试hasn算法抵抗中值滤波的能力 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
clear all; 
%I = imread('E:\图片\256图象\baboon.bmp'); 
 
filename = '1'; 
mpath = 'E:\图片\连续读入图象\'; 
fullname = [mpath filename]; 
 
hhashing = @hashing; 
hhamdis = @hamdis; 
m_dist = ones(1,4); 
 
for ser = 1:15    
    index = 1; 
    I = imread(fullname,'bmp'); 
    originhash = feval(hhashing,I); 
    filename = str2num(filename); 
    filename = filename+1; 
    filename = num2str(filename);    
    fullname = [mpath filename]; 
     
    for mmed = 3:2:11     
        imafter = medfilt2(I,[mmed mmed]); 
        medhash = feval(hhashing,imafter); 
        m_dist(index) = feval(hhamdis,originhash,medhash); 
        index = index+1; 
    end 
    mdist(ser,:) = m_dist; 
end 
 
if size(mdist,1)==1 
    m_dist = mdist; 
else 
    m_dist = sum(mdist)/size(mdist,1); 
end 
m_dist = [0,m_dist]; 
x = 1:2:11; 
save('zhongzhi.mat','m_dist'); 
figure(2); 
plot(x,m_dist,x,m_dist,'r*'); 
axis([1,11,0,0.2]); 
xlabel('中值滤波器的大小'); 
ylabel('规范化的汉明距离'); 
title('中值滤波的影响'); 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%    测试hasn算法抵抗均值滤波的能力 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
clear all; 
%I = imread('E:\图片\256图象\brain.bmp'); 
%m_size = size(I); 
filename = '1'; 
mpath = 'E:\图片\连续读入图象\'; 
fullname = [mpath filename]; 
 
hhashing = @hashing; 
hhamdis = @hamdis; 
m_dist = ones(1,5); 
 
 
for ser = 1:15   
    index = 1; 
    I = imread(fullname,'bmp'); 
    m_size = size(I); 
    originhash = feval(hhashing,I); 
    filename = str2num(filename); 
    filename = filename+1; 
    filename = num2str(filename);    
    fullname = [mpath filename]; 
 
    for mave = 2:1:6    
        h = fspecial('average',[mave mave]); 
        imafter = filter2(h,I,'same'); 
        avehash = feval(hhashing,imafter); 
        m_dist(index) = feval(hhamdis,originhash,avehash); 
        index = index+1; 
    end 
    mdist(ser,:) = m_dist; 
end 
if size(mdist,1)==1 
    m_dist = mdist; 
else 
    m_dist = sum(mdist)/size(mdist,1); 
end 
m_dist = [0,m_dist]; 
x = 1:6; 
save('junzhi.mat','m_dist'); 
figure(3); 
plot(x,m_dist,x,m_dist,'r*'); 
axis([1,6,0,0.1]); 
xlabel('均值滤波器的大小'); 
ylabel('规范化的汉明距离'); 
title('均值滤波的影响'); 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%     测试hash算法抵抗均匀噪声的能力 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
clear all; 
% I = imread('E:\图片\256图象\brain.bmp'); 
% m_size = size(I); 
filename = '1'; 
mpath = 'E:\图片\连续读入图象\'; 
fullname = [mpath filename]; 
 
hhashing = @hashing; 
hhamdis = @hamdis; 
m_dist = ones(1,20); 
 
for ser = 1:15  
    index = 1; 
    I = imread(fullname,'bmp'); 
    m_size = size(I); 
    originhash = feval(hhashing,I); 
    filename = str2num(filename); 
    filename = filename+1; 
    filename = num2str(filename);    
    fullname = [mpath filename]; 
    for sigema = 1:1:20      
        x = sigema * rand(256); 
        imafter = double(I)+x; 
        avehash = feval(hhashing,imafter); 
        m_dist(index) = feval(hhamdis,originhash,avehash); 
        index = index+1; 
    end 
    mdist(ser,:) = m_dist; 
end 
if size(mdist,1)==1 
    m_dist = mdist; 
else 
    m_dist = sum(mdist)/size(mdist,1); 
end 
m_dist = [0,m_dist]; 
x = 0:1:20; 
save('junyunnoise.mat','m_dist'); 
figure(4); 
plot(x,m_dist,x,m_dist,'r*'); 
axis([0,20,0,0.3]); 
xlabel('均匀分布噪声的[0 20]'); 
ylabel('规范化的汉明距离'); 
title('加性均匀噪声的影响'); 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%     测试hash算法抵抗高斯噪声的能力 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
clear all; 
%I = imread('E:\图片\256图象\brain.bmp'); 
%m_size = size(I); 
filename = '1'; 
mpath = 'E:\图片\连续读入图象\'; 
fullname = [mpath filename]; 
 
hhashing = @hashing; 
hhamdis = @hamdis; 
m_dist = ones(1,20); 
 
for ser = 1:15    
    index = 1; 
    I = imread(fullname,'bmp'); 
    m_size = size(I); 
    originhash = feval(hhashing,I); 
    filename = str2num(filename); 
    filename = filename+1; 
    filename = num2str(filename);    
    fullname = [mpath filename]; 
    for sigema = 1:1:20      
        x = sqrt(sigema) * randn(256); 
        imafter = double(I)+x; 
        gauhash = feval(hhashing,imafter); 
        m_dist(index) = feval(hhamdis,originhash,gauhash); 
        index = index+1; 
    end 
    mdist(ser,:) = m_dist; 
end 
if size(mdist,1)==1 
    m_dist = mdist; 
else 
    m_dist = sum(mdist)/size(mdist,1); 
end 
m_dist = [0,m_dist]; 
x = 0:1:20; 
save('gaosinoise.mat','m_dist'); 
figure(5); 
plot(x,m_dist,x,m_dist,'r*'); 
axis([0,20,0,0.05]); 
xlabel('高斯分布噪声的方差'); 
ylabel('规范化的汉明距离'); 
title('加性高斯噪声的影响'); 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%     测试hash算法抵抗旋转攻击的能力 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
clear all; 
%I = imread('E:\图片\256图象\baboon.bmp'); 
% I = imresize(I,[64 64],'bilinear'); 
filename = '1'; 
mpath = 'E:\图片\连续读入图象\'; 
fullname = [mpath filename]; 
 
 
hhashing = @hashing; 
hhamdis = @hamdis; 
m_dist = ones(1,10); 
 
for ser = 1:15     
    theta = 0; 
    I = imread(fullname,'bmp'); 
    originhash = feval(hhashing,I); 
    filename = str2num(filename); 
    filename = filename+1; 
    filename = num2str(filename);    
    fullname = [mpath filename]; 
 
    for theta = 1:10     
        Imrotate = imrotate(I,-theta,'bilinear','crop'); 
        rotatehash = feval(hhashing,Imrotate); 
        m_dist(theta) = feval(hhamdis,originhash,rotatehash); 
    end 
    mdist(ser,:) = m_dist; 
end 
if size(mdist,1)==1 
    m_dist = mdist; 
else 
    m_dist = sum(mdist)/size(mdist,1); 
end 
m_dist = [0,m_dist]; 
x = 0:1:10; 
save('xuanzhuan.mat','m_dist'); 
figure(6); 
plot(x,m_dist,x,m_dist,'r*'); 
axis([0,10,0,0.3]); 
xlabel('图象旋转的角度'); 
ylabel('规范化的汉明距离'); 
title('旋转的影响'); 
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%    测试hash算法抵抗尺寸变换的能力 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
clear all; 
%I = imread('E:\图片\256图象\brain.bmp'); 
 
filename = '1'; 
mpath = 'E:\图片\连续读入图象\'; 
fullname = [mpath filename]; 
 
hhashing = @hashing; 
hhamdis = @hamdis; 
m_dist = ones(1,20); 
 
for ser = 1:15    
    index = 1; 
    I = imread(fullname,'bmp'); 
    m_size = size(I); 
    originhash = feval(hhashing,I); 
    filename = str2num(filename); 
    filename = filename+1; 
    filename = num2str(filename);    
    fullname = [mpath filename]; 
 
    for i = 0.1:0.1:2       
        Imscale = imresize(I,i,'bilinear'); 
        Imscale = imresize(Imscale,m_size,'bilinear'); 
        scalehash = feval(hhashing,Imscale); 
        m_dist(index) = feval(hhamdis,originhash,scalehash); 
        index = index+1; 
    end 
    mdist(ser,:) = m_dist; 
end 
if size(mdist,1)==1 
    m_dist = mdist; 
else 
    m_dist = sum(mdist)/size(mdist,1); 
end 
x = 0.1:0.1:2; 
save('scale.mat','m_dist'); 
figure(7); 
plot(x,m_dist,x,m_dist,'r*'); 
axis([0,2,0,0.2]); 
xlabel('缩放为原图的百分比'); 
ylabel('规范化的汉明距离'); 
title('尺寸变换的影响'); 
 
 
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%    测试hash算法抵抗剪切攻击的能力 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
clear all; 
%I = imread('E:\图片\256图象\brain.bmp'); 
%m_size = size(I); 
filename = '1'; 
mpath = 'E:\图片\连续读入图象\'; 
fullname = [mpath filename]; 
 
 
hhashing = @hashing; 
hhamdis = @hamdis; 
m_dist = ones(1,10); 
 
for ser = 1:15 
    I = imread(fullname,'bmp'); 
    m_size = size(I); 
    originhash = feval(hhashing,I); 
    filename = str2num(filename); 
    filename = filename+1; 
    filename = num2str(filename);    
    fullname = [mpath filename]; 
    for mpercent = 1:10 
        mtop = floor(m_size(1)*(mpercent/100));  %只舍不入 
        mleft = mtop; 
        mwidth = m_size(1)-2*mtop-1; 
        mheight = mwidth; 
        rect = [mleft mtop mwidth mheight]; 
        Imcrop = imcrop(I,rect); 
        Imcrop = imresize(Imcrop,m_size,'bilinear'); 
        crophash = feval(hhashing,Imcrop); 
        m_dist(mpercent) = feval(hhamdis,originhash,crophash);   
    end 
    mdist(ser,:) = m_dist; 
end 
if size(mdist,1)==1 
    m_dist = mdist; 
else 
    m_dist = sum(mdist)/size(mdist,1); 
end 
m_dist = [0,m_dist]; 
x = 0:2:20; 
save('jianqie.mat','m_dist'); 
figure(8); 
plot(x,m_dist,x,m_dist,'r*'); 
axis([0,20,0,0.3]); 
xlabel('图象长和宽所剪切掉的百分比'); 
ylabel('规范化的汉明距离'); 
title('剪切的影响');