图像卷积API
filter2D(src, ddepth, kernel, anchor, delter, borderType)
参数含义:
src 滤波对象
ddepth 滤波后的图像位深,一般设为-1,跟原图像保持一致
kernel 卷积核(低通滤波,高通滤波)
anchor 锚点,可以不设
delter 默认为0
borderType 边界类型,一般情况为默认值
例如一个5*5的卷积核,作用使图像变平滑
方盒滤波
方盒滤波卷积核
参数a的作用:
normalize = true, a = 1/W * H 此时为均值滤波
normalize = false, a=1 此时不进行均值化,输出的结果为25个元素之和
当normalize = true时,方盒滤波 ==平均滤波,一般情况下都使用均值滤波,所以在使用时直接调用均值滤波API
方盒滤波API
boxFilter(src, ddepth, ksize, anchor, normalize, borderType)
参数含义:
ddepth 输出图像的位深
ksize 卷积核的大小
anchor 锚点,一般取卷积核的中心点,默认值即可
normalize 方盒滤波
均值滤波API
blur(src, ksize,anchor,borderType)
一般情况下方盒滤波和均值滤波相等,默认情况下normalize = true,一般使用blur()进行滤波
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 )
dst = cv2.blur(img,(5,5))
cv2.imshow('dst', dst)
cv2.imshow('img',img)
cv2.waitKey(0)
效果与上一节结果一样。
高斯滤波(钟形滤波)
原理:
对于卷积核,中心点的值不一定最大,但是其比重是最大的,两边的值可能比较大,但是其比重较小。越靠近卷积核中心,比重越大
高斯权重
高斯滤波API
GaussianBlur(img,kernel,sigmaX,sigmaY, ...)
kernel 卷积核的大小
sigmaX,sigmaY 高斯滤波延展的宽度, X和Y到中心点的误差
sigma的作用
没有sigma时,以kernel卷积核的size为基准进行滤波
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 )
# dst = cv2.blur(img,(5,5))
dst = cv2.GaussianBlur(img, (5,5),sigmaX=1)
cv2.imshow('dst', dst)
cv2.imshow('img',img)
cv2.waitKey(0)
经过高斯滤波后,可以处理高斯噪点
中值滤波
什么是中值滤波?
假设有一个数组[1 5 5 6 7 8 9],取其中的中间值作为卷积后的结果值
中值滤波的优点:对椒盐噪声滤波效果明显
中值滤波API
medianBlur(img, ksize)
ksize 卷积核的大小
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 )
#均值滤波
# dst = cv2.blur(img,(5,5))
#高斯滤波
#dst = cv2.GaussianBlur(img, (5,5),sigmaX=1)
#中值滤波
dst = cv2.medianBlur(img,5)
cv2.imshow('dst', dst)
cv2.imshow('img',img)
cv2.waitKey(0)
边缘也会被弱化
双边滤波
可以保留边缘,同时可以对边缘内的区域进行平滑处理。
双边滤波的作用是进行美颜
双边滤波的原理
边缘不进行处理,其他地方进行抹平
双边滤波API
bilaterlFilter(img, d, sigmaColor, sigmaSpace, ...)
d 核的大小
sigmaColor, sigmaSpace 一般设为20,50,经验