一、14种图像攻击
( a )JPEG压缩。质量因子Q分别为10%、30%、50%、70%、90%。
( b )高斯噪声。平均μ为0,方差σ分别为0.001、0.005和0.1。
( c )椒盐噪音。平均μ为0,方差σ分别为0.001、0.005、0.1。
( d )散斑噪声。平均μ为0,方差σ分别为0.01、0.05、0.1。
( e )平均滤波。窗口大小分别为3 × 3、5 × 5和7 × 7。
( f )中值滤波。窗口大小分别为3 × 3、5 × 5和7 × 7。
( g )高斯低通滤波。窗口大小分别为3 × 3、5 × 5和7 × 7。
( h )中心修剪,比例为20%和50%。
( i )边缘修剪,比例为10%和20%。
( j )旋转。旋转角度分别为10°、30°、50°。
( k )平移。由于数据库的图像大小不同,在Holidays数据库中的平移距离分别为是(80,50)、(160,100)和(320,200)。ImageNet数据库中的平移距离为分别为(16,10),(32,20)、(40,25)。
( l )缩放。缩放比例分别为0.3、0.5、0.75、1.5和3。
( m )颜色直方图均衡化。
( n )伽马校正系数为0.8。
二、matlab实现
1、JPEG压缩攻击
% jpegattack.m
function jpegattack_img=jpegattack(img,qualityfactor)
imwrite(img,'jpegattackimage.jpg','jpg','quality',qualityfactor);
jpegattack_img = imread('jpegattackimage.jpg');
end
2、高斯噪声攻击
% gaussianattack.m
function gaussianattack_img=gaussianattack(img,var1)
gaussianattack_img=imnoise(img,'gaussian',0,var1);
end
3、椒盐噪声攻击
% saltpepperattack.m
function saltpepperattack_img=saltpepperattack(img,var2)
saltpepperattack_img=imnoise(img,'salt & pepper',var2);
end
4、散斑噪声攻击
% speckleattack.m
function speckleattack_img=speckleattack(img,var3)
speckleattack_img=imnoise(img,'speckle',var3);
end
5、高斯低通滤波攻击
% gaussianlowpassattack.m
function gaussianlowpassattack_img=gaussianlowpassattack(img,k)
h = fspecial('gaussian',[k,k]);
% B=imfilter(A,h,options,...)其中options可以是:
% 'symmetric'边界之外的输入数组值是通过沿数组边界对数组进行镜面反射得到
% 'replicate'边界之外的输入数组值假定为等于最近的数组边界值
% 'circular'边界之外的输入数组值是通过隐式假设输入数组具有周期性来计算(以上为填充选项)
% 'same'默认选项.输出数组与输入数组大小相同
% 'full'输出数组是完全滤波后的结果(以上为输出大小选项)
% 'corr'默认选项.使用相关性执行多维滤波,这与filter2执行滤波的方式相同
% 'conv'使用卷积执行多维滤波(以上为相关性和卷积选项)
gaussianlowpassattack_img=imfilter(img,h,'replicate');
end
6、均值滤波攻击
% meanattack.m
function meanattack_img=meanattack(img,n)
% 第一种方法
% h=fspecial('average',[n,n]);
% meanattack_img=imfilter(img,h);
% 第二种方法
% imfilter函数为多维图像的 N 维滤波
h=fspecial('average',[n,n]);
img_m(:,:,1)=imfilter(img(:,:,1),h);
img_m(:,:,2)=imfilter(img(:,:,2),h);
img_m(:,:,3)=imfilter(img(:,:,3),h);
meanattack_img=img_m;
end
7、中值滤波攻击
% medianattack.m
function medianattack_img=medianattack(img,m)
% medfilt2函数为二维中位数滤波,第一个参数必须是二维的.
% 当需要对彩图像进行中值滤波时,需要分别对三个R,G,B通道进行中值滤波即可
medianattack_img(:,:,1)=medfilt2(img(:,:,1),[m,m]);
medianattack_img(:,:,2)=medfilt2(img(:,:,2),[m,m]);
medianattack_img(:,:,3)=medfilt2(img(:,:,3),[m,m]);
end
8、中心裁剪攻击
% centeredattack.m
function centeredattack_img=centeredattack(img,percentage)
img_cc=img;
row=size(img_cc,1);% row为图像的长
col=size(img_cc,2);% col为图像的宽
row_begin=round((row-round(row*percentage))/2);
row_end=round((col-round(col*percentage))/2)+round(row*percentage);
col_begin = round((col-round(col*percentage))/2);
col_end = round((col-round(col*percentage))/2) + round(col*percentage);
img_cc(row_begin:row_end,col_begin:col_end,:) = 0;% 将选中的区域的值置为0,即显示为白色
centeredattack_img=img_cc;
end
9、边缘裁剪攻击
% edgeattack.m
function edgeattack_img=edgeattack(img,percentage)
img_ec=img;
row=size(img_ec,1);
col=size(img_ec,2);
row_half=round(round(row*percentage)/2);
col_half=round(round(col*percentage)/2);
% 将图像四条边缘条值置为0,即显示为黑色
img_ec(1:row_half,:,:) = 0;
img_ec(:,1:col_half,:) = 0;
img_ec((row-row_half):row,:,:) = 0;
img_ec(:,(col-col_half):col,:) = 0;
edgeattack_img=img_ec;
end
10、旋转攻击
% rotationattack.m
function rotationattack_img=rotationattack(img,angle)
% J=imrotate(I,angle,method,bbox)中method是文本字符串,需要引号引出,method包括:'nearest'-最临近插值(默认值)、'bilinear'-双线性插值、'bicubic’-双三次插值
% bbox是文本字符串,需要引号引出,bbox包括:'crop’输出的图像B和输入的图像A保持一致的尺寸,裁剪旋转的图像至合适的大小;'loose’输出足够容纳整个旋转图像的图像B,图像B通常比图像A大-默认值
rotationattack_img=imrotate(img,angle,'bicubic','crop');% 此函数将图像I围绕其中心点逆时针方向旋转angle度。要顺时针旋转图像,请为angle指定负值。
end
11、平移攻击
% translationattack.m
function translationattack_img=translationattack(img,location)
row=size(img,1);
col=size(img,2);
image_t=zeros(row,col,3,'uint8');% 注意一定需要加上'uint8',否则只能显示白色图像
image_t((location(1,1)+1):row,(location(1,2)+1):col,:,:)=img(1:(row-location(1,1)),1:(col-location(1,2)),:,:);
translationattack_img=image_t;
end
12、缩放攻击
% rescalingattack.m
function rescalingattack_img=rescalingattack(img,scale)
row=size(img,1);
col=size(img,2);
row_scaling=round(row*scale);% 考虑小数的情况,取四舍五入
col_scaling=round(col*scale);
image_s=imresize(img,[row_scaling,col_scaling]);
rescalingattack_img=image_s;
end
13、颜色直方图均衡化攻击
% histogramattack.m
function histogramattack_img=histogramattack(img)
% histeq函数使用直方图均衡增强对比度(主要针对灰度图像使用,若对RGB图像处理,则分别需要对三个r,g,b通道处理)
% J=histeq(I,n) 指定直方图均衡后的灰度级数n,默认值为64
% histogramattack_img=histeq(img)使用该语句只能处理一个通道
r=img(:,:,1);
g=img(:,:,2);
b=img(:,:,3);
image_h(:,:,1)=histeq(r,256);
image_h(:,:,2)=histeq(g,256);
image_h(:,:,3)=histeq(b,256);
histogramattack_img=image_h;
end
14、伽马校正攻击
% gammaattack.m
function gammaattack_img=gammaattack(img,gamma)
% 第一种写法
% img=im2double(img);% 若不使用im2double,会报错:错误使用 .^, 整数只能提升为正整数幂
% gammaattack_img=img.^gamma;
% 第二种写法
% J=imadjust(I,[low_in high_in],[low_out high_out],gamma),imadjust函数调整图像强度值或颜色图
% 将灰度图像 I 中的强度值映射到 J 中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值,其中 gamma指定描述值I和值J关系的曲线形状
gammaattack_img=imadjust(img,[],[],gamma);
end
15、主函数
% main.m
clc;clear;close all;
N=512;
img=imread('football.jpg');
img=imresize(img,[N N],'bicubic');% 采用双三次插值(bicubic)将图像大小归一化为512*512大小,B = imresize(A,[mrows ncols],method)将图片A由参数method指定的插值运算方法来改变图像的大小到长宽为[mrows ncols]
% 1、JPEG压缩攻击(qualityfactor可取参数10,30,50,70,90)
qualityfactor=10;
jpegattack_img=jpegattack(img,qualityfactor);
figure(1),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(jpegattack_img);
title('JPEG压缩攻击后的图像');
% 2、高斯噪声攻击(var1可取参数0.001,0.005,0.1)
var1=0.001;
gaussianattack_img=gaussianattack(img,var1);
figure(2),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(gaussianattack_img);
title('高斯噪声攻击后的图像');
% 3、椒盐噪声攻击(var2可取参数0.001,0.005,0.1)
var2=0.001;
saltpepperattack_img=saltpepperattack(img,var2);
figure(3),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(saltpepperattack_img);
title('椒盐噪声攻击后的图像');
% 4、散斑噪声攻击(var3可取参数0.01,0.05,0.1)
var3=0.01;
speckleattack_img=speckleattack(img,var3);
figure(4),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(speckleattack_img);
title('散斑噪声攻击后的图像');
% 5、高斯低通滤波攻击(k1可取参数3、5、7)
k1=3;
gaussianlowpassattack_img=gaussianlowpassattack(img,k1);
figure(5),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(gaussianlowpassattack_img);
title('高斯低通滤波攻击后的图像');
% 6、均值滤波攻击(k2可取参数3、5、7)
k2=3;
meanattack_img=meanattack(img,k2);
figure(6),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(meanattack_img);
title('均值滤波攻击后的图像');
% 7、中值滤波攻击(k3可取参数3、5、7)
k3=3;
medianattack_img=medianattack(img,k3);
figure(7),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(medianattack_img);
title('中值滤波攻击后的图像');
% 8、中心裁剪攻击(percentage可取参数0.2和0.5)
percentage=0.2;
centeredattack_img = centeredattack(img,percentage);
figure(8),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(centeredattack_img);
title('中心裁剪攻击后的图像');
% 9、边缘裁剪攻击(percentage可取参数0.1和0.2)
percentage=0.1;
edgeattack_img = edgeattack(img,percentage);
figure(9),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(edgeattack_img);
title('边缘裁剪攻击后的图像');
% 10、旋转攻击(angle可取参数10,30和50)
angle=30;
rotationattack_img=rotationattack(img,angle);
figure(10),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(rotationattack_img);
title('旋转攻击后的图像');
% 11、平移攻击(在Holidays数据集中(80,50),(160,100)和(320,200),注意图像规格为512*512)
location=[80,50];
translationattack_img=translationattack(img,location);
figure(11),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(translationattack_img);
title('平移攻击后的图像');
% 12、缩放攻击(scale可取参数0.3,0.5,0.75,1.5和3)
scale=3;
rescalingattack_img=rescalingattack(img,scale);
figure(12),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(rescalingattack_img);
title('缩放攻击后的图像');
% 13、颜色直方图均衡化攻击(无参数)
histogramattack_img=histogramattack(img);
figure(13),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(histogramattack_img);
title('颜色直方图均衡化攻击后的图像');
% 14、伽马校正攻击(gamma可取参数0.8)
gamma=0.8;
gammaattack_img=gammaattack(img,gamma);
figure(14),
subplot(121),imshow(img);
title('原始图像');
subplot(122),imshow(gammaattack_img);
title('伽马校正攻击后的图像');
三、matlab实现效果
1、JPEG压缩攻击
2、高斯噪声攻击
3、椒盐噪声攻击
4、散斑噪声攻击
5、高斯低通滤波攻击
6、均值滤波攻击
7、中值滤波攻击
8、中心裁剪攻击
9、边缘裁剪攻击
10、旋转攻击
11、平移攻击
12、缩放攻击
13、颜色直方图均衡化攻击
文章来源:https://www.toymoban.com/news/detail-449597.html
14、伽马校正攻击
文章来源地址https://www.toymoban.com/news/detail-449597.html
到了这里,关于图像鲁棒性--常见14种图像攻击matlab实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!