Matlab 离散小波变换函数 dwt2() 原理介绍与实验
文章目录
- 一、小波变换的原理
- 1.1 小波变换简介
- 1.2 CWT和DWT的原理
- 二、傅里叶变换与DWT的比较
- 三、Matlab实现图像的二维小波变换
- 3.1 dwt2()函数介绍
- 3.2 dwt2()的使用
- 3.2.1 输入和输出图像
- 3.2.2 Matlab代码
- 3.2.3 实验总结
离散小波变换(DWT)的原理介绍和说明请参考文章: 【DWT笔记】傅里叶变换与小波变换 这篇文章写的通俗易懂,小白也能看懂。
一、小波变换的原理
1.1 小波变换简介
离散小波变换(DWT)的原理介绍和说明请参考文章:【DWT笔记】傅里叶变换与小波变换 这篇文章写的通俗易懂,小白也能看懂。简单从上面的参考文章中提取关键信息:
1、图像信号的低频部分(低通带)表示图像的基本信息(平滑信息),而高频部分(高通带)表示图像的细节信息。
2、图像中的高频部分一般持续的时间是比较短的,一般是以短时突变或者尖峰的形式出现,如图像的边缘信息和一些噪点信息。而低频信息在大部分地方存在,反应在一些背景或内容信息。这样我们在分析信号的低频部分的时候,只需要较大的频率分辨率和较小的时域分辨率就能够很好的体现低频的信息,而在高频部分,就需要较大的时间分辨率和较小的频率分辨率就能够很好的体现高频的信息。
3、在离散小波变换中,滤波器将在不同的尺度条件下截断信号的某些频率成分:信号通过不同的高通滤波器得到一系列的信号高频成分,通过不同的低通滤波器得到一系列的低频成分,这样便能分析信号的不同频率成分。
1.2 CWT和DWT的原理
小波变换利用一个具有快速衰减性和震荡性的函数作为母函数,通过尺度因子a(也称为伸缩因子)和平移因子t对母函数进行伸缩和平移得到一个函数族(称为小波基函数)。尺度因子和平移因子是小波基最重要的两个参数,也代表了小波变换的基本思想。
在一定条件下,任意能量有限的信号可以按照其函数族进行时–频分解,基函数在时–频相平面上具有可变的时间–频率窗口,可以适应不同分辨率的需求。
连续小波变换(CWT)是通过不断改变窗口的尺度计算完成的:在时域移动窗口函数,然后与信号做卷积运算。
在离散小波变换(DWT)中,滤波器将在不同的尺度条件下截断信号的某些频率成分:信号通过不同的高通和低通滤波器得到一系列的高频和低频成分,这样便可以分析不同的频率成分。
二、傅里叶变换与DWT的比较
基本的傅里叶变换不存在分辨率的问题,因为傅里叶变换在时域里面频域的分辨率为0,同样在频域里面,时域的分辨率也为0,所以说,傅里叶变换其实没有分辨率。
短时傅里叶变换是通过加窗的方式对时域不同时间段的信号进行分析,但是由于窗长是固定的,所以,分辨率是固定的,并且根据窗长的选择在时域和频域的分辨率上是一个矛盾。
小波变换可以根据尺度的变换和偏移在不同的频段上给出不同的分辨率,这在实际中是非常有用的。
三、Matlab实现图像的二维小波变换
3.1 dwt2()函数介绍
参考博客:小波学习笔记(图像的分解与重构)——MATLAB
Matlab实现二维小波变换的函数为:
[CA,CH,CV,CD] = dwt2(X,'wname')
其中X为输入的图像,'wname’是小波名字。如常用的 ‘wname’='db1’小波滤波器,db1表示小波的消失矩为1,小波滤波器的长度为2*1=2。
输出变量为:
CA:图像的低频信息,刻画原始图像的逼近信息。
CH:图像水平方向的高频信息,刻画原始图像的横向细节。
CV:图像竖直方向的高频信息,刻画原始图像的垂直细节。
CD:图像在对角线方向的高频信息,刻画原始图像的对角线上的细节。
DWT中的采样间隔需要满足Nyquist定理,一般默认采用二倍隔点采用,因此经过DWT的图像的长和宽均变为原来的 1/2
图像小波分解示意图(三层) :
3.2 dwt2()的使用
3.2.1 输入和输出图像
输入图像(521*521):
低频 CA(261*261):
水平方向的高频 CH(261*261):
垂直方向的高频 CV(261*261):
垂直方向的高频 CD(261*261):
3.2.2 Matlab代码
clear all;
close all;
clc;imagePath='source_images\3.jpg';
image_color=imread(imagePath);
image_gray=rgb2gray(image_color);
image_double=double(image_gray);[CA,CH,CV,CD]=dwt2(image_double,'db1');
imwrite(uint8(CA),'Results/CA.jpg');
imwrite(uint8(CH),'Results/CH.jpg');
imwrite(uint8(CV),'Results/CV.jpg');
imwrite(uint8(CD),'Results/CD.jpg');
3.2.3 实验总结
输入的图像经过DWT分解为4个尺寸变为原图1/4的图像,其中包含一个低频图像,3个高频图像。根据这2张图像可以做后续的处理。
Matlab 离散小波变换函数 dwt2() 原理介绍与实验相关推荐
- php new对象 调用函数,关于JS中new调用函数的原理介绍
这篇文章主要介绍了关于JS中new调用函数的原理介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 JavaScript 中经常使用构造函数创建对象(通过 new 操作符调用一个函数) ...
- Java 离散小波变换公式_一维离散小波变换函数使用总结
前言 matlab自带的小波分析工具非常全!实际工作中直接用即可.但是刚开始使用会遇到挫折:它的函数太多,并且它们的"名称.功能.配套使用"等要求都有些"相近" ...
- wrcoef2函数_二维离散小波变换函数使用总结
前言 地球物理信号不止有地表检波器接收的一维信号!当把检波器排列为一个阵列时,将它们各自记录的信号集合在一起就是一个二维信号.有些背景噪声:在一维信号中体现的是随机性,但有可能在二维信号中就显示出很强 ...
- matlab的findpeaks函数使用方法介绍
matlab提供了查找波峰的函数findpeaks. findpeaks()函数寻找数据data中的局部峰值. 其调用方式为: %常用调用方式为:1.[peaks,locs] = findpeaks( ...
- Matlab中mat2gray函数的原理和使用及图像类和类型间的转换
mat2gray 函数mat2gray可以把任意任意类型图像矩阵转换为取值范围为[0,1]的归一化double类数组. 调用格式 B = mat2gray(A) 将图像矩阵A归一化为图像矩阵B,A的值 ...
- optee应用程序中malloc函数的原理介绍
文章目录 1.TA的反汇编文件 2.TA中的堆的定义 3.malloc ★★★ 友情链接 : 个人博客导读首页-点击此处 ★★★ TA(trust application)是optee种的应用程序,也 ...
- optee内核中malloc函数的原理介绍
文章目录 1.链接文件和汇编文件的对比分析 2.malloc和calloc 3.optee中的内核栈 ★★★ 友情链接 : 个人博客导读首页-点击此处 ★★★ 1.链接文件和汇编文件的对比分析 可用查 ...
- 离散小波matlab程序,三维离散小波变换matlab实现.pdf
维普资讯 2006年第 5期 大 众 科 技 NO.5,2006 (总第91期) DAZHONG KEJ (CumulativelyNo.91) 三维离散小波变换的matlab实现 刘 丽 1,2 ( ...
- MATLAB中ode23函数,龙格库塔函数
今天说一说MATLAB中ode23函数的原理,在网上看了好多,但是不知道是怎么计算的,就知道是那么用的,但是最后结果咋回事不知道,今天来讲一讲是怎么计算的. 首先来个程序: function f=eg ...
最新文章
- 【干货】裸金属服务Ironic项目介绍
- 最简洁的y460显卡切换安装方式
- java的环境变量设置_Java开发环境不再需要配置classpath
- LintCode刷题笔记-- BackpackIII
- 用cxf编写基于spring的webservice之上篇
- ssh连接缓慢 ssh连接失败问题 Linux 脚本解决ssh连接缓慢问题,windows解决本地ssh连接失败
- 学习韩顺平java基础笔记 (自用)
- win10易升工具使用教程,win10易升如何使用
- echart渲染深圳地图
- @Autowired实现的原理
- 女性bmi计算器JAVA代码_简单的BMI计算器
- 深度学习部署(十八): CUDA RunTime API _wa_仿射变换的实现
- Dremel made simple with Parquet (Parquet 原理分析)
- 阿里云移动研发平台EMAS是什么?移动研发平台EMAS有什么特色?
- Game with Chips(思维)
- GitHub开源协议详解及常用协议介绍
- 25 匹马,5 个赛道,没有计时器,请问最低多少次可以找出跑得最快的 3匹马
- 英文ppt结尾欢迎您的意见_不受欢迎的意见,您需要大型的前期设计
- picoCTF 2022 wp
- Python123:测验1: Python基本语法元素 (第1周)