自己总结(本人辣鸡请不喜勿喷,不一定对)
(1)方框滤波、
方框滤波是所有滤波器中最简单的,是通过滤波器核K内每个像素值的平均值得到的
(2)均值滤波
均值滤波跟方框滤波的唯一区别是:
均值滤波的是normalize=true,
(3)高斯滤波
高斯滤波就是每个像素点本身和邻域内的其他的像素值加权平均
随着距离中心距离的增大,权重将迅速减小,从而确保中心的像素点看起来更像是接近与它更近的像素点

缺点:高斯滤波没有考虑图像的边缘,会将边缘模糊掉。因为高斯核只考虑了空间分布,没有考虑到像素值的差异。图像的边缘往往是图像灰度剧烈变化的地方
(4) 中值滤波
选择一个模板,该模板为其邻近的若干个像素组成,对模板的像素由小到大进行排序,再用模板的中值来替代原像素的值的方法
5)双边滤波
其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相乘,优化后的权系数再与图像信息作卷积运算,这样就能在滤波的同时考虑到图像信息中的图像边缘信息
有效的改变高斯滤波对边缘处理不好的缺点,双边滤波对边缘信息得以保持清晰,并且图像边缘更加平滑
借鉴大佬的
rocling
https://blog.csdn.net/weixin_41424481/article/details/96738308?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-9
(这个博主写的真的简洁明了)
想要详细了解的参考
https://blog.csdn.net/a1111111111ss/article/details/106312435
(这个图是真的太棒了)

结果

import numpy as np
import cv2
import matplotlib.pyplot as plt
######## 四个不同的滤波器 #########
img = cv2.imread('cat.jpg')
# 均值滤波
img_mean = cv2.blur(img, (5,5))
# 高斯滤波
img_Guassian = cv2.GaussianBlur(img,(5,5),0)
# 中值滤波
img_median = cv2.medianBlur(img, 5)
# 双边滤波
img_bilater = cv2.bilateralFilter(img,9,75,75)
# 展示不同的图片
titles = ['srcImg','mean', 'Gaussian', 'median', 'bilateral']
imgs = [img, img_mean, img_Guassian, img_median, img_bilater]
for i in range(5):
plt.subplot(2,3,i+1)#注意,这和matlab中类似,没有0,数组下标从1开始
plt.imshow(imgs[i])
plt.title(titles[i])
plt.show()
本文是关于使用Python和OpenCV进行计算机视觉图像去噪的总结,包括方框滤波、均值滤波、高斯滤波、中值滤波和双边滤波的介绍。均值滤波通过邻域像素的平均值进行平滑,高斯滤波考虑像素的空间分布但可能导致边缘模糊,中值滤波则利用像素排序保留边缘,而双边滤波结合空间和灰度信息在保持边缘清晰的同时平滑图像。

2万+

被折叠的 条评论
为什么被折叠?



