当前位置:首页 » 操作系统 » dwt算法

dwt算法

发布时间: 2022-05-12 21:01:46

A. 小波变换 多分辨率分析 和小波包分析的区别

这分类真让人五体投地,作吧,作到没人玩了就老实了!


小波变换的概念是相对于FT这种大波变换提出的,最开始专指CWT,它是脱胎于有局部化分析能力的STFT,STFT完成的是WT中的平移概念,后来加入尺度伸缩就变为了CWT。


CWT在实际分析使用中功能不强,不够完备,于是很多搞数学的研究者就搞了个mallat算法,将信号可以分成低频的逼近和高频的细节来分析,其中高频的细节的作用与CWT类似,多了个低频的逼近信息,并且还完善了它们的重构理论,这就是传说中的DWT。小波变换是个很宽泛的概念,从最开始的CWT到DWT,再到SWT等,目前凡是与小波概念沾点边的都被扯进了小波变换的范畴,有些玩滤波器的,和小波滤波器沾点边也叫小波变换,其实和CWT,DWT等经典算法定义连一点关系都没有。


在DWT中由于mallat算法理论比较易于计算和推导,尤其与滤波器挂钩后,DWT的计算再也不用像CWT那样计算积分。因此,容易计算逆变换(DWT的重构),而CWT是很难计算逆变换的,需要其它数学条件,有时甚至从数学上就没有逆变换,那么得到的CWT小波系数就没法转换为有实际意义的信号,只能大致分析一下奇异点特征等简单的信息。再就是用了mallat算法容易将一维推广到二维甚至高维,在数学领域很常见的方法都是张量积,这也是DWT数学理论较完备和计算较便利的结果,所以DWT的应用远远多于CWT,多分辨分析多指的就是DWT。


当把多层分解的DWT中的每层细节小波系数再分解一次,就得到了所谓的WP。它可以分解得到更多的高频信息,所以更多用于高频信息的研究,如去噪。拿一个三层WP举例,

DWT能够得到A1,AA2,AAA3和D1,DA2,DAA3,而WP却能得到以上所有的信息,均分S的整个频带。

B. 什么是DWT

DWT是DEADWEIGHTTONNAGE的缩写,是表示“载重吨”。

C. matlab dwt函数和swt函数有什么不同

连续小波是尺度可连续取值的小波,里面的a一般取整数,而不像二进小波a取2的整数幂。从连续小波到二进小波再到正交离散小波,其实就是a、b都连续,a不连续、b连续,a、b都不连续的过程。操作他们的快速算法也就是卷积(快速傅里叶),多孔(a trous),MALLAT。在MATLAB里,也就是CWT,SWT,DWT。SWT称平稳小波变换、二进小波变换、或者非抽取小波变换。

从冗余性上:CWT>SWT>DWT,前面两个都冗余,后面的离散小波变换不冗余。

从应用上:CWT适合相似性检测、奇异性分析;SWT适合消噪,模极大值分析;DWT适合压缩

D. 一维DWT的分解过程能否用多次低通滤波器实现

哈哈,这问题有意思!DWT滴实现除了通常同时使用低频和高频(带通)滤波器组之外,还有两种方式:
其一,对S只使用高频(带通)分解滤波器,下采样丢掉近一半结果数据后再用高频(带通)重构滤波器,得到D1,然后用S-D1得到A1。对A1使用同一高频(带通)分解滤波器再这样来一次得到D2,用A1-D2得到A2,以此类推得到所有A和D;
其二,对S只使用低频分解滤波器,下采样丢掉近一半结果数据后再用低频重构滤波器,得到A1,然后用S-A1得到D1。对A1使用同一低频分解滤波器再这样来一次得到A2,用A1-A2得到D2,以此类推得到所有A和D;
上面两种方式与DWT通常做法滴结果在实验中一般只有精度上滴极小偏差,也就是说,使用构造好滴小波滤波器组即使丢掉近一半结果数据,仍然可保持比较满意滴精度,这应是mallat算法和小波滤波器组构造时考虑比较完善周到滴原因。如果使用N个不同截止频率的普通低通滤波器串联,个人认为,由于没有如此完善滴滤波器构造,可能难以达到这样的效果,每层误差滴累计,可能造成较大误差,甚至造成结果滴不稳定和很强滴吉布斯效应问题,同时N个不同截止频率的普通低通滤波器使用时本身可能就很麻烦,例如截止频率和频率混迭问题,诸多意想不到滴很小问题都会对结果造成很大影响,计算效率问题更可能不如mallat算法简便快捷。
普通滤波器使用和构造多与付氏变换紧密相关,而其与小波变换中CWT滴连续小波级数一样,对几何造型(信号波形)滴逼近由于稳定性问题(吉布斯效应)都很不成功,而一个信号时域的几何波形特征往往在研究中比其频域特征重要得多,从而以实现分类和识别等实际问题,这就是为何要发展以非连续正交函数系为基础滴DWT滴原因,这方面可参看科学出版社《非连续正交函数--U-系统、V-系统、多小波及其应用》。
这是偶回答滴第1000个问题,有一些一直想讲一讲滴烧脑问题,以兹纪念!我本清都山水郎,天教懒漫带疏狂!犹如莲华不着水,亦如日月不住空!Alles Gute!

