图像处理的小波变换_小波变换图像处理 - CSDN
  • 图像处理-小波变换

    万次阅读 多人点赞 2019-08-10 18:01:16
    同样,小波变换是将图像信号分解为由原始小波位移和缩放之后的一组小波。小波在图像处理里被称为图像显微镜,原因在于它的多分辨率分解能力可以将图片信息一层一层分解剥离开来。剥离的手段就是通过低通和高通滤波.....

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

        图像的傅里叶变换是将图像信号分解为各种不同频率的正弦波。同样,小波变换是将图像信号分解为由原始小波位移和缩放之后的一组小波。小波在图像处理里被称为图像显微镜,原因在于它的多分辨率分解能力可以将图片信息一层一层分解剥离开来。剥离的手段就是通过低通和高通滤波器

         小波变换可以和傅里叶变换结合起来理解。傅里叶变换是用一系列不同频率的正余弦函数去分解原函数,变换后得到是原函数在正余弦不同频率下的系数。小波变换使用一系列的不同尺度的小波去分解原函数,变换后得到的是原函数在不同尺度小波下的系数。不同的小波通过平移与尺度变换分解,平移是为了得到原函数的时间特性,尺度变换是为了得到原函数的频率特性。

    小波变换步骤:

    1.把小波w(t)和原函数f(t)的开始部分进行比较,计算系数C。系数C表示该部分函数与小波的相似程度。

    2.把小波向右移k单位,得到小波w(t-k),重复1。重复该步骤直至函数f结束.

    3.扩展小波w(t),得到小波w(t/2),重复步骤1,2.

    4.不断扩展小波,重复1,2,3.

    haar小波:

    我这里使用的haar小波,缩放函数是[1 1],小波函数是[1 -1]。是最简单的小波了。

    图像二维离散小波变换 :

         图像的二维离散小波分解和重构过程如下图所示,分解过程可描述为:首先对图像的每一行进行 1D-DWT,获得原始图像在水平方向上的低频分量 L 和高频分量 H,然后对变换所得数据的每一列进行 1D-DWT,获得原始图像在水平和垂直方向上的低频分量 LL、水平方向上的低频和垂直方向上的高频 LH、水平方向上的高频和垂直方向上的低频 HL 以及水平和垂直方向上的的高频分量 HH。

        重构过程可描述为:首先对变换结果的每一列进行以为离散小波逆变换,再对变换所得数据的每一行进行一维离散小波逆变换,即可获得重构图像。由上述过程可以看出,图像的小波分解是一个将信号按照低频和有向高频进行分离的过程,分解过程中还可以根据需要对得到的 LL 分量进行进一步的小波分解,直至达到要求。

    对于二维图像Haar变换不再从一个方向进行滤波,而是从水平和竖直两个方向进行低通和高通滤波(水平和竖直先后不影响),用图像表述如图所示:图中a表示原图,图b表示经过一级小波变换的结果,h1 表示水平反向的细节,v1 表示竖直方向的细节,c1表示对角线方向的细节,b表示下2采样的图像。图c中表示继续进行Haar小波变换。一级Haar小波变换实际效果如图3所示

                           

    matlab实例

    小波去噪实现步骤:

    (1)二维信号的小波分解。选择一个小波和小波分解的层次N,然后计算信号s到第N层的分解。
    (2)对高频系数进行阈值量化。对于从1~N的每一层,选择一个阈值,并对这一层的高频系数进行软阈值量化处理。
    (3)二维小波重构。根据小波分解的第N层的低频系数和经过修改的从第一层到第N的各层高频系数,计算二维信号的小波重构

    Matlab函数介绍

    1、dwt2是二维单尺度小波变换,其可以通过指定小波或者分解滤波器进行二维单尺度小波分解。DWT2的一种语法格式:[cA,cH,cV,cD]=dwt2(X,'wname');也就是说DWT2只能对某个输入矩阵X进行一次分解。

    [cA1, cH1, cV1, cD1] = dwt2(I_noise, 'haar');
    figure
    subplot(221), imshow(cA1, []);
    subplot(222), imshow(cH1, []);
    subplot(223), imshow(cV1, []);
    subplot(224), imshow(cD1, []);
    

     

    可以看出,第一张图是图像的近似,相当于图像的低频部分,而其它三张图是图像的轮廓,也就是水平,垂直和对角三个方向的细节。是图像的高频部分。至此,各变量的维数如下所示。

                                           

    2、wavedec2函数

         该函数用于对多尺度二维小波进行分解,其常用调用格式:[C,S] = wavedec2(X,N,'wname'):

    • X:要进行小波分解的图像; 
    • N :指定分解的层数; 
    • wname:指定用什么小波基进行分解。 
    • 输出: 
    • c:为各层分解系数; 
    • s: 各层分解系数长度,也就是大小。

    用小波函数wname对信号X在尺度N上的二维分解,其中N为大于1的正整数。可以对输入矩阵X进行N次分解。C代表分解系数的组合,是一个向量:   
                                       
         C的大小为 [1,img_height×img_width];A(N)是图像第N层的近似表示,尺度最小,在金字塔中就是每层的下采样的图像,而H、V、D分别表示图像的水平高频分量,垂直高频分量,对角高频分量。正如我们在金字塔概念中所了解的,在第N-1层下采样到N层,N层的图像维度(尺度)是变小了,也就意味着在下采样过程中丢失了信息,而这些丢失的信息实质是高频信息,那么这些信息在小波分解中可以通过HVD这些高频分量来保存。 
        这里贴上小波分解之后的结果图,直观地感受一下。这里对原始图像进行三层小波分解。红框a表示的就是近似图像。
     

        需要指出的是,每一次的小波分解都是在近似图像上进行分解。S 是储存各层分解系数长度的,即第一行是A(N)的长度,第二行是H(N)|V(N)|D(N)|的长度,第三行是 H(N-1)|V(N-1)|D(N-1)的长度,倒数第二行是H(1)|V(1)|D(1)长度,最后一行是原始图像img的长度(大小)。 这里原始图像是512×512,并进行了3层的小波分解。对应的s内容如下图: 
      
                                           

    S表示每一层分解结果的维数,如果进行n层小波分解,S 的大小是(n+1)*2,最后一行表示的是原始图像的size。

                                  

    3、wdcbm2函数

         [thr,nkeep] = wdcbm2(c,s,alpha,m) 返回与level相关的阈值thr和要保持的系数数NKEEP, 函数用于去噪或压缩。使用基于Birge-Massart策略的小波系数选择规则获得thr。通常,alpha= 1.5用于压缩,alpha= 3用于去噪。使用wdcbm2选择各层的独立阈值。

         [C,S]是要由wavedec2函数得到的进行去噪或压缩的图像的小波分解结构,level j = size(S,1)-2.

        THR是3*j的矩阵,THR(:,j)包含对于level j情况下,水平,对角线和垂直三个方向的阈值。 NKEEP是长度为j的向量,NKEEP(j)包含要保持在级别j情况下系数的数量。

    j,M和ALPHA定义策略:

    1. 在j + 1级(和更粗略的级别),一切都保留。
    2. 对于从1到j的级别i,n_i最大系数保持为n_i = M /(j + 2-i)^ ALPHA。
    3. M的默认值是M = prod(S(1,:))最粗近似系数的数量。

    4、wdencmp函数

        [XC,CXC,LXC,PERF0,PERFL2] = wdencmp('lvd',C,S,'wname',N,THR,SORH) 
          函数wdencmp用于一维或二维信号的消噪或压缩。wname是所用的小波函数,gbl(global的缩写)表示每层都采用同一个阈值进行处理,lvd表示每层用不同的阈值进行处理,N表示小波分解的层数,THR为阈值3*N,SORH表示选择软阈值还是硬阈值(分别取为’s’和’h’),XC是消噪或压缩后的信号,[CXC,LXC]是XC的小波分解结构,PERF0和PERFL2是恢复和压缩L^2的范数百分比, 是用百分制表明降噪或压缩所保留的能量成分。

    5、wrcoef2函数

       wrcoef2函数是用来重建一幅图像的系数,其实就是根据小波分解之后的系数c来重建其对应的图像。重建好的图像的尺度与原始图像一致。即无论你要重构哪个层的系数,最终它的维度都是和原始图像的尺度一致。其调用形式如下: 
            X = wrcoef2(‘type’,c,s,’wname’,N) 

    • type :指定要进行重构的小波系数,如a –近似图像 ;h – 水平高频分量;v – 垂直高频分量;d–对角高 
    • 频分量; 
    • c: 是小波分解函数wavedec2分解的小波系数; 
    • s: 是wavedec2分解形成的尺度; 
    • wname :指定小波基; 
    • N :指定重构的小波系数所在的层。 默认重构最大层的系数,N = size(S,1)-2。N所指的层数是如何表示的?比如将图像小波分解成3层,那么N = 3是代表256×256那一层,还是64×64那一层?N=3 代表的是64×64那一层

    wrcoef2 的过程就相当于 appcoef2 或者 detcoef2 (抽取系数)后再进行 upcoef2(重构)。

    clear;
    close all;
    
    file = 'lena_gray_512.tif';
    img  = imread(file);
    img = double(img);
    % 对图像进行3层的小波分解
    N = 3; % 设置分解层数
    [c,s] = wavedec2(img,N,'db1');
    
    % 对各层的近似图像a进行重构
    a1 = wrcoef2('a',c,s,'db1',1);
    a2 = wrcoef2('a',c,s,'db1',2);
    a3 = wrcoef2('a',c,s,'db1',3);

    6、appcoef2 函数

    appcoef2适用于2维图像,其主要是为了提取小波分解中形成的近似图像,即低频分量。 
     A = appcoef2(c,s,’wname’,N)  

    • c:小波分解的小波系数 
    • s:小波分解的对应尺度 
    • wname :指定小波基 
    • N :指定小波系数所在的层数 

    7、detcoef2

    函数detcoef2 用来对二维离散小波变换的高频部分系数进行提取。 其调用形式为: 
    D = detcoef2(O,c,s,N)  

    • O:指定提取哪个高频分量,取值分别为:’h’ –水平高频 or ‘v’ – 垂直高频 or ‘d’ – 对角高频; 
    • c:小波系数矩阵; 
    • s:尺度矩阵;

    8、wthcoef2函数

    该函数用于对二维信号的小波系数阈值进行处理,常用调用格式:
        NC = wthcoef2('type',C,S,N,T,SORH):返回经过小波分解结构[C,S]进行处理后的新的小波分解向量NC,[NC,S]即构成一个新的小波分解结构。N是一个包含高频尺度的向量,T是相应的阈值,且N和T长度须相等。返回'type'(水平、垂直、对角线)方向的小波分解向量NC。参数SORH用来对阈值方式进行选择,当SORH = 's'时,为软阈值,当SORH = 'h'时,为硬阈值。

    9、重构函数 waverec2

        waverec2函数是wavedec2的反函数,返回的结果X就是原始图像。其基于小波分解结构[c,s]对矩阵X进行多级小波重构,其中[c,s]是wavedec2函数的返回值。其调用格式如下: 
          X = waverec2(c,s,’wname’) )  

    • c: 系数矩阵 
    • s: 尺度矩阵 
    • wname : 指定小波基 

    值得注意的是,X = waverec2(c,s,’wname’) 相当于 X = appcoef2(c,s,’wname’,0)。

    如何进行小波分解:

    假设{x1,x2}是一个由两个元素组成的信号,定义这两个元素的平准和细节为:

    a = (x1+x2)/2 ;d=(x1-x2)/2

    变换实例如下:

        

    from:https://blog.csdn.net/qq_39936376/article/details/80809770

    from:http://blog.sina.com.cn/s/blog_84024a4a0101fn02.html

    from:https://blog.csdn.net/Chaolei3/article/details/80940459

    展开全文
  • 图像处理中的小波变换

    千次阅读 2018-06-26 20:12:20
    小波指的是一种能量在...同样,小波变换是将图像信号分解为由原始小波位移和缩放之后的一组小波。 小波在图像处理里被称为图像显微镜,原因在于它的多分辨率分解能力可以将图片信息一层一层分解剥离开来。剥离的手...
            小波指的是一种能量在时域非常集中的波,它的能量有限,都集中在某一点附近,而且积分的值为零,这说明它与傅里叶波一样是正交波。
            图像的傅里叶变换是将图像信号分解为各种不同频率的正弦波。同样,小波变换是将图像信号分解为由原始小波位移和缩放之后的一组小波。
            小波在图像处理里被称为图像显微镜,原因在于它的多分辨率分解能力可以将图片信息一层一层分解剥离开来。剥离的手段就是通过低通和高通滤波器。

    图像二维离散小波变换 :

            图像的二维离散小波分解和重构过程如下图所示,分解过程可描述为:首先对图像的每一行进行 1D-DWT,获得原始图像在水平方向上的低频分量 L 和高频分量 H,然后对变换所得数据的每一列进行 1D-DWT,获得原始图像在水平和垂直方向上的低频分量 LL、水平方向上的低频和垂直方向上的高频 LH、水平方向上的高频和垂直方向上的低频 HL 以及水平和垂直方向上的的高频分量 HH。重构过程可描述为:首先对变换结果的每一列进行以为离散小波逆变换,再对变换所得数据的每一行进行一维离散小波逆变换,即可获得重构图像。由上述过程可以看出,图像的小波分解是一个将信号按照低频和有向高频进行分离的过程,分解过程中还可以根据需要对得到的 LL 分量进行进一步的小波分解,直至达到要求。

                                                                                图1. 图像二维离散小波变换

    展开全文
  • 数字图像处理小波变换MATLAB程序及仿真,带有源代码,数字图像处理必备。
  • 数字图像处理-小波变换小白解释基本原则

    万次阅读 多人点赞 2017-10-24 16:26:31
    内容完全转载: 小波理论的基本概念及概述(第二版) 欢迎阅读此份关于小波变换的入门教程。小波变换是一个相对较新的概念(其出现大约是在20世纪...换言之,大多数介绍小波变换的文献对那些小波新手们来说用处不

    内容完全转载:

    小波理论的基本概念及概述(第二版)

    欢迎阅读此份关于小波变换的入门教程。小波变换是一个相对较新的概念(其出现大约是在20世纪80年代),但是有关于它的文章和书籍却不少。这其中大部分都是由数学专业人士写给其他同行看的,不过,仍然有大量数学专家不知道其他同行们讨论的是什么(我的一个数学教授就承认过)。换言之,大多数介绍小波变换的文献对那些小波新手们来说用处不大(此为个人观点)。

    我刚开始接触小波变换的时候,曾经为了搞清楚小波变换这个这个神奇的世界到底发生了什么而苦苦挣扎,因为在这个领域的入门教材非常少。因而,我决定为新手们写一份教程。我自认为也是一个新手,必须承认,我也有很多理论细节没有弄清楚。不过,就工程应用而言,我认为弄清楚所有的理论细节大可不必。

    这份教程将试着介绍一些小波理论的基本原理,并且不会给出这些原理和相关公式的证明,因为这份教程的目标读者暂时还不需要知道这些。不过,感兴趣的读者可以参阅引用的文献以便了解更深入的内容。

    此篇文档假定你没有任何相关知识背景。要是有的话,请跳过以下内容,这些对你而言可能都是显然的。

    要是你发现教程里有任何前后不协调或不正确的内容,请联系我。我很乐于收到关于教程的任何评论。

    变换…啥?

    首先,为什么需要变换,或者说到底什么是变换?

    为了获取在原始信号中不易获得的信息,往往要对信号进行数学变换。以下篇幅均假定时域内信号为原始信号,经过数学变换后的信号为处理信号。

    可用的变换有很多种,其中,傅立叶变换大概是目前最流行的。

    实际中,多数信号的原始形式都是时域信号,也即不论如何测得的,信号总是关于时间的函数。换言之,绘制信号的图形时,一个轴代表时间(自变量),另一轴代表信号幅值(因变量)。在时域内作图,便可得到信号的时-幅表示。在多数信号处理有关的应用场景中,这种表示并不是最好的表示。很多时候,最易分辨的信息往往隐藏在信号的频率成分中。信号的频谱是指信号中的频率分量(或谱分量),其表示的是信号中存在哪些频率成分。

    直觉上,我们都知道频率是跟事物的变化率有关的量。如果一样东西(专业术语应该为数学量或物理量)变化得很快,则它的频率就高;变换得慢,或者说变化得很平滑,则它的频率就低。如果该量保持不变,则其频率为零,或者说没有频率。例如,日报的频率就比月刊高(因为日报出版快)。

    频率用“循环次数/秒”,或者用更常用的“赫兹”来衡量。例如,在美国,日常生活中所用交流电的频率是60Hz(世界上其他一些地区是50Hz)。这意味着,如果我们想要绘制电流变化曲线,得到的将是1秒内往复50次的正弦波。看下面几张图,第一幅图中是频率是3Hz的正弦信号,第二幅是频率10Hz的,第三幅则是频率50Hz,对比下吧。

    那么怎样测量频率,或者说怎样得到一个信号中所含的频率成分呢?答案是傅立叶变换(FT)。对时域信号做傅立叶变换,就会得到信号的频谱。也就是说,此时我们绘制信号图形的话,一个轴是频率,另一个轴是频率分量的幅值。所得图像将告诉我们信号中包含的各种频率成分分别有多少。

    频率轴从零开始,直至正无穷。每个频率都对应一个幅值。例如,如果我们对房间所用的电流信号做傅立叶变换,频谱图中在50Hz处会出现尖峰,其它频率对应的幅值则为零,因为信号中只包含了50Hz的频率分量。然而,很少有信号的傅立叶变换是如此简单的。实际中的信号大都包含多个频率分量。50Hz信号的傅立叶变换如下图所示:

    图 1.4 50 Hz 信号的傅里叶变换

    注意,图1.4给出了上下两张图,下图显示的其实是上图的前半部分。这是因为实值信号的频谱图是左右对称的,这点暂时不理解也无妨。上图能够看出这一特性。不过,由于后一半对称部分只不过是前一半图形的镜像,并未提供额外信息,因此,这部分经常不画出来。下文中出现的多数频谱图,我将只绘出前半部分。

    为什么需要频率信息?

    通常,一些在时域中不易看出的信息很容易在频域中观察到。

    看一个生物信号的例子。设想我们正在观察一个心电信号。心脏专家一般都熟知典型的健康人心电图的形状。与这些典型形状存在显著偏差往往是疾病的征兆。

    一些病征在时域表示的心电信号中并不明显。过去,心脏专家一般用记录在磁带上的时域心电图来分析心电信号。最近,新型的数字心电记录仪/分析仪可以利用心电图的频域信息来判断病征是否存在。对心电信号的频率成分进行分析能使他们更容易的诊断病情。

    上面只是一个说明频率成分作用的简单例子。当前,傅立叶变换已经被用于不同的领域,涵盖了工程领域的各个分支。

    尽管傅立叶变换可能是使用最多的(特别在电气工程领域),但它并不是唯一的变换。许多其他的变换也常为工程师和数学家们所用,如希尔伯特变换、短时傅立叶变换(下文会有更多介绍)、魏格纳分布和雷登变换,当然还有教程的主角——小波变换,而这些也仅是工程师和数学家们所用变换中的一小部分。每种变换都有其应用领域,也有其优缺点,小波变换也不例外。

    为了更好地理解为什么需要小波变换,我们需要更深刻地认识傅立叶变换。傅立叶变换是一种可逆变换,即它允许原始信号和处理信号之间互相变换。但是,在任意时刻只有一种信号形式是可用的。也就是说,在时域信号中不包含频率信息,而经过傅里叶变换后的信号则不包含任何时间信息。说到这,头脑里很自然地会提出一个问题,为什么需要同时知道时间和频率信息呢?

    我们马上就会知道,答案是具体问题具体分析。回想一下,傅立叶变换给出了信号中的频率信息,即它可以告诉我们原始信号包含各个频率成分到底有多少,但是并未告诉我们某个频率信号何时出现。对于所谓的平稳信号,这些信息并不需要。

    让我们进一步探讨一下平稳的概念,因为它在信号分析中具有重要意义。如果信号中的频率分量不随时间变化,则称这类信号为平稳信号。平稳信号中的频率分量一直保持不变,那么,自然无需知道频率分量是何时出现的,因为所有的频率分量出现在信号的每一刻!!!

    以如下信号为例:

    \( x(t)=cos(2picdot10t)+cos(2picdot25t)+cos(2picdot50t)+cos(2picdot100t) \)

    这是个平稳信号,因为任何时刻都包含10,25,50和100Hz的频率。信号的图形如下:

    图 1.5

    下图为它的傅立叶变换:

    图 1.6

    图1.6中的上图是图1.5中信号的频谱图,下图为上图的放大,给出了我们关注部分的频率范围。注意四个频率10,25,50和100Hz的频谱分量。

    与图1.5中的信号不同,下图所示的就是一个非平稳信号。图1.7中,信号的频率随着时间一直在变化,这种信号称为线性调频信号,是一种非平稳信号。

    图 1.7

    让我们再看一个例子,图1.8绘出的是一个包含四个频率分量的信号,它们分别在不同时刻出现,因此这是一个非平稳信号。0至300ms时是100Hz的正弦波,300-600ms时则是50Hz的正弦波,600-800ms时是25Hz的正弦波,最后的200ms内是10Hz正弦波。

    图 1.8

    下图是它的傅立叶变换:

    图 1.9

    不要介怀图中的那些小波纹,这是由信号中频率突变引起的,在这里并不重要。注意,高频分量的幅值比低频分量大,这是因为高频信号(300ms)比低频信号(200ms)持续时间更长。(频率分量幅值的精确值并不重要)。

    除了那些波纹,图中的一切看起来都是正确的。频谱图有四个尖峰,对应原始信号中的四个频率分量,幅值也差不多是合理的…没错

    错!

    当然了,也不全错,但也不全对。对图1.5中的信号,考虑如下问题:各个频率分量都是在什么时刻出现的?

    答案是

    在所有时刻!还记得平稳信号吗,所有频率分量在信号的整个持续时间内一直存在。10Hz的频率分量一直存在,50Hz的分量也是,100Hz的分量依然是。

    现在,让我们来考虑一下图1.7或1.8中的非平稳信号。

    各个频率分量都是在什么时刻出现的?

    对于图1.8中的信号,我们知道,第一个时间区间内出现的是频率最高的分量,最后一个时间区间内出现的是频率最低的分量。图1.7中,信号的频率成分随时间连续变化,因此,对这些信号来说,各个频率分量并未在所有时刻一直存在。

    现在,对比图1.6和1.9,两幅频谱图的相似之处是显而易见的。两幅图中都包含了四个相同的频率分量,即10,25,50和100Hz。除了一些小波纹和两幅图中各频率分量的幅值(这些幅值可以做归一化处理)有所区别,两幅频谱图几乎是相同的,尽管两个信号在时域内差别很大。两个信号都包含了相同的频率分量,但是前者中,各频率分量存在于信号的整个周期内,而后者的频率分量则分别存在于不同的时间区间内出现。那么,为什么两个完全不同的信号,频谱图形这么相像呢?回想一下,傅立叶变换仅仅给出了信号的频谱分量,但却没有给出任何关于这些分量出现时间的信息。因此,傅立叶变换并不适用于分析非平稳信号,但有一个例外:

    如果我们仅关心信号中包含哪些频率分量而不关心它们出现的时间,傅立叶变换仍可用于处理非平稳信号。但是,如果我们想知道频率分量出现的确切时间(区间),傅立叶变换就不再适用了。

    实际应用中,由于平稳的和非平稳的信号都很多,很那将二者区分开来。例如,几乎所有的生物信号都是非平稳的,包括广为人知的心电图(ECG)、脑电图(EEG)和肌电图(EMG)。

    再次注意,傅立叶变换仅能给出信号中包含哪些频率分量,仅此而已。

    当需要对频谱分量进行时间定位时,我们就需要一个可以给出信号时-频表示的变换。

    终极解决方案:小波变换

    小波变换是这种类型的变换,它提供了信号的时频表示(还有一些变换也可给出这些信息,如短时傅立叶变化,魏格纳分布等等)。

    特定的频谱分量在特定的时刻出现往往具有特殊的意义。这些情况下,了解这些特定的频谱分量出现的时间区间会非常有用。例如,在脑电图中,事件相关电位的延迟时间需要特别注意(事件相关电位是指大脑对某一特定刺激的反应,类似闪光灯,延迟时间是从接受刺激到作出反应之间耗费的时间)。

    小波变换能够同时提供时间和频率信息,因此给出了信号的一种时频表示。

    小波变换到底是如何奏效的完全是另外一个故事,需要在理解了短时傅立叶变换(STFT)之后再做解释。小波变换的出现是为了改进短时傅立叶变换(STFT)。STFT将在教程的第II部分详细阐述。现在暂时可以认为小波变换是为了解决STFT中遇到的有关分辨率的问题而发展起来的。

    为了长话短说,我们略过时域信号处理中有关于各种高通和低通滤波器的相关内容。这些滤波器用来过滤信号中的低频和高频部分分量。这类方法被重复实施,每次都会从信号中滤除一些频率分量。

    这里解释一下滤波是如何奏效的:设想我们有一个信号,其中频率最高的分量为1000Hz。第一步,我们通过高通和低通滤波器把信号分成两个信号(滤波器必须满足某些特定的条件,即容许条件),结果得到了同一信号的两个部分,0-500Hz的部分(低通部分)和500-1000Hz的部分(高通部分)。

    然后,我们可以拿其中一部分(通常是低通部分)或者二部分,然后对每一部分继续进行相同的操作。这个过程叫做分解。

    假设我们拿低频部分做了处理,现在我们就有了3组数据,分别为信号在0-250Hz,250-500Hz和500-1000Hz的部分。

    然后再对低通部分的信号继续做高通和低通滤波处理;现在我们就有了4组数据,分别为0-125Hz,125-250Hz,250-500Hz和500-1000Hz。我们持续进行这个过程,直到将信号分解到一个预先定义的水平。这样我们就有了一系列信号,这些信号实际上都来自相同的信号,但是每一个都对应不同的频带。我们知道每个信号对应的频段,如果我们将这些信号放在一起画出三维图,一个轴表示时间,频率在另外一个轴上,幅度在第三个轴上。这幅图会告诉我们各个频率出现哪些时刻(这里有一个问题,叫做“不确定性原理”,即我们不能精确地知道哪个频率出现在哪些时间点,我们仅能知道某一频段出现在哪一时间区间内,后文中将有更多介绍)。

    不过,我仍想简单地解释一下:

    不确定性原理最早由海森堡发现并阐述,其表述为:移动粒子的动量和位置不可同时确定。在我们这个课题里则是这样:

    时-频平面内的一个确定的点上,信号的频率和时间信息不能同时知道。换句话说:在任一时刻,我们无法确定存在哪个频谱分量。我们最多只能做到,在一个给定的时间区间内存在哪些频谱分量。这是一个分辨率的问题,也是研究者们从快速傅立叶变换(STFT)切换到小波变换(WT)的主要原因。快速傅立叶变换的分辨率随时间是固定不变的,而小波变换则能给出可变的分辨率:

    高频信号在时域内很好分辨,低频信号则在频域内容易分辨。这意味着,相对于低频分量,高频分量更容易在时域内定位(有更小的相对误差)。反而言之,低频分量更容易在频域内定位。看下面的网格图:

    对上图的解释是:最上面一行表明,高频信号有更多的采样点和较短的采样间隔。就是说,高频信号更容易在时域内分辨。最下面一行是对低频信号的采样,描述信号的特征点较少,因此,低频信号在时域内并不容易分辨。

    在离散时间的情形中,信号的时间分辨率与先前相同,但是现在,频率信息的分辨率在每一个阶段都不同。注意到,低频信号更容易在频域内分辨,高频则不然。注意,相邻频率分量的间隔是如何随频率增高而增大的。

    下面是连续小波变换的例子:

    我们构造一个正弦信号,具有两个频率成分,分别处在两个不同的时间区间:

    注意低频分量先出现,然后是高频分量。

    图 1.10

    图 1.11

    注意,上图中代表频率的轴被标记为了“尺度”。“尺度”的概念将会在后续章节进行阐述,但这里需要注意的是,尺度是频率的倒数,即尺度越大频率越低,尺度越小频率越高。因此,图中的小的峰值对应的是信号中的高频分量,大的峰值对应的是信号中的低频分量(在时域内,低频分量先于高频分量出现)。

    你可能被图中的频率分辨率搞晕了,因为高频信号似乎也有很好的频率分辨率。但请注意,高频(低尺度)信号处分辨率较好的是尺度分辨率,而非频率分辨率。尺度分辨率高意味着频率分辨率低,反之亦然。更多相关内容将在后续部分介绍。

    未完,待续…

    以上是此份教程的第一部分,我试着给出信号处理的简要概述——傅里叶变换和小波变换


    转载自:http://blog.jobbole.com/101976/


    其他参考资料:

    http://blog.csdn.net/alihouzi/article/category/3132373

    展开全文
  • 数字图像处理:第十二章 小波变换

    万次阅读 2015-12-02 19:44:50
    第十二章 小波变换 目录 1 引言 2 连续小波变换 3 二进小波变换 3.1 Haar变换 4 离散小波变换 4.1 多分辨率分析 4.2 快速小波变换算法 4.3 离散小波变换的设计 4.4 二维离散小波变换 4.5 双...

    第十二章 小波变换

    目录

    1         引言

    2         连续小波变换

    3         二进小波变换

    3.1      Haar变换

    4         离散小波变换

    4.1      多分辨率分析

    4.2      快速小波变换算法

    4.3      离散小波变换的设计

    4.4      二维离散小波变换

    4.5      双正交小波变换

    5         Gabor变换

    作业


    1.  引言

       小波变换是近年来在图象处理中受到十分重视的新技术,面向图象压缩、特征检测以及纹理分析的许多新方法,如多分辨率分析、时频域分析、金字塔算法等,都最终归于小波变换(wavelet transforms)的范畴中。

       线性系统理论中的傅立叶变换是以在两个方向上都无限伸展的正弦曲线波作为正交基函数的。对于瞬态信号或高度局部化的信号(例如边缘),由于这些成分并不类似于任何一个傅立叶基函数,它们的变换系数(频谱)不是紧凑的,频谱上呈现出一幅相当混乱的构成。这种情况下,傅立叶变换是通过复杂的安排,以抵消一些正弦波的方式构造出在大部分区间都为零的函数而实现的。

       为了克服上述缺陷,使用有限宽度基函数的变换方法逐步发展起来了。这些基函数不仅在频率上而且在位置上是变化的,它们是有限宽度的波并被称为小波(wavelet)。基于它们的变换就是小波变换。

    2.  连续小波变换(CWT)

       所有小波是通过对基本小波进行尺度伸缩和位移得到的。基本小波是一具有特殊性质的实值函数,它是震荡衰减的,而且通常衰减得很快,在数学上满足积分为零的条件:

     
     

    即基本小波在频域也具有好的衰减性质。有些基本小波实际上在某个区间外是零,这是一类衰减最快的小波。

    一组小波基函数是通过尺度因子和位移因子由基本小波来产生:

     
     

    连续小波变换定义为:

     
     

    连续小波变换也称为积分小波变换。

    连续小波逆变换为:

     
     

    二维连续小波定义为:

     
     

    二维连续小波变换是:

     
     

    二维连续小波逆变换为:

     
     

     

    2.1 滤波器族解释

        这里将小波变换与一族带通线性(卷积)滤波器相联系,作为小波变换的一种解释。

    首先定义尺度a上的一般小波基函数为

     
     

    这是用a做尺度因子,并用a-1/2将模规范了的基本小波。若记其翻转共轭为

     
     


    小波变换就可以表示成滤波器族

     


    而且每个滤波器的输出分量再次滤波并适当伸缩后组合在一起可重构f(x)。

     

    2.2 二维滤波器族

        在二维情况下,每一滤波器都是一个二维冲激响应,输入是图象上的带通滤波器,滤波后的图象的叠层组成了小波变换。

    3.  二进小波变换

        通常在数值计算中,采用离散化的尺度及位移因子,特别地当取二进伸缩(以2的因子伸缩)和二进位移(每次移动k/2j)时,就形成二进小波。

    正交小波定义为满足下列条件的小波:

     
     

     
     

    上式是小波级数展开公式。

    当进一步把f(x)和基本小波限制为在[0,1]区间外为零的函数时,上述正交小波函数族就成为紧致二进小波函数族,它可以用单一的索引n来确定:


    3.1 Haar变换

      Haar基本小波函数定义在区间[0,1]上,如图所示:

     

     
     

                                                  

     
     

    该基本小波定义的小波变换称为Haar小波变换,是常用的小波变换中最简单的一种。

    4.  离散小波变换(DWT)

        在数值计算中,需要对小波变换的尺度因子、位移因子进行离散化,一般采用如下的离散化方式:

     
     

    4.1 多分辨率分析

        基本小波通过伸缩构成一组基函数,在大尺度上,膨胀的基函数搜索大的特征,而在较小的尺度上,它们则寻找细节信息。

    4.1.1. 金字塔算法

        对于数字图象(以512x512为例),通过连续平均2x2的象素块并丢掉隔行隔列的象素,将得到缩小四倍的图象(256x256)(行列各缩小2倍)。这样迭代进行,直到得到1x1的图象为止。如果利用同样尺寸的边缘检测算子(如3x3的Sobel),在原始图象上则会得到小边缘,在256x256及更小的图象上会得到稍大及更大的边缘。

    4.1.2. 拉普拉斯金字塔编码

        对原始图象f0(i,j)(NxN, N=2n)做高斯滤波,将图象分解为半分辨率的低频分量和整分辨率的高频分量。

     
     

    这一过程在间隔抽样后的图象上迭代进行,经过n次迭代得到一组hk(i,j)和最终的低频图象fn(i,j)(一个点)组成一个编码图象金字塔。

        图象的解码过程以相反的次序进行。从最后一幅fn(i,j)开始,对每一幅抽样图象fk(i,j)都进行一个增频采样并与g(i,j)卷积进行内插。增频采样是在采样点之间插入零的过程,所得结果被添加到下一幅(前一幅)图象fk-1(i,j)上,再对所得图象重复执行这一过程。这个过程能无误差地重建出原始图象。

        由于hk(i,j)图象在很大程度上降低了相关性和动态范围,因此可以使用较粗的量化等级,因而可以实现一个很大程度的图象压缩。

    4.1.3. 子带编码和解码

        对于有限带宽信号,若将其分解为窄带分量,特别地当采用双通道子带时,对应带宽划分为两个分量(子带),例如低半带和高半带,构造子带编码,是一种时频域技术。

        双通道子带编码和解码具有如下形式:

     
     

    4.2 快速小波变换算法(FWT, Mallat算法)

        利用双带子带编码迭代地自底向上建立小波变换。

        首先按照低半带和高半带进行子带编码后,对低半带再一次进行子带编码,得到一个N/2点的高半带信号和对应于区间[0,]的第一和第二个1/4区域的两个N/4点的子带信号。

        然后,连续进行上述过程,每一步都保留高半带信号并进一步编码低半带信号直到得到了一个仅有一个点的低半带信号为止。这样,小波变换系数就是这个低半带点再加上全部用子带编码的高半带信号。如下图所示。最前面的N/2个系数来自于F(s)的高半带,接下来的N/4个点来自于第二个四分之一带,依次类推。

       上述算法被称为快速小波变换(FastWavelet Transform),也因其形状而被称为Mallat的“鱼骨型算法”。其逆变换如下图所示。 

     4.3 离散小波变换的设计

        根据4.1节的子带编码重构公式,在频率域上有:


       

    可见,设计一个离散小波变换的任务就是精心挑选低通滤波器。我们称符合这一条件的离散低通滤波器脉冲响应h0(k)为尺度向量,由它产生一个有关的函数称为尺度函数。尺度向量和尺度函数彼此互相确定。

    例如,由尺度向量h0(k)到尺度函数的定义如下:


    即它可以通过自身半尺度复制后的加权和来构造。另外它也能用带尺度的矩形脉冲函数卷积h0(k)利用数值计算方法得到:

     
     

        相反,由尺度函数开始,在它满足单位平移下正交归一条件时,尺度向量的计算方法如下:

     
     

     

    4.4 二维离散小波变换

        为了将一维离散小波变换推广到二维,只考虑尺度函数是可分离的情况,即

     
     

    4.4.1 正变换

        从一幅NxN的图象f1(x,y)开始,其中上标指示尺度并且N是2的幂。对于j=0, 尺度2j=20=1,也就是原图象的尺度。j值的每一次增大都使尺度加倍,而使分辨率减半。

        在变换的每一层次,图象都被分解为四个四分之一大小的图象,它们都是由原图与一个小波基图象的内积后,再经过在行和列方向进行2倍的间隔抽样而生成的。对于第一个层次(j=1),可写成

     
     

    后续的层次(j>1),依次类推,形成如图所示的形式。

        若将内积改写成卷积形式则有:

     
     

        因为尺度函数和小波函数都是可分离的,所以每个卷积都可分解成行和列的一维卷积。例如,在第一层,首先用h0(-x)和h1(-x)分别与图象f1(x,y)的每行作卷积并丢弃奇数列(以最左列为第0列)。接着这个NxN/2阵列的每列再和h0(-x)和h1(-x)相卷积,丢弃奇数行(以最上行为第0行)。结果就是该层变换所要求的四个(N/2)x(N/2)的数组。

    如下图所示:

    4.4.2 逆变换

        逆变换与上述过程相似,在每一层,通过在每一列的左边插入一列零来增频采样前一层的四个阵列;接着用h0(x)和h1(x)来卷积各行,再成对地把这几个N/2xN的阵列加起来;然后通过在每行上面插入一行零来将刚才所得的两个阵列的增频采样为NxN;再用h0(x)和h1(x)与这两个阵列的每列卷积。这两个阵列的和就是这一层重建的结果。

    4.5 双正交小波变换

        使用两个不同的小波基,一个用来分解(分析),另一个用来重建(合成),构成彼此对偶的双正交的小波基:

     
     

    一维双正交小波变换通过四个离散滤波器实现,需要选择两个低通滤波器即尺度向量,使它们的传递函数满足

     
     

    双正交小波变换的一个分解步骤和一个重建步骤如下图所示。

    双正交小波为:

     
     

    二维双正交小波变换由对应的小波基确定:

     
     

    (演示:Matlab -->Examples and demos -->toolboxes-->Wavelets-->Wavelet2-D and GUI Wavlet2-D)

    (图片来自Matlabdemo)

    5.Gabor变换

    (本节摘自GaborFilters.htm

        Gabor滤波在图象处理中的特征提取、纹理分析和立体视差估计等方面有许多应用。它对应的冲激响应是将复指数振荡函数乘以高斯包络函数所得的结果。有研究说明神经细胞的感受野可以用Gabor 函数来表示。

        设图象坐标为 x=[x1x2]T,则Gabor滤波的冲激响应为.

    其中矩阵 A 确定该滤波器的带宽和方向选择性。

    当调制频率向量 k0与包络的轴同方向时,则冲激响应的实部和虚部有如下的形状:

    Gabor滤波的传递函数 G(k) 为:

    其中 k = [k1k2]T 是空间频率。为了建立多分辨率分析框架,图象可以用一组N个不同带宽和调制频率的Gabor 滤波来处理。假设调制频率为

    且相应的所有滤波器取相同的带宽,图象被分解为8部分

    Magnitude of a Gabor filter set for N=4 in direction of themodulation frequency

    在上图中,滤波器的传递函数被选择在0.5处重叠。在这样的条件下,图象的直流分量(DCcomponent)和频域分量(frequency components)在两倍于调制频率外至少衰减-54dB。因此滤波输出信号可以按如下的比例重采样(sub-sampled),其走样影响(aliasing effects)可以忽略不计。

    进一步,图象可以用调制成不同角度的Gabor滤波器分解为M通道的不同方向的分量。

    Half-value plot ofthe Gabor filters in the frequency plane tuned todifferent frequencies and orientations (30 degree resolution)

        下图给出原始图片Lenna 和Gabor 滤波在不同采样因子下的结果。图片的左侧是原图(sub)和所有方向滤波的重叠结果,右侧是每个方向重采样的结果。

    s = 4

    s = 2

     

     s = 1

     

    Subimages of the Lenna-picture and magnitudes of thecorresponding filter results

    其它参考资料:

    1.   网上小波资料:链接目录

    Introductionto wavelets,

    Wavelets,

    DiscreteWavelet Transform

    Gabor filtering

    MathLab小波工具Wavlab

    2.   [美]崔锦泰 (程正兴 译),小波分析导论,西安交通大学出版社,1995。

     

    最新推荐的书籍:StéphaneMallat, Wavelet Tour of Signal Processing, 2nd Edition, Academic Press,1998

    ASHORT PRESENTATION BY F. CHAPLAIS

    Stéphane Mallat著 (杨力华 等译), 信号处理的小波导引(原书第2版),2003, 机械工业出版社 

    本书以十分直观的近于谈话式的方法讲述了小波理论的问题和方法以及相关的数学证明及理论,使读者可以透过复杂的数学公式样来了解小波的精髓,又不会将小波带入纯数学的迷宫。本书是按研究生教材的要求编写的。对于应用数学系的的学生,本书可以让他们了解数学公式的工程意义,而对于电子工程系的学生,本书又会让他们了解工程问题的数学描述。

    作业

    1.   阅读并使用Matlab小波变换工具,观察小波变换的效果。

    2.   用MS-VC编写图象的小波变换程序。


    返回主目录 返回本章目录

    清华大学计算机系 艾海舟

    最近修改时间:2003年7月31日

    出处:http://media.cs.tsinghua.edu.cn/~ahz/digitalimageprocess/CourseImageProcess.html

    展开全文
  • 小波变换实现图像压缩 代码 X=imread('a5.jpg'); X=rgb2gray(X); subplot(221); imshow(X); title('原始图像'); %对图像用小波进行层小波分解 [c,s]=wavedec2(X,2,'haar'); %提取小波分解结构中的一层的低频系数和...
  • 数字图像处理:12.小波变换

    千次阅读 2013-08-03 17:20:40
    小波变换在数字图像处理中的应用是小波变换典型的应用之一。由信号分析中傅里叶变换的不足引出小波变 换, 然后简单介绍了小波变换的定义和种类, 分析了小波变换的性质和 Mallat 算法, 总结了小波变换在数字图像处理...
  • 小波变换图像复原、边缘检测 这一部分和上一节是连在一起的,里面的一些函数在上一篇文章中已经给出,这里不重复给出。 图像可以根据小波变换变换成四幅图像。四幅图像分别是近似图像,水平细节图像,垂直细节图像...
  • 数字图像处理--小波变换MATLAB程序

    万次阅读 热门讨论 2018-08-20 08:28:14
    小波变换(wavelet transform,WT)是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析...
  • 图像处理之傅里叶变换和小波变换

    千次阅读 2018-07-13 11:56:05
    最近在看物体识别论文摘要,好多论文中涉及到使用离散余弦傅里叶变换DFT(Discrete Fourier Transform)对图像进行处理,因此特地看了这部分的内容,傅里叶变换和小波变换。一、DFT的原理:以二维图像为例,归一化的...
  • 图像小波变换

    千次阅读 2016-05-02 15:39:21
    小波变换的基本思想来源于伸缩与平移,与传统傅里叶变换由三角基函数展开相比,小波基函数为快速衰减、充分平滑、能量紧支且相互经由伸缩与平移所生成的函数集合。 过程 如图所示,使用a,b,c.....来表示每个像素的...
  • 本文件为matlab代码,内容为用于图像处理小波变换
  • 图像处理小波变换

    千次阅读 2018-09-24 16:20:45
    参考如下博客: ... 准备明天自己实践一下。 这里举一个haar小波作为实例: 假设{x1,x2}是一个由两个元素组成的信号,定义这两个元素的平准和...变换实例如下:  以matlab模拟一下结果如下: 显示原始图像: ...
  • 1)尽管傅立叶变换自上世纪50年代以来一直是变换域图像处理的基石,但90年代出现的一种新的变换(小波变换)成为一种新的流行信号处理工具。 2)与傅立叶变换(其基础函数是正弦曲线)不同,小波变换基于一些称作小波...
  • 图像Haar小波变换

    千次阅读 2014-03-30 20:55:18
    matlab练习程序(图像Haar小波变换) 关于小波变换我只是有一个很朴素了理解。不过小波变换可以和傅里叶变换结合起来理解。 傅里叶变换是用一系列不同频率的正余弦函数去分解原函数,变换后得到是原函数在正...
  • 小波变换是多尺度多分辨率的分解方式,可以将噪声和信号在不同尺度上分开。 小波图像去噪处理 clear; [A,map]=imread('lenna.jpg'); X=rgb2gray(A); %画出原始图像 subplot(2,2,1);imshow(X); title('原始...
  • 为什么会出先小波变换 窗口傅立叶变换(短时傅立叶变换)虽然可以部分定位时间,但由于窗口大小是固定的,只适用于频率波动小的平稳信号,不适用于频率波动大的非平稳信号。而小波变换可以根据频率的高低自动调节...
  • C++实现的图像小波变换源码,适合学习信号处理,图像处理和人脸识别的同学使用
  • 1 前言 今天看CV的文献,看到了“Haar-wavelet”,感觉跟小波变换应该有关系,所以觉得应该学习一下。 2小波变换介绍 刚刚看完哈尔变换。
1 2 3 4 5 ... 20
收藏数 5,421
精华内容 2,168
关键字:

图像处理的小波变换