需要源码和图片请点赞关注收藏后评论区留言私信~~~
一、高斯滤波器
高斯滤波也被称为高斯模糊或者高斯平滑,是目前应用最广泛的平滑处理算法,高斯滤波可以很好的在降低图片噪声,细节层次的同时保留更多的图像信息,经过处理的图像呈现磨砂玻璃的滤镜效果
在高斯滤波中,越靠近核心的像素权重越大,越远离核心的像素权重越小,高斯滤波的计算过程涉及卷积运算,会有一个与滤波核带线啊哦相等的卷积核,卷积核中保存的值就是核所覆盖区域的权重值
像素与卷积核进行卷积计算
opencv将高斯滤波器封装成了GaussianBlur方法 语法格式如下
dst=cv2.GaussianBlur(src,ksize,sigmaX,sigmaY,borderType)
sigmaX 卷积核水平方向的标准差
sigmaY 卷积核垂直方向的标准差
修改sigmaX或者sigmaY的值都可以改变卷积核中的权重比例,也可以设置为0,该方法会根据滤波核的大小自动计算合适的权重比例
下面对花朵图像进行高斯滤波处理
滤波核越大,处理之后的图像就越模糊,和均值滤波,中值滤波处理的图像相比,高斯滤波处理的图像更加平滑,保留的图像更多,更容易辨认
部分代码如下
import cv2 img = cv2.imread("amygdalus triloba.jpg") # 读取原图 dst1 = cv2.GasianBlur(img, (5, 5), 0, 0) # 使用大小为5*5的滤波核进行高斯滤波 dst2 = cv2.GaianBlur(img, (9, 9), 0, 0) # 使用大小为9*9的滤波核进行高斯滤波 dst3 = cv2.GaussianBlur(img, (15, 15), 0, 0) # 使用大小为15*15的滤波核进行高斯滤波 cv2.imshow("im", img) # 显示原图 cv2.imshw("5", dst1) # 显示滤波效果 cv2.imshow("9", dst2) cv2.imshw("15", dst3) cv2.waitKey() # 按下任何键盘按键后 cv2.deroyAllWindows() # 释放所有窗体
二、双边滤波器
上面几种滤波方法都会使整幅图像变得平滑,图像中的边界会变得模糊不清,双边滤波使一种在平滑处理过程中可以有效保护边界信息的滤波操作方法。
双边滤波器自动判断滤波核处于平坦区域还是边缘区域,如果滤波核处于平坦区域,则会使用类似高斯滤波的算法进行滤波,如果滤波核处于边缘区域,则加大边缘像素的权重,尽可能地让这些像素值保持不变
opencv将双边滤波器封装成bilateralFilter方法 语法格式如下
dst=cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace,borderType)
d 以当前像素为中心的整个滤波区域的直径
sigmaColor 参与计算的颜色范围,这个值使像素颜色值与周围颜色值的最大差值,只有颜色值之差小于这个值时,周围的像素才进行滤波计算,值为255时,表示所有颜色都参与计算
sigmaspace 该值越大 参与计算的像素数量就越多
下面对比高斯滤波和双边滤波的处理效果
可见双边滤波明显清晰一些,并且边界信息保存的更好
部分代码如下
import cv2 img = cv2.imread("amygdalus triloba.jpg") # 读取原图 dst1 = cv2.GauianBlur(img(15, 15), 0, 0) # 使用大小为15*15的滤波核进行高斯滤波 # 双边滤波取范围直径为15,颜色差为120 dst2 = cv2.bilateralFilter(img, 15, 120, 100) cv2.imshow("img", img) #示原图 cv2.imshow(auss", dst1) # 显示高斯滤波效果 cv2.show("bilateral", dst2) # 显示双边滤波效果 cv2.waitKey() # 按下任何键盘按键后 cv2.destroyAWindows() # 释放所有窗体
总结
噪声指的是一幅图像内部的、高亮度的像素点。图像平滑处理是指在尽量保留原图像信息的情况下,去除图像内部的这些高亮度的像素点(即“噪声”)。为了实现图像平滑处理,需要的工具就是滤波器。虽然每种滤波器的实现原理都不同,但是每种滤波器都能对图像进行图像平滑处理
创作不易 觉得有帮助请点赞关注收藏~~~