图像的Mallat算法分解(Matlab代码)

Mallat算法及C语言实现(一维DB小波分解与重构) 阅读详情

Mallat 算法的分析与综合框架参考书上的资料很多,这里就不多说了。

下面是我写的关于图像的程序,分别是:一维分解,二维分解;一维合成,二维合成。最后是测试主程序。

谢谢参考,错了请反馈一下!

%内部子函数,对一行(row)矢量进行一次小波变换,利用fft实现
function y=mdec1(x,h,g)
%x 行数组
%h为低通滤波器
%g为高通滤波器
%输出: y 进行一级小波分解后的系数
lenx=size(x,2);                 %求行的长度
lenh=size(h,2);                 %求低通滤波器的长度
rh=h(end:-1:1);                 %rh是h的逆序  h0(n)=h(-n)
rrh=[zeros(1,(lenx-lenh)),rh];  %rrg在rg前插入(lenx-lenh))个零
rrh=circshift(rrh',1)';         %循环位移

rg=g(end:-1:1);                 %rg为高通滤波器的逆序g0(n)=g(-n)
rrg=[zeros(1,(lenx-lenh)),rg];  %rrg在rg前插入(lenx-lenh))个零
rrg=circshift(rrg',1)';         %循环位移

r1=dyaddown(ifft(fft(x).*fft(rrh,lenx)),1); %use para 1,下2奇采样
r2=dyaddown(ifft(fft(x).*fft(rrg,lenx)),1); %use para 1,下2奇采样
y=[r1,r2];                     %相加得到小波系数

 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function Y=mallatdec2(X,wname,level)
%输入:X????? 载入的二维图像像数值;
%???? level? 小波分解次(级)数设定值(如果设定值超过最高可分解次数,按最高分解次数分解)
%????? wname? 小波名字wavelet name
%输出:Y???? 多极小波分解后的小波系数矩阵
%wfilters:小波滤波器

[h,g]=wfilters(wname,'d');    %h,g分别为分解的低通和高通滤波器
X=double(X);
t=1;
hh=size(X,2);
Y=zeros(1,hh);
while t<=level   %循环
    %先进行行小波变换
    for row=1:hh
        Y(row,1:hh)=mdec1(X(row,1:hh),h,g) ;
    end
    %再进行列小波变换
    for col=1:hh
        temp=mdec1( Y(1:hh,col)',h,g); %Y(1:hh,col)为矩阵中的一列,转置后为行向量,得到的结果temp也是行向量
        Y(1:hh,col)=temp';             %将行向量转置为列向量存储在Y中
    end
    t=t+1;                             %循环次数加1,大于level,循环终止
    hh=hh/2;                           %分解的矩阵的大小为原来的四分之一
    X=Y;                               %将Y值赋给X等待下一次分解                     
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%内部子函数,对一行小波系数进行重构
function y=mrec1(x,h,g)
%输入:x 行数组
%???? h为低通滤波器
%???? g为高通滤波器
%输出: y 进行一级小波重构后值
lenx=size(x,2);

r3=dyadup(x(1,1:lenx*0.5),0);        %内插零use para 0,上采样
r4=dyadup(x(1,(lenx*0.5+1):lenx),0); %内插零use para 0,上采样
y=ifft(fft(r3,lenx).*fft(h,lenx))+ ifft(fft(r4,lenx).*fft(g,lenx));

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%二维小波重构函数
function Y=mallatrec2(X,wname,level)
%输入:X????? 载入的小波系数矩阵;
%?? ??level? 小波分解次(级)数设定值(如果设定值超过最高可分解次数,按最高分解次数分解)
%????? wname? 小波名字wavelet name
%输出:Y???? 重构图像矩阵

[h,g]=wfilters(wname,'d');%h为重构的低通滤波器;g为重构高通滤波器

hz=size(X,2);
h1=hz/(2^(level-1));
while h1<=hz
    % 对列变换
    for col=1:h1
        temp=mrec1(X(1:h1,col)',h,g)';
        X(1:h1,col)=temp;
    end
    %再对行变换
    for row=1:h1
        temp=mrec1(X(row,1:h1),h,g);
        X(row,1:h1)=temp;
    end
    h1=h1*2;
end
Y=X;

 

%%%%%%%%%%%%%%%%%%%%%%%%%%

%测试函数(主函数)
clc;
clear;
close all;

X=imread('lena.bmp');;%路径
figure(1);imshow(X);

X=double(X);
level=2;
A = mallatdec2(X,'db4',level);

figure(2);
imshow(uint8(A));title('多尺度分解图像');

Y= mallatrec2(A,'db4',level);

figure(3);
imshow(uint8(Y));title('重构图像');

 


 

 

 

 

 

基于MATLAB的离散小波变换(DWT)算法详解 本文详细介绍了基于MATLAB的离散小波变换(DWT)算法。首先阐述了小波变换的发展历程及其相较于傅里叶变换的优势,特别是时频局部化能力和多分辨率特性。随后深入讲解了DWT的数学原理,包括多分辨率分析理论、尺度函数与小波函数的定义以及Mallat快速算法。文章还提供了MATLAB实现代码,涵盖一维DWT分解重构、二维DWT图像处理以及边界处理策略等内容。最后探讨了DWT在信号去噪、图像压缩等领域的应用案例。该算法在非平稳信号处理中展现出计算高效、自适应性强等显著优势。 阅读详情

相关推荐

小波变换DWT的Mallat算法在C++与MATLAB中的实现

本文还有配套的精品资源,点击获取 简介:小波变换是时间和频率上进行信号局部分析的方法,解决了传统傅立叶变换的问题。Mallat算法是实现离散小波变换(DWT)的常用方法,本文将介绍Mallat算法及其在C++和MATLAB中的实现。算法包括信号分解、下采样、递归以及重建过程,并讨论在C++和MATLAB环境下进行实现的具体步骤和技巧。 1. 小波变换(Wavele...

weixin_34064233的博客 2611

小波学习之一(单层一维离散小波变换DWT的Mallat算法C++和MATLAB实现)

至于对称性延拓,由于正交小波滤波器一般都是非对称性的(Haar小波基虽然是正交的,但它是非连续的),重建图象给人一种错位的感觉。不过,周期性延拓方法虽然是常用的三种方法中比较好的方法,但会导致信号边缘的非连续性,从而会使得较高频率(子带)层的小波系数很大,即使信号本身相当平滑。从Mallat算法的分解原理可知,分解后的序列就是原序列与滤波器序列的卷积再进行隔点抽取而来。在Mallat算法中,假定输入序列是无限长的,而实际应用中输入的信号是有限的采样序列,这就会出现信号边界处理问题。...

ASS-ASH的博客 5012

Matlab中二维Mallat小波变换的实现与应用

在Matlab中,wavemngr是一个非常重要的函数,用于管理小波基(wavelets)。它可以列出已安装的小波基,也可以用来添加或删除小波基。这个函数为用户提供了一种方便的方式来探索和选择适合其应用需求的小波。wavemngr函数的调用格式多样,可以通过指定不同的参数来获取不同级别的信息。例如,它可以显示所有可用的小波列表,也可以查询特定的小波是否存在,或者获取某个小波的详细信息。wavemake是一个与wavemngr紧密相关的Matlab函数,它用于创建新的小波基。

weixin_35019679的博客 826

mallat 算法

mallet 算法有助于理解 小波是如何分解 和重构信号得 clear all; clc; close; %% 1.正弦波定义 f1=50; % 频率1 f2=100; % 频率2 fs=2*(f1+f2); % 采样频率 Ts=1/fs; % 采样间隔 N=120; % 采样点数 n=1:N; t=n*Ts; y1=sin(2*pi*f1*n*Ts);y2=sin(...

weixin_42528089的博客 1万+

Mallat算法与MATLAB实现完整实例

小波函数(Wavelet Function)是满足一定数学条件的基函数,其形式通常表示为:其中:$ a $:尺度因子(scale),用于控制函数的拉伸或压缩;$ b $:平移因子(translation),用于控制函数在时间轴上的移动;$ \psi(t) $:母小波(Mother Wavelet),是小波函数的基本形式;$ \psi_{a,b}(t) $:子小波(Daughter Wavelet),由母小波通过缩放和平移生成。

weixin_33812391的博客 1165

MATLAB小波分析工具包:一维信号四层Mallat分解与精确重构(含db10示例)

一套开箱即用的MATLAB小波信号处理工具,专注一维信号的多尺度分析与重建。内置完整Mallat算法实现,支持4层小波分解与逆变换,默认采用db10小波基,也可替换为其他系统内置小波。核心模块包括mallet_decompose.m(正向分解)、mallet_compose.m(逆向重构)、downsample.m和upsample.m(滤波器组中的采样操作),主流程由mallat_main.m统一调度。输入数据从dataset.txt文本文件读取,输出包含原始信号、各层近似/细节系数、滤波器响应及重构对比

m2n3b4v5c6的博客 225

小波变换学习笔记(4):滤波器与Mallat算法

前言 上篇博客中讲了连续时间信号的离散小波变换的多分辨分析、小波函数、尺度函数等概念,而在我们具体应用离散小波变换时,我们并不关心我们的尺度函数、小波函数具体是什么形式的,因为毕竟反映信号主干信息和细节信息的是尺度函数、小波函数的系数而不是其函数的具体形式,那么有什么方法可以跳过小波、尺度函数直接求得小波、尺度函数的系数呢?这就引出了这篇博客的内容,滤波器与Mallet算法。 主要内容 首先我们利...

qq_43266614的博客 1万+

一维信号的分解和重构的Mallat分解与重构算法(matlab)

本实验利用MATLAB2015进行编程,调用系统小波函数对信号进行分解,实现Mallat分解与重构算法对一维信号进行多层分解和重构。对信号进行多层分解可实现对信号的去噪和数据压缩处理,分解为小波函数的线性组合,阶数高的可以认为是噪声,在去噪时令阶数高的部分系数为0,数据压缩时,幅度小的部分可以舍去,认为对信号影响不大,减小了传输的数据量。利用重构算法对分解的信号进行重构恢复原来的信号,mallat分解和重构算法在信号处理中有很重要的作用。 实验中可以设置调用的系统小波函数与小波分解的层数,为不失一般性本实验设置小波函数为db10,分解层数为4层。采用模块化编程由以下6个文件构成: 源数据文件dataset.txt; 主程序mallat_main.m; 小波分解程序mallet_decompose.m; 小波合成函数mallet_compose.m; 上采样程序upsample.m; 下采样程序downsample.m。

mallat算法分析及c语言实现,图像的Mallat算法分解(Matlab代码)

Mallat 算法的分析与综合框架参考书上的资料很多,这里就不多说了。下面是我写的关于图像的程序,分别是:一维分解,二维分解;一维合成,二维合成。最后是测试主程序。谢谢参考,错了请反馈一下!%内部子函数,对一行(row)矢量进行一次小波变换,利用fft实现function y=mdec1(x,h,g)%x 行数组%h为低通滤波器%g为高通滤波器%输出: y 进行一级小波分解后的系数lenx=siz...

weixin_30070961的博客 1054

采用db4小波实现一维信号的分解与重建(mallat):

课堂作业,采用db4小波实现一维信号的分解与重建(mallat):

MALLAT算法快速实现方法及其应用研究

:MALLAT算法是小波理论中的重要组成部分,根据MALLAT算法的原理,提出了该算法的 一种快速的、实用的实现方法;并把该方法应用到噪声主动控制中,实验结果表明:该快速实现方法是有 效的、实用的。

基于mallat小波变换的图像分解和重建算法matlab仿真,对比不同分解层数图像重建质量

Mallat算法是一种快速小波变换算法,可以高效地进行图像分解和重建。该算法的核心在于利用小波基函数进行卷积运算,进而实现图像的多分辨率分析。在一维情况下,Mallat分解算法可以表示为:在二维情况下,Mallat分解算法可以表示为:为了评估不同分解层数下的图像重建质量,我们可以使用峰值信噪比(Peak Signal-to-Noise Ratio, PSNR)作为评价指标。

MATLAB,verilog,python,opencv,tensorflow,caffe,C,C++ 962

DB小波MALLAT分解与重构算法(matlab M文件)

matlab m文件编写的DB小波分解与重构算法,直接可运行,思路清晰。

一维信号的分解和重构Mallat算法MATLAB实现:开启信号处理新篇章

一维信号的分解和重构Mallat算法MATLAB实现:开启信号处理新篇章 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代信号处理领域中,对信号进行有效的分解和重构是至关重要的环节。今天,我们要介绍的开源项目"一维信号的分解和重构Mallat算法MATLAB实现"正是为此而生。该项目提供了一种基于MATLAB2015环境下的实现方式,利用内置小...

gitblog_06734的博客 1069

基于Mallat算法的小波分解重构的心电信号处理

为了实现对微弱低信噪比的心电信号的有效提取,采用了Mallat算法的小波分解重构法去除心电信号的噪声。首先确定小波分解重构的小波基;其次确定分解的层数;然后直接提取有用信号所在的频带(有用信号占优的频带)进行重构;最后,Matlab仿真MIT-BIT标准数据 库中的心电信号表明小波分解重构法可以有效的去除心电信号中的多种干扰;同时比起传统滤波器法来说,小波分解与重构去噪法应用起来更方便。

ESP32IDF 通过 PCA9685控制舵机的程序bug处理

esp32 PCA9685 bug 舵机

ztvzbj的博客 726

数字图像处理,小波变换一维Mallat算法的C++实现(matlab验证)

在Mallat算法的推导中,假定输入序列是无限长的,而实际应用中常常是分时采样,即输入序列为有限长.此时,滤波器系数与输入序列卷积时就会出现轮空的现象.因此有必要对原始信号进行边界延拓,减小边界误差.解决的方法通常有补零法和周期延拓法.

EbowTang的练习场 1万+

基于opencv-ANN的水果识别模型训练

本文通过opencv-ann-mlp训练模型,实现对五种水果进行分类识别。本文详细介绍该项目的各个过程,包括数据准备、预处理、样本读取、训练数据集制作、训练标签制作、模型参数设置、模型训练,模型测试验证等,总结该过程需要注意的事项。

qq_15985873的博客 3974

小波变换图像边缘检测【附matlab代码】

小波变换是一种多分辨率分析工具,通过对信号的分解与重构,实现对信号的不同尺度细节的捕捉。它的核心思想是使用局部化的波形函数(小波)来分析信号中的细节,适合处理非平稳信号。小波变换可以将图像在不同尺度上进行分解,使得高频部分与低频部分分离,低频部分包含了图像的轮廓和基本结构,而高频部分则包含了图像中的细节和噪声。因此,通过小波变换,可以在多尺度上处理图像信号去噪问题。Mallat算法是经典的快速小波分解和重构算法,通过将信号进行高低频分解,实现多尺度分析。

坷拉博士 1445

手把手教你用DevExpress Patch工具解决VS项目中的试用弹窗问题

本文详细指导开发者使用DevExpress Patch工具解决Visual Studio项目中恼人的试用弹窗问题。核心在于理解并分步处理:首先正确应用补丁工具以绕过运行时验证,然后重点清理或重置项目中的licenses.licx文件以消除编译时验证,从而彻底根治弹窗。

weixin_29234423的博客 588

22、计算智能在自闭症检测与管理中的应用

本文探讨了计算智能在自闭症谱系障碍(ASD)检测与管理中的应用。在检测方面,结合可穿戴设备、传感技术与多模态数据(如眼动追踪、问卷、神经成像等),利用机器学习和深度学习算法提升诊断准确性,并介绍了多种公开数据集及研究方法。在管理方面,通过生理指标(HRV、GSR、呼吸频率)监测情绪状态,结合智能可穿戴设备与支持性应用平台(如LetMeTalk、MITA、Rethink Ed等),实现对ASD患者的实时干预与个性化支持。文章还展示了多模态筛查与管理流程的系统架构,强调未来技术整合与个性化服务的发展方向。

star的博客 91

基于小波变换的图像去噪matlab仿真

一、前已完成任务情况      1、概况 设计题目:基于正交变换与自适应滤波的图像去噪算法 设计目的:设计一种基于正交变换域自适应滤波器的的图像去噪算法,在消除图像噪声的同时尽可能地保留图像固有的信息。 提取出三个关键词:正交变换、自适应滤波、图像去噪 matlab设计流程:     与单纯运用某种自适应算法相比,基于小波分解的自适应滤波算法在收敛速度和稳定性上都有了很大的提高

liaozali9022的博客 2万+

AUTOSAR汽车电子嵌入式编程精讲300篇-基于加密算法的车载CAN总线安全通信

随着科学技术的不断更新和社会文明的不断进步,汽车已经走入寻常百姓家, 成为当代社会必不可少的交通工具。伴随着互联网技术的飞速发展,汽车也不再 是一个简单的交通工具,已经逐渐发展成为一个集出行、通信、娱乐等功能于一 身的综合智能体,进而推动了车联网产业的蓬勃发展。车联网是在传统汽车的框架上安装了传感器、执行器、控制器等分布式和集 中式控制器,使汽车具备环境感知、协同控制、优化执行等功能,并通过网络技 术实现与车外环境的信息共享,给驾驶带来方便的同时也终将成为可以替代人操 作的新一代汽车[1-3]。

getusushu的博客 2591
上一篇: 关于离散小波框架变换以及多孔算法(a trous)的学习感悟
下一篇: 形态Haar小波的OpenCV代码
风的心愿
博客等级 码龄15年 68粉丝 33原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风的心愿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值