1.方盒滤波器
去噪,将图像变得模糊。
2.函数讲解
函数讲解:boxFilter(src, ddepth, ksize, dst=None, anchor=None, normalize=None, borderType=None)
:
参数讲解:
(1)src:输入的原始图片
;
(2)Ddepth:输出的图像位深,默认值为-1,表示和原图位深一样
;
(3)Ksize:方盒滤波卷积核大小
;
(4)dst:输出图像
;
(5)Anchor:默认值为(-1,-1),表示卷积核的中心点
;
关于这个anchor可以看
https://mydreamambitious.blog.csdn.net/article/details/125153829
(6)borderType:用于推断图像外部像素的某种边界模式。有默认值BORDER_DEFAULT实例代码
:
3.方盒滤波器实例代码
(1)注程序代码
import os
import cv2
import numpy as np
def BoxFilter(img_path='images/lenna.png'):
#读取图片
img_src=cv2.imread(img_path)
#缩放图片大小
img=cv2.resize(src=img_src,dsize=(450,450))
#方盒滤波
img=cv2.boxFilter(src=img,ddepth=-1,ksize=(5,5),normalize=True)
#显示图片
cv2.imshow('img',img)
cv2.imshow('img_src',img_src)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == '__main__':
print('Pycharm')
BoxFilter()
(2)生成高斯噪声代码
#添加高斯噪声
# loc:float
# 此概率分布的均值(对应着整个分布的中心centre)
# scale:float
# 此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
def Add_Gauss_Noise(img_path='images/lenna.png',mean=0.0,val=0.01):
image=cv2.imread(img_path)
image=cv2.resize(src=image,dsize=(450,450))
image=image/255.0
noise=np.random.normal(mean,val**0.5,image.shape)
image=image+noise
cv2.imshow('image',image)
cv2.waitKey(0)
cv2.destroyAllWindows()
#保存图片
cur_path=os.getcwd()
save_img_path=cur_path+'\\images\\'+'lenna_GaussNoise.png'
print(save_img_path)
noise_image=image*255.0
cv2.imwrite(save_img_path,noise_image)
return image
(3)生成椒盐噪声代码
#生成椒盐噪声prob:噪声比例
def Papper_Noise(img_path='images/lenna.png',prob=0.1):
img=cv2.imread(img_path)
noise=np.zeros(img.shape,np.uint8)
thres=1-prob
for i in range(img.shape[0]):
for j in range(img.shape[1]):
#产生0-1之间的浮点数(大于等于0且小于1之间的小数)
rand=random.random()
#如果随机数小于给定的噪声比例
if rand<prob:
noise[i][j]=0
elif rand>thres:
count_thres+=1
else:
noise[i][j]=img[i][j]
cv2.imshow('img_noise', noise)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 保存图片
cur_path = os.getcwd()
save_img_path = cur_path + '\\images\\' + 'lenna_PapperNoise.png'
print(save_img_path)
cv2.imwrite(save_img_path, noise)
return noise
(4)处理高斯噪声效果
可以发现处理高斯噪声的效果还是比较好的(通过模糊的方式处理噪声-平滑)
(5)处理椒盐噪声效果
原始图椒盐噪声非常的严重,所以处理之后的效果相对于原始图还是不错的。
4.均值滤波器
算法简单,计算速度较快,在去噪的同时去除了很多细节部分,将图像变得模糊。
5.函数讲解
函数:blur(src, ksize, dst=None, anchor=None, borderType=None)
:
参数讲解:
(1)src:输入原始图像
;
(2)Kszie:均值卷积核大小
;
(3)Dst:输出图像
;
(4)Anchor:默认值为(-1,-1),表示卷积核中心
;
(5)borderType:用于推断图像外部像素的某种边界模式。有默认值BORDER_DEFAULT
;
6.均值滤波器实例代码
import os
import cv2
import numpy as np
def BlurFilter(img_path='images/lenna.png'):
#读取图片
img_src=cv2.imread(img_path)
#缩放图片大小
img=cv2.resize(src=img_src,dsize=(450,450))
#方盒滤波
img=cv2.blur(src=img,ksize=(5,5))
#显示图片
cv2.imshow('img',img)
cv2.imshow('img_src',img_src)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == '__main__':
print('Pycharm')
BlurFilter()
生成高斯噪声和椒盐噪声上面代码示例
(1)去高斯噪声的效果
(2)去椒盐噪声的效果
和上面的方盒滤波器的效果是一样的,因为我设置的参数normalize==True.
文章出处登录后可见!
已经登录?立即刷新