排序滤波

排序滤波中最常用的就是中值滤波,简单来说,就是给一个滤波范围,然后找到这个范围中的中位数,重新赋值给当前值。

例如,[1,3,2,4]这个数组,给定一个长度为3的滤波窗口,那么元素3所在位置的滤波范围就是1,3,2这三个数,这三个数的中位数是2,所以要把3更改为2。

import numpy as np
import scipy.signal as ss
x = np.arange(15)
x = [1,3,2,4]
ss.medfilt(x,3)
# array([1, 2, 3, 2])

二维的中值滤波在图像处理中非常常见,对椒盐噪声有着非常霸道的效果。

import matplotlib.pyplot as plt
img = plt.imread('img.jpg').astype(float)/255
rand = np.random.rand(*img.shape)
rand = rand * (rand > 0.9)
img += randfig = plt.figure("medfilt2")
ax = fig.add_subplot(1,2,1)
ax.imshow(img)
ax = fig.add_subplot(1,2,2)
img1 = img + 0  #深拷贝
for i in range(3):img1[:,:,i] = ss.medfilt2d(img1[:,:,i], [3,3])ax.imshow(img1)
plt.show()


(上面这个图是我在搜lena图的时候出来的,虽然不是我认识的那个lena,但感觉用来做图像处理也不错,不知道这个算不算lena二代)

中值滤波要做的第一件事,就是对滤波窗口中的数据排序,然后才能找到中位数。但从另一个角度来看,仅仅认为中位数是有效值,貌似并不公平,所以scipy提供了更加高级的排序滤波函数order_filter

其输入参数除了待滤波函数之外,还包括一个滤波窗口以及保留值的大小次序。

from scipy import signal
x = np.arange(25).reshape(5, 5)
domain = np.identity(3)
x
'''
array([[ 0,  1,  2,  3,  4],[ 5,  6,  7,  8,  9],[10, 11, 12, 13, 14],[15, 16, 17, 18, 19],[20, 21, 22, 23, 24]])
'''
signal.order_filter(x, domain, 0)
'''
array([[  0.,   0.,   0.,   0.,   0.],[  0.,   0.,   1.,   2.,   0.],[  0.,   5.,   6.,   7.,   0.],[  0.,  10.,  11.,  12.,   0.],[  0.,   0.,   0.,   0.,   0.]])
'''
signal.order_filter(x, domain, 2)
'''
array([[  6.,   7.,   8.,   9.,   4.],[ 11.,  12.,  13.,  14.,   9.],[ 16.,  17.,  18.,  19.,  14.],[ 21.,  22.,  23.,  24.,  19.],[ 20.,  21.,  22.,  23.,  24.]])
'''

其中,domain是一个单位阵,order_filter(x, domain, 0)表示选出对角阵所对应元素中排名第0的元素,也就是最小值;order_filter(x, domain, 2)选择的是排名第2的元素,也就是最大值。

就实际情况来看,domain覆盖的第一个子阵中,以0为中心,则只能覆盖到2x2的范围,其对角元素为0,6,最小值是0,最大值是6。如以6为中心,则可以完全覆盖3x3的内容,最小值为0,最大值为12。

python中值滤波相关推荐

  1. python中值滤波去除椒盐噪声_python 中值滤波,椒盐去噪,图片增强实例

    受光照.气候.成像设备等因素的影响,灰度化后的图像存在噪声和模糊干扰,直接影响到下一步的文字识别,因此,需要对图像进行增强处理.图片预处理中重要一环就是椒盐去澡,通常用到中值滤波器进行处理,效果很好. ...

  2. python中值滤波去除反光_Python 实现中值滤波、均值滤波的方法

    红包: Lena椒盐噪声图片: # -*- coding: utf-8 -*- """ Created on Sat Oct 14 22:16:47 2017 @auth ...

  3. python中值滤波介绍_Python 实现中值滤波、均值滤波的方法

    红包: Lena椒盐噪声图片: # -*- coding: utf-8 -*- """ Created on Sat Oct 14 22:16:47 2017 @auth ...

  4. python中值滤波去除反光_数学之路-python计算实战(17)-机器视觉-滤波去噪(中值滤波)...

    Blurs an image using the median filter.C++:void medianBlur(InputArray src, OutputArray dst, int ksiz ...

  5. python 中值滤波

    代码在git #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Wed Dec 8 09:46: ...

  6. python中值滤波算法_Python扩展库scipy中值滤波算法的应用

    中值滤波是数字信号处理.数字图像处理中常用的预处理技术,特点是将信号中每个值都替换为其邻域内的中值,即邻域内所有值排序后中间位置上的值.下面的代码演示了scipy库中signal模块的中值滤波算法的用 ...

  7. python 中值滤波,椒盐去噪,图片增强

    受光照.气候.成像设备等因素的影响,灰度化后的图像存在噪声和模糊干扰,直接影响到下一步的文字识别,因此,需要对图像进行增强处理.图片预处理中重要一环就是椒盐去澡,通常用到中值滤波器进行处理,效果很好. ...

  8. python中值滤波、最大池化、平均池化、canny边缘检测(石原里美系列一)

    一.常见三种滤波器介绍 中值滤波:取卷积区域内的中位数 最大池化:取卷积区域内的最大值 平均池化:取卷积区域内的均值 边缘检测:边缘检测就是找到图像的边缘信息(轮廓) 二.故事背景 有一天,石原里美小 ...

  9. python中值滤波算法_Python实现卡尔曼滤波算法之贝叶斯滤波

    Python实现卡尔曼滤波算法之贝叶斯滤波 作者:yangjian 卡尔曼滤波器属于贝叶斯滤波器的一种特例,本文主要讲解贝叶斯滤波原理及其算法的python实现. 先来看下贝叶斯公式 贝叶斯公式 :后 ...

最新文章

  1. python网络爬虫的基本步骤-十分钟教会你用Python写网络爬虫程序
  2. web API简介(二):客户端储存之document.cookie API
  3. 13、ActiveX控件
  4. [转载]无需软件合并多个TS流文件
  5. C++ Primer 5th笔记(10)chapter10 泛型算法 : read
  6. 转://使用insert插入大量数据的总结
  7. 开发者论坛一周精粹(第六十八期) 如何把ecs转到另外一个账号?
  8. 注入工具的原理和开发
  9. python邮件发送哪个好_python发邮件(一)
  10. php中json_decode()和json_encode()的使用方法
  11. Java 序列化总结.md
  12. gggenes绘制多物种基因结构比较
  13. 【操作系统】Nachos 内核线程
  14. 关闭绿联硬盘盒子自动休眠的方法!
  15. 如何绘制逻辑图 — 8.逻辑的表达:数据逻辑
  16. 利用python批量创建文件夹、批量创建文件、批量复制文件到指定文件夹
  17. 华硕ubuntu安装
  18. 大数据之VMware和centos7安装
  19. (干货)全面分析6大国产CPU处理器
  20. 量化投资超越市场必须具备哪三个条件

热门文章

  1. 社群营销的意义和价值
  2. 为什么电场线不能相交或相切
  3. 基于 Win10 平台 搭建 Elasticsearch 集群
  4. c语言 malloc 函数用法
  5. (附源码)计算机毕业设计ssm高校体育馆管理信息系统
  6. rust服务器配置文件,使用Rust编写一个简单的Socket服务器(1):Rust下的配置载入...
  7. 捷联惯导算法与组合导航原理学习——等效旋转矢量和姿态阵转换(一)
  8. TCS3200的使用
  9. python12306买票_自己用python随意写的12306订票代码
  10. 字符串指针的一些注意事项