0
点赞
收藏
分享

微信扫一扫

手动实现均值滤波(python)


使用 3 × 3 3\times3 3×3的均值滤波器来进行滤波!

均值滤波器使用网格内像素的平均值。

代码实现:

# -*- coding: utf-8 -*-
"""
Created on Sat Jul 12 15:43:28 2020

@author: 陨星落云
"""
import imageio
import numpy as np
import matplotlib.pylab as plt

def MeanFilter(img,K_size=3):

# 均值滤波
h,w,c = img.shape

# 零填充
pad = K_size//2
out = np.zeros((h + 2*pad,w + 2*pad,c),dtype=np.float)
out[pad:pad+h,pad:pad+w] = img.copy().astype(np.float)

# 卷积的过程
tmp = out.copy()
for y in range(h):
for x in range(w):
for ci in range(c):
out[pad+y,pad+x,ci] = np.mean(tmp[y:y+K_size,x:x+K_size,ci])

out = out[pad:pad+h,pad:pad+w].astype(np.uint8)

return out

if __name__ == "__main__":

# 读取图像
img = imageio.imread("lenaNoise.png")
# 均值滤波
imageio.imsave("MeanFilter.jpg",MeanFilter(img))

# 显示图像
plt.figure(figsize=(10,8))
plt.subplot(121)
plt.imshow(img)
plt.subplot(122)
plt.imshow(MeanFilter(img))
plt.show()

结果:

手动实现均值滤波(python)_内像素



举报

相关推荐

0 条评论