06-图像平滑处理

图像平滑处理就是图像滤波,尽量保留图像细节特征的条件下实现对图像噪声的消除,达到增强图像的效果

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()

中值滤波实验结果:

 

posted @ 2021-09-14 15:43  马铃薯1  阅读(404)  评论(0编辑  收藏  举报