E. 小波变换的序列展开里面的参数意义

你这是使用mallat算法的DWT的数学表达式,按照CWT的数学定义推到DWT的。
j0是尺度?这样说并不合适,这个数学表达式并没有强调一点,这或许是现在有些参考书的小波公式与原来经典公式相比令人头疼和费解的地方,也使得现在的小波文献的概念比较混乱,乱用专有称谓名词。实际上,在DWT中是不讲“尺度”一词的,而讲分解“阶次、层数”,只有CWT才讲“尺度”一词。通常的DWT都是二进小波变换,尺度与阶次之间是2的幂次的关系,CWT的尺度与DWT的阶次的对应关系是尺度a=2^j,所以j称为阶次或层数更恰当。但它就这么写了,就姑且认为这种混乱的概念是对的吧。
k按照cwt的理论就是用来完成小波变换中平移操作的参数,将小波函数在时间或空间轴上移动一个单位时间(或空间)K,得到一个小波变换系数,直到平移到信号终止的长度,得到一系列在这一阶次(尺度)下的所有小波系数,完成这一阶次(尺度)下的小波变换。
j在数学公式中可以到无穷大,实际应用中要根据实际情况选择适当的最大阶次(尺度)。可参看http://..com/question/552250815013322852.html?oldq=1
在matlab里面,根本就不用这种数学公式实现DWT,因为数学公式在计算方面很麻烦,而其在实际小波应用中会产生边界效应和吉布斯效应等一系列问题,使得小波变换的结果不能得到令人满意的效果。当信号处理中滤波器组的理论开始发展的时候,DWT才取得了能够满足实际需要的实用方法。matlab也是通过设计分解和重构滤波器组,用信号与滤波器的卷积实现DWT的。这样实际的计算比较简单,卷积的过程就完成了小波理论中的平移,然后通过隔点采样缩短信号长度,就相当于完成了小波函数的伸缩,得到各个阶次(尺度)下的小波系数,完成整个DWT的计算。关于CWT,DWT和SWT的matlab实现处理方式可以参看http://..com/question/743930408880075452.html?oldq=1

F. 小弟毕业设计matlab基于扩频的dwt水印嵌入 求大神给个程序代码啊!

%% ---------------------------------------------------------------------%%
% 基于小波变换的扩频图象数字水印-->水印嵌入
%% ---------------------------------------------------------------------%%
start_time=cputime;
k=0.6;
file_name='E:\zy\lena.bmp';
iCover = imread(file_name);
dCover = double(iCover);
dOrigCover = dCover;
Mc=size(iCover,1);
Nc=size(iCover,2);
file_name='E:\zy\right.bmp';
iWatermark = imread(file_name);
dWatermark = double(iWatermark);
Mm=size(iWatermark,1);
Nm=size(iWatermark,2);
dWatermarkVector=round(reshape(dWatermark,Mm*Nm,1)./256);
file_name='key.bmp';
key=double(imread(file_name))./256;
rand('state',key);
h = waitbar(0,'Embedding, please wait...');
[cA1,cH1,cV1,cD1] = dwt2(dCover,'haar');
[cA2,cH2,cV2,cD2] = dwt2(cH1,'haar');
[cA3,cH3,cV3,cD3] = dwt2(cV1,'haar');
iLength = length(dWatermarkVector);
for (kk=1:iLength)
pn_sequence_h2=round(2*(rand(Mc/4,Nc/4)-0.5));
pn_sequence_v2=round(2*(rand(Mc/4,Nc/4)-0.5));

