由卷积三种模式:full,same,valid到边缘信息处理的思考
在Matlab中,进行卷积操作运算时会有三种模式(subsection),分别是:full,same,valid可供选择
例如(一维卷积操作时):
u = [-1 2 3 -2 0 1 2];
v = [2 4 -1 1];
w = conv(u,v,'same')
又或是(二维卷积操作时):
A = rand(3);
B = rand(4);
Csame = conv2(A,B,'same')
一、三种模式的直观理解
matlab上对三种卷积模式的解释
- ‘ full’ - 返回完整的二维卷积
- ‘same’ - 返回卷积中大小与A相同的中心部分。(A是被卷积信号)
- ‘valid’ - 仅返回计算的没有补零边缘的卷积部分
通过图像进行直观解释
假设有矩阵A和矩阵B,尺寸分别是Ma×Na和Mb×Nb
- 先对矩阵A补零,得到一个(Ma+Mb-1)×(Na×Nb-1)的矩阵C
- 将卷积和绕其中心旋转180度
- 将旋转后的卷积核在扩展0之后的矩阵A上由左到右滑动(步长为1),进行卷积操作。下面分别是三种模式(full,same,valid)下的卷积操作的情况。(其中位置1表示输出图像的值从当前卷积位置开始卷积,位置2表示卷积核滑动到的最后一个位置,输出最后一个卷积结果)
二、对边缘信息的处理
如上面图【三种模式下的卷积原理示意图】所示,在full和same模式下用卷积核B对矩阵A进行卷积操作,必然涉及到边缘信息值的取值。例如:图中灰色部分的取值不同,得到的卷积结果也不同。下图展示了边缘填0与填1,在Full模式下进行的卷积结果的区别。
因此,对于图像的卷积操作,对整张图片的边缘的不同取值,一定会对卷积的结果有所影响。
2.1影响大不大?
但是,这个影响大吗?我现在手头有一张512×512的lena图像,现在进行一下操作:
- 对lena图像进行“压缩”,将其改变为32×32大小的图像
- 用一个3×3的卷积核对lena进行卷积(分别是Full,same,valid)
得到以下结果:
咋一看,感觉卷积的结果好像没什么区别。再让我们看一下他们各自的大小:
结果与前面三种模式下的卷积原理演示一致。
2.2影响甚微
由此,可以得出,当图像的大小与卷积核大小的比值很大的时候(如32:3),边缘信息对卷积的结果影响不大,无论是对图像的边缘全部取0,还是用其他方法填充边缘值。因为一张图像的主要信息集中在图像的中间区域,而非边缘区域。但是也不排除在特定的时候,需要对边缘信息进行处理。
三、Matlab代码
clear
clc
I= imread('lena.jpg');
imgGray = imresize((rgb2gray(I)),[32,32]);
Gx = [-1 0 1 ;-2 0 2;-1 0 1];
convImg_full = conv2(imgGray,Gx,'full');
convImg_same = conv2(imgGray,Gx,'same');
convImg_valid = conv2(imgGray,Gx,'valid');
Info1 = "full模式下结果的大小:";
Info2 = "same模式下结果的大小:";
Info3 = "valid模式下结果的大小:";
disp(Info1);
disp(size(convImg_full));
disp(Info2);
disp(size(convImg_same));
disp(Info3);
disp(size(convImg_valid));
whos convImg
figure
subplot(1,4,1);
imshow(imgGray);
title('imgGray')
subplot(1,4,2);
imshow(convImg_full);
title('convImg\_full');
subplot(1,4,3);
imshow(convImg_same);
title('convImg\_same');
subplot(1,4,4);
imshow(convImg_valid);
title('convImg\_valid');
写在最后
在对图像卷积或者进行某些操作的时候,对边缘信息的处理看似没有那么重要,但是在请教老师的时候,他也说在特定情况下是需要考虑的,而且也有人在做这方面的研究。所以,未完待续。。。
参考
[1]立志做码农.MATLAB卷积运算(conv、conv2、convn)解释[EB/OL].https://www.cnblogs.com/hyb221512/p/9276621.html,2018-07-07.
[2]weixin_30681615.MATLAB数字图像处理(一)基础操作和傅立叶变换[EB/OL].https://blog.csdn.net/weixin_30681615/article/details/97641243?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduend~default-1-97641243.nonecase&utm_term=matlab%E5%A6%82%E4%BD%95%E8%AF%BB%E5%8F%96lena%E5%9B%BE%E5%83%8F&spm=1000.2123.3001.4430,2017-03-05.