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('剪切的影响');