二维小波分解源码

214 篇文章 51 订阅

%  此程序实现多小波分解2-D图像
%  Implementation.m


clc;clear

%  对称反对称多小波滤波器组(P0,P1,P2,P3;Q0,Q1,Q2,Q3.)
P0= [0.4075    0.0415
     0.0415    0.4075]/sqrt(2);

P1=[0.0925    0.9075
    0.9075    0.0925]/sqrt(2);
S=[1 0;0 -1];
A=[0 1;1 0];

P2=S*P1*S;
P3=S*P0*S;
Q0=(-1)*P3*A;
Q1=(+1)*P2*A;
Q2=(-1)*P1*A;
Q3=(+1)*P0*A;

%  下载测试图像
load wbarb;
D=1;
NN=length(X);  %  图像大小

T=1;  %  分解层数

%  构造多小波变换矩阵
for i=1:T
    
    %  每一层的有效矩阵长度
    N=NN/(2^(i-1));
    
    %  L(低通矩阵);
    A1=[P0,P1,P2,P3,zeros(2,N-4*2)];
    C1=A1;
    B1=A1;
    for i=1:N/4-1
        B1=circshift(B1.',4).';
        C1=[C1;B1];
    end;

    %  H(高通矩阵);
    A2=[Q0,Q1,Q2,Q3,zeros(2,N-4*2)];
    C2=A2;
    B2=A2;
    for i=1:N/4-1
        B2=circshift(B2.',4).';
        C2=[C2;B2];
    end;
    
    %  Combine(低通和高通矩阵合并)
    C=[C1;C2];
    
    %  最终矩阵生成(多层)
    D=D*sparse([eye(NN-N,NN-N),zeros(NN-N,N);zeros(N,NN-N),C].');
end;

%  多小波正变换
woman1=D'*X*D;

%  多小波正变换
woman2=D*woman1*D';

%  显示
figure(1);
image(woman1)
colormap(map)
title('分解')
figure(2);
image(woman2)
colormap(map)
title('重构')

%  正交性验证
norm(eye(NN,NN)-D'*D)
norm(eye(NN,NN)-D*D')
 

C65

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fpga和matlab

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

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

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

打赏作者

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

抵扣说明:

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

余额充值