图片降噪
- 均值滤波
blur
中心点的像素值等于核值区域的平均值
import cv2
img_gs = cv2.imread('./media/lvbo2.png') # 高斯噪声
img_jy = cv2.imread('./media/lvbo3.png') # 椒盐噪声
def buler():
img_jz1= cv2.blur(img_gs,(3,3))
img_jz2= cv2.blur(img_jy,(3,3))
cv2.imshow('img_jz1',img_jz1)
cv2.imshow('img_jz2',img_jz2)
buler()
cv2.imshow('img_gs',img_gs)
cv2.imshow('img_jy',img_jy)
cv2.waitKey(0)
- 方框滤波
boxFilter
- normalize=False 中心点的像素值等于核区域像素的总和
- normalize=True 默认为True 就是均值滤波
img_jz1 = cv2.boxFilter(img_gs,-1,(3,3),normalize=False ) # [图像] [输出图像的深度,-1是原图像的深度] [核的大小]
img_jz2 = cv2.boxFilter(img_jy,-1,(3,3))
cv2.imshow('img_jz1',img_jz1)
cv2.imshow('img_jz2',img_jz2)
- 高斯滤波
GaussianBlur
核的权重取决于高斯函数并取近似值,对应的像素乘以权重相加得到中心点的像素值
sigma的值 模糊效果越明显 (中心点的权重变小)
g ( x , y ) = 1 2 π σ 2 e − ( x 2 + y 2 ) 2 σ 2 g(x,y)=\frac{1}{2\pi\sigma^{2}}e^{-\frac{(x^{2}+y^{2})}{2\sigma^{2}}} g(x,y)=2πσ21e−2σ2(x2+y2)
如3*3的核权重矩阵是[[1/16,1/8,1/16],[1/8,1/4,1/8],[1/16,1/8,1/16]]
img_jz1 = cv2.GaussianBlur(img_jy,(3,3),10