图像处理——均值滤波器实现

该代码示例展示了如何使用Python的OpenCV库实现空间域图像增强的均值滤波器。首先,从PNG图像转换为灰度图,然后使用内置的`cv2.blur`函数和自定义方法分别进行模糊处理。结果显示了原图与应用均值滤波后的图像对比。
摘要由CSDN通过智能技术生成

实现目标:

实现空间域图像增强方法中的均值滤波器。

代码如下:

"""
Created on 2023/3/20 09:52
@author: liuwenq
实验一_空间域图像增强方法_均值滤波器
"""
import cv2
import copy
import matplotlib
import imutils
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")

# 获取图像并转化为灰度图
img = cv2.imread('E:/11.PNG')
# gray_img = cv2.imread('E:/12.PNG',0)
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转化为灰度图

# 利用已有函数实现
blur_img=cv2.blur(gray_img,(3,3))
cv2.imshow('blur_img',imutils.resize(blur_img,400))

# 手动实现
gray_avg_img=copy.deepcopy(gray_img)
for i in range(1,gray_img.shape[0]-1):
    for j in range(1,gray_img.shape[1]-1):
        sum_pix=sum([gray_img[l,k] for l in range(i-1,i+2) for k in range(j-1,j+2)])  # range函数写到i+2实际遍历到i+1,j+1同理
        gray_avg_img[i,j]=int(sum_pix/9)  # 9个点求和除均值,均值滤波实现
# cv2.imshow('gray_avg_img',imutils.resize(gray_avg_img,400))

# 输出结果
plt.figure(figsize=(10, 8), dpi=200)
matplotlib.rcParams['font.sans-serif'] = ['KaiTi']
plt.suptitle("均值滤波器",fontsize=40,x=0.5,y=0.1)
plt.subplot(121)
plt.imshow(img, cmap=plt.cm.gray)
plt.title("Qrigin",fontsize=18)
plt.subplot(122)
plt.imshow(gray_avg_img, cmap=plt.cm.gray)
plt.title("Result",fontsize=18)

plt.show()

if cv2.waitKey(0) == 27:
    cv2.destroyAllWindows()

实现效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值