zoukankan      html  css  js  c++  java
  • 中值滤波器(平滑空间滤波器)基本原理及Python实现

    1. 基本原理

    一种典型的非线性滤波器就是中值滤波器,它使用像素的一个领域内的灰度的中值来代替该像素的值。中值滤波器通常是处理椒盐噪声的一种有效的手段。

    2. 测试结果

    图源自skimage

    3. 代码

     1 import numpy as np
     2 
     3 def median_filter(input_image, filter_size):
     4     '''
     5     中值滤波器
     6     :param input_image: 输入图像
     7     :param filter_size: 滤波器大小
     8     :return: 输出图像
     9 
    10     注:此实现滤波器大小必须为奇数且 >= 3
    11     '''
    12     input_image_cp = np.copy(input_image)  # 输入图像的副本
    13 
    14     pad_num = int((filter_size - 1) / 2)  # 输入图像需要填充的尺寸
    15 
    16     input_image_cp = np.pad(input_image_cp, (pad_num, pad_num), mode="constant", constant_values=0)  # 填充输入图像
    17 
    18     m, n = input_image_cp.shape  # 获取填充后的输入图像的大小
    19 
    20     output_image = np.copy(input_image_cp)  # 输出图像
    21 
    22     # 空间滤波
    23     for i in range(pad_num, m - pad_num):
    24         for j in range(pad_num, n - pad_num):
    25             output_image[i, j] = np.median(input_image_cp[i - pad_num:i + pad_num + 1, j - pad_num:j + pad_num + 1])
    26 
    27     output_image = output_image[pad_num:m - pad_num, pad_num:n - pad_num]  # 裁剪
    28 
    29     return output_image
  • 相关阅读:
    CUDA从入门到精通
    [Network] 计算机网络基础知识总结
    第三章 需求工程概论
    jsp学习
    算法——递推算法
    大话设计模式读书笔记--文章汇总
    轻松学SQL Server数据库
    Oracle数据库建表+添加数据练习
    《C#图解教程》 总览
    php发送get、post请求的6种方法简明总结
  • 原文地址:https://www.cnblogs.com/iwuqing/p/11380181.html
Copyright © 2011-2022 走看看