空间滤波_均值滤波器(平滑空间滤波器)基本原理及Python实现

本文介绍了空间滤波中均值滤波器的基本原理,通过计算像素领域内的平均值来平滑图像,常用于模糊处理,便于突出主要元素。并展示了相关测试结果和提供了Python实现代码。
摘要由CSDN通过智能技术生成

1. 基本原理

使用元素的领域内像素的平均值代替该元素,可明显的降低图像灰度的尖锐变换。它的一种重要应用是模糊处理:得到感兴趣的区域的粗略表示,将次要的/小的元素与背景融合,使得主要的/较大的元素变得易于检测

$$ R=\frac{1}{m} \sum_{i=1}^{m} z_{i} $$

  • mm为滤波器大小

2. 测试结果

1a6f3fa65cf62447f4679a87230addf4.png

图源自skimage

3. 代码

import numpy as npdef means_filter(input_image, filter_size):    '''    均值滤波器    :param input_image: 输入图像    :param filter_size: 滤波器大小    :return: 输出图像    注:此实现滤波器大小必须为奇数且 >= 3    '''    input_image_cp = np.copy(input_image)  # 输入图像的副本    filter_template = np.ones((filter_size, filter_size))  # 空间滤波器模板    pad_num = int((filter_size - 1) / 2)  # 输入图像需要填充的尺寸    input_image_cp = np.pad(input_image_cp, (pad_num, pad_num), mode="constant", constant_values=0)  # 填充输入图像    m, n = input_image_cp.shape  # 获取填充后的输入图像的大小    output_image = np.copy(input_image_cp)  # 输出图像    # 空间滤波    for i in range(pad_num, m - pad_num):        for j in range(pad_num, n - pad_num):            output_image[i, j] = np.sum(filter_template * input_image_cp[i - pad_num:i + pad_num + 1, j - pad_num:j + pad_num + 1]) / (filter_size ** 2)    output_image = output_image[pad_num:m - pad_num, pad_num:n - pad_num]  # 裁剪    return output_image

d6a345b45d9ed86cd6c8ddef320e0de5.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值