pn_sequence_h3=round(2*(rand(Mc/4,Nc/4)-0.5));
pn_sequence_v3=round(2*(rand(Mc/4,Nc/4)-0.5));

if (dWatermarkVector(kk) == 0)
cH2=cH2+k*pn_sequence_h2;
cV2=cV2+k*pn_sequence_v2;
cH3=cH3+k*pn_sequence_h3;
cV3=cV3+k*pn_sequence_v3;
end
waitbar(kk/iLength,h);
end
close(h);
cH1 = idwt2(cA2,cH2,cV2,cD2,'haar',[Mc/2,Nc/2]);
cV1 = idwt2(cA3,cH3,cV3,cD3,'haar',[Mc/2,Nc/2]);
dEmbed = idwt2(cA1,cH1,cV1,cD1,'haar',[Mc,Nc]);
uEmbed = uint8(dEmbed);
imwrite(uEmbed,'dwt.bmp','bmp');
PSNR = psnr(dOrigCover,dEmbed);
elapsed_time=cputime-start_time
figure(1),imshow(iCover,[]);
title('Original Image');
figure(2),imshow(uEmbed,[]);
title(strcat('Watermarked Image',',PSNR=',num2str(PSNR)));
%% END------------------------------------------------------------------%%
%% ---------------------------------------------------------------------%%
% 基于小波变换的扩频图象数字水印-->水印检测
%% ---------------------------------------------------------------------%%
start_time=cputime;
k=0.6;
file_name='~dwt.bmp';
iEmbed = imread(file_name);
dEmbed = double(iEmbed);
Mc=size(iEmbed,1);
Nc=size(iEmbed,2);
file_name='right.bmp';
iWatermark = imread(file_name);
dWatermark = double(iWatermark);
ddWatermark=dWatermark;
Mw=size(iWatermark,1);
Nw=size(iWatermark,2);
file_name='key.bmp';
key=double(imread(file_name))./256;
rand('state',key);
MessageVector=ones(1,Mw*Nw);
h = waitbar(0,'Detecting, please wait...');
[cA1,cH1,cV1,cD1] = dwt2(dEmbed,'haar');
[cA2,cH2,cV2,cD2] = dwt2(cH1,'haar');
[cA3,cH3,cV3,cD3] = dwt2(cV1,'haar');
iLength = length(MessageVector);
for (kk=1:iLength)
pn_sequence_h2=round(2*(rand(Mc/4,Nc/4)-0.5));
pn_sequence_v2=round(2*(rand(Mc/4,Nc/4)-0.5));

pn_sequence_h3=round(2*(rand(Mc/4,Nc/4)-0.5));
pn_sequence_v3=round(2*(rand(Mc/4,Nc/4)-0.5));

correlation_h2(kk)=corr2(cH2,pn_sequence_h2);
correlation_v2(kk)=corr2(cV2,pn_sequence_v2);
correlation_h3(kk)=corr2(cH3,pn_sequence_h3);
correlation_v3(kk)=corr2(cV3,pn_sequence_v3);

correlation(kk)=(correlation_h2(kk)+correlation_h3(kk)+correlation_v2(kk)+correlation_v3(kk))/4;
waitbar(kk/iLength,h);
end
for (kk=1:iLength)
if (correlation(kk)> mean(correlation))
MessageVector(kk)=0;
end
end
close(h);
DDetect=reshape(255*MessageVector,Mw,Nw);
Detect = uint8(DDetect);
imwrite(Detect,'watermark jiancai.bmp','bmp');
PSNR = psnr(ddWatermark,DDetect);
elapsed_time=cputime-start_time
CN=corr2(ddWatermark,DDetect);
figure(1),imshow(iWatermark,[]);
title('Original Watermark');
figure(2),imshow(Detect,[])
title(strcat('Detected Watermark',',PSNR=',num2str(PSNR),'CN=',num2str(CN)));
%% END------------------------------------------------------------------%%
% Function:计算PSNR
function PSNR = psnr(ImageA,ImageB)
if (size(ImageA,1) = size(ImageB,1)) or (size(ImageA,2) = size(ImageB,2))
error('ImageA <> ImageB');
dPSNR = 0;
return ;
end
M = size(ImageA,1);
N = size(ImageA,2);

