图像处理-Ch7-快速小波变换和小波包

个人博客!无广告观看,因为这节内容太多了,有点放不下,分了三节

文章目录

    • 快速小波变换(The Fast Wavelet Transform)
      • 与两频段子带编译码系统的关系
        • 例:计算一维小波变换
      • 一维快速小波反变换
        • 例:计算一维小波反变换
      • FFT与FWT的区别
    • 小波包(Wavelet Packets)
      • 分析树
        • 例:三尺度分析树

快速小波变换(The Fast Wavelet Transform)

实现DWT的快速实现。

再次考虑MRA方程:
φ ( x ) = ∑ n h φ ( n ) 2 φ ( 2 x − n ) \varphi(x)=\sum_{n}h_{\varphi}(n)\sqrt{2}\varphi(2x - n) φ(x)=nhφ(n)2 φ(2xn)
x x x乘以 2 j 2^{j} 2j,平移 k k k,并令 m = 2 k + n m = 2k + n m=2k+n,得到 :
φ ( 2 j x − k ) = ∑ n h φ ( n ) 2 φ ( 2 ( 2 j x − k ) − n ) = ∑ n h φ ( n ) 2 φ ( 2 j + 1 x − 2 k − n ) = ∑ m h φ ( m − 2 k ) 2 φ ( 2 j + 1 x − m ) \begin{align}\varphi(2^{j}x - k)&=\sum_{n}h_{\varphi}(n)\sqrt{2}\varphi(2(2^{j}x - k)-n)\\ &=\sum_{n}h_{\varphi}(n)\sqrt{2}\varphi(2^{j+1}x-2k-n)\\ &=\sum_{m}h_{\varphi}(m - 2k)\sqrt{2}\varphi(2^{j + 1}x - m) \end{align} φ(2jxk)=nhφ(n)2 φ(2(2jxk)n)=nhφ(n)2 φ(2j+1x2kn)=mhφ(m2k)2 φ(2j+1xm)
对于小波函数,有类似结果:
ψ ( 2 j x − k ) = ∑ m h ψ ( m − 2 k ) 2 φ ( 2 j + 1 x − m ) \psi(2^{j}x - k)=\sum_{m}h_{\psi}(m - 2k)\sqrt{2}\varphi(2^{j + 1}x - m) ψ(2jxk)=mhψ(m2k)2 φ(2j+1xm)
对于离散小波函数,有:
W ψ ( j , k ) = 1 M ∑ x f ( x ) 2 j / 2 ψ ( 2 j x − k ) W_{\psi}(j,k)=\frac{1}{\sqrt{M}}\sum_{x}f(x)2^{j/2}\psi(2^{j}x - k) Wψ(j,k)=M 1xf(x)2j/2ψ(2jxk)
进一步,有:
W ψ ( j , k ) = 1 M ∑ x f ( x ) 2 j / 2 [ ∑ m h ψ ( m − 2 k ) 2 φ ( 2 j + 1 x − m ) ] W_{\psi}(j,k)=\frac{1}{\sqrt{M}}\sum_{x}f(x)2^{j/2}\left[\sum_{m}h_{\psi}(m - 2k)\sqrt{2}\varphi(2^{j + 1}x - m)\right] Wψ(j,k)=M 1xf(x)2j/2[mhψ(m2k)2 φ(2j+1xm)]
交换求和与积分并重新排列项,得到 :
W ψ ( j , k ) = ∑ m h ψ ( m − 2 k ) [ 1 M ∑ x f ( x ) 2 ( j + 1 ) / 2 φ ( 2 j + 1 x − m ) ] W ψ ( j , k ) = ∑ m h ψ ( m − 2 k ) W φ ( j + 1 , m ) 同理 , W φ ( j , k ) = ∑ m h φ ( m − 2 k ) W φ ( j + 1 , m ) W_{\psi}(j,k)=\sum_{m}h_{\psi}(m - 2k)\left[\frac{1}{\sqrt{M}}\sum_{x}f(x)2^{(j + 1)/2}\varphi(2^{j + 1}x - m)\right]\\ W_{\psi}(j,k)=\sum_{m}h_{\psi}(m - 2k)W_{\varphi}(j + 1,m)\\ 同理,\ W_{\varphi}(j,k)=\sum_{m}h_{\varphi}(m - 2k)W_{\varphi}(j + 1,m) Wψ(j,k)=mhψ(m2k)[M 1xf(x)2(j+1)/2φ(2j+1xm)]Wψ(j,k)=mhψ(m2k)Wφ(j+1,m)同理, Wφ(j,k)=mhφ(m2k)Wφ(j+1,m)
上述方程表示了快速小波变换(FWT), 揭示了相邻尺度的离散小波变换(DWT)系数之间的显著关系。

