滤波的作用是将一幅图像通过滤波器得到另一幅图像,其中滤波器又称卷积核,滤波的过程称为卷积。
卷积的几个基本概念:
  1. 卷积核的大小:卷积核一般为奇数,如3*3,5*5,7*7等。在深度学习中卷积核越大,看到的信息越多,提取的特征越好,同时计算量也就越大。
  2. 锚点:简单说就是图片的正中心
  3. 边界扩充:当卷积核大于1且不进行边界扩充,输出尺寸相应缩小。当卷积核以标准方式进行边界扩充,则输出数据的空间尺寸将于输入相等。
  4. 步长
输出图片大小计算公式:
N=(W-F+2P)/S+1
N是输出图像大小
W是原图大小;F是卷积核大小;P是扩充尺寸
S是步长
 
低通滤波与高通滤波的概念
低通滤波指低于某个阈值之下的可以通过。低通滤波可以去除噪音或平滑图像。
高通滤波指高于某个阈值之上的可以通过。高通滤波可以帮助查找图像边缘。
图像卷积api:filter2D(src,ddepth,kernel,anchor,delta,borderType)
src:对哪张图片进行卷积
ddepth:经过卷积之后的图片位深(一般设置成-1,原始图片位深是多少,生成的新图就是多少)
kernel:卷积核
anchor:锚点(可以不设置,不设置会根据卷积核寻找锚点)
delta:卷积之后得到的元素加一个delta值,想加的话在这里设置
borderType:边界类型
 
方波滤波与均值滤波
如果我们每次都自己创造卷积核,这个过程还是非常麻烦的,有很多的滤波器都是固定的,比如方盒滤波和均值滤波,它们的核都是固定的,opencv给我们提供这些滤波器的api我们只需要调用即可。
方盒滤波公式:
 

对于不同的情况,a是取不同的值。方盒滤波有一个参数normalize。
normalize=true时,a=1/(W*H),就是一个均值滤波
normalize=false时,a=1。
当normalize==true时,方盒滤波==均值滤波。
 
方盒滤波api:boxFilter(src,ddpth,ksize,anchor,normalize,borderType)
Src:具体对哪个图像进行卷积
Ddpth:输出图像的位深
Ksize:卷积核的大小
Anchor:锚点,默认值都是(-1,-1),取核的中心点,所以不用特别设置,保持默认即可
borderType:输出的边界类型
 
均值滤波api:blur(src,ksize,anchor,borderType)
 
import cv2
import numpy as np

# 导入一张图片
img=cv2.imread('你的图片')
# 图片卷积,创造卷积核
dst=cv2.filter2D(img,-1,np.ones((5,5),np.float32)/25)
# 均值滤波,5*5的均值滤波
dst1=cv2.blur(img,(5,5))
# 图片展示
cv2.imshow('img',img)
cv2.imshow('dst',dst)
cv2.imshow('dst1',dst1)
cv2.waitKey(0)
评论
头像
验证码:
相关推荐

七年之痒是什么意思

520送什么给女友

第一次见女方父母送什么好




如果未经特殊说明,本站内容皆为原创,转载内容如果侵犯了您的权益,如有侵权请联系管理员删除
联系QQ:2380712278

备案号:皖ICP备19012824号