精华内容
下载资源
问答
  • matlab中实现图像的二维小波分解与重构,以及对图像的多尺度分解与重构
  • 小波变换图像分解与重构(含matlab代码)

    万次阅读 多人点赞 2019-02-23 14:22:01
    01 小波变换原理 所谓的小波的小是针对傅里叶波而言,傅里叶波指的是在时域空间无穷震荡的正弦(或余弦波)。 相对而言,小波指的是一种能量在时域非常集中的波,它的能量有限,都集中在某一点附近,而且积分的值...

                                                                               01 小波变换原理  

    所谓的小波的小是针对傅里叶波而言,傅里叶波指的是在时域空间无穷震荡的正弦(或余弦波)。

    相对而言,小波指的是一种能量在时域非常集中的波,它的能量有限,都集中在某一点附近,而且积分的值为零,这说明它与傅里叶波一样是正交波。举一些小波的例子:

    可以看到,能量集中在x轴0值附近,以y轴的0值为基线,上下两个区域的波形面积相等。

    众所周知,图像的傅里叶变换是将图像信号分解为各种不同频率的正弦波。同样,小波变换是将图像信号分解为由原始小波位移和缩放之后的一组小波。

    小波在图像处理里被称为图像显微镜,原因在于它的多分辨率分解能力可以将图片信息一层一层分解剥离开来。剥离的手段就是通过低通和高通滤波器,

    这里我们以一个图像的横向一维为例,讲讲小波的分解与还原,采用的是Haar小波做分解:

    图像原始像素矩阵:[6 4 8 7 5 9 3 2]

    分解低通滤波器:[ 1  1]/sqrt(2)

    分解高通滤波器:[-1 1]/sqrt(2)

    1. 用低通滤波器与原始像素矩阵做卷积得:[8 10 12 15 12 14 12 5]/sqrt(2)

    下采样得:[10 15 14 5]/sqrt(2)    ----->L

    2. 用高通滤波器与原始像素矩阵做卷积得:[-4 2 -4 1 2 -4 6 1]/sqrt(2)

    下采样得:[2 1 -4 1]/sqrt(2)    ----->H

    上例为一维情况,二维情况在做完横向滤波之后再进行纵向滤波即可。

    逆变换过程:

    重构低通滤波器:[1  1]/sqrt(2)

    重构高通滤波器:[1 -1]/sqrt(2)

    1. 对L数组插值得:[0 10 0 15 0 14 0 5]/sqrt(2)

    再用低通滤波器做卷积得:[10 10 15 15 14 14 5 5]/2

    2. 对H数组插值得:[0 2 0 1 0 -4 0 1]/sqrt(2)

    再用高通滤波器做卷积得:[2 -2 1 -1 -4 4 1 -1]/2

    两个数组求和得:[6 4 8 7 5 9 3 2] ,矩阵被还原了。

    二维图像信号

    对于二维图像信号,可以用分别在水平和垂直方向进行滤波的方法实现二维小波多分辨率分解。图2.5为经过二维离散小波变换的分解后子图像的划分。其中:

    (l) LL子带是由两个方向利用低通小波滤波器卷积后产生的小波系数,它是图像的近似表示。

    (2) HL子带是在行方向利用低通小波滤波器卷积后,再用高通小波滤波器在列方向卷积而产生的小波系数,它表示图像的水平方向奇异特性。(水平子带)

    (3) LH子带是在行方向利用高通小波滤波器卷积后,再用低通小波滤波器在列方向卷积而产生的小波系数,它表示图像的垂直方向奇异特性。(垂直子带)

    (4) HH子带是由两个方向利用高通小波滤波器卷积后产生的小波系数,它表示图像的对角边缘特性。(对角子带)

     (第一个字母表示列方向的处理,第二个字母表示行方向的处理,图像的奇异特性通过低通时保留,通过高通时被滤除)

    小波去噪方法也就是寻找从实际信号空间到小波函数空间的最佳映像,以便得到原信号的最佳恢复。

    目前,小波去噪的方法大概可以分为三大类:

    第一类方法(小波变换模极大值去噪法)是利用小波变换模极大值原理去噪,即根据信号和噪声在小波变换各尺度上的不同传播特性,剔除由噪声产生的模极大值点,保留信号所对应的模极大值点,然后利用所余模极大值点重构小波系数,进而恢复信号;

    第二类方法(小波系数相关性去噪法)是对含噪信号作小波变换之后,计算相邻尺度间小波系数的相关性,根据相关性的大小区别小波系数的类型,从而进行取舍,然后直接重构信号;

    第三类方法(小波变换阈值去造法)是小波阈值去噪方法,该方法认为信号对应的小波系数包含有信号的重要信息,其幅值较大,但数目较少,而噪声对应的小波系数是一致分布的,个数较多,但幅值小。

    这里主要主要小波阀值收缩去噪法:

    小波阀值去噪的基本思想:Donoho提出的小波阀值去噪的基本思想是将信号通过小波变换(采用Mallat算法)后,信号产生的小波系数含有信号的重要信息,将信号经小波分解后小波系数较大,噪声的小波系数较小,并且噪声的小波系数要小于信号的小波系数,通过选取一个合适的阀值,大于阀值的小波系数被认为是有信号产生的,应予以保留,小于阀值的则认为是噪声产生的,置为零从而达到去噪的目的。其基本步骤为:

     

    (1)分解:选定一种层数为N的小波对信号进行小波分解;

    (2)阀值处理过程:分解后通过选取一合适的阀值,用阀值函数对各层系数进行量化;

    (3)重构:用处理后的系数重构信号。

                                                       02 小波阀值去噪的基本问题

    小波阀值去噪的基本问题包括三个方面:小波基的选择,阀值的选择,阀值函数的选择。

    (1)小波基的选择:通常我们希望所选取的小波满足以下条件:正交性、高消失矩、紧支性、对称性或反对称性。但事实上具有上述性质的小波是不可能存在的,因为小波是对称或反对称的只有Haar小波,并且高消失矩与紧支性是一对矛盾,所以在应用的时候一般选取具有紧支的小波以及根据信号的特征来选取较为合适的小波。

    (2)阀值的选择:直接影响去噪效果的一个重要因素就是阀值的选取,不同的阀值选取将有不同的去噪效果。目前主要有通用阀值(VisuShrink)、SureShrink阀值、Minimax阀值、BayesShrink阀值等。

    (3)阀值函数的选择:阀值函数是修正小波系数的规则,不同的反之函数体现了不同的处理小波系数的策略。最常用的阀值函数有两种:一种是硬阀值函数,另一种是软阀值函数。还有一种介于软、硬阀值函数之间的Garrote函数。

    另外,对于去噪效果好坏的评价,常用信号的信噪比(SNR)与估计信号同原始信号的均方根误差(RMSE)来判断。

    附小波分解与重构图像的matlab程序

    
    clc;
    clear;
    % 装载图像
    load woman;
    % X包含载入的图像
    % 绘制原始图像
    figure(1);
    subplot(2,2,1);
    image(X);
    colormap(map);
    title('原始图像');
    % 使用sym5对X进行尺度为2的分解
    [c,s] = wavedec2(X,1,'sym5');
    % 从小波分解结构[c,s]进行尺度为1和2时的低频重构
    a1 = wrcoef2('a',c,s,'sym5',1); 
    a2 = wrcoef2('a',c,s,'sym5',1); 
    
    % 绘制尺度为1时的低频图像
    subplot(2,2,3);
    image(a1);colormap(map);
    title('尺度为1时的低频图像');
    % 绘制尺度为2时的低频图像
    subplot(2,2,4);
    image(a2);colormap(map);
    title('尺度为2时的低频图像');
    % 从小波分解结构[c,s]在尺度为2时重构高频
    % 'h' 是水平方向
    % 'v' 是垂直方向
    % 'd' 是对角方向
    hd2 = wrcoef2('h',c,s,'sym5',1); 
    vd2 = wrcoef2('v',c,s,'sym5',1); 
    dd2 = wrcoef2('d',c,s,'sym5',1);
    % 绘制高频图像
    figure(2);
    subplot(2,2,1);
    image(hd2);colormap(map);
    title('尺度为2时的水平高频图像');
    subplot(2,2,2);
    image(vd2);colormap(map);
    title('尺度为2时的垂直高频图像');
    subplot(2,2,3);
    image(dd2);colormap(map);
    title('尺度为2时的对角高频图像');
    subplot(2,2,4);
    image(hd2+dd2+vd2+a1);colormap(map);
    % 验证这些图像的长度都是sX
    sX = size(X)
    sa1 = size(a1)
    shd2 = size(hd2)
    norm(hd2+dd2+vd2+a1-X)

     

     

    展开全文
  • 小波分析是一个比较难的分支,用户采用小波变换,可以实现图像压缩,振动信号的分解与重构等,因此在实际工程上应用较广泛。小波分析与Fourier变换相比,小波变换是空间域和频率域的局部变换,因而能有效地从信号中...
  • 小波变换:  示意:尺度越大,采用越大的时间窗,尺度越小,采用越短的时间窗,即尺度频率成反比。在时频两域都具有表征信号局部特征的能力,其在低频部分具有较高的频率分辨率和较低的时间分辨率,在高频部分...

    matlab设计:

        与单纯运用某种自适应算法相比,基于小波分解的自适应滤波算法在收敛速度和稳定性上都有了很大的提高

    小波变换:

           示意:尺度越大,采用越大的时间窗,尺度越小,采用越短的时间窗,即尺度与频率成反比。在时频两域都具有表征信号局部特征的能力,其在低频部分具有较高的频率分辨率和较低的时间分辨率,在高频部分具有较高的时间分辨率和较低的频率分辨率,所以被誉为分析信号的数字显微镜。

     

           小波变换与傅里叶变换对比的优点:短时傅立叶分析是把一个短时间的窗函数加在信号上,再对这一部分加窗的信号做傅立叶变换,当然,假定了在短时间内信号是平稳的。然后移动窗函数,对整个时间轴上的信号做短时傅立叶分析。但是,又有问题出现了,短时傅立叶分析一旦确定了窗函数,窗函数的形状便不再改变,于是短时傅立叶分析对于信号的时频分辨率也随之确定。

    而我们希望稍微智能一点,即对于变化剧烈的信号,时间分辨率能高一点,频率分辨率可以降低,而对于变化平坦的信号,频率分辨率要高一些,时间分辨率可以低点。于是小波分析便产生了。

    小波分析同样对信号在一短时间内做加窗(小波函数)分析,只是这个窗,即小波函数既可以在时间轴上移动,又可以伸缩,伸缩便意味着时频分辨率的改变。

           小波变换的物理表现:分解的结果是产生长度减半的两个部分,一个是经低通滤波器产生的原始信号的平滑部分,另一个则是经高通滤波器产生的原始信号细节部分。

        不同j所确定的频带是独立的,随j变化相互独立的频带覆盖了整个频率轴,分辨率j反应了频带的位置和带宽把信号分解到一系列相互独立的频带上分辨率j-1时的近似信号=f(x)在分辨率为j时的近似部分+细节部分

    再对低频部分进行相似运算

     

    3、小波变换在matlab中的使用

    [C, S] = wavedec2(x, n, wname); % 对图像进行小波分解

    小波变换的层数选择:通常分解层数过多,并且对所有的各层小波空间的系数都进行阈值处理会造成信号的信息丢失严重,去噪后的信噪比反而下降,同时导致运算量增大,使处理变慢.

    分解层数过少则去噪效果不理想,信噪比提高不多,但不会出现信噪比下降的情况.

    小波函数的选取:按常理选取了sym4

     

    [C,S]的含义:C=[A(n)|H(n)|D(n)|………H(1)|V(1)|D(1)]

    h ,v ,d 分别反映水平、垂直、对角线方向

    S(1,:)=size of approximation coefficients(n)

     

    部分程序运行:原始图像→加噪图像(同时加入高斯噪声和椒盐噪声)→小波分解后的图像显示

    .M=imread('detfinger1.png'); 

    %读取MATLAB中的名为detfinger的图像  分辨率:512×512

    subplot(1,2,1) 

    imshow(M);           %显示原始图像 

    title('原始图像') 

     

    P1=imnoise(M,'gaussian',0.02);     

    %加入高斯躁声,方差为0.02的高斯噪声

     

    P2=imnoise(P1,'salt &pepper',0.02);

    %同时加入高斯噪声和椒盐躁声 

    subplot(1,2,2) 

    imshow(P2);%加入椒盐躁声后显示图像 

    title('加入高斯椒盐躁声后');

    %%对加入高斯噪声的图像进行小波分解

    P2=double(P2);

    [CA,CH,CV,CD]= dwt2(P2,'db1 ');

    y =[CA,CH;CV,CD];

    y=uint8(y);

    subplot(3,1,3); 

    imshow(y); 

    title('小波分解');

    4、滤波器的特性

    我的思路:先了解维纳滤波器的原理再进一步改进,理解自适应滤波器,进行自适应滤波器的设计,再进行自适应滤波器的组合设计,从而实现去噪功能

     

    维纳滤波器:根据平稳随机信号的全部过去和当前的观察数据来估计信号的当前值,在最小均方误差的条件下得到系统的传递函数,参数是固定的,适用于平稳随机信号。

    卡尔曼滤波器:根据当前时刻数据的观测值和前一时刻对该一时刻的预测值进行递推数据。它自动调节本身的冲击响应特性(自动调节数字滤波器的系数),以适应信号变化的特性,从而达到最优化滤波。它的参数是时变的,适用于非平稳随机信号。

    这两种滤波器最优滤波的条件:噪声的统计特性先验已知

    但实际应用中,常常无法得到这些统计特征的先验知识(统计特性是随时间变化的),因此实现不了最优滤波。

    自适应滤波器:无法得到一些统计特性的先验知识(统计特性随时间变化)

    而自适应滤波器在输入信号统计特性未知或者统计特性变化时,能够自动调节自身的参数,使其按照某种准则达到最优滤波。由于自适应滤波器具有这种特性,自提出以来,在实际工程中的众多领域得到了广泛应用。

     

    5、如何设计和建立自适应滤波器

       自适应滤波器工作原理是:系统能够按照某种算法自动调节权系数,使其实际输出和期望输出的均方误差达到最小值。

       自适应滤波器的结构:有FIR和IIR两种。由于IIR滤波器存在稳定性的问题,因此一般采用FIR滤波器。由于FIR滤波器横向结构的算法具有容易实现和计算量少等优点,在对收敛速度不是很快的场合,多采用FIR作为自适应滤波器结构。


    自适应滤波算法:

    自适应滤波器的核心部分就是自适应滤波算法,基于不同的准则,最常用的自适应滤波算法是LMS算法和RLS算法,LMS算法以最小均方误差为准则,而RLS算法(递归最小二乘算法)以最小误差平方和为准则。

    LMS算法由于其具有计算量小,稳定性好,易于实现等优点,被广泛使用。

    LMS算法中均方误差表示为:

    使均方误差达到最小值时,得到最佳权系数w*,应满足下列方程:在实际中,LMS 迭代算法是以最速下降法为原则进行的,用公式表示为:

    式中,u 是自适应步长;   ( n) 为迭代的梯度。

    这里来估计均方误差 MSE 的梯度,并以此梯度估计值代替最速下降法中理论情况下的梯度真值,LMS( 最小均方) 算法进行梯度估计的方法是以误差信号的每一次迭代的瞬间时平方值代替其均方值,并以此来估计梯度。

    在自适应滤波器的设计过程中,滤波器阶数 N和步长μ 等参数的选取对仿真结果的影响总结如下.

    (1)自适应算法中步长 μ 的选择:μ 的大小影响算法的收敛速度。  其中,为矩阵的最大特征值μ 取值小,收敛速度慢,计算工作量大,但滤波性能较好。μ 取值大,收敛速度快,计算工作量小,滤波性能较差。但 μ 大到一定值时,收敛速度变化不明显,且取值过大,会造成计算溢出.

    (2)自适应滤波器阶数 N 的影响: N 不可以任意选取,需要根据经验加上实际仿真验证比较才能最终确定.。

    当阶数 N 取值大时,迭代次数增加,收敛速度变快。但当阶数 N 大到一定程度,收敛速度变化不明显,且可能引起系数迭代过程不收敛.

     

     

    自适应滤波器原理:

    输入信号x(n)

    、参考信号d(n)、误差信号e(n)

    e(n)为y(n)与d(n)的误差信号,根据最小均方误差算法调节自适应滤波器算法的参数,来优化滤波器结构,从而实现尽可能地保留图像固有的信息。

    LMS算法最核心的思想是用平方误差代替均方误差,基本的LMS算法为:

    w(k,n+ 1)=w(k,n)+ 2μe(n)x(n-k)

    其中,w(k,n)和w(k,n+ 1)分别为迭代前后的系数值;n和n+ 1为前后两个时刻;k= 0,1,

    … ,N- 1,N为滤波器的阶数;μ为收敛因子;e(n)=d(n)-y(n)=d(n)-xT(n)w(n)=d(n)-wT(n)x(n)为误差信号;x(n-k)为输入信号;y(n)=xT(n)w(n)为输出信号。

    6、matlab仿真

     

    进行小波变换→  进行滤波后→  再进行图像重构→ 再小波反变换进行图像重构→先用维纳滤波器再用自适应滤波器替换

     

     

     

    %%对加入高斯噪声的图像进行小波分解

    J=double(J);

    [CA,CH,CV,CD]= dwt2(J,'db1 ');

    % [c,s]=wavedec2(j,1,'haar');

    y =[CA,CH;CV,CD];

    y=uint8(y);

    subplot(2,2,3); 

    imshow(y);

    title('小波分解');

     

    %xx=wiener2(CA,[3 3]); %对加噪图像进行二维自适应维纳滤波   %滤波器窗口大小

    yy=wiener2(CH,[3 3]); %对加噪图像进行二维自适应维纳滤波   %滤波器窗口大小

    zz=wiener2(CV,[3 3]); %对加噪图像进行二维自适应维纳滤波   %滤波器窗口大小

    qq=wiener2(CD,[3 3]); %对加噪图像进行二维自适应维纳滤波   %滤波器窗口大小

     

    %%%图像重构    

    XX = idwt2(CA,yy,zz,qq,'db1');    

     

    XX=uint8(XX);

    subplot(2,2,4); 

    imshow(XX); 

    title('重构以后的图像');

     

    其他相关文章请点击:

    图像算法一:【图像点运算】灰度直方图、伽马变换、灰度阈值变换、分段线性变换、直方图均衡化

    图像算法二:【图像几何变换】平移、镜像、转置、缩放、旋转、插值

    图像算法三:【图像增强--空间域】图像平滑、中值滤波、图像锐化

    图像算法四:【图像增强--频率域】傅里叶变换、快速傅里叶变换、频域滤波、频域低通滤波、频域高通滤波

    图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波

    图像算法六:【彩色图像处理】彩色模型、彩图处理

    图像算法七:【形态学图像处理】二值运算、膨胀、腐蚀

    图像算法八:【图像分割】边缘检测(Roberts,Sobel,canny)、霍夫变换(hough)、阈值分割、区域分割

    图像算法九:【图像特征提取】特征降维、PCA人脸特征抽取、局部二进制

    ~~~~

    展开全文
  • 小波分解与重构 【转载自】 用Matlab将一副256*256灰度图进行小波变换和逆变换,得到的图颜色加深了_百度知道 https://zhidao.baidu.com/question/623538787900934124.html 转载于:...

    小波分解与重构

     

    【转载自】

    用Matlab将一副256*256灰度图进行小波变换和逆变换,得到的图颜色加深了_百度知道 https://zhidao.baidu.com/question/623538787900934124.html

    转载于:https://www.cnblogs.com/wxl845235800/p/10720664.html

    展开全文
  • 实现了彩色图像Haar小波的分解与重构与灰度图像的haar小波分解与重构图像压缩、图像去噪、图像增强等功能,界面美观,交互美好,使用MATLAB软件
  • 变换的两类图像分解与重构方法;特别针对影响图像融合效果的各种因素:融合图像的类 型、小波变换的基函数、滤波器、分解层数以及融合规则,进行了归纳总结。 5)讨论了图像融合质量的评价方法,单独列出了主观和客观...
  • 小波变换 matlab程序

    热门讨论 2008-09-05 15:39:01
    小波变换图像处理%MATLAB2维小波变换经典程序 % FWT_DB.M; % 此示意程序用DWT实现二维小波变换 % 编程时间2004-4-10,编程人沙威 %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%% clear; clc; T=256...
  • 去年11月发布了一系列有关小波变换和图像处理的文章,把学习小波过程中的心得体会和编写的程序放在网上和大家共享交流。...有关小波图像分解重构的两篇文章中分享的程序,存在下列问题:(1)程序所用的...

    去年11月发布了一系列有关小波变换和图像处理的文章,把学习小波过程中的心得体会和编写的程序放在网上和大家共享交流。半年来,感谢大家的关注和帮助,在相互的讨论交流中,我不断地从大家提出的问题中拓展自己的知识面,对小波的理论及其应用有了更深入的了解和掌握。根据和大家讨论交流中发现的问题,对博客中的程序进行修正。有关小波图像分解和重构的两篇文章中分享的程序,存在下列问题:

    (1)程序所用的小波函数只有非标准的Haar小波,其滤波器组为 Lo_D=[1/2 1/2], Hi_D=[-1/2
    1/2],是固化在 mydwt2.m 的程序中的,不能选择其他的小波函数;
    (2)非标准的Haar小波,其分解出来的系数矩阵中,高频系数的细节内容(轮廓、边缘等特征)不明显;
    (3)函数 mydwt2
    中列变换的矩阵对象为输入矩阵,这是错误的,其矩阵对象应该是行变换后的缓存矩阵;
    (4)函数 mydwt2
    的输出用[LL,HL,LH,HH]表示,不是很规范,应改为[cA,cV,cH,cD]来表示,即一级小波变换输出的系数矩阵有4个部分:平均部分、垂直细节部分、水平细节部分和对角线细节部分。
    (5)函数 mywavedec2 的输出 y 是与输入矩阵 x
    相同大小的矩阵,并且已将N级分解后所有的平均、细节系数组合成一体的。实际上,这种定义只对Haar小波有效。
    (6)原程序中要调用 modmat 函数对图像矩阵进行修剪,使之能被 2 的 N
    次方整除,主要是为了生成塔式结构图像而设的,对上述问题修正后,这个 modmat 函数已不需使用了。
    针对上述问题,我对程序作了修正,发布在今天的3篇文章里,请大家点击查看。新修正的程序更为简洁易懂,功能也有所增强,可以用任意的小波函数进行小波分解,可根据小波分解系数矩阵重构出指定分解级的低频系数和原始图像。

    1、《小波图像分解与重构程序存在的问题与解决办法》
    http://blog.csdn.net/chenyusiyuan/archive/2008/06/05/2513126.aspx
    2、《小波图像分解 Matlab 程序 - V2.0版》
    http://blog.csdn.net/chenyusiyuan/archive/2008/06/05/2513865.aspx
    3、《小波图像重构 Matlab 程序 - V2.0版》
    http://blog.csdn.net/chenyusiyuan/archive/2008/06/05/2514119.aspx

    上一篇文章中我们实现了小波的一维、二维信号分解与重构,其中的二维信号分解与重构,只要稍作修改,就可以实现图像的分解和重构了。修改的工作,主要是对图像信号进行规范化处理、数据格式转换和绘图细节处理等。

    简单起见,我们从黑白(灰度)图像的分解、重构说起,因为彩色图像的处理要复杂一点。在本文中,我们使用著名的Lena图作为原始图像。
    cfbe2ac4ece52cda8326acd8.jpg
    图1
    首先,为了实现图像的N层分解,对一幅m行n列的黑白图像,我们要对其进行规范化处理,使其能被2的N次方整除。以下的modmat()
    函数实现此功能:

    function y=modmat(x,dim)
    % 函数 MODMAT()
    对输入矩阵x进行规范化,使其行列数均能被 2^dim 整除

    % 输入参数:x —— r*c 维矩阵;

    dim —— 矩阵重构的维数

    % 输出参数:y —— rt*ct
    维矩阵,mod(rt,2^dim)=0,mod(ct,2^dim)=0


    [row,col]=size(x); 
    % 求出输入矩阵的行列数row,col

    rt=row - mod(row,2^dim);  %
    将row,col分别减去本身模 2^dim 得到的数

    ct=col - mod(col,2^dim);  %
    所得的差为rt、ct,均能被 2^dim 整除

    y=x(1:rt,1:ct); 
    % 输出矩阵 y 为输入矩阵 x 的 rt*ct 维子矩阵

    然后,将规范化后的图像的数据格式由适合显示图像的uint8格式转换为适合数值处理的double格式,再调用二维小波分解函数进行图像分解,最后为了清晰地显示分解图像的塔式结构,在图像的相应区域绘制若干分界线。具体程序如下:

    function y=mywavedec2(x,dim)
    % 函数 MYWAVEDEC2()
    对输入矩阵 x 进行 dim 层分解,得到相应的分解系数矩阵 y

    % 输入参数:x —— 输入矩阵;

    dim —— 分解层数。

    % 输出参数:y —— 分解系数矩阵。

    x=modmat(x,dim); 
    % 首先规范化输入矩阵,使其行列数均能被 2^dim 整除


    subplot(121);imshow(x);title('原始图像');  %
    画出规范化后的源图像

    [m,n]=size(x); 
    % 求出规范化矩阵x的行列数

    xd=double(x); 
    % 将矩阵x的数据格式转换为适合数值处理的double格式


    for
    i=1:dim

    xd=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; 
    % 将缓存矩阵存入输出矩阵的相应行列

    end

    yd=uint8(y); 
    % 将输出矩阵的数据格式转换为适合显示图像的uint8格式

    for
    i=1:dim 
    % 对矩阵 yd 进行分界线处理,画出分解图像的分界线

    m=m-mod(m,2);

    n=n-mod(n,2);

    yd(m/2,1:n)=255;

    yd(1:m,n/2)=255;

    m=m/2;n=n/2;
    end
    subplot(122);imshow(yd);title([ num2str(dim) '
    维小波分解图像']);

    以下是程序的运行结果。
    d008efdd756213aa8c1029ae.jpg
    图2

    上述的图像分解程序,其输出数据是double格式的,以便作为重构程序的输入。
    接下来我们讨论图像的重构。我编写的重构程序中,为了比较分解图像和重构图像,首先绘出经过小波分解的图像,然后再进行重构。在绘制分解图像和重构图像的过程中,要注意数据格式的转换。

    function
    y=mywaverec2(x,dim)
    %函数MYWAVEREC2()对输入的分解系数矩阵x进行dim层重构,得到重构矩阵y
    %输入参数:x——分解系数矩阵;

    dim
    ——重构层数;
    %输出参数:y——重构矩阵。
    %绘制分解图像
    xd=uint8(x); 
    %
    将输入矩阵的数据格式转换为适合显示图像的uint8格式
    [m,n]=size(x); %求出输入矩阵的行列数
    for
    i=1:dim 
    %
    对转换矩阵xd进行分界线处理
    m=m-mod(m,2);
    n=n-mod(n,2);
    xd(m/2,1:n)=255;
    xd(1:m,n/2)=255;
    m=m/2;n=n/2;
    end
    figure;

    subplot(121);imshow(xd);title([ num2str(dim) '层小波分解图像']); %画出带有分界线的分解图像

    %重构图像
    xr=double(x); 
    %
    将输入矩阵的数据格式转换回适合数值处理的double格式
    [row,col]=size(xr);  %求出转换矩阵xr的行列数
    for
    i=dim:-1:1  %
    重构次序是从内层往外层进行,所以先抽取矩阵xr的最内层分解矩阵进行重构


    tmp=xr(1:floor(row/2^(i-1)),1:floor(col/2^(i-1))); 
    %
    重构的内层矩阵的行列数均为矩阵xr2^(i-1)


    [rt1,ct1]=size(tmp); 
    %
    读取待重构矩阵tmp的行列数
    rt=rt1-mod(rt1,2);ct=ct1-mod(ct1,2);

    rLL=tmp(1:rt/2,1:ct/2); 
    %
    将待重构矩阵tmp分解为四个部分
    rHL=tmp(1:rt/2,ct/2+1:ct);
    rLH=tmp(rt/2+1:rt,1:ct/2);
    rHH=tmp(rt/2+1:rt,ct/2+1:ct);


    tmp(1:rt,1:ct)=myidwt2(rLL,rHL,rLH,rHH); 
    %
    将重构结果返回到矩阵tmp


    xr(1:rt1,1:ct1)=tmp;  %
    把矩阵tmp的数据返回到矩阵xr的相应区域,准备下一个外层的重构
    end
    y=xr; 
    %
    重构结束后得到的矩阵xr即为输出矩阵y
    yu=uint8(xr); 
    %
    将矩阵xr的数据格式转换为适合显示图像的uint8格式
    subplot(122);imshow(yu);title('小波重构图像');

    976376451f09ed55cefca3d8.jpg
    图3
    阅读全文
    类别:默认分类 查看评论

    转载于:https://www.cnblogs.com/simbaforrest/archive/2011/10/27/2238693.html

    展开全文
  • close all,clear all;clc; Image = imread('image.jpg'); figure(1) subplot(1,3,1),imshow...% 对图像采用单层离散二维小波变换,小波为四阶db4小波(Daubechies4) % 计算通过对输入矩阵grayI进行小波分解得...
  • 二维haar小波分解与重构matlab实现

    万次阅读 2016-09-03 10:26:02
    去年11月发布了一系列有关小波变换和图像处理的文章,把学习小波过程中的心得体会和编写的程序放在网上和大家共享交流...有关小波图像分解重构的两篇文章中分享的程序,存在下列问题: (1)程序所用的小波函数只有
  • P.S.:(2008-09-01)感谢网友‘李明杨艳’指出了本文程序中一维信号小波分解重构程序mydwt和myidwt存在的一个大Bug,现已修正,请参见今天发表的文章《一维信号的小波分解与重构程序》。 P.S.:(2008-06-05)去年...
  • 自己动手编写小波信号分解与重构Matlab程序

    万次阅读 多人点赞 2007-11-13 10:56:00
    P.S.:(2008-09-01)感谢网友‘李明杨艳’指出了本文程序中一维信号小波分解重构程序mydwt和myidwt存在的一个大Bug,现已修正,请参见今天发表的文章《一维信号的小波分解与重构程序》。P.S.:(2008-06-05)去年11...
  • 小波阈值图像降噪及 MATLAB仿真 图像信号...小波降噪的方法有多种如利用小波分解与重构的方法滤波降噪利用小波变 换模极大值的方法去噪利用信号小波变换后空域相关性进行信噪分离非线性小 波阈值方法去噪平移不变量小波
  • 鉴于小波多尺度分解与重构图像的光照补偿、去噪、压缩方面的重要作用,介绍了小波变换的分解与重建,提出了包括IVIW光照补偿方法、基于Haar小波的去噪与压缩方法,并通过MATLAB R2009a平台对Yale人脸库中的图像...
  • 摘要:简要介绍了小波分析的基本原理及其在图像处理中的应用和一些图像编码的基础知识,重点论述了小波分析在图像分解与重构、去噪和压缩中的应用,小波分析在图像处理中的应用是基于Matlab自带的一些库函数编写程序...
  • 7.2 快速小波变换 7.3 小波分解结构的运算 7.4 快速小波反变换 7.5 图像处理中的小波 第8章 图像压缩 8.1 背景知识 8.2 编码冗余 8.3 像素间的冗余 8.4 心理视觉冗余 8.5 JPEG压缩 第9章 形态学图像处理 9.1 预备...
  • 第11章小波变换图像测试分析 11.1概述 11.2实例说明 11.3输出结果分析 11.4源程序 11.4.1nstdhaardemo.m 11.4.2thresholdtestdemo.m 11.4.3modetest.m 11.4.4nstdhaardec2.m 11.4.5nstdhaarrec2.m ...
  • 《数字图像处理》冈萨雷斯 第三版part1(共1-3部分)

    千次下载 热门讨论 2014-11-12 13:50:07
    本书在介绍MATLAB编程基础知识之后,讲述了图像处理的主要内容,具体包括亮度变换、线性和非线性空间滤波、频率域滤波、图像复原配准、彩色图像处理、小波、图像数据压缩、形态学图像处理、图像分割、区域和边界...
  • 图像增强的实现

    2012-06-07 15:42:03
    3. 图像小波变换Matlab 实现 3.1 一维小波变换Matlab 实现 (1) dwt 函数 功能:一维离散小波变换 格式:[cA,cD]=dwt(X,'wname') [cA,cD]=dwt(X,Lo_D,Hi_D) 说明:[cA,cD]=dwt(X,'wname') 使用指定的小波基...
  • 13.3.9 小波分析用于图像分解 13.4 本章小结 第14 章SIMULINK 仿真基础 14.1 Simulink 概述 14.1.1 Simulink 的基本概念 14.1.2 Simulink 的工作环境启动 14.1.3 Simulink 模型的特点 14.1.4 Simulink...
  • 13.3.9 小波分析用于图像分解 13.4 本章小结 第14 章SIMULINK 仿真基础 14.1 Simulink 概述 14.1.1 Simulink 的基本概念 14.1.2 Simulink 的工作环境启动 14.1.3 Simulink 模型的特点 14.1.4 Simulink...
  • matiab调用C语言程序

    2015-10-31 14:42:58
    一个关于小波图像融合的C代码写了很久了,现在需要将其与matlab代码结合起来。想想就有些头疼,原来...小波变换图像融合本质就是对两个二维矩阵进行在不同的分解层上对小波系数按一定规则进行融合,而后再重构出一幅图
  • % 参考文献:小波分析理论与MATLAB R2007实现,葛哲学,沙威,第20章 小波变换在矩阵方程求解中的应用(沙威、陈明生编写). D:\用户目录\我的文档\MATLAB\New Folder\lena bmp 标准测试图像.bmp % 构造正交小波变换...
  • 介绍Origin的连续小波变换、小波分解、小波重构和多尺度离散小波变换四种小波分析功能 第45集:信号处理(六):小波分析2;介绍Origin的小波降噪和小波平滑两种小波分析功能 第46集:光谱分析:基线峰值;介绍...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

matlab小波变换图像分解与重构

matlab 订阅