matlab 5 3小波提升代码,求提升小波变换代码

这段代码详细实现了在MATLAB中进行97提升小波变换的算法,包括正变换和反变换。它包含边界处理、提升系数确定、分解层数判断等步骤,并确保了正交性。此外,代码还提供了错误检查和输入参数的验证。
摘要由CSDN通过智能技术生成

%% 本程序实现任意偶数大小图像第二代双正交97提升小波变换 %% 注1: 采用标准正交方法,对行列采用不同矩阵(和matlab里不同)

%% 注2: 为了保证正交,所有边界处理,全部采用循环处理

%% 注3: 正交性验证,将单位阵带入函数,输出仍是单位阵(matlab不具有此性质)

%% 注4: 此程序是矩阵实现,所以图像水平分量和垂直分量估计被交换位置

%% 注5: 此程序实现的是类小波(wavelet-like)变换,是介于小波包变换与小波变换之间的变换

%% 注6: 此程序每层变换相对原图像矩阵,产生的矩阵都是正交阵,这和小波包一致

%% 注7: 但小波变换每层产生的矩阵,是相对每个待分解子块的正交矩阵,而不是原图像的正交矩阵

%% 注8: 且小波变换产生的正交矩阵维数,随分解层数2分减少

%% 注9: 提升系数可以在MATLAB7.0以上版本,用liftwave('9.7')获取,这里直接给出,考虑兼容性

%% 注10:由于MATLAB数组下标从1开始,所以注意奇偶序列的变化

%% 注11:d为对偶上升,即预测;p为原上升,即更新 %% 编程人 沙威 安徽大学

%% 编程时间 2004年12月18日 %% x输入图像,y输出图像

%% flag_trans为正变换或反变换标志,0执行正变换,1执行反变换

%% flag_max,是否最大层数变换标志,0执行用户设定层数,1执行最大层数变换

%% layer,用户层数设置(小于最大层) function y=db97(x,flag_trans,flag_max,layer); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

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

% 1.输入参数检查 % 矩阵维数判断

[sa,sb]=size(x); if (sa~=sb) % 防止非图像数据

errordlg('非图像数据!');

error('非图像数据!');

end; % 变换标志判断

[sa,sb]=size(flag_trans);

if ((sa~=1) | (sb~=1)) % 变换标志错误

errordlg('变换标志错误!');

error('变换标志错误!');

end; if ((flag_trans~=1) & (flag_trans~=0)) % 变换标志错误

errordlg('变换标志错误!');

error('变换标志错误!');

end; % 最大层数标志判断

[sa,sb]=size(flag_max);

if ((sa~=1) | (sb~=1)) % 最大层数标志错误

errordlg('最大层数标志错误ÿ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值