【均值滤波-----python】平滑线性滤波器的输出(响应)是包含在滤波器模板邻域内的像素简单平均值。这些滤波器有时也称为均值滤波器。它使用滤波器模板确定的邻域内像素的平均灰度值代替图像中每个像素的值,这种处理的结果降低了图像灰度的尖锐变化。由于典型的随机噪声由灰度级的急剧变化组成,因此,常见的平滑处理应用就是降低噪声。然而,由于图像边缘也是由图像灰度尖锐变化带来的特性,所以均值滤波处理还是存在着不希望有的边缘模糊的负面效应。
代码实现:
import cv2 as cv
import numpy as np
import math
import copy
from skimage import io
import randomdef spilt(a):
if a / 2 == 0:
x1 = x2 = a / 2
else:
x1 = math.floor(a / 2)
x2 = a - x1
return -x1,x2def salt_and_pepper_noise(img, proportion=0.05):
noise_img = img
height, width = noise_img.shape[0], noise_img.shape[1]
num = int(height * width * proportion)# 多少个像素点添加椒盐噪声
for i in range(num):
w = random.randint(0, width - 1)
h = random.randint(0, height - 1)
if random.randint(0, 1) == 0:
noise_img[h, w] = 0
else:
noise_img[h, w] = 255
return noise_imgdef original(i, j, k, a, b, img):
x1, x2 = spilt(a)
y1, y2 = spilt(b)
temp = np.zeros(a * b)
count = 0
for m in range(x1, x2):
for n in range(y1, y2):
if i + m < 0 or i + m > img.shape[0] - 1 or j + n < 0 or j + n > img.shape[1] - 1:
temp[count] = img[i, j, k]
else:
temp[count] = img[i + m, j + n, k]
count += 1
return tempdef average_function(a, b, img):
img0 = copy.copy(img)
for i in range(0, img.shape[0]):
for j in range(2, img.shape[1]):
for k in range(img.shape[2]):
temp = original(i, j, k, a, b, img0)
img[i, j, k] = int(np.mean(temp))
return imgif __name__ == "__main__":img = io.imread(r"E:/pythontupian/5.jpg")
cv.imshow("original", img)
noise_img = salt_and_pepper_noise(img)
cv.imshow("noise_img", noise_img)
ave_img = average_function(3, 3, copy.copy( noise_img))# (3,3)滤波器大小
cv.imshow("ave_img", ave_img)
cv.waitKey(0)
cv.destroyAllWindows()
结果展示:
原图
文章图片
加椒盐噪声后
文章图片
均值滤波后
文章图片
空间均值处理的一个重要应用是为了对感兴趣的物体得到一个粗略而模糊的一幅图像,这样,那些较小物体的灰度就与背景混合在一起了,较大的物体变的像“斑点”而易于检测。可以看出,均值滤波就是得到了一幅模糊的图像,在降低噪声方面效果不是很好。
推荐阅读
- OpenCV|【opencv】最近邻插值、双线性插值、双三次插值(三次样条插值)
- OpenCV|【opencv】边界模式 borderMode
- #|【人脸识别】face_recognition 库的使用
- SLAM|<<Slam十四讲>> ch13环境安装
- opencv从入门到放弃|opencv C艹(色彩空间转换,像素最值,二值化,LUT)
- Opencv项目实战|Opencv项目实战(07 人脸识别和考勤系统)
- opencv计算机视觉|Opencv形态学——腐蚀、膨胀、开运算与闭运算、梯度运算、礼帽、黑帽
- 算法|opencvcv4.0
- opencv|opencv python配置_1. OpenCV-Python——环境配置及图像基本操作