当前位置:首页 > 代码 > 正文

小波变换matlab代码(小波算法的matlab代码)

admin 发布:2022-12-19 15:27 116


今天给各位分享小波变换matlab代码的知识,其中也会对小波算法的matlab代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

关于小波变换的Matlab编程

这是一个带参数的函数 根据下面的参数校验可以看出你应该是直接点运行了吧 所以报错了

你至少应该产生一个输入信号,比如一个正弦信号来做输入进行变换

。。。谁给你的程序啊 这bug也太多了 很多低级bug 我只是改的能运行了

function [WT,FreqBins,Scales]=CWT_Morlet(Sig,WinLen,nLevel)

%continuous Wavelet Transform using Morlet function

%Sig:信号

%WinLen:小波函数在尺度参数a=1时的长度(默认为10)

%nLevel:频率轴划分区间段(默认为1024)

%

%WT:返回的小波变换计算结果

%FreqBins:返回频率轴划分结果(归一化频率,最高频率为0.5)

%Scales:返回与频率轴划分值相对应的尺度划分(频率0.5对应的尺度为1)

if (nargin==0),

error('At least 1 parameter required!');

end;

if (nargin3),

nLevel=1024;

end

if (nargin2),

WinLen=10;

end

Sig=hilbert(real(Sig));%计算信号的解析信号

SigLen=length(Sig);%获取信号的长度

fmax=0.5;%设置最高分析频率

fmin=0.005;%设置最低分析频率

FreqBins=logspace(log10(fmin),log10(0.5),nLevel);%将频率轴在分析范围内等

%对数坐标划分

Scales=fmax*ones(size(FreqBins))./FreqBins;%计算响应的尺度参数

omg0=WinLen/6;

WT=zeros(nLevel,SigLen);%分配计算结果的存储单元

wait=waitbar(0,'Under calculation,please wait');

for m=1:nLevel,

waitbar(m/nLevel,wait);

a=Scales(m);%提取尺度参数

t=-round(a*WinLen):1:round(a*WinLen);

Mor1=pi^(-1/4)*exp(1i*2*pi*0.5*t/a).*exp(-t.^2/2/(2*omg0*a)^2);

%计算当前尺度下的小波函数

temp=conv(Sig,Mor1)/sqrt(a); %计算信号与小波函数的卷积

WT(m,:)=temp(round(a*WinLen)+1:length(temp)-round(a*WinLen));

end;

close(wait);

WT=WT/WinLen;

%%%%%%运行示例%%%%%%%%%

Fs=100;

t=0:1/Fs:2*pi;

sig=sin(t);

[WT,FreqBins,Scales]=CWT_Morlet(sig);

求基于小波变换的图像融合的程序算法(Matlab)

clc;

clear all;

close all; % 清理工作空间

clear

[imA,map1] = imread('A.tif');

M1 = double(imA) / 256;

[imB,map2] = imread('B.tif');

M2 = double(imB) / 256;

zt= 4;

wtype = 'haar';

% M1 - input image A

% M2 - input image B

% wtype使用的小波类型

% Y - fused image

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

%%

%% 小波变换图像融合

%%

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

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

%% 小波变换的绝对值大的小波系数,对应着显著的亮度变化,也就是图像中的显著特征。所以,选择绝对值大

%% 的小波系数作为我们需要的小波系数。【注意,前面取的是绝对值大小,而不是实际数值大小】

%%

%% 低频部分系数采用二者求平均的方法

%%

%%

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

[c0,s0] = wavedec2(M1, zt, wtype);%多尺度二维小波分解

[c1,s1] = wavedec2(M2, zt, wtype);%多尺度二维小波分解

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

%% 后面就可以进行取大进行处理。然后进行重构,得到一个图像

%% 的小波系数,然后重构出总的图像效果。

%% 取绝对值大的小波系数,作为融合后的小波系数

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

KK = size(c1);

Coef_Fusion = zeros(1,KK(2));

Temp = zeros(1,2);

Coef_Fusion(1:s1(1,1)) = (c0(1:s1(1,1))+c1(1:s1(1,1)))/2; %低频系数的处理

%这儿,连高频系数一起处理了,但是后面处理高频系数的时候,会将结果覆盖,所以没有关系

%处理高频系数

MM1 = c0(s1(1,1)+1:KK(2));

MM2 = c1(s1(1,1)+1:KK(2));

mm = (abs(MM1)) (abs(MM2));

Y = (mm.*MM1) + ((~mm).*MM2);

Coef_Fusion(s1(1,1)+1:KK(2)) = Y;

%处理高频系数end

%重构

Y = waverec2(Coef_Fusion,s0,wtype);

%显示图像

subplot(2,2,1);imshow(M1);

colormap(gray);

title('input2');

axis square

subplot(2,2,2);imshow(M2);

colormap(gray);

title('input2');

axis square

subplot(223);imshow(Y,[]);

colormap(gray);

title('融合图像');

axis square;

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

怎样用MATLAB程序实现小波变换?

[YC,YS]=wavedec2(Y,2,'db1');

Y为要分解的图像矩阵,2为分解的层数,‘db1'为采用的小波基

返回两个矩阵YC和YS。Yh2=detcoef2('h',YC,YS,2);这是提取出图像2层分解后的水平分量,h改v是垂直分量,h该d是对角分量。细节分量用另外一个方法提取。

求小波变换图像降噪的matlab代码

%源代码来自于在《MATLAB环境下基于小波变换的图像去噪》刘智clear;clc % 清理工作空间

load wbarb; % 装载原始图像

subplot(221); % 新建窗口

image(X); % 显示图像

colormap(map); % 设置色彩索引图

title('原始图像'); % 设置图像标题

axis square; % 设置显示比例,生成含噪图像并图示

init=2055615866; % 初始值

randn('seed',init); % 随机值

XX=X+8*randn(size(X)); % 添加随机噪声

subplot(222); % 新建窗口

image(XX); % 显示图像

colormap(map); % 设置色彩索引图

title('含噪图像'); % 设置图像标题

axis square; %用小波函数coif2 对图像XX 进行2 层分解

[c,l]=wavedec2(XX,2,'coif2'); % 分解

n=[1,2]; % 设置尺度向量

p=[10.28,24.08]; % 设置阈值向量,对高频小波系数进行阈值处理

%nc=wthcoef2('h',c,l,n,p,'s');

%nc=wthcoef2('v',c,l,n,p,'s');

nc=wthcoef2('d',c,l,n,p,'s');

X1=waverec2(nc,l,'coif2'); % 图像的二维小波重构

subplot(223); % 新建窗口

image(X1); % 显示图像

colormap(map); %设置色彩索引图

title('第一次消噪后的图像'); % 设置图像标题

axis square; % 设置显示比例,再次对高频小波系数进行阈值处理

%mc=wthcoef2('h',nc,l,n,p,'s');mc=wthcoef2('v',nc,l,n,p,'s');

mc=wthcoef2('d',nc,l,n,p,'s');

X2=waverec2(mc,l,'coif2'); % 图像的二维小波重构

subplot(224); % 新建窗口

image(X2); % 显示图像

colormap(map); % 设置色彩索引图

title('第二次消噪后的图像'); % 设置图像标题

axis square; % 设置显示比例

小波变换matlab代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于小波算法的matlab代码、小波变换matlab代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/10309.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载