目录
卷积和滤波是很相似的,都是利用了卷积核进行操作
那么他们之间有什么区别呢?
卷积:会影响原图大小
滤波:不会影响原图大小
我们用这样一段代码来看
import torch.nn as nn
import torch
x = torch.rand(3,5,5)
print(x.shape)
# 卷积
conv = nn.Conv2d(3,3,kernel_size=3,stride=1)
y= conv(x)
print(y.shape)
我们可以看见图像的大小出现了变换,因为卷积操作舍去了一部分(这里是卷积最基本的原理,大家都明白)
我们也同样先用一段代码来展示
import cv2
img = cv2.imread("te.png")
print(img.shape)
# print(img[:5,:,0])
img1 = cv2.blur(img,(3,3))
print(img1.shape)
# print(img1[:5,:,0])
img2 = cv2.GaussianBlur(img,(3,3),1)
print(img2.shape)
# print(img2[:5,:,0])
img3 = cv2.medianBlur(img, 3)
print(img3.shape)
# print(img3[:5,:,0])
我们可以看见,图像的大小都没有发生变换,这是为什么呢?
原因: 滤波操作会保留图像的原大小 (这句话怎么理解呢,我们来看下面的滤波的原理)
我们以均值滤波为例子
img1 = cv2.blur(img,(3,3))
我们的卷积核设为3x3的
其实要理解这个很简单,主要看看是如何保留边缘的像素点的
如图所示,以18为中心3x3的区域,左上角的18就会替换为:(18+54+55+121)/4? ?没有的就都不用计算
因此其大小不会发生改变,把每个像素点都照顾到了