9-1小波变换 小波分解和重构(matlab程序)

news/2024/7/21 7:52:03 标签: 重构, 图像处理, 人工智能, matlab, 学习

1.简述

      一、小波处理信号的一般过程
1)取样:这是一个预处理步骤。若信号连续,那么必须以能够捕获原信号必要细节的速率取样。不同的应用决定了不同的取样率。如:原信号的细节频率为20kHz,由Nyquist采样定理,此时的取样率至少应为细节频率的两倍,即40kHz,才能保证细节频率不失真。

2)分解:信号取样后,选择一个最高级近似系数f j ∈ v,以便能最佳的逼近f ff。之后,通过多分辨率分解算法,将信号进行逐级分解。该步骤的输出是各级别的小波系数(细节系数)和最低级别(或自定义的合适级别)的近似系数。该系数集就是下一步信号处理中要处理的对象。

3)信号处理:通过舍弃非显著系数可以压缩信号,或者以某种方式使信号滤波或去噪。该步骤的输出是修改过的系数集(细节系数集),可被存储或立即重构以重组经过处理的信号。但在某些情况下,原信号不再有用,可以舍弃,如:奇异性检测。

4)重构:把经过信号处理步骤修改过的系数集(细节系数集),应用多分辨率重构算法,进行逐级重构,该步骤输出最高级近似系数。

二、分解算法
1. 分解迭代
首先,基于取样率和进行什么样的多分辨率分析确定f ff的近似空间,其能最佳的反映f ff的各种信息。之后选择 ,以便能最佳的逼近f 。

三、重构算法
1. 重构迭代
一旦信号分解完毕,就可以通过修改某些w j ′ w_{j'}w ,实现对信号的处理。如果想要滤除信号中的噪声,那么f ff中的w j ′ w_{j'}w 中相应于不想要的频率部分可被舍弃,结果使得噪声被显著减小。如果想要对原信号进行数据压缩,可将幅值较小的w j ′ w_{j'}w 分量舍弃,这不会显著的改变原信号特征,但会获得极大的数据压缩效果。当w j ′ w_{j'}w 分量被修改完成之后,需要一个重构算法,重新组装被滤波或被压缩的信号,这个过程即为信号的重构.

2. 多分辨率重构算法
对近似系数和小波系数采用离散滤波器实现形式进行重构

这几乎就是两个卷积之和,唯一区别是卷积的指标是k − l k-lk−l而不是k − 2 l k-2lk−2l,即上式是一个奇数(l ‾ ( k − ( 2 l + 1 ) ) \overline{l}_{(k-(2l+1))} 缺失的卷积。可以利用上取样算子简单地用0乘奇数项而复原回来。

形成一个在所有的奇数位置为0的新序列。原来的每个非零项给定一个新的偶数指标,这只要把原有的指标倍乘即可。

通过离散滤波器(卷积算子),来描述迭代步骤。

2.代码


load woman;             %打开显示原始的图像
imshow(X,map);          %X包含原始图像信息,map是调色板,这是一个索引图像
%% 对图像X数据信息进行单层分解,小波为db1
nbcol=size(map,1);
[cA1,cH1,cV1,cD1]=dwt2(X,'db1');   
cod_X=wcodemat(X,nbcol);
cod_cA1=wcodemat(cA1,nbcol);
cod_cH1=wcodemat(cH1,nbcol);
cod_cV1=wcodemat(cV1,nbcol);
cod_cD1=wcodemat(cD1,nbcol);
%%   图像编码    4种细节系数
figure
subplot(221)
imshow(cod_cA1,map)
title('近似细节系数')
subplot(222)
imshow(cod_cH1,map)
title('水平细节系数')
subplot(223)
imshow(cod_cV1,map)
title('垂直细节系数')
subplot(224)
imshow(cod_cD1,map)
title('对角细节系数')
Y=idwt2(cA1,cH1,cV1,cD1,'db1','nbcol');
%%   对分解的细节系数执行单层重构,小波为db1
figure;
imshow(Y,map);
title('重构后的图像')
 

3.运行结果

 

 


http://www.niftyadmin.cn/n/1005303.html

相关文章

在 Linux 中查找 IP 地址的 3 种简单方法

在 Linux 系统中,经常需要查找 IP 地址以进行网络配置、故障排除或安全管理。无论是查找本地主机的 IP 地址还是查找其他设备的 IP 地址,本文将介绍三种简单的方法,帮助你在 Linux 中轻松找到所需的 IP 地址。 总结 通过上述三种简单的方法&…

【iOS】 各iPhone手机屏幕尺寸分辨率

机型物理像素逻辑像素规格对角线iPhone 14 Pro Max1290*2796px430*932pt3x6.7英寸iPhone 14 Pro1179*2556px393*852pt3x6.1英寸iPhone 14 Plus1284*2778px428*926pt3x6.7英寸iPhone 141170*2532px390*844pt3x6.1英寸iPhone 13 Pro Max1284*2778px428*926pt3x6.7英寸iPhone 13 P…

自定义MVC架构【上】

目录 一、前言 1.什么是MVC架构 2.使用MVC架构的好处 3.MVC架构与三层架构的区别 4.MVC架构的思路 二、自定义MVC 1.最初版本 2.进阶版 3.反射优化版 4.反射增强版 一、前言 1.什么是MVC架构 MVC架构(Model-View-Controller),即模…

深入理解设计模式的设计原则

1、如何理解单一职责原则(SRP)? 单一职责原则(Single Responsibility Principle,简称SRP),它要求一个类或模块 应该只负责一个特定的功能。这有助于降低类之间的耦合度,提高代码的可…

【C语言】GNU make 和 Makefile :构建工具与构建描述文件的力量

本文将详细介绍make和Makefile,它们是软件开发中常用的构建工具和构建描述文件。本文将探讨make的作用、原理和用法,以及Makefile的结构、语法和常见用法。通过了解这些工具,开发者可以更高效地管理和构建复杂的软件项目。 引言一、make1.1 m…

Unity URP 获取Camera Stack

URP 获取Camera Stack 1.using UnityEngine.Rendering.Universal; 2.Camera.main.GetUniversalAdditionalCameraData().cameraStack

【Android从零单排系列十三】《Android视图控件——ProgressBar》

前言 小伙伴们,在上文中我们介绍了Android视图组件SeekBar,本文我们继续盘点,介绍一下视图控件的ProgressBar。 一 ProgressBar基本介绍 ProgressBar是Android平台上的一个UI组件,用于展示任务进度或加载状态的指示器。 二 Pr…

Qt开发1--QCustomPlot的第一个示例

本文记录了在Linux上使用QCustomPlot进行一个基本绘制所需的完整过程,包括如何使用qtcreator,编辑ui以及编写相应的C代码。以下是详细步骤: 1、使用qtcreator启动开发环境: [blctrlmain-machine qt]$ qtcreator 启动后&#xf…