可以看到,尺度 j j j的近似系数 W φ ( j , k ) W_{\varphi}(j,k) Wφ(j,k)和细节系数 W ψ ( j , k ) W_{\psi}(j,k) Wψ(j,k)都可以通过将尺度 j + 1 j+1 j+1的近似系数 W φ ( j + 1 , k ) W_{\varphi}(j + 1,k) Wφ(j+1,k)与时间反转的缩放向量 h φ ( − n ) h_{\varphi}(-n) hφ(n)和小波向量 h ψ ( − n ) h_{\psi}(-n) hψ(n)进行卷积,并对结果进行下采样得到。

T与W同

与两频段子带编译码系统的关系

Q: 两频段子带编译码系统?

A: 是一种将信号分解为低频和高频子带的系统

  1. 低通通道(Low-Pass Channel):对应于尺度滤波器 h φ ( n ) h_{\varphi}(n) hφ(n),用于提取信号的低频成分。
  2. 高通通道(High-Pass Channel):对应于小波滤波器 h ψ ( n ) h_{\psi}(n) hψ(n),用于提取信号的高频成分。

∑ k g 0 ( k ) h 0 ( n − k ) + ( − 1 ) n ∑ k g 0 ( k ) h 0 ( n − k ) = 2 δ ( n ) , δ ( n ) = { 1 , n = 0 0 , n ≠ 0 ∑ k g 0 ( k ) h 0 ( 2 n − k ) = ⟨ g 0 ( k ) , h 0 ( 2 n − k ) ⟩ = δ ( n ) ⟨ h i ( 2 n − k ) , g j ( k ) ⟩ = δ ( i − j ) δ ( n ) i , j ∈ { 0 , 1 } \sum_{k}g_{0}(k)h_{0}(n - k)+(-1)^{n}\sum_{k}g_{0}(k)h_{0}(n - k)=2\delta(n),\delta{(n)}=\begin{cases}1 ,&n=0\\0, &n\neq 0\end{cases}\\ \sum_{k}g_{0}(k)h_{0}(2n - k)=\langle g_{0}(k),h_{0}(2n - k)\rangle=\delta(n)\\ \langle h_{i}(2n - k),g_{j}(k)\rangle=\delta(i - j)\delta(n)\quad i,j\in\{0,1\} kg0(k)h0(nk)+(1)nkg0(k)h0(nk)=2δ(n)δ(n)={1,0,n=0n=0kg0(k)h0(2nk)=g0(k),h0(2nk)⟩=δ(n)hi(2nk),gj(k)⟩=δ(ij)δ(n)i,j{0,1}

上述快速小波变换过程与两频段子带编译码系统的分析部分相同,其中:
h 0 ( n ) = h φ ( − n ) h 1 ( n ) = h ψ ( − n ) h_{0}(n)=h_{\varphi}(-n)\\ h_{1}(n)=h_{\psi}(-n) h0(n)=hφ(n)h1(n)=hψ(n)
可以写出 :
W ψ ( j , k ) = h ψ ( − n ) ∗ W φ ( j + 1 , n ) ∣ n = 2 k , k ≥ 0 W φ ( j , k ) = h φ ( − n ) ∗ W φ ( j + 1 , n ) ∣ n = 2 k , k ≥ 0 W_{\psi}(j,k)=h_{\psi}(-n)\ast W_{\varphi}(j + 1,n)\big|_{n = 2k,k\geq0}\\ W_{\varphi}(j,k)=h_{\varphi}(-n)\ast W_{\varphi}(j + 1,n)\big|_{n = 2k,k\geq0} Wψ(j,k)=hψ(n)Wφ(j+1,n) n=2k,k0Wφ(j,k)=hφ(n)Wφ(j+1,n) n=2k,k0
其中卷积在 n = 2 k ( k ≥ 0 ) n = 2k(k\geq0) n=2k(k0)时刻进行求值。在非负、偶数时刻,计算卷积与以2为步长进行过滤和抽样的效果相同。

值得注意的是,滤波器组可以“迭代”以创建多级结构,用于计算两个或多个连续尺度的 DWT 系数,如图所示。

image-20241225114935315

例:计算一维小波变换

与上面的例子同: f ( n ) = { 1 , 4 , − 3 , 0 } f(n)=\{1,4,-3,0\} f(n)={1,4,3,0}, 但现在使用相应的尺度和小波向量:
$$

h_{\varphi}(n)=\begin{cases}\frac{1}{\sqrt{2}},&n=0,1\0,& otherwise\end{cases}\\
h_{\psi}(n)=\begin{cases}\frac{1}{\sqrt{2}},&n=0\-\frac{1}{\sqrt{2}},&n=1\0,& otherwise\end{cases}
$$
这是用于建立FWT滤波器族的函数,它们给出了滤波器系数。

image-20241225115401963

一维快速小波反变换

上采样序列定义为:
y 2 ↑ ( n ) = { y ( n / 2 ) , n 是偶数 0 , 其他 y_{2\uparrow}(n)=\begin{cases}y(n/2),&n是偶数\\0,&其他\end{cases} y2(n)={y(n/2),0,n是偶数其他
其中 y ( n ) y(n) y(n)是一维取样序列,上采样因子为2。因子2上取样可以被视为在 y ( n ) y(n) y(n)的每个样本后插入一个0.

image-20241225165159030

例:计算一维小波反变换

快速小波反变换的计算与正变换的计算呈镜像关系。在开始计算之前,先对0级近似系数和细节系数进行上取样,分别得到{4,0},{1,0},然后继续向右移动,卷积,最终可以得到 f ( x ) = T φ ( 2 , n ) f(x)=T_{\varphi}(2,n) f(x)=Tφ(2,n).

image-20241225164731974

FFT与FWT的区别

  • 计算长度为 M = 2 j M = 2^j M=2j序列的FWT所涉及的数学运算量为 O ( M ) O(M) O(M)阶。
  • 这与FFT算法相比具有优势,FFT算法需要 O ( M log ⁡ M ) O(M\log M) O(MlogM)
  • 虽然傅里叶基函数(即正弦函数)保证了FFT的存在,但FWT的存在取决于所使用小波的缩放函数的可用性,以及缩放函数和相应小波的正交性(或双正交性)。
  • FFT无法同时在时间和频率上分析函数,但FWT可以。

小波包(Wavelet Packets)

快速小波变换(FWT)将函数分解为尺度和小波函数之和,其中尺度和小波函数的带框呈对数关系。也就是说,函数的低频内容被分组到窄频带(尺度和小波函数)中,而高频内容被分组到较宽的频带(尺度和小波函数)中。

如果我们想要对时频平面的划分进行更精细的控制,FWT必须被推广以产生一种更灵活的分解——称为小波包。

分析树

根节点被赋予最高尺度的近似系数,这些系数是函数本身的样本,而叶子节点继承变换的近似和细节系数输出。注意:每个节点的系数都是线性展开的权重。

image-20241225170845632

例:三尺度分析树

例如,上图中的三尺度分析树提供了以下三种展开选项:
V j = V j − 1 ⊕ W j − 1 V j = V j − 2 ⊕ W j − 2 ⊕ W j − 1 V j = V j − 3 ⊕ W j − 3 ⊕ W j − 2 ⊕ W j − 1 \begin{align} V_j& = V_{j - 1} \oplus W_{j - 1}\\ V_j &= V_{j - 2} \oplus W_{j - 2} \oplus W_{j - 1}\\ V_j &= V_{j - 3} \oplus W_{j - 3} \oplus W_{j - 2} \oplus W_{j - 1} \end{align} VjVjVj=Vj1Wj1=Vj2Wj2Wj1=Vj3Wj3Wj2Wj1
其中 ⊕ \oplus 表示空间的直和(类似于集合的并集)。

分析树也是表示小波包的一种有效机制,小波包不过是对细节进行迭代滤波的常规小波变换。因此,上图(b)中的三尺度FWT分析树变成了下图中的三尺度小波包树。

image-20241225193133942

A A A表示近似滤波、 D D D表示细节滤波。图中的小波包树支持26种不同的分解。例如, V j V_j Vj可以展开为:
V J = V J − 3 ⊕ W J − 3 ⊕ W J − 2 , A ⊕ W J − 2 , D ⊕ W J − 1 , A A ⊕ W J − 1 , A D ⊕ W J − 1 , D A ⊕ W J − 1 , D D V J = V J − 1 ⊕ W J − 1 , D ⊕ W J − 1 , A A ⊕ W J − 1 , A D V_J = V_{J - 3} \oplus W_{J - 3} \oplus W_{J - 2,A} \oplus W_{J - 2,D} \oplus W_{J - 1,AA} \oplus W_{J - 1,AD} \oplus W_{J - 1,DA} \oplus W_{J - 1,DD}\\ V_J = V_{J - 1} \oplus W_{J - 1,D} \oplus W_{J - 1,AA} \oplus W_{J - 1,AD} VJ=VJ3WJ3WJ2,AWJ2,DWJ1,AAWJ1,ADWJ1,DAWJ1,DDVJ=VJ1WJ1,DWJ1,AAWJ1,AD
image-20241225194327314

image-20241225194338398

一般来说, P P P尺度的一维小波包变换(以及相关的 P + 1 P + 1 P+1级分析树)支持:
D ( P + 1 ) = [ D ( P ) ] 2 + 1 D(P + 1)=[D(P)]^2 + 1 D(P+1)=[D(P)]2+1
种独特的分解,其中 D ( 1 ) = 1 D(1)=1 D(1)=1

lign}
V_j& = V_{j - 1} \oplus W_{j - 1}\
V_j &= V_{j - 2} \oplus W_{j - 2} \oplus W_{j - 1}\
V_j &= V_{j - 3} \oplus W_{j - 3} \oplus W_{j - 2} \oplus W_{j - 1}
\end{align}
$$
其中 ⊕ \oplus 表示空间的直和(类似于集合的并集)。

分析树也是表示小波包的一种有效机制,小波包不过是对细节进行迭代滤波的常规小波变换。因此,上图(b)中的三尺度FWT分析树变成了下图中的三尺度小波包树。

[外链图片转存中…(img-D1xm8JZn-1735127696455)]

A A A表示近似滤波、 D D D表示细节滤波。图中的小波包树支持26种不同的分解。例如, V j V_j Vj可以展开为:
V J = V J − 3 ⊕ W J − 3 ⊕ W J − 2 , A ⊕ W J − 2 , D ⊕ W J − 1 , A A ⊕ W J − 1 , A D ⊕ W J − 1 , D A ⊕ W J − 1 , D D V J = V J − 1 ⊕ W J − 1 , D ⊕ W J − 1 , A A ⊕ W J − 1 , A D V_J = V_{J - 3} \oplus W_{J - 3} \oplus W_{J - 2,A} \oplus W_{J - 2,D} \oplus W_{J - 1,AA} \oplus W_{J - 1,AD} \oplus W_{J - 1,DA} \oplus W_{J - 1,DD}\\ V_J = V_{J - 1} \oplus W_{J - 1,D} \oplus W_{J - 1,AA} \oplus W_{J - 1,AD} VJ=VJ3WJ3WJ2,AWJ2,DWJ1,AAWJ1,ADWJ1,DAWJ1,DDVJ=VJ1WJ1,DWJ1,AAWJ1,AD
[外链图片转存中…(img-zdaG9cvw-1735127696455)]

[外链图片转存中…(img-oieYA8Vt-1735127696456)]

一般来说, P P P尺度的一维小波包变换(以及相关的 P + 1 P + 1 P+1级分析树)支持:
D ( P + 1 ) = [ D ( P ) ] 2 + 1 D(P + 1)=[D(P)]^2 + 1 D(P+1)=[D(P)]2+1
种独特的分解,其中 D ( 1 ) = 1 D(1)=1 D(1)=1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[项目][boost搜索引擎#4] cpp-httplib使用 log.hpp 前端 测试及总结

目录 编写http_server模块 1. 引入cpp-httplib到项目中 2. cpp-httplib的使用介绍 3. 正式编写http_server 九、添加日志到项目中 十、编写前端模块 十一. 详解传 gitee 十二、项目总结 项目的扩展 写在前面 [项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 |…

xxl-job 简单的入门到实战

本文是参考官方文档自己实践一次,纯享版,大致也是作者边写博客边去跟着官方文档实现 一、前期准备 1、官网地址 GitHub地址: GitHub - xuxueli/xxl-job: A distributed task scheduling framework.(分布式任务调度平台XXL-JOB&…

【教程】通过Docker运行AnythingLLM

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 官方教程:Local Docker Installation ~ AnythingLLM 1、先创建一个目录用于保存anythingllm的持久化文件: sudo mkdir /app su…

若依(RuoYi-Vue)+Flowable工作流前后端整合教程

此教程适合若依前后端分离项目,其他项目可以在扩展列表中进行查找。 近期公司里需要对很久以前的RuoYi-Vue前后端分离项目扩展出flowable的功能,当然这个重任也是落在了我的身上(不然也不会有这篇文章),然后我在官网看…

ubuntu 网络管理--NetworkManager

ubuntu 网络管理--NetworkManager 1 介绍2 NetworkManager 命令2 nmcli 命令显示可用的wifi AP连接wifi检查网络连接 ?? 如何删除删除网络连接查看设备状态添加一个新的以太网连接设置静态 IP 地址启用并测试连接添加新的wifi连接 3 其他命令参考 1 介绍 NetworkManager 是标…

水库大坝三维模型的开发和使用3Dmax篇

成果图 开发过程 工具插件three.js先加载模型做水体衔接水位测量标尺水位标记断面标记大坝监测点打点 上代码&#xff0c;技术交流V: bloxed <template><div class"box w100 h100"><el-row :gutter"20" v-loading"loading"e…

计算机毕设-基于springboot的校园招聘网站的设计与实现(附源码+lw+ppt+开题报告)

博主介绍&#xff1a;✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围&#xff1a;Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

重生之我在异世界学编程之C语言:深入动态内存管理收尾 + 柔性数组篇

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文常见的动态内存管理错误&#xf…

无人直播源码

DY无人直播系统架构设计介绍 在DY等短视频平台的直播中&#xff0c;无人直播系统能够提供自动化、智能化的互动体验&#xff0c;既减轻了主播的工作量&#xff0c;又提升了观众的参与感。以下是一个典型的无人直播系统架构设计&#xff0c;包含全局配置、点对点互动、产品话术、…

被裁20240927 --- 嵌入式硬件开发 前篇

前篇主要介绍一些相关的概念&#xff0c;用于常识扫盲&#xff0c;后篇开始上干货&#xff01; 他捧着一只碗吃过百家的饭 1. 处理器芯片1.1 处理器芯片制造商一、 英特尔&#xff08;Intel&#xff09;二、 三星&#xff08;SAMSUNG&#xff09;三、 高通&#xff08;Qualcomm…

【Linux】进程间通信 -> 匿名管道命名管道

进程间通信的目的 数据传输&#xff1a;一个进程许需要将它的数据发送给另外一个进程。资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它们发生了某种事件&#xff08;如进程终止时要通知父进程…

Pytorch注意力机制应用到具体网络方法(闭眼都会版)

文章目录 以YoloV4-tiny为例要加入的注意力机制代码模型中插入注意力机制 以YoloV4-tiny为例 解释一下各个部分&#xff1a; 最左边这部分为主干提取网络&#xff0c;功能为特征提取中间这边部分为FPN&#xff0c;功能是加强特征提取最后一部分为yolo head&#xff0c;功能为获…

修改el-select下拉框高度;更新:支持动态修改

文章目录 效果动态修改&#xff1a;效果代码固定高度版本动态修改高度版本&#xff08;2024-12-25 更新&#xff1a; 支持动态修改下拉框高度&#xff09; 效果 动态修改&#xff1a;效果 代码 固定高度版本 注意点&#xff1a; popper-class 尽量独一无二&#xff0c;防止影…

如何完全剔除对Eureka的依赖,报错Cannot execute request on any known server

【现象】 程序运行报错如下&#xff1a; com.netflix.discovery.shared.transport.TransportException报错Cannot execute request on any known server 【解决方案】 &#xff08;1&#xff09;在Maven工程中的pom去掉Eureka相关的引用&#xff08;注释以下部分&#xff0…

vscode写python,遇到问题:ModuleNotFoundError: No module named ‘pillow‘(已解决 避坑)

1 问题&#xff1a; ModuleNotFoundError: No module named pillow 2 原因&#xff1a; 原因1&#xff1a;安装Pillow的pip命令所处的python版本与vscode调用的python解释器版本不同。 如&#xff1a; 原因2&#xff1a;虽然用的是pillow&#xff0c;但是写代码的时候只能用…

Ashy的考研游记

文章目录 摘要12.1112.2012.21 DAY1&#xff08;政治/英语&#xff09;政治英语 12.22 DAY2&#xff08;数学/专业课&#xff09;数学专业课 结束估分 摘要 在24年的12月里&#xff0c;Ashy完成了他的考研冲刺&#xff0c;顺利的结束了他本年度的考研之旅。 在十二月里&#…

AIGC实践|AI/AR助力文旅沉浸式互动体验探索

前言&#xff1a; 本篇文章的创作灵感来源于近期热门话题——让文物“动起来”&#xff0c;各大博物馆成为新进潮流打卡地。结合之前创作的AI文旅宣传片良好的流量和反馈&#xff0c;外加最近比较感兴趣的AR互动探索&#xff0c;想尝试看看自己能不能把这些零碎的内容整合起来…

Kubernetes(k8s)离线部署DolphinScheduler3.2.2

1.环境准备 1.1 集群规划 本次安装环境为&#xff1a;3台k8s现有的postgreSql数据库zookeeper服务 1.2 下载及介绍 DolphinScheduler-3.2.2官网&#xff1a;https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2 官网安装文档&#xff1a;https://dolphinscheduler.apach…

C++的侵入式链表

非侵入式链表 非侵入式链表是一种链表数据结构&#xff0c;其中每个元素&#xff08;节点&#xff09;并不需要自己包含指向前后节点的指针。链表的结构和节点的存储是分开的&#xff0c;链表容器会单独管理这些指针。 常见的非侵入式链表节点可以由以下所示&#xff0c;即&a…

在vscode的ESP-IDF中使用自定义组件

以hello-world为例&#xff0c;演示步骤和注意事项 1、新建ESP-IDF项目 选择模板 从hello-world模板创建 2、打开项目 3、编译结果没错 正在执行任务: /home/azhu/.espressif/python_env/idf5.1_py3.10_env/bin/python /home/azhu/esp/v5.1/esp-idf/tools/idf_size.py /home…