图像滤波的作用:将一幅图像通过图像滤波得到另一幅图像

按照深度学习的说法:

其中滤波器又称为卷积核,滤波的过程称为卷积

图像卷积效果:

USM锐化 opencv实现_opencv

经过卷积 后,图片的到了锐化

卷积的过程:

USM锐化 opencv实现_卷积核_02

通常情况下,原始图像经过卷积后的输出图像,一定比原图像小

卷积的几个基本概念

1. 卷积核的大小 3*3 5*5 11*11

2. 锚点

3. 边界扩充:作为是让输出图像跟原始图像一样大

3. 步长

卷积核的大小

卷积核的大小一般为奇数,如3*3  5*5  7*7

为什么卷积核的大小一般为奇数?

一方面是增加padding的原因(扩充图像的尺寸,为了使输出图像的大小与原始图像保持一致)

另一方面是锚点的原因:如果为奇数,则锚点一直在卷积核的正中心,从而防止位置发生偏移

具体信息可以查看相关的文献

卷积核大小的影响:在深度学习中,卷积核越大,可以看到的信息(专业术语中叫感受野)越多,提取的特征越好,同时计算量也就越大

锚点

USM锐化 opencv实现_opencv_03

对于5*5的卷积核,41就是锚点,正中心的值就是锚点,主要作用是防止信息的偏差

 边界扩充

主要作用:让输入与输出相等

当卷积核大于1且不进行边界扩充,输出尺寸将相应缩小

当卷积核以标准方式进行边界扩充,则输出数据的空间尺寸将与输入相等

将输入图像与输出图像保持一致

USM锐化 opencv实现_深度学习_04

计算公式:

N = (W-F+2P)/S+1

N 输出图像大小

W 源图大小   F卷积核大小   P扩充尺寸

S  步长大小

步长

USM锐化 opencv实现_opencv_05

 步长(stride)就是卷积核在你原图上每一步移动的距离。 步长小,提取的特征会更全面,不会遗漏太多信息。 但同时可能造成计算量增大,甚至过拟合等问题。 步长大,计算量会下降,但很有可能错失一些有用的特征。

图像卷积示例

(1)低通滤波与高通滤波

低通滤波可以去除噪声和平滑图像

高通滤波可以帮助查找图像的边缘

(2)图像卷积API

filter2D(src, ddepth, kernel, anchor, delter, borderType)

参数含义:

src        滤波对象

ddepth        滤波后的图像位深,一般设为-1,跟原图像保持一致

kernel   

anchor        锚点,可以不设

delter        默认为0

borderType        边界类型,一般情况为默认值

例如一个5*5的卷积核,作用使图像变平滑

USM锐化 opencv实现_卷积核_06

import cv2
import numpy as np

img = cv2.imread('E:\\112.png')
kernel = np.ones((5,5), np.float32)/25

dst = cv2.filter2D(img, -1 , kernel )

cv2.imshow('dst', dst)
cv2.imshow('img',img)
cv2.waitKey(0)

USM锐化 opencv实现_USM锐化 opencv实现_07

 

经过滤波后的图像变得模糊