ImageVerifierCode 换一换
格式:DOC , 页数:10 ,大小:116.50KB ,
资源ID:501646      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-501646.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多维小波变换工具箱.DOC)为本站会员(国***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

多维小波变换工具箱.DOC

1、多维小波变换工具箱 Multi-dimension Wavelet Toolbox Version 1.0 作者:陈甫 一、 函数的简要说明 convnd 对多维数据在某一维向上做线性卷积 convndcut 和 convnd差不多,但加上了可以截取卷积结果的中间一部分而把两边删去的功能 dyaddownnd 隔点采样 dyadupnd 在两点间添 0 dwtnd1 多维空间中一个维向上的一次小波变换 dwtndn 多维空间一次小波变换 (各维向都做一次 ) wavedecnd 多维空间多次小波变换分解 idwtnd1 多维空间中一个维向上的一次小波逆变换 idwtndn 多维空间一次小波逆变

2、换 waverecnd 多维空间多次小波逆变换重构 packup 利用 dwtndn和 wavedecnd的结果拼成多维系数空间的表示形式 fitscale 改变数据值的分布以利于图像显示 show3d 用图像显示三维空间的小波变换系数 二、 实例 实例一 dwtnd1和 idwtnd1 r=rand(4,4,4) %随机生成一个多维空间的数据,这里是个 4*4*4的三维空间 r(:,:,1) = 0.2028 0.1988 0.9318 0.5252 0.1987 0.0153 0.4660 0.2026 0.6038 0.7468 0.4186 0.6721 0.2722 0.4451 0

3、.8462 0.8381 r(:,:,2) = 0.0196 0.5028 0.1897 0.5417 0.6813 0.7095 0.1934 0.1509 0.3795 0.4289 0.6822 0.6979 0.8318 0.3046 0.3028 0.3784 r(:,:,3) = 0.8600 0.8998 0.6602 0.5341 0.8537 0.8216 0.3420 0.7271 0.5936 0.6449 0.2897 0.3093 0.4966 0.8180 0.3412 0.8385 r(:,:,4) = 0.5681 0.4449 0.9568 0.9797 0.

4、3704 0.6946 0.5226 0.2714 0.7027 0.6213 0.8801 0.2523 0.5466 0.7948 0.1730 0.8757 ca,cd=dwtnd1(r,1,haar) %对数据 r在第一维向即 row方向做一次 haar小波分解 ca(:,:,1) = 0.2839 0.1514 0.9884 0.5146 0.6194 0.8428 0.8944 1.0679 ca(:,:,2) = 0.4956 0.8572 0.2709 0.4897 0.8565 0.5187 0.6965 0.7610 ca(:,:,3) = 1.2117 1.2172 0.

5、7087 0.8918 0.7708 1.0344 0.4461 0.8116 ca(:,:,4) = 0.6636 0.8057 1.0461 0.8847 0.8834 1.0014 0.7447 0.7977 cd(:,:,1) = 0.0029 0.1298 0.3294 0.2280 0.2345 0.2133 -0.3023 -0.1174 cd(:,:,2) = -0.4678 -0.1461 -0.0027 0.2763 -0.3198 0.0879 0.2683 0.2259 cd(:,:,3) = 0.0045 0.0553 0.2250 -0.1365 0.0686 -0

6、.1224 -0.0364 -0.3742 cd(:,:,4) = 0.1398 -0.1766 0.3071 0.5008 0.1104 -0.1227 0.5001 -0.4408 这里得到 ca, cd分别是小波分解后的近似分量和细节分量,都是 2*4*4的三维空间。 q=idwtnd1(ca,cd,1,haar) %用分解的结果做一次逆变换来得到原来的数据 q(:,:,1) = 0.2028 0.1988 0.9318 0.5252 0.1987 0.0153 0.4660 0.2026 0.6038 0.7468 0.4186 0.6721 0.2722 0.4451 0.8462

7、0.8381 q(:,:,2) = 0.0196 0.5028 0.1897 0.5417 0.6813 0.7095 0.1934 0.1509 0.3795 0.4289 0.6822 0.6979 0.8318 0.3046 0.3028 0.3784 q(:,:,3) = 0.8600 0.8998 0.6602 0.5341 0.8537 0.8216 0.3420 0.7271 0.5936 0.6449 0.2897 0.3093 0.4966 0.8180 0.3412 0.8385 q(:,:,4) = 0.5681 0.4449 0.9568 0.9797 0.3704 0

8、.6946 0.5226 0.2714 0.7027 0.6213 0.8801 0.2523 0.5466 0.7948 0.1730 0.8757 可以看到和原来的数据是一致的。 实例二 dwtndn和 idwtndn 还用刚才生成的数据 r y=dwtndn(r,haar) %对三个方向都做小波变换 y = Columns 1 through 4 2x2x2 double 2x2x2 double 2x2x2 double 2x2x2 double Columns 5 through 8 2x2x2 double 2x2x2 double 2x2x2 double 2x2x2 doubl

9、e 得到的是一个 cell,里面有 8个 2*2*2的数据,第一个是所谓的 aaa即三个维向上的近似系数,而最后一个是所谓的 ddd即三个维向上的细节系数。 x=idwtndn(y,haar) %利用分解结果恢复原有的数据 x(:,:,1) = 0.2028 0.1988 0.9318 0.5252 0.1987 0.0153 0.4660 0.2026 0.6038 0.7468 0.4186 0.6721 0.2722 0.4451 0.8462 0.8381 x(:,:,2) = 0.0196 0.5028 0.1897 0.5417 0.6813 0.7095 0.1934 0.150

10、9 0.3795 0.4289 0.6822 0.6979 0.8318 0.3046 0.3028 0.3784 x(:,:,3) = 0.8600 0.8998 0.6602 0.5341 0.8537 0.8216 0.3420 0.7271 0.5936 0.6449 0.2897 0.3093 0.4966 0.8180 0.3412 0.8385 x(:,:,4) = 0.5681 0.4449 0.9568 0.9797 0.3704 0.6946 0.5226 0.2714 0.7027 0.6213 0.8801 0.2523 0.5466 0.7948 0.1730 0.8

11、757 可以看到得到了恢复 实例三 wavedecnd和 waverecnd r=rand(8,8,8); %生成一个 8*8*8的三维空间 x=wavedecnd(r,2,haar) %做两层的 haar小波变换 x = Columns 1 through 4 2x2x2 double 2x2x2 double 2x2x2 double 2x2x2 double Columns 5 through 8 2x2x2 double 2x2x2 double 2x2x2 double 2x2x2 double Columns 9 through 12 4x4x4 double 4x4x4 doub

12、le 4x4x4 double 4x4x4 double Columns 13 through 15 4x4x4 double 4x4x4 double 4x4x4 double 4*4*4有七个它们是第一层的结果,其中的一个做了第二层变换而变成了 8个 2*2*2。 y=waverecnd(x,2,haar); %恢复 any(abs(r-y)1e-10) %是不是和原来的一样?者利用等于 0是不行的,因为计算由误差,当小于一个很小的数是就可以认为恢复了。 ans(:,:,1) = 0 0 0 0 0 0 0 0 ans(:,:,2) = 0 0 0 0 0 0 0 0 ans(:,:,3)

13、 = 0 0 0 0 0 0 0 0 ans(:,:,4) = 0 0 0 0 0 0 0 0 ans(:,:,5) = 0 0 0 0 0 0 0 0 ans(:,:,6) = 0 0 0 0 0 0 0 0 ans(:,:,7) = 0 0 0 0 0 0 0 0 ans(:,:,8) = 0 0 0 0 0 0 0 0 这就说明恢复是成功的。 实例四 一个图像序列的处理 load woman %这个文件在原来的 matlab小波工具箱的目录里 x=X(51:199,51:199); %大了点,切一小块吧 r=turndata(x,8,0.1); %这是一个生成图像序列的自定义程序,其实也

14、就是故意做出一些变化 colormap(map); function d=turndata(x,pages,step) d=zeros(size(x,1),size(x,2),pages); d(:,:,1)=x; for i=2:pages d(:,:,i)=d(:,:,i-1)+x*step; a,b=find(d(:,:,i)255); for j=1:length(a) d(a(j),b(j),i)=255; end end; 从侧面看可以发现下边的层次比上面的亮一些,而这种亮度的提高程度是和原来的亮度成正比的,也就是亮者愈亮。 下边我们对它做两层 haar变换 h=wavedecnd

15、(r,2,haar) h = Columns 1 through 3 38x38x2 double 38x38x2 double 38x38x2 double Columns 4 through 6 38x38x2 double 38x38x2 double 38x38x2 double Columns 7 through 9 38x38x2 double 38x38x2 double 75x75x4 double Columns 10 through 12 75x75x4 double 75x75x4 double 75x75x4 double Columns 13 through 15 7

16、5x75x4 double 75x75x4 double 75x75x4 double f=packup(h); %拼成一整个三维空间 g=fitscale(f); %适合 256灰度的显示 show3d(g,2) %加上两级的辅助线 很不错的效果吧,其中最亮的一块是两次变换后的近似系数的表示。小波变换没有减少空间的规模(还是 150*150*8)但其中的近似部分区集中到一小块地方,这就是数据压缩的基本出发点。 还可以看看第一层的情况 imagesc(f(:,:,1) 三、一些值得注意的问题 1、 做变换的数据的维的长度不要小于 2,也就是说不能是( 3*2*4*1*) ,这样的分解没有什么意

17、义,而且可能会出现不可预料 的结果。 2、 关于奇偶数的问题 先看一个用 matlab5.2上的函数算一个题 x=rand(5,5) x = 0.2075 0.3490 0.5401 0.0198 0.6700 0.8506 0.1625 0.6984 0.0984 0.4562 0.7131 0.5398 0.0021 0.3742 0.8380 0.0804 0.9233 0.8366 0.9675 0.8231 0.8187 0.4371 0.8894 0.6196 0.5421 c,s=wavedec2(x,2,haar); %做两层的 haar分解 h=waverec2(c,s,2,

18、haar) %试图恢复 ? Error using = + Matrix dimensions must agree. Error in = F:MATLABtoolboxwaveletwaveletidwt2.m On line 48 = t0 = conv2(dyadup(a,r),LoF_R)+conv2(dyadup(h,r),HiF_R); Error in = F:MATLABtoolboxwaveletwaveletappcoef2.m On line 54 = a = idwt2(a,h,v,d,LoF_R,HiF_R,s(rm-p,:); Error in = F:MATLA

19、Btoolboxwaveletwaveletwaverec2.m On line 28 = x = appcoef2(c,s,arg3,arg4,0); 很奇怪吧,能够分解,却在恢复的时候出错。 让我们看看到底发生了什么。 u=wavedecnd(x,2,haar) u = Columns 1 through 4 2x2 double 2x2 double 2x2 double 2x2 double Columns 5 through 7 3x3 double 3x3 double 3x3 double 在第一层分解后生成 3*3的矩阵,第二层分解为 2*2的矩阵。但 在逆小波变换恢复是就会有

20、问题。拿前四个矩阵反变换之后生成的是 4*4的矩阵,这样和后面的三个就不匹配了。这是一个奇偶数的问题,如果是 rand(4,4)就不会有这样的毛病。 我对这个问题进行了一些处理,详见源代码。 h=waverecnd(u,2,haar) h = 0.2075 0.3490 0.5401 0.0198 0.6700 0.0000 0.8506 0.1625 0.6984 0.0984 0.4562 0.0000 0.7131 0.5398 0.0021 0.3742 0.8380 0.0000 0.0804 0.9233 0.8366 0.9675 0.8231 0.0000 0.8187 0.4371 0.8894 0.6196 0.5421 0.0000 0.0000 0.0000 0.0000 0.0000 0 0.0000 很不幸,还是多了一行一列 0,但 5*5位置上的数却是正确的。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。