精华内容
下载资源
问答
  • matlab 一维 小波重构
    2021-04-22 14:47:01

    去年11月发布了一系列有关小波变换和图像处理的文章,把学习小波过程中的心得体会和编写的程序放在网上和大家共享交流。半年来,感谢大家的关注和帮助,在相互的讨论交流中,我不断地从大家提出的问题中拓展自己的知识面,对小波的理论及其应用有了更深入的了解和掌握。根据和大家讨论交流中发现的问题,对博客中的程序进行修正。有关小波图像分解和重构的两篇文章中分享的程序,存在下列问题:

    (1)程序所用的小波函数只有非标准的Haar小波,其滤波器组为 Lo_D=[1/2 1/2],

    Hi_D=[-1/2 1/2],是固化在 mydwt2.m 的程序中的,不能选择其他的小波函数;

    (2)非标准的Haar小波,其分解出来的系数矩阵中,高频系数的细节内容(轮廓、边缘等特征)不明显;

    (3)函数 mydwt2

    中列变换的矩阵对象为输入矩阵,这是错误的,其矩阵对象应该是行变换后的缓存矩阵;

    (4)函数 mydwt2

    的输出用[LL,HL,LH,HH]表示,不是很规范,应改为[cA,cV,cH,cD]来表示,即一级小波变换输出的系数矩阵有4个部分:平均部分、垂直细节部分、水平细节部分和对角线细节部分。

    (5)函数 mywavedec2 的输出 y 是与输入矩阵 x

    相同大小的矩阵,并且已将N级分解后所有的平均、细节系数组合成一体的。实际上,这种定义只对Haar小波有效。

    (6)原程序中要调用 modmat 函数对图像矩阵进行修剪,使之能被 2 的 N

    次方整除,主要是为了生成塔式结构图像而设的,对上述问题修正后,这个 modmat 函数已不需使用了。

    针对上述问题,我对程序作了修正,发布在今天的3篇文章里,请大家点击查看。新修正的程序更为简洁易懂,功能也有所增强,可以用任意的小波函数进行小波分解,可根据小波分解系数矩阵重构出指定分解级的低频系数和原始图像。

    上一篇文章中我们实现了小波的一维、二维信号分解与重构,其中的二维信号分解与重构,只要稍作修改,就可以实现图像的分解和重构了。修改的工作,主要是对图像信号进行规范化处理、数据格式转换和绘图细节处理等。

    简单起见,我们从黑白(灰度)图像的分解、重构说起,因为彩色图像的处理要复杂一点。在本文中,我们使用著名的Lena图作为原始图像。

    a4c26d1e5885305701be709a3d33442f.png

    图1

    首先,为了实现图像的N层分解,对一幅m行n列的黑白图像,我们要对其进行规范化处理,使其能被2的N次方整除。以下的modmat()

    函数实现此功能:

    function

    y=modmat(x,dim)

    % 函数 MODMAT()

    对输入矩阵x进行规范化,使其行列数均能被 2^dim 整除

    % 输入参数:x —— r*c

    维矩阵;

    % dim —— 矩阵重构的维数

    % 输出参数:y —— rt*ct

    维矩阵,mod(rt,2^dim)=0,mod(ct,2^dim)=0

    [row,col]=size(x); % 求出输入矩阵的行列数row,col

    rt=row -

    mod(row,2^dim); % 将row,col分别减去本身模 2^dim 得到的数

    ct=col -

    mod(col,2^dim); % 所得的差为rt、ct,均能被 2^dim 整除

    y=x(1:rt,1:ct); % 输出矩阵 y 为输入矩阵 x 的 rt*ct 维子矩阵

    然后,将规范化后的图像的数据格式由适合显示图像的uint8格式转换为适合数值处理的double格式,再调用二维小波分解函数进行图像分解,最后为了清晰地显示分解图像的塔式结构,在图像的相应区域绘制若干分界线。具体程序如下:

    function

    y=mywavedec2(x,dim)

    % 函数 MYWAVEDEC2() 对输入矩阵 x 进行 dim

    层分解,得到相应的分解系数矩阵 y

    % 输入参数:x ——

    输入矩阵;

    % dim —— 分解层数。

    % 输出参数:y ——

    分解系数矩阵。

    x=modmat(x,dim); % 首先规范化输入矩阵,使其行列数均能被 2^dim 整除

    subplot(121);imshow(x);title('原始图像'); % 画出规范化后的源图像

    [m,n]=size(x); % 求出规范化矩阵x的行列数

    xd=double(x); % 将矩阵x的数据格式转换为适合数值处理的double格式

    for i=1:dim

    xd=modmat(xd,1);

    [dLL,dHL,dLH,dHH]=mydwt2(xd); %

    矩阵小波分解

    tmp=[dLL,dHL;dLH,dHH]; % 将分解系数存入缓存矩阵

    xd=dLL; % 将缓存矩阵左上角部分的子矩阵作为下一层分解的源矩阵

    [row,col]=size(tmp); % 求出缓存矩阵的行列数

    y(1:row,1:col)=tmp; % 将缓存矩阵存入输出矩阵的相应行列

    end

    yd=uint8(y); % 将输出矩阵的数据格式转换为适合显示图像的uint8格式

    for

    i=1:dim % 对矩阵 yd 进行分界线处理,画出分解图像的分界线

    m=m-mod(m,2);

    n=n-mod(n,2);

    yd(m/2,1:n)=255;

    yd(1:m,n/2)=255;

    m=m/2;n=n/2;

    end

    subplot(122);imshow(yd);title([

    num2str(dim) ' 维小波分解图像']);

    以下是程序的运行结果。a4c26d1e5885305701be709a3d33442f.png

    图2

    上述的图像分解程序,其输出数据是double格式的,以便作为重构程序的输入。

    接下来我们讨论图像的重构。我编写的重构程序中,为了比较分解图像和重构图像,首先绘出经过小波分解的图像,然后再进行重构。在绘制分解图像和重构图像的过程中,要注意数据格式的转换。

    function

    y=mywaverec2(x,dim)

    % 函数

    MYWAVEREC2() 对输入的分解系数矩阵x进行

    dim 层重构,得到重构矩阵 y

    % 输入参数:x

    ——分解系数矩阵;

    % dim ——重构层数;

    % 输出参数:y

    ——重构矩阵。

    % 绘制分解图像

    xd=uint8(x); % 将输入矩阵的数据格式转换为适合显示图像的uint8格式

    [m,n]=size(x); % 求出输入矩阵的行列数

    for

    i=1:dim % 对转换矩阵xd进行分界线处理

    m=m-mod(m,2);

    n=n-mod(n,2);

    xd(m/2,1:n)=255;

    xd(1:m,n/2)=255;

    m=m/2;n=n/2;

    end

    figure;

    subplot(121);imshow(xd);title([ num2str(dim)

    ' 层小波分解图像']); % 画出带有分界线的分解图像

    % 重构图像

    xr=double(x); % 将输入矩阵的数据格式转换回适合数值处理的double格式

    [row,col]=size(xr); % 求出转换矩阵xr的行列数

    for

    i=dim:-1:1 % 重构次序是从内层往外层进行,所以先抽取矩阵

    xr 的最内层分解矩阵进行重构

    tmp=xr(1:floor(row/2^(i-1)),1:floor(col/2^(i-1))); % 重构的内层矩阵的行列数均为矩阵xr的2^(i-1)

    [rt1,ct1]=size(tmp); % 读取待重构矩阵 tmp 的行列数

    rt=rt1-mod(rt1,2);ct=ct1-mod(ct1,2);

    rLL=tmp(1:rt/2,1:ct/2); % 将待重构矩阵 tmp 分解为四个部分

    rHL=tmp(1:rt/2,ct/2+1:ct);

    rLH=tmp(rt/2+1:rt,1:ct/2);

    rHH=tmp(rt/2+1:rt,ct/2+1:ct);

    tmp(1:rt,1:ct)=myidwt2(rLL,rHL,rLH,rHH); % 将重构结果返回到矩阵

    tmp

    xr(1:rt1,1:ct1)=tmp; % 把矩阵 tmp 的数据返回到矩阵 xr 的相应区域,准备下一个外层的重构

    end

    y=xr; % 重构结束后得到的矩阵xr即为输出矩阵 y

    yu=uint8(xr); % 将矩阵xr的数据格式转换为适合显示图像的uint8格式

    subplot(122);imshow(yu);title('小波重构图像');a4c26d1e5885305701be709a3d33442f.png

    图3

    更多相关内容
  • 多尺度一维小波重构实例分析
  • 一维信号小波分解和重构实例演示 关于该程序的详细用法,可参考博客: https://blog.csdn.net/m0_70745318/article/details/124787057
  • matlab 实现一维和二维离散小波变换,以及小波重构matlab实现一维和二维离散小波变换,以及小波重构,同时有代码实现的截图和各种系数重构的二范式比较 离散小波变换 小波重构 matlab
  • 一维信号的小波分解重构,其中matlat的源代码是对序列做了扩展的
  • 这是小波分解与重构的源代码,对于学习分析的人可以参考下,函数都是与MATLAB里面小波函数一致,可以直接使用DB4小波和SYM4小波,其他的类型的小波大家可以自己改改。
  • 源码: 一维离散小波变换, 分解和重构, db6 小波, 基波可以随意更改, 尺度函数也可随意更改, 附上 matlab 教程
  • 一维信号小波分解和重构实例演示

    一、信号小波分解

    用dwt对一维信号 sumlin进行分解重构,得到分解的低频和高频信号如图1所示。

    在这里插入图片描述

    图1 sumsin信号一层分解后的低频和高频信号

    用 wavedec命令、 detcoef命令和 appcoef命令得到分解的各个层次的低频和高频信号如图2所示。

    在这里插入图片描述

    图2 sumsin信号分解三层对应的低频和高频信号

    二、重构

    用idwt对分解信号进行重构,并将重构信号与原始信号做差比较其差距,结果显示相差很小,为精确重构,如图3所示。

    在这里插入图片描述

    图3 分解一层的重构信号及误差

    用 wavered命令进行多层信号重构和效果对比,如图4所示。可以看出,只由高层低通信号重构的结果为信号的概貌,而细节信息可由各层次的高通信息进行重构,从而实现信号的分层次分解和重构。

    在这里插入图片描述

    图4 由不同层次重构信号的结果

    三、资源获取

    资源可从下方获取:
    https://download.csdn.net/download/m0_70745318/85383518

    展开全文
  • matlab 一维小波工具箱去噪

    千次阅读 2022-04-03 14:09:36
    3.执行 4 级小波系数分解。 4.执行多级小波系数分解 5.去噪 6.设置参数 7.信号去噪 . MATLAB版本 2015b 二. 使用步骤 1.打开工具箱 找到小波工具箱并打开(两种方式) 1. 在窗口输入wavemenu,弹出...

    二. 使用步骤

    1.打开工具箱

    找到小波工具箱并打开(两种方式)

    1. 在窗口输入wavemenu,弹出小波工具箱主界面,然后点击Wavelet 1-D按钮;

    2.通过工具栏进入;

     

     

    2.导入信号源

    选择 File——Load——Signal  命令在弹出的对话框中找到 noisdopp.mat  文件,它的路径一般为Matlab\toolbox\wavelet\wavedemo,单击确定按钮。界面如下图所示。

    3.执行 4 级小波系数分解。

            在界面中选择db4x小波并进行 4 级分解,然后单击Analyze按钮,进过短暂的计算后,会显示分解系数图,如下图所示。

    4.执行多级小波系数分解

            在界面的右上方,从at levels下拉列表中选择4,并单击Analyze按钮,如下图所示。界面的右下方提供了6中分解模式选项,可以选择不同的选项查看不同的分解系数模式。

    5.去噪

            单击De-noise 按钮,一维小波 降噪界面出现,如下图所示。

     

    6.设置参数

            在下拉框中选择阈值规则;

            在单选按钮中选择阈值函数(soft 或 hard)

            在下面的下拉框中选择噪声结构

            设置每层的阈值,如下图所示。

     

     

    7.信号去噪

             设置好参数后点击De-noise 按钮,进行去噪。

            可以看到原始信号和去噪后信号叠加在一起。

     

            单击View De-noised Signal 按钮,弹出去噪窗口,如下图所示。

     

     

    8.显示统计图

            单击Residuals 按钮,弹出去噪后的信号和原始信号的误差统计值,如图所示。 


    如有错误之处请指正

    展开全文
  • 如果是这样,WAVELIFT 使用默认的 Cohen-Daubechies-Feauveau (CDF) 9/7 小波,即'cdf97'。目前WAVELIFT只支持两种小波,即cdf97和名为'spl53'的spline 5/3。 但是,借助下图所示的有组织的提升结构,它可以适应...
  • 通过小波多级分解重构一维信号的系数,并在Python中实现Matlab函数wrcoef 目的 在Python中,我们有两个很棒的库来处理不同类型的wavelet:和。 后者目前不在积极开发中,但可以用于鼓舞人心的目的。 不幸的是,在两...
  • 本实验利用MATLAB2015进行编程,调用系统小波函数对信号进行分解,实现Mallat分解与重构算法对一维信号进行多层分解和重构。对信号进行多层分解可实现对信号的去噪和数据压缩处理,分解为小波函数的线性组合,阶数高...
  • 基于matlab实现了一维信号用Haar小波来分解与重构的算法,
  • MATLAB中实现图像分解和重构的命令主要有dwt2(idwt2)和 wavedec2( waverec2)。其中,进行层小波分解的命令为dwt2,对应的小波重构命令为idwt2;进行多层分解的命令为wavedec2,对应的重构命令为 wavered2。

    一、原理

    MATLAB中实现图像分解和重构的命令主要有dwt2(idwt2)和 wavedec2( waverec2)。其中,进行一层小波分解的命令为dwt2,对应的小波重构命令为idwt2;进行多层分解的命令为wavedec2,对应的重构命令为 wavered2。

    1.1 一层小波分解与重构

    [CA,CH,CV,CD] = dwt2(X,‘wname’);

    其中,dwt2表示离散小波变换;X为输入参数,是图像;wname是小波名字;输出变量CA为低低频分解信息,刻画原始图像的逼近信息;CH为低高频分解信息,刻画原始图像的横向细节;CⅤ为高低频分解信息,刻画原始图像的垂直细节;CD为高高频分解信息,刻画原始图像的对角线上的细节。

    [CA,CH,CV,CD] = dwt2(X,Lo_D,Hi_D);

    为另一种离散小波变换,输入参数为分解的低通滤波器和高通滤波器。

    [CA,CH,CV,CD] = dwt2(X,Lo_D,Hi_D, 'mode, MODE);

    为不同形式边界延拓的离散小波变换,其中,MODE表示不同的延拓方式,具体有对称延拓’sym’或者’symh’(半点对称),‘symw’ (全点对称),反对称延拓’asym’或者 ‘asymh’(半点反对称), ‘asymw’(全点反对称),零延拓’zpd’,一阶光滑延拓’spd’或者’spl’(边界保持导数一致进行延拓),常数延拓’sp0’,周期延拓’ppd’或者’per’。

    对应的小波重构实现:
    X = idwt2(CA,CH,CV,CD, ‘wname’);
    X = idwt2(CA,CH,CV,CD, Lo_D,Hi_D);
    X = idwt2(CA,CH,CV,CD, 'mode, MODE);

    1.2 多层小波分解与重构

    [C,S] = wavedec2(X, N, ‘wname’);

    其中, Wavedec2为多层小波分解函数;X为输入参数,是图像;N为分解层数; 'wname’是小波名字;输出变量C为所有分解信息的组合,具体为C=[A(N)|H(N)V(N)D(N)|…H(N-1)V(N-1)|D(N-1)…|H(1)V(1)D(1)],C为行向量;S为分解后各个频段图像的尺寸大小。

    [C,S] = wavedec2(X, N, Lo_D,Hi_D);

    为另一种离散小波变换。其中,输入参数N为分解层数;Lo_D和Hi_D分别为分解的低通滤波器和高通滤波器。由于C表达的是行向量,函数 appcoef2和 detcoef2分别能够返回二维表达的逼近图像的系数和高频各通道的图像系数,具体形式为

    A=appcoef2(C,S, ‘wname’,N);
    D= detcoef2(O,C,S,N);
    O可以取’h’, ‘v’,‘d’, ‘all’,返回分解的水平高频,垂直高频和对角高频图像系数。
    当O参数选all时,返回值是三个高通图像系数,即
    [H,V,D]= detcoef(‘all’,C,S,N);
    小波的多层重构命令为完全重构命令 waverec2和部分重构命令wrcoef2,具体为:
    在这里插入图片描述
    wrcoef2用于实现由二维小波分解提取出的不同频段的信息重构图像。
    'type’为a,h,v,d分别对应的是低频信息、水平高频、垂直高频和对角高频信息

    二、实例分析

    2.1 dwt2一层小波分解与重构实例

    用 MATLAB的dwt2命令对图像Lena进行分解重构,得到分解的低频和高频4个通道的图像,如图1所示。

    在这里插入图片描述

    图 1 小波分解的4个通道图像

    用idwt2对分解图像进行重构,第一层分解的各个频率通道图像进行重构,如图2所示。

    在这里插入图片描述

    图 2 显示原始图像和由第一层各个频率通道重构的图像

    2.2 wavedec2多层小波分解与重构实例

    用 wavedec2命令、 detcoef2命令和 appcoe2f命令得到分解的各个层次的低频和高频图像,第二层分解的各通道图像如图3所示,第一第二层分解的各通道图像如图4所示。各分解图像拼接图和原图的对比如图5所示。

    在这里插入图片描述

    图 3 第二层小波分解的各个通道图像

    在这里插入图片描述

    图 4 第一第二层分解的各通道图像

    在这里插入图片描述

    图 5 原始图像和所有系数拼接后的图像

    用 wavered2命令进行多层图像重构,由第二层各个频率通道图像进行重构的结果如图6所示。可以看出图像只由高层低通信号重构的结果为信号的概貌,而细节信息可由各层次的高频信息进行重构,从而实现信号的分层次分解和重构。

    在这里插入图片描述

    图 6 第二层各个频率通道图像进行重构的结果

    三、资源获取

    演示实例可从以下链接处获取:

    https://download.csdn.net/download/m0_70745318/85384637

    展开全文
  • 这是北京交通大学数字信号处理关于小波变换的课件,其中包括小波变换与多分辨分析,小波变换分解和重构的算法,以及基于小波变换的小波处理和利用MATLAB实现信号的小波分析。
  • matlab小波分析超级学习手册代码大全,,主要针对MATLAB中的小波分析工具箱进行的详细介绍。小波(Wavelet)这术语,顾名思义,“小波”就是小的波形。所谓“小”是指它具有衰减性;而称之为“波”则是指它的波动性...
  • 基于MATLAB,针对一维信号(可用matlab工具箱自带信号sumsin.mat),实现一维离散小波变换,选用Daubechies小波(如db3)函数,进行五层分解,并对第5层到第1层的低频、高频系数分别进行重构
  • matlab实现一维和二维离散小波变换,以及小波重构,同时有代码实现的截图和各种系数重构的二范式比较
  • wavedec(x,order,‘haar’) matlab手动实现小波重构/恢复程序: clc ; clear; % 每次修改这里的原始数据, 个数最好是2^n % x = [9 7 3 5]; x = [2 5 8 9 7 4 -1 1]; % x = [2 5 8 9 7 4 -1 1 2 1 8 3 8 0 3 1]; ...
  • 几种常用小波函数对一维信号进行分解与重构MATLAB程序部分
  • 一维信号的Haar小波分解与重构matlab程序
  • 用于实现一维小波去噪的程序!包括重构法,模极大值,软硬阈值法!
  • MATLAB 小波工具箱提供了以下几个实现一维小波分解和重构的函数[3]:  [C,L] = wavedec(X,N,’wname’),多尺度一维小波分解函数。其中C为分解结构变量,L为个... = waverec(C,L,’wname’),多尺度一维小波重构
  • 多层小波分解与重构matlab程序

    热门讨论 2010-04-07 14:28:20
    有关小波分解的matlab基础应用,很常见的仿真
  • 小波通用函数、biorfilt函数双正交小波滤波器组① [Lo_D,Hi_D,Lo_R,Hi_R]=biorfilt(DF,RF)② [Lo_D1,Hi_D1,Lo_R1,Hi_R1,Lo_D2,Hi_D2,Lo_R2,Hi_R2]=biorfilt(DF,RF,'8')DF——分解滤波器RF——重构滤波器Lo_D——...
  • 本代码主要利用MATLAB工具实现MATLAB——利用二小波变换对图像进行压缩,简单明了,易于理解
  • 种是小波分解dwt2 [CA,CH,CV,CD]=dwt2(X,'wname'); 其中,dwt2表示离散小波变换;X为输入参数,是图像;'wname'是小波名字;输出变量CA为低低频分解信息,刻画原始图像的逼近信息;CH为低高频分解信息,...
  • 3,很棒的文章,感谢原作者的分享:这里是个人的学习笔记和其它资料的综合,最后附上了对实际信号的小波分解结果更新20200902:文献2适用于在用matlab进行尝试时阅读,通过它能够很好的掌握matlab中一信号小波分析...
  • 9一维信号与二维图像的三级分解信号去噪与重构morlet小波连续小波变换

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,891
精华内容 756
热门标签
关键字:

matlab 一维 小波重构