基于python的小波阈值去噪算法
https://blog.csdn.net/alwaystry/article/details/52756051
小波图像去噪原理
图像和噪声在经小波变换后具有不同的统计特性:图像本身的能量对应着幅值较大的小波系数,主要集中在低频(LL)部分;噪声能量则对应着幅值较小的小波系数,并分散在小波变换后的所有系数中。基于此可设置一个合适的阈值门限,认为大于该阈值的小波系数的主要成份为有用的信号,给予收缩后保留;小于该阈值的小波系数,主要成份为噪声,予以置零剔除;然后经过阈值函数映射得到估计系数;最后对估计系数进行逆变换,就可以实现去噪和重建。去噪时,通常认为低通系数含有大量的图像能量,一般不作处理,只对剩余三个高通部分进行处理。一次阈值去噪并不能完全去除噪声,还需要对未作处理的低频部分(LL)再次进行小波分解和阈值去噪,直到实际图像与估计图像的偏差达到最小值。但是,随着分解和去噪次数的增加,小波系数中的噪声能量越来越小,并且趋于分散,去噪的效果将逐渐降低。一般来说,进行3-4层小波分解和去噪就可以达到满意的去噪效果。
小波阈值去噪步骤
(1)二维信号的小波分解。选择一个小波(sym8)和小波分解的层次N(3),然后计算信号S到第N层的分解。
(2)对高频系数进行阈值量化,对于从一到N的每一层,选择一个阈值,并对这一层的高频系数进行软阈值化处理。
(3)二维小波的重构,根据小波分解的第N层的低频系数和经过修改的从第一层到第N层的高频系数,来计算二维信号的小波重构。
Python实现小波阈值去噪程序
import numpy as np
import pywt
data = np.linspace(1, 4, 7)
# pywt.threshold方法讲解:
# pywt.threshold(data,value,mode =‘soft’,substitute = 0 )
# data:数据集,value:阈值,mode:比较模式默认soft,substitute:替代值,默认0,float类型
#data: [ 1. 1.5 2. 2.5 3. 3.5 4. ]
#output:[ 6. 6. 0. 0.5 1. 1.5 2. ]
#soft 因为data中1小于2,所以使用6替换,因为data中第二个1.5小于2也被替换,2不小于2所以使用当前值减去2,,2.5大于2,所以2.5-2=0.5.。..。
print “---------------------soft:绝对值-------------------------”
print pywt.threshold(data, 2, ‘soft’,6)
print “---------------------hard:绝对值-------------------------”
#data: [ 1. 1.5 2. 2.5 3. 3.5 4. ]
#hard data中绝对值小于阈值2的替换为6,大于2的不替换
print pywt.threshold(data, 2, ‘hard’,6)
print “---------------------greater-------------------------”
#data: [ 1. 1.5 2. 2.5 3. 3.5 4. ]
#data中数值小于阈值的替换为6,大于等于的不替换
print pywt.threshold(data, 2, ‘greater’,6)
print “---------------------less-------------------------”
print data
#data: [ 1. 1.5 2. 2.5 3. 3.5 4. ]
#data中数值大于阈值的,替换为6
print pywt.threshold(data, 2, ‘less’,6)
基于python的小波阈值去噪算法的更多相关文章
- 基于python的七种经典排序算法
参考书目:<大话数据结构> 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. ...
- 基于python的七种经典排序算法(转)
一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性:经过某种排序后,如果两个 ...
- 小波学习之一(单层一维离散小波变换DWT的Mallat算法C++和MATLAB实现) ---转载
1 Mallat算法 离散序列的Mallat算法分解公式如下: 其中,H(n).G(n)分别表示所选取的小波函数对应的低通和高通滤波器的抽头系数序列. 从Mallat算法的分解原理可知,分解后的序 ...
- 小波神经网络(WNN)
人工神经网络(ANN) 是对人脑若干基本特性通过数学方法进行的抽象和模拟,是一种模仿人脑结构及其功能的非线性信息处理系统. 具有较强的非线性逼近功能和自学习.自适应.并行处理的特点,具有良好的容错能力 ...
- 完全搞懂傅里叶变换和小波(1)——总纲<转载>
无论是学习信号处理,还是做图像.音视频处理方面的研究,你永远避不开的一个内容,就是傅里叶变换和小波.但是这两个东西其实并不容易弄懂,或者说其实是非常抽象和晦涩的! 完全搞懂傅里叶变换和小波,你至少需要 ...
- ECG信号读出,检测QRS,P,T 波(小波去噪,并根据检测),基于BP辨识的神经网络
这学期的课程选择神经网络.最后的作业处理ECG信号,并利用神经网络识别. 1 ECG引进和阅读ECG信号 1)ECG介绍 详细ECG背景应用就不介绍了,大家能够參考百度 谷歌.仅仅是简单说下ECG ...
- Atitit.java图片图像处理attilax总结 BufferedImage extends java.awt.Image获取图像像素点image.getRGB(i, lineIndex); 图片剪辑/AtiPlatf_cms/src/com/attilax/img/imgx.javacutImage图片处理titit 判断判断一张图片是否包含另一张小图片 atitit 图片去噪算法的原理与
Atitit.java图片图像处理attilax总结 BufferedImage extends java.awt.Image 获取图像像素点 image.getRGB(i, lineIndex); ...
- [Python ]小波变化库——Pywalvets 学习笔记
[Python ]小波变化库——Pywalvets 学习笔记 2017年03月20日 14:04:35 SNII_629 阅读数:24776 标签: python库pywavelets小波变换 更多 ...
- 基于Python的函数回归算法验证
看机器学习看到了回归函数,看了一半看不下去了,看到能用方差进行函数回归,又手痒痒了,自己推公式写代码验证: 常见的最小二乘法是一阶函数回归回归方法就是寻找方差的最小值y = kx + bxi, yiy ...
随机推荐
- vs2010编译C++ 对象的使用
// CTest.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using names ...
- 前端轻量级、简单、易用的富文本编辑器 wangEditor 的基本用法
1.富文本编辑器市面上有很多,但是综合考虑之后wangEditor是最易用的框架,推荐使用 首先进入官网 http://www.wangeditor.com 基本是2中方式引入: 使用CDN://un ...
- 前端IT攻城狮--网址搜藏(-- 欢迎留言补充 --)
一. 插件 1.validator: https://validator.niceue.com/docs/ (一款专业表单验证插件) 2.jQuery Tabs-Eas ...
- 序列号导出到csv的实现
//导出到csv public function exportCsvByIds($ids){ header("Content-type:text/html;charset=utf-8&quo ...
- 055、Java中使用for循环输出乘法口诀表
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- delphi关闭和禁用Windows服务
function StopServices(const SvrName: string): Boolean; var SCH, SvcSCH: SC_HANDLE; SS: TServiceStatu ...
- nginx的日志切换
#touch /usr/local/nginx/sbin/cut_nginx_log.sh #chmod 755 /usr/local/nginx/sbin/cut_nginx_log.sh 下面是 ...
- windows下移植别人配置好的python环境
一般来说,我们在windows下配置python环境的时候可能会比较推荐用anaconda,那么有一个比较方便的anaconda环境移植方法,也就是说,如果我已经在windows上安装好了anacon ...
- Oracle-SQL 建表
建立员工分类表: 员工分类表结构.内容分别如下图: 一.使用PL/SQL Dev 这类可视化工具直接创建表 1.建立表结构 新建-table-名称(egrade) 然后 列:创建表结构 2. ...
- Vulkan SDK 之 Graphics Pipeline
A graphics pipeline consists of shader stages, a pipeline layout, a render pass, and fixed-function ...