图像平滑处理就是图像滤波,尽量保留图像细节特征的条件下实现对图像噪声的消除,达到增强图像的效果
1.均值滤波
任意一点的像素值,都是周围N*N个像素值的均值,常用于消除图像中的椒盐噪声
也就是说,可以把像素点周围5*5的像素区域,都去与核相乘,最后相加,得到该像素点的新值
针对原始图像内的像素点,都逐个采用相同的核进行处理,得到滤波结果图像
需要注意,上述的核,通常可以写成下面的形式:
函数blur
处理结果 = cv2.blur(原始图像,核大小)
import cv2 img = cv2.imread(r"image\lenaNoise.png",cv2.IMREAD_COLOR) # 经过平滑处理后,原始图像中的椒盐噪声,基本被消除 result = cv2.blur(img,(5,5)) cv2.imshow("original",img) cv2.imshow("result",result) cv2.waitKey(0) cv2.destroyAllWindows()
均值滤波实验结果:
2.方框滤波
函数boxFilter
处理结果 = cv2.boxFilter(原始图像,目标图像深度,核大小,normalize属性)
1> 目标图像深度:int类型的目标图像深度。通常使用"-1"表示与原始图像一致
2> normalize属性:是否对目标图像进行归一化处理
import cv2 img = cv2.imread(r"image\lenaNoise.png",cv2.IMREAD_COLOR) # 进行归一化处理,与均值滤波相同 result1 = cv2.boxFilter(img,-1,(5,5),normalize=1) # 不进行归一化处理 result2 = cv2.boxFilter(img,-1,(5,5),normalize=0) cv2.imshow("original",img) cv2.imshow("result1",result1) cv2.imshow("result2",result2) cv2.waitKey(0) cv2.destroyAllWindows()
方框滤波实验结果:
3.高斯滤波
高斯滤波是一种非常常用的模糊平滑方式,其广泛的应用在图像处理的减噪过程中,尤其是被高斯噪声所污染的图像上。核心思想是,让临近的像素具有更高的重要度,对周围像素计算加权平均值,较近的像素具有较大的权重值
GaussianBlur函数
dst = cv2.GaussianBlur(src,ksize,sigmaX)
1> src:原始图像
2> ksize:核大小
3> sigmaX:X方向方差,控制权重(Y方向方向与X保持一致)
import cv2 img = cv2.imread(r"image\lenaNoise.png",cv2.IMREAD_COLOR) # 高斯滤波 result = cv2.GaussianBlur(img,(5,5),0) cv2.imshow("original",img) cv2.imshow("result",result) cv2.waitKey(0) cv2.destroyAllWindows()
高斯滤波实验结果:
4.中值滤波
中值滤波是让临近的像素按照大小排列,取排列像素集中位于中间位置的值作为中值滤波后的像素值。常用于消除图像中的椒盐噪声
medianBlur函数
dst = cv2.medianBlur(src,ksize)
1> src:源文件
2> ksize:核大小(必须是比1大的奇数,如3,5,7)
import cv2 img = cv2.imread(r"image\lenaNoise.png",cv2.IMREAD_COLOR) # 中值滤波 result = cv2.medianBlur(img,5) cv2.imshow("original",img) cv2.imshow("result",result) cv2.waitKey(0) cv2.destroyAllWindows()
中值滤波实验结果: