图像处理-小波变换

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

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

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

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

小波变换步骤:

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实例

小波去噪实现步骤:

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: 各层分解系数长度,也就是大小。

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函数

5、wrcoef2函数

  • 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函数

9、重构函数 waverec2

  • 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/_/article/details/

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218066.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午8:07
下一篇 2026年3月18日 上午8:08


相关推荐

  • LangChain从入门到精通,非常详细,收藏这一篇就够了!!!

    LangChain从入门到精通,非常详细,收藏这一篇就够了!!!

    2026年3月15日
    3
  • goland 激活码2021(破解版激活)

    goland 激活码2021(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    480
  • 可攻陷所有WiFi网络!KRACK 漏洞发现者回答纪实

    可攻陷所有WiFi网络!KRACK 漏洞发现者回答纪实如果你能连接到的Wi-Fi一夜之间不安全了,通过自家路由器的Wi-Fi上网冲浪却陷入勒索软件和其他恶意软件的包围中,一浪冲到沙滩上……这并非是夸张,就在今天,比利时安全研究人员MathyVanhoef表示,WPA2安全加密协议已经被破解,并在演示视频中对一部Android智能手机执行了一次KRACK。在演示中,攻击者可以对用户传输…

    2022年6月4日
    34
  • 细说php入门学习

    细说php入门学习文章目录1.php基本语法2.变量3.数据类型(1).整型interger(2).浮点型float(3).布尔型boolean(4)字符串string(5).数组array(7).对象boject(8).资源resource(9).空null4.常见函数以及基本语法(1).三种常见函数(2).四种常见输出(3).自动类型转换(4).强制类型转换(5)…

    2025年7月22日
    5
  • unityshader教程_unity炫酷的shader

    unityshader教程_unity炫酷的shader参考链接:http://www.xiaobao1993.com/373.html去色shader:Shader”Custom/Gray”{ Properties { _MainTex(“Base(RGB)”,2D)=”white”{} }SubShader{Pass{C

    2022年10月5日
    5
  • Java 的下载安装教程[通俗易懂]

    Java 的下载安装教程[通俗易懂]Java17的下载安装教程说明:本文介绍的是Windows下安装Java的方法。对于Linux下Java的安装,可见笔者的另一篇博客:在Linux操作系统中安装Java:https://blog.csdn.net/wangpaiblog/article/details/120093325笔者的安装环境:JDK17Windows10教育版安装Java就是安装JDK。Java有三大分支,这里选择的是JavaSE。关于

    2022年6月4日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号