函数 cv.blur(image,(5,5))
这是一个平滑图片的函数,它将一个区域内所有点的灰度值的平均值作为这个点的灰度值。
像该函数对领域点的灰度值进行权重相加最后设置灰度值,这样的操作又叫卷积,这样的滤波器叫线性滤波器。
函数cv.medianBlur(image,5)
该函数不同于上一个函数,它是非线性滤波器,它是取领域的中值作为当前点的灰度值。
上面函数就是选取了5*5大小的矩阵,必须为奇数
处理有椒盐噪声(就像烧烤撒很多孜然,图片上有很多点)有很好的效果
实际应用较多
该方法在去除脉冲噪声、斑点噪声(speckle noise)、椒盐噪声(salt-and-pepper noise)、图像扫描噪声,的同时又能保留凸图像边缘细节。
中值滤波与均值滤波比较:
优势是,在均值滤波器中,由于噪声成分被放入平均计算中,所以输出受到了噪声的影响;而在中值滤波其中,噪声成分很难选上,所以几乎不会影响到输出。
劣势是,中值滤波花费的时间是均值滤波的5倍以上。
注意:中值滤波虽然可以克服线性滤波器所带来的图像细节模糊,但是在线、尖顶等细节多的图像不宜用中值滤波。
filter2D():定义为filter2D(src,ddepth,kernel)
ddepth:深度,输入值为-1时,目标图像和原图像深度保持一致
kernel: 卷积核(或者是相关核),一个单通道浮点型矩阵
修改kernel矩阵即可实现不同的模糊
# coding=GBK
import cv2 as cv
import numpy as np
def average(image):
av=cv.blur(image,(1,5))
cv.imshow("aver",av)
med=cv.medianBlur(image,501)
cv.imshow("med",med)
ker=np.ones((5,5),np.float32)
scr1=cv.filter2D(image,-1,ker)
cv.imshow("zi aver",scr1)
new=np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]],np.float32)
scr2=cv.filter2D(image,-1,new)
cv.imshow("rui hua",scr2)
image1=cv.imread("D://2.png")
cv.imshow("yuantu",image1)
average(image1)
cv.waitKey(0)
cv.destroyAllWindows()
效果: