python中值滤波
排序滤波
排序滤波中最常用的就是中值滤波,简单来说,就是给一个滤波范围,然后找到这个范围中的中位数,重新赋值给当前值。
例如,[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中值滤波相关推荐
- python中值滤波去除椒盐噪声_python 中值滤波,椒盐去噪,图片增强实例
受光照.气候.成像设备等因素的影响,灰度化后的图像存在噪声和模糊干扰,直接影响到下一步的文字识别,因此,需要对图像进行增强处理.图片预处理中重要一环就是椒盐去澡,通常用到中值滤波器进行处理,效果很好. ...
- python中值滤波去除反光_Python 实现中值滤波、均值滤波的方法
红包: Lena椒盐噪声图片: # -*- coding: utf-8 -*- """ Created on Sat Oct 14 22:16:47 2017 @auth ...
- python中值滤波介绍_Python 实现中值滤波、均值滤波的方法
红包: Lena椒盐噪声图片: # -*- coding: utf-8 -*- """ Created on Sat Oct 14 22:16:47 2017 @auth ...
- python中值滤波去除反光_数学之路-python计算实战(17)-机器视觉-滤波去噪(中值滤波)...
Blurs an image using the median filter.C++:void medianBlur(InputArray src, OutputArray dst, int ksiz ...
- python 中值滤波
代码在git #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Wed Dec 8 09:46: ...
- python中值滤波算法_Python扩展库scipy中值滤波算法的应用
中值滤波是数字信号处理.数字图像处理中常用的预处理技术,特点是将信号中每个值都替换为其邻域内的中值,即邻域内所有值排序后中间位置上的值.下面的代码演示了scipy库中signal模块的中值滤波算法的用 ...
- python 中值滤波,椒盐去噪,图片增强
受光照.气候.成像设备等因素的影响,灰度化后的图像存在噪声和模糊干扰,直接影响到下一步的文字识别,因此,需要对图像进行增强处理.图片预处理中重要一环就是椒盐去澡,通常用到中值滤波器进行处理,效果很好. ...
- python中值滤波、最大池化、平均池化、canny边缘检测(石原里美系列一)
一.常见三种滤波器介绍 中值滤波:取卷积区域内的中位数 最大池化:取卷积区域内的最大值 平均池化:取卷积区域内的均值 边缘检测:边缘检测就是找到图像的边缘信息(轮廓) 二.故事背景 有一天,石原里美小 ...
- python中值滤波算法_Python实现卡尔曼滤波算法之贝叶斯滤波
Python实现卡尔曼滤波算法之贝叶斯滤波 作者:yangjian 卡尔曼滤波器属于贝叶斯滤波器的一种特例,本文主要讲解贝叶斯滤波原理及其算法的python实现. 先来看下贝叶斯公式 贝叶斯公式 :后 ...
最新文章
- python网络爬虫的基本步骤-十分钟教会你用Python写网络爬虫程序
- web API简介(二):客户端储存之document.cookie API
- 13、ActiveX控件
- [转载]无需软件合并多个TS流文件
- C++ Primer 5th笔记(10)chapter10 泛型算法 : read
- 转://使用insert插入大量数据的总结
- 开发者论坛一周精粹(第六十八期) 如何把ecs转到另外一个账号?
- 注入工具的原理和开发
- python邮件发送哪个好_python发邮件(一)
- php中json_decode()和json_encode()的使用方法
- Java 序列化总结.md
- gggenes绘制多物种基因结构比较
- 【操作系统】Nachos 内核线程
- 关闭绿联硬盘盒子自动休眠的方法!
- 如何绘制逻辑图 — 8.逻辑的表达:数据逻辑
- 利用python批量创建文件夹、批量创建文件、批量复制文件到指定文件夹
- 华硕ubuntu安装
- 大数据之VMware和centos7安装
- (干货)全面分析6大国产CPU处理器
- 量化投资超越市场必须具备哪三个条件