opencv学习笔记 模糊操作+代码(均值模糊,中值模糊,自定义模糊,锐化)

  • 均值模糊

函数 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()

效果:

opencv学习笔记 模糊操作+代码(均值模糊,中值模糊,自定义模糊,锐化)_第1张图片

你可能感兴趣的:(opencv)