由卷积三种模式:full,same,valid到边缘信息处理的思考

由卷积三种模式: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上对三种卷积模式的解释

  1. full’ - 返回完整的二维卷积
  2. same’ - 返回卷积中大小与A相同的中心部分。(A是被卷积信号)
  3. valid’ - 仅返回计算的没有补零边缘的卷积部分

通过图像进行直观解释

假设有矩阵A和矩阵B,尺寸分别是Ma×Na和Mb×Nb

  1. 先对矩阵A补零,得到一个(Ma+Mb-1)×(Na×Nb-1)的矩阵C
    对A矩阵边缘进行补0
  2. 将卷积和绕其中心旋转180度

对卷积核B进行旋转180度

  1. 将旋转后的卷积核在扩展0之后的矩阵A上由左到右滑动(步长为1),进行卷积操作。下面分别是三种模式(full,same,valid)下的卷积操作的情况。(其中位置1表示输出图像的值从当前卷积位置开始卷积,位置2表示卷积核滑动到的最后一个位置,输出最后一个卷积结果)
    三种模式下的卷积原理示意图

二、对边缘信息的处理

如上面图【三种模式下的卷积原理示意图】所示,在full和same模式下用卷积核B对矩阵A进行卷积操作,必然涉及到边缘信息值的取值。例如:图中灰色部分的取值不同,得到的卷积结果也不同。下图展示了边缘填0与填1,在Full模式下进行的卷积结果的区别。
边缘值不同,卷积结果也不同
因此,对于图像的卷积操作,对整张图片的边缘的不同取值,一定会对卷积的结果有所影响。

2.1影响大不大?

但是,这个影响大吗?我现在手头有一张512×512的lena图像,现在进行一下操作:

  1. 对lena图像进行“压缩”,将其改变为32×32大小的图像
  2. 用一个3×3的卷积核对lena进行卷积(分别是Full,same,valid)
    得到以下结果:
    对32×32的lena图像分别进行不同模式的卷积
    咋一看,感觉卷积的结果好像没什么区别。再让我们看一下他们各自的大小:
    三种模式下输出的卷积后的图像大小
    结果与前面三种模式下的卷积原理演示一致。

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.

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值