d = 0 ;
for i = 1:M
for j = 1:N
d = d + (ImageA(i,j) - ImageB(i,j)).^2 ;
end
end

dPSNR = -10*log10(d/(255*255*M*N)) ;
return

G. matlab dwt算法

http://www.math.org.cn/forums/index.php?showforum=28

建议你到这里去问,网络这里大多是Dota,WOW的高手啊!....

H. 一种基于DWT的非自适应数字水印算法及其MATLAB实现

你这个很简单啊,提取时有原始图像,在图片在网上搜索《lena图像》应该能搜到。

至于水印图,自己可以用画图工具,做一个32x32的,在matlab上处理一下做成2值图。

至于代码部分,开始段,[cA1,cH1,cV1,cD1]=dwt2(x,'db1') % x 是原图处理过的灰度图。

这就没什么了啊。已经都告诉你了。

流程是这样的。

嵌入过程:

  1. 读取原图。

  2. 对原图做灰度处理。

  3. 读取水印。

  4. 对水印图做2值处理。

  5. 对灰度图做3次DWT。

  6. 设置嵌入强度。

  7. 根据嵌入算法将水印嵌入到需要的部分。

  8. 将嵌入后的部分,替换原来的部分后做IDWT。

提取过程:

  1. 读取原图,做3次DWT。

  2. 读取嵌入水印的图片,做3次DWT。

  3. 取出原来嵌入的部分,和原图为嵌入的部分根据算法提取水印。


大体是这样,奉劝你一句,不要抄他的,这个算法很小白,抄也要抄有前途的啊。这个很白痴啊。嵌入水印在[cA3,cH3,cV3,cD3]中,哪有嵌入到cD3中的?白痴啊。一般选择嵌入也是选中间的cH3或cV3或这两个都选。还有,提取时还需要原图片,很无语了,需要原图片还需要做什么别的算法吗?简单的加减乘除就搞定了。里面还添加了for运算,matlab里for的运算速度是最慢了。

I. 小波高低频子空间是正交的吗,正交小波又是什么意思

你提到空间,那么就专指使用mallat算法的DWT概念。对于使用mallat算法DWT,最早需要分解后高、低频的小波系数是正交,为的是高、低频空间中的信息没有重叠,这样为分解后的解释和计算有很多好处。
于是从最早的haar小波开始,凡是要用于进行DWT的小波函数(db(包括haar),coif,sym,meyr,样条小波等)都是正交小波,其分解后高、低频子空间是正交的。后来放宽条件还设计了双正交的小波系(bior,rbio),虽然不正交,然而仍然可以使用mallat算法,于是也可用于DWT。
剩下的小波函数就因为不正交所以都只能用于CWT,用不了mallat算法那么也就没有什么子空间的问题了。水平有限,仅供参考!

热点内容
服务器cpu能供多少电脑使用 发布:2024-10-09 23:05:21 浏览:349
算法和嵌入式 发布:2024-10-09 23:04:34 浏览:553
谷歌内部服务器错误是什么意思 发布:2024-10-09 22:39:27 浏览:904
java中todate 发布:2024-10-09 22:01:49 浏览:854
android短信权限设置 发布:2024-10-09 21:45:43 浏览:849
安卓手机转移数据为什么自动断开 发布:2024-10-09 21:40:52 浏览:88
什么是海关防盗密码锁 发布:2024-10-09 21:32:24 浏览:852
shell脚本的加减 发布:2024-10-09 21:23:23 浏览:402
安卓平板和苹果的平板有什么区别 发布:2024-10-09 20:26:37 浏览:428
上传速度对网速的影响吗 发布:2024-10-09 20:09:38 浏览:564