小波图像分解与重构自编的程序

小波图像分解与重构自编的程序

ID:30838361

大小:194.50 KB

页数:6页

时间:2019-01-03

小波图像分解与重构自编的程序_第1页
小波图像分解与重构自编的程序_第2页
小波图像分解与重构自编的程序_第3页
小波图像分解与重构自编的程序_第4页
小波图像分解与重构自编的程序_第5页
资源描述:

《小波图像分解与重构自编的程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、用自编的程序实现小波图像分解与重构收藏去年门月发布了一•系列有关小波变换和图像处理的文章,把学习小波过程中的心得体会和编写的程序放在网上和人家共享交流。半年来,感谢大家的关注和帮助,在相互的讨论交流屮,我不断地从人家提出的问题中拓展自己的知识血,对小波的理论及其应用有了更深入的了解和掌握。根据和大家讨论交流中发现的问题,对博客屮的程序进行修正。有关小波图像分解和重构的两篇文章屮分享的程序,存在下列问题:(1)程序所用的小波函数只有非标准的Haar小波,其滤波器组为Lo_D=[1/21/2],Hi_D=[-1/21/2],是固化在mydwt2.m的程序中的,不能选

2、择其他的小波函数;(2)非标准的Haar小波,其分解出来的系数矩阵屮,高频系数的细节内容(轮廓、边缘等特征)不明显;(3)函数mydwt2中列变换的矩阵对彖为输入矩阵,这是错谋的,其矩阵对彖应该是行变换后的缓存矩阵;(4)函数mydwt2的输出用[LL,HL,LH,HH]表示,不是很规范,应改为[cA,cV,cH,cD]來表示,即一级小波变换输岀的系数矩阵有4个部分:平均部分、垂直细节部分、水平细节部分和対角线细节部分。(5)函数mywavedec2的输出y是与输入矩阵x相同大小的矩阵,并且已将N级分解后所有的平均、细节系数组合成一体的。实际上,这种定义只对Ha

3、ar小波有效。(6)原程序中要调用modmat函数对图像矩阵进行修剪,使之能被2的N次方整除,主要是为了生成塔式结构图像而设的,对上述问题修正后,这个modmat函数已不需使用了。针对上述问题,我对程序作了修止,发布在今天的3篇文章里,请大家点击查看。新修正的程序更为简洁易懂,功能也有所增强,可以用任意的小波函数述行小波分解,可根据小波分解系数矩阵重构出指定分解级的低频系数和原始图像。1、《小波图像分解与重构程序存在的问题与解决办法》上一篇文章中我们实现了小波的一维、二维信号分解与重构,其中的二维信号分解与重构,只要稍作修改,就可以实现图像的分解和重构了。修改的

4、工作,主要是对图像信号进行规范化处理、数据格式转换和绘图细节处理等。简单起见,我们从黑白(灰度)图像的分解、重构说起,因为彩色图像的处理要复杂一点。在木文中,我们使用著名的Lena图作为原始图像。图1首先,为了实现图像的N层分解,对一幅m行n列的黑白图像,我们要对具进行规范化处理,使其能被2的N次方整除。以下的modmat()函数实现此功能:functiony=modmat(x,dim)%函数MODMAT()对输入矩阵x进行规范化,使其行列数均能被"dim整除%输入参数:x——r*c维矩阵;%dim——矩阵重构的维数%输出参数:yrfct维矩阵,mod(rt,2

5、Adim)=0,mod(ct,2Adim)=0[row,col]=size(x);%求出输入矩阵的行列数row,colrt=row-mod(row,2Adim);%将row,col分别减去本身模2Adim得到的数ct=col-mod(col,2Adim);%所得的差为rt、ct,均能被2Adim整除y=x(1:rt,1:ct);%输出矩阵y为输入矩阵x的rt*ct维子矩阵然后,将规范化后的图像的数据格式市适合显示图像的uint8格式转换为适合数值处理的double格式,再调用二维小波分解函数进行图像分解,最后为了清晰地显示分解图像的塔式结构,在图像的相应区域绘制

6、若干分界线。具体程序如2functiony=mywavedec2(x5dim)%函数MYWAVEDEC2()对输入矩阵x进行dim层分解,得到相应的分解系数矩阵y%输入参数:x——输入矩阵;dim分解层数。%输出参数:y——分解系数矩阵。x=modmat(x,dim);%首先规范化输入矩阵,使其行列数均能被2Adim整除subplot(121);imshow(x);titleC原始图像);%画出规范化后的源图像[m,n]=size(x);%求出规范化矩阵x的行列数xd=double(x);%将矩阵x的数据格式转换为适合数值处理的double格式fori=1:di

7、mxd=modmat(xd,1);[dLL,dHL,dLH,dHH]=mydwt2(xd);%矩阵小波分解tmp=[dLL,dHL;dLH,dHH];%将分解系数存入缓存矩阵xd=dLL;%将缓存矩阵左上角部分的子矩阵作为下一层分解的源矩阵[row,col]=size(tmp);%求出缓存矩阵的行列数y(1:row,1:col)=tmp;%将缓存矩阵存入输出矩阵的相应行列endyd=uint8(y);%将输岀矩阵的数据格式转换为适合显示图像的uint8格式fori=1:dim%对矩阵yd进行分界线处理,画出分解图像的分界线m=m-mod(m,2);n=n-mod

8、(n,2);yd(m/2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。