欢迎光临
我们一直在努力

小波变换:多分辨率分析与图像小波去噪 / 增强 / 融合【计算机视觉】

小波变换:多分辨率分析与图像小波去噪 / 增强【计算机视觉】

  • 小波变换(Wavelet Transform)
    • Ⅰ、引言
        • 短时傅里叶变换(STFT):傅里叶到小波的过渡
    • Ⅱ、小波变换原理:从母小波到多分辨率分析
      • 一、母小波(Mother Wavelet):小波变换的基础模板
        • (1)计算机视觉常用母小波完整数学表达式
      • 二、小波基:由母小波伸缩+平移生成的自适应窗口
        • (1)一维小波基公式
        • (2)二维小波基公式(图像专用)
      • 三、小波变换:图像与小波基的内积运算
        • (1)二维连续小波变换(CWT,仅理论参考)
        • (2)二维离散小波变换(DWT,工程实用版)
      • 四、图像小波分解:LL、LH、HL、HH 频带的数学定义
        • 符号与物理意义
        • 工程实用版(滤波形式,直接对应代码)
      • 五、小波逆变换:从频带重构图像
        • (1)核心公式(工程实用版)
        • (2)公式关键参数解读
        • (3)核心逻辑补充
        • (4)db2 小波重构实例
    • Ⅲ、二维图像小波分解结构:LL、LH、HL、HH
      • 一、二维小波分解的完整流程
      • 二、小波二维分解(2D-DWT)的4个分量数学定义
        • (1)LL 低频近似分量
        • (2)LH 水平细节分量
        • (3)HL 垂直细节分量
        • (4)HH 对角细节分量
      • 三、多级小波分解(多分辨率金字塔)
        • 多级分解的 CV 应用价值
      • 四、小波分解的物理意义
    • Ⅳ、小波图像融合的数学原理
      • 一、小波融合的数学本质
      • 二、小波分解的数学表达(融合基础)
      • 三、频带融合的数学规则
        • 1. LL 低频融合(加权平均)
        • 2. LH / HL 边缘融合(绝对值取大)
        • 3. HH 细节与噪声融合(取大+阈值)
      • 四、小波逆变换(重构数学原理)
      • 五、小波融合的数学意义
    • Ⅴ、小波图像压缩的数学原理与工程实现
      • 一、小波压缩的数学本质
      • 二、小波压缩的核心数学规则
        • 1. 系数阈值量化(核心步骤)
        • 2. 压缩比计算
      • 三、小波压缩的工程流程
      • 四、小波压缩的核心优势(对比JPEG)
      • 五、典型应用场景
    • Ⅵ、总结
      • 上一章
      • 下一章

小波变换(Wavelet Transform)

        小波变换是一种多分辨率、局部化的时/空频分析工具,可将图像从空域拆解为不同尺度的低频近似(轮廓)与高频细节(边缘/纹理/噪声)分量,解决了傅里叶变换“无空间定位”、短时傅里叶变换“固定窗宽”的缺陷,是计算机视觉中图像去噪、增强、融合、压缩、特征提取的核心进阶工具。

注意:本文所有代码均可导入Jupyter Notebook 完整代码仓库地址:🔗 GitHub:https://github.com/KnifeWen007/CV—StudyNotebook


Ⅰ、引言

        傅里叶变换虽实现了图像从空域到频域的转换,但仅能反映全局频率分布,无法定位“某一频率出现在图像哪个位置”;短时傅里叶变换(STFT)通过滑动窗弥补了空间定位能力,却因窗宽固定,无法兼顾高频细节的空间精度与低频轮廓的频率精度。

        小波变换的核心突破在于:用可伸缩、可平移的“小波基” 替代傅里叶变换的“无限长正弦基”,对图像实现“高频用窄窗(抓细节/定位)、低频用宽窗(看趋势/频率)”的自适应分析。这种多分辨率特性,让小波成为计算机视觉中处理非平稳图像信号(如边缘、纹理、局部噪声)的最优工具之一。


短时傅里叶变换(STFT):傅里叶到小波的过渡

(1)STFT 的核心定位:解决傅里叶的“空间定位缺失”

傅里叶变换的致命短板是“只知频率、不知位置”——比如一张包含边缘和噪声的图像,傅里叶能检测到二者对应的高频成分,却无法区分“边缘在左上角、噪声在右下角”。

为弥补这一缺陷,短时傅里叶变换(Short-Time Fourier Transform,STFT)提出了核心解决方案:给图像叠加固定大小的滑动窗,对每个窗口内的局部区域单独做傅里叶变换,从而获得“频率-窗口位置”的二维信息,实现频率的空间定位。 (2)STFT 数学定义(CV 视角)

对二维图像

I

(

x

,

y

)

I(x,y)

I(x,y),STFT 的表达式为:

STFT

(

τ

x

,

τ

y

,

u

,

v

)

=

+

I

(

x

,

y

)

w

(

x

τ

x

,

y

τ

y

)

e

j

(

u

x

+

v

y

)

d

x

d

y

\\text{STFT}(\\tau_x, \\tau_y, u, v) = \\iint_{-\\infty}^{+\\infty} I(x,y) \\cdot w(x-\\tau_x, y-\\tau_y) \\cdot e^{-j(ux+vy)} dxdy

STFT(τx,τy,u,v)=+I(x,y)w(xτx,yτy)ej(ux+vy)dxdy

  • w

    (

    x

    τ

    x

    ,

    y

    τ

    y

    )

    w(x-\\tau_x, y-\\tau_y)

    w(xτx,yτy):二维窗函数(如矩形窗、高斯窗),

    τ

    x

    ,

    τ

    y

    \\tau_x, \\tau_y

    τx,τy 为窗口中心坐标;

  • u

    ,

    v

    u, v

    u,v:频率分量;

  • 本质:窗口约束下的局部傅里叶变换,窗口滑动遍历整幅图像。 (3)STFT 的核心缺陷(CV 场景下)

STFT 虽解决了频率定位问题,却因“固定窗宽”陷入新的困境,这也是它在计算机视觉中极少单独使用的核心原因:

  • 窄窗:空间定位精准(能看清边缘位置),但频率分辨率低(无法区分边缘和噪声的高频差异);
  • 宽窗:频率分辨率高(能区分不同高频),但空间定位模糊(无法精准定位边缘);
  • 硬伤:窗宽一旦选定,整幅图像分析过程中全程固定,无法同时兼顾高频细节的定位与低频轮廓的分频。 (4)STFT 与小波变换的核心对比
特性短时傅里叶变换(STFT)小波变换
窗口特性 固定大小、固定形状,全程不可调 可伸缩(宽窄自适应)、可平移,频率适配
基函数 无限长正弦波 + 固定窗 局部化小波基(短、震荡、快速衰减)
分辨率特性 全局统一分辨率,高频/低频无法兼顾 多分辨率:低频高频率分辨率、高频高空间分辨率
CV 应用局限 易产生块伪影,仅辅助分析,极少单独落地 无窗效应,保边性好,广泛用于去噪/融合/压缩

(5)STFT 的 CV 应用价值

STFT 在计算机视觉中虽极少作为核心工具落地,但它的“局部化频率分析”思路为小波变换奠定了基础——小波变换本质是对 STFT 的升级:用“可伸缩的小波基”替代“固定窗 + 正弦基”,从根本上解决了窗宽固定的缺陷。


Ⅱ、小波变换原理:从母小波到多分辨率分析

小波变换是对短时傅里叶变换(STFT)的核心升级:放弃固定时间-频率窗,改用可伸缩、可平移的小波基函数,实现高频信号精确定位、低频信号精细分频的自适应多分辨率分析,完美适配图像边缘、纹理、轮廓等非平稳视觉信号的处理需求,是计算机视觉领域高精度图像处理(去噪/增强/融合)的核心理论基础。


一、母小波(Mother Wavelet):小波变换的基础模板

母小波是生成所有小波基的唯一原始函数,需满足三大核心数学约束:

  • 零均值约束:

    +

    ψ

    (

    t

    )

    d

    t

    =

    0

    \\int_{-\\infty}^{+\\infty}\\psi(t)dt = 0

    +ψ(t)dt=0 物理意义:函数正负震荡且积分和为0,能精准捕捉图像中灰度突变(边缘/纹理);

  • 能量有限约束:

    +

    ψ

    (

    t

    )

    2

    d

    t

    <

    \\int_{-\\infty}^{+\\infty}|\\psi(t)|^2dt < \\infty

    +ψ(t)2dt< 物理意义:能量集中在局部空域,适配图像局部特征(如人脸眼角、建筑边缘)的分析;

  • 容许条件约束:

    C

    ψ

    =

    +

    ψ

    ^

    (

    ω

    )

    2

    ω

    d

    ω

    <

    C_\\psi = \\int_{-\\infty}^{+\\infty}\\frac{|\\hat{\\psi}(\\omega)|^2}{|\\omega|}d\\omega < \\infty

    Cψ=+ωψ^(ω)2dω< 物理意义:保证小波变换可逆,处理后的频带分量可重构回原始图像。

  • (1)计算机视觉常用母小波完整数学表达式
    母小波类型一维数学表达式二维扩展形式(图像适配)核心特性(CV 场景)工程优先级
    Haar 小波

    ψ

    (

    t

    )

    =

    {

    1

    ,

    0

    t

    <

    1

    2

    1

    ,

    1

    2

    t

    <

    1

    0

    ,

    其他

    \\psi(t) = \\begin{cases} 1, & 0\\leq t < \\frac{1}{2} \\\\ -1, & \\frac{1}{2}\\leq t < 1 \\\\ 0, & \\text{其他} \\end{cases}

    ψ(t)=

    1,1,0,0t<2121t<1其他

    ψ

    (

    x

    ,

    y

    )

    =

    ψ

    (

    x

    )

    ψ

    (

    y

    )

    \\psi(x,y) = \\psi(x) \\cdot \\psi(y)

    ψ(x,y)=ψ(x)ψ(y)(张量积)

    计算最快、正交,适合快速验证、边缘初检 低(仅测试用)
    Daubechies-2(db2)

    ψ

    (

    t

    )

    =

    2

    k

    =

    0

    3

    g

    k

    ϕ

    (

    2

    t

    k

    )

    ,

     

    g

    k

    =

    (

    1

    )

    k

    h

    1

    k

    \\psi(t) = \\sqrt{2}\\sum_{k=0}^{3}g_k\\phi(2t-k),\\ g_k=(-1)^kh_{1-k}

    ψ(t)=2

    k=03gkϕ(2tk), gk=(1)kh1k滤波系数:

    h

    0

    =

    1

    +

    3

    4

    2

    ,

    h

    1

    =

    3

    +

    3

    4

    2

    h_0=\\frac{1+\\sqrt{3}}{4\\sqrt{2}},h_1=\\frac{3+\\sqrt{3}}{4\\sqrt{2}}

    h0=42

    1+3

    ,h1=42

    3+3

    h

    2

    =

    3

    3

    4

    2

    ,

    h

    3

    =

    1

    3

    4

    2

    h_2=\\frac{3-\\sqrt{3}}{4\\sqrt{2}},h_3=\\frac{1-\\sqrt{3}}{4\\sqrt{2}}

    h2=42

    33

    ,h3=42

    13

    ψ

    (

    x

    ,

    y

    )

    =

    ψ

    (

    x

    )

    ψ

    (

    y

    )

    \\psi(x,y)=\\psi(x)\\cdot\\psi(y)

    ψ(x,y)=ψ(x)ψ(y)

    正交紧支撑,保边性好,无边界伪影 高(去噪/融合首选)
    墨西哥帽小波

    ψ

    (

    t

    )

    =

    2

    3

    π

    1

    /

    4

    (

    1

    t

    2

    )

    e

    t

    2

    /

    2

    \\psi(t) = \\frac{2}{\\sqrt{3}}\\pi^{-1/4}(1-t^2)e^{-t^2/2}

    ψ(t)=3

    2π1/4(1t2)et2/2

    ψ

    (

    x

    ,

    y

    )

    =

    ψ

    (

    x

    2

    +

    y

    2

    )

    \\psi(x,y) = \\psi(\\sqrt{x^2+y^2})

    ψ(x,y)=ψ(x2+y2

    )

    光滑连续,旋转不变性,适配圆形特征 中(医学影像/特征检测)
    Morlet 小波

    ψ

    (

    t

    )

    =

    (

    e

    j

    ω

    0

    t

    e

    ω

    0

    2

    /

    2

    )

    e

    t

    2

    /

    2

     

    (

    ω

    0

    5

    )

    \\psi(t) = (e^{j\\omega_0 t}-e^{-\\omega_0^2/2})e^{-t^2/2}\\ (\\omega_0\\geq5)

    ψ(t)=(ejω0teω02/2)et2/2 (ω05)

    ψ

    (

    x

    ,

    y

    )

    =

    ψ

    (

    x

    2

    +

    y

    2

    )

    \\psi(x,y) = \\psi(\\sqrt{x^2+y^2})

    ψ(x,y)=ψ(x2+y2

    )

    复小波,时频精度均衡,纹理细节分析 中(纹理分类/高频特征)

    补充说明:二维图像小波变换通常采用张量积形式(

    ψ

    (

    x

    ,

    y

    )

    =

    ψ

    (

    x

    )

    ψ

    (

    y

    )

    \\psi(x,y) = \\psi(x) \\cdot \\psi(y)

    ψ(x,y)=ψ(x)ψ(y)),即将一维母小波分别作用于图像的 x 轴(列)和 y 轴(行),实现二维频带分解。


    二、小波基:由母小波伸缩+平移生成的自适应窗口

    小波基是母小波通过尺度变换(伸缩)+ 平移变换 + 能量归一化生成的函数族,尺度因子控制“分析粒度”,平移因子控制“分析位置”。

    (1)一维小波基公式

    ψ

    a

    ,

    b

    (

    t

    )

    =

    1

    a

    ψ

    (

    t

    b

    a

    )

    \\psi_{a,b}(t) = \\frac{1}{\\sqrt{|a|}} \\psi\\left( \\frac{t – b}{a} \\right)

    ψa,b(t)=a

    1ψ(atb)

    • a

      a

      a:尺度因子(

      a

      >

      0

      a>0

      a>0),

      a

      a

      a 越小小波基越窄(分析高频/细节),

      a

      a

      a 越大越宽(分析低频/轮廓);

    • b

      b

      b:平移因子,控制小波基在空域的位置(对应图像像素的行列坐标);

    • 1

      a

      \\frac{1}{\\sqrt{|a|}}

      a

      1:能量归一化系数,保证不同尺度小波基的能量一致。

    (2)二维小波基公式(图像专用)

    ψ

    a

    ,

    b

    x

    ,

    b

    y

    (

    x

    ,

    y

    )

    =

    1

    a

    ψ

    (

    x

    b

    x

    a

    ,

    y

    b

    y

    a

    )

    \\psi_{a,b_x,b_y}(x,y) = \\frac{1}{|a|} \\psi\\left( \\frac{x – b_x}{a}, \\frac{y – b_y}{a} \\right)

    ψa,bx,by(x,y)=a1ψ(axbx,ayby)

    • 适配性优化:将一维平移因子

      b

      b

      b 拆分为

      b

      x

      b_x

      bx(列平移)、

      b

      y

      b_y

      by(行平移),直接对应图像像素坐标;归一化系数改为

      1

      a

      \\frac{1}{|a|}

      a1,补偿二维空域的尺度缩放。


    三、小波变换:图像与小波基的内积运算

    小波变换的本质是“图像信号与小波基的内积”,核心作用是将空域图像转换为频域系数,实现“轮廓/边缘/噪声”的分离。

    (1)二维连续小波变换(CWT,仅理论参考)

    W

    f

    (

    a

    ,

    b

    x

    ,

    b

    y

    )

    =

    +

    I

    (

    x

    ,

    y

    )

    ψ

    a

    ,

    b

    x

    ,

    b

    y

    (

    x

    ,

    y

    )

    d

    x

    d

    y

    W_f(a,b_x,b_y) = \\iint_{-\\infty}^{+\\infty} I(x,y) \\cdot \\psi^*_{a,b_x,b_y}(x,y) dxdy

    Wf(a,bx,by)=+I(x,y)ψa,bx,by(x,y)dxdy

    工程说明:CWT 计算量极大,且系数冗余,计算机视觉中完全不使用,仅用于理解小波变换的数学本质。

    (2)二维离散小波变换(DWT,工程实用版)

    W

    f

    (

    j

    ,

    k

    x

    ,

    k

    y

    )

    =

    1

    2

    j

    +

    I

    (

    x

    ,

    y

    )

    ψ

    (

    x

    k

    x

    2

    j

    2

    j

    ,

    y

    k

    y

    2

    j

    2

    j

    )

    d

    x

    d

    y

    W_f(j,k_x,k_y) = \\frac{1}{2^j} \\iint_{-\\infty}^{+\\infty} I(x,y) \\cdot \\psi\\left( \\frac{x – k_x\\cdot2^j}{2^j}, \\frac{y – k_y\\cdot2^j}{2^j} \\right) dxdy

    Wf(j,kx,ky)=2j1+I(x,y)ψ(2jxkx2j,2jyky2j)dxdy

    • 离散化优化:
    • 尺度因子

      a

      =

      2

      j

      a=2^j

      a=2j

      j

      j

      j 为分解级数,取整数),仅保留2的幂次尺度,降低计算量;

    • 平移因子

      b

      x

      =

      k

      x

      2

      j

      b_x=k_x\\cdot2^j

      bx=kx2j

      b

      y

      =

      k

      y

      2

      j

      b_y=k_y\\cdot2^j

      by=ky2j

      k

      x

      ,

      k

      y

      k_x,k_y

      kx,ky 为整数),与图像像素下采样步长对齐;

    • 归一化系数

      1

      2

      j

      \\frac{1}{2^j}

      2j1,补偿尺度缩放带来的能量变化。


    四、图像小波分解:LL、LH、HL、HH 频带的数学定义

    图像经一层二维小波变换后,会被分解为 4 个正交频带子带,其数学原型由内积形式定义·:

    {

    f

    2

    j

    0

    (

    m

    ,

    n

    )

    =

    f

    2

    j

    1

    (

    x

    ,

    y

    )

    ,

     

    ϕ

    (

    x

    2

    m

    ,

    y

    2

    n

    )

    (LL 低频近似子带)

    f

    2

    j

    1

    (

    m

    ,

    n

    )

    =

    f

    2

    j

    1

    (

    x

    ,

    y

    )

    ,

     

    ψ

    1

    (

    x

    2

    m

    ,

    y

    2

    n

    )

    (HL 水平高频子带)

    f

    2

    j

    2

    (

    m

    ,

    n

    )

    =

    f

    2

    j

    1

    (

    x

    ,

    y

    )

    ,

     

    ψ

    2

    (

    x

    2

    m

    ,

    y

    2

    n

    )

    (LH 垂直高频子带)

    f

    2

    j

    3

    (

    m

    ,

    n

    )

    =

    f

    2

    j

    1

    (

    x

    ,

    y

    )

    ,

     

    ψ

    3

    (

    x

    2

    m

    ,

    y

    2

    n

    )

    (HH 对角高频子带)

    \\begin{cases} f_{2^j}^0(m,n) = \\langle f_{2^{j-1}}(x,y),\\ \\phi(x-2m,y-2n) \\rangle \\quad &\\text{(LL 低频近似子带)} \\\\ f_{2^j}^1(m,n) = \\langle f_{2^{j-1}}(x,y),\\ \\psi^1(x-2m,y-2n) \\rangle \\quad &\\text{(HL 水平高频子带)} \\\\ f_{2^j}^2(m,n) = \\langle f_{2^{j-1}}(x,y),\\ \\psi^2(x-2m,y-2n) \\rangle \\quad &\\text{(LH 垂直高频子带)} \\\\ f_{2^j}^3(m,n) = \\langle f_{2^{j-1}}(x,y),\\ \\psi^3(x-2m,y-2n) \\rangle \\quad &\\text{(HH 对角高频子带)} \\end{cases}

    f2j0(m,n)=f2j1(x,y), ϕ(x2m,y2n)⟩f2j1(m,n)=f2j1(x,y), ψ1(x2m,y2n)⟩f2j2(m,n)=f2j1(x,y), ψ2(x2m,y2n)⟩f2j3(m,n)=f2j1(x,y), ψ3(x2m,y2n)⟩(LL 低频近似子带)(HL 水平高频子带)(LH 垂直高频子带)(HH 对角高频子带)

    符号与物理意义
    符号含义

    f

    2

    j

    1

    (

    x

    ,

    y

    )

    f_{2^{j-1}}(x,y)

    f2j1(x,y)

    j

    1

    j-1

    j1 层输入图像(初始为原始图像

    I

    (

    x

    ,

    y

    )

    I(x,y)

    I(x,y)

    ,

    \\langle \\cdot,\\cdot \\rangle

    ,

    内积运算(等价于卷积+2倍下采样)

    ϕ

    (

    x

    2

    m

    ,

    y

    2

    n

    )

    \\phi(x-2m,y-2n)

    ϕ(x2m,y2n)

    二维尺度函数(低通滤波,提取平缓灰度信息)

    ψ

    1

    (

    x

    ,

    y

    )

    =

    ψ

    (

    x

    )

    ϕ

    (

    y

    )

    \\psi^1(x,y)=\\psi(x)\\phi(y)

    ψ1(x,y)=ψ(x)ϕ(y)

    水平高频小波基(提取行方向突变)

    ψ

    2

    (

    x

    ,

    y

    )

    =

    ϕ

    (

    x

    )

    ψ

    (

    y

    )

    \\psi^2(x,y)=\\phi(x)\\psi(y)

    ψ2(x,y)=ϕ(x)ψ(y)

    垂直高频小波基(提取列方向突变)

    ψ

    3

    (

    x

    ,

    y

    )

    =

    ψ

    (

    x

    )

    ψ

    (

    y

    )

    \\psi^3(x,y)=\\psi(x)\\psi(y)

    ψ3(x,y)=ψ(x)ψ(y)

    对角高频小波基(提取对角纹理/噪声)

    2

    m

    ,

    2

    n

    2m,2n

    2m,2n

    下采样步长(分解后子带尺寸为原图 1/2×1/2)

    f

    2

    j

    k

    (

    m

    ,

    n

    )

    f_{2^j}^k(m,n)

    f2jk(m,n)

    j

    j

    j 层第

    k

    k

    k 个频带的小波系数


    工程实用版(滤波形式,直接对应代码)

    {

    L

    L

    (

    j

    +

    1

    )

    =

    1

    2

    m

    ,

    n

    h

    (

    m

    )

    h

    (

    n

    )

    L

    L

    (

    j

    )

    (

    x

    m

    ,

    y

    n

    )

    L

    H

    (

    j

    +

    1

    )

    =

    1

    2

    m

    ,

    n

    h

    (

    m

    )

    g

    (

    n

    )

    L

    L

    (

    j

    )

    (

    x

    m

    ,

    y

    n

    )

    H

    L

    (

    j

    +

    1

    )

    =

    1

    2

    m

    ,

    n

    g

    (

    m

    )

    h

    (

    n

    )

    L

    L

    (

    j

    )

    (

    x

    m

    ,

    y

    n

    )

    H

    H

    (

    j

    +

    1

    )

    =

    1

    2

    m

    ,

    n

    g

    (

    m

    )

    g

    (

    n

    )

    L

    L

    (

    j

    )

    (

    x

    m

    ,

    y

    n

    )

    \\begin{cases} LL(j+1) = \\frac{1}{2}\\sum_{m,n} h(m)h(n) \\cdot LL(j)(x-m, y-n) \\\\ LH(j+1) = \\frac{1}{2}\\sum_{m,n} h(m)g(n) \\cdot LL(j)(x-m, y-n) \\\\ HL(j+1) = \\frac{1}{2}\\sum_{m,n} g(m)h(n) \\cdot LL(j)(x-m, y-n) \\\\ HH(j+1) = \\frac{1}{2}\\sum_{m,n} g(m)g(n) \\cdot LL(j)(x-m, y-n) \\end{cases}

    LL(j+1)=21m,nh(m)h(n)LL(j)(xm,yn)LH(j+1)=21m,nh(m)g(n)LL(j)(xm,yn)HL(j+1)=21m,ng(m)h(n)LL(j)(xm,yn)HH(j+1)=21m,ng(m)g(n)LL(j)(xm,yn)

    • L

      L

      LL

      LL:低频近似(图像轮廓,能量占比~80%)

    • L

      H

      LH

      LH:水平高频(水平边缘)

    • H

      L

      HL

      HL:垂直高频(垂直边缘)

    • H

      H

      HH

      HH:对角高频(纹理/噪声,能量占比~2%)

    • h

      (

      n

      )

      h(n)

      h(n):低通滤波器(db2:

      [

      0.48296

      ,

      0.83652

      ,

      0.22414

      ,

      0.12941

      ]

      [0.48296, 0.83652, 0.22414, -0.12941]

      [0.48296,0.83652,0.22414,0.12941]

    • g

      (

      n

      )

      g(n)

      g(n):高通滤波器(db2:

      [

      0.12941

      ,

      0.22414

      ,

      0.83652

      ,

      0.48296

      ]

      [-0.12941, -0.22414, 0.83652, -0.48296]

      [0.12941,0.22414,0.83652,0.48296]

    • 1

      2

      \\frac{1}{2}

      21:归一化系数,补偿2倍下采样导致的亮度衰减


    五、小波逆变换:从频带重构图像

    小波逆变换(IDWT)是小波分解的逆过程,核心作用是将处理后的频带分量重新组合为空域图像,实现“精准修改、无损还原”。

    (1)核心公式(工程实用版)

    L

    L

    (

    j

    )

    =

    1

    2

    m

    ,

    n

    [

    h

    (

    m

    )

    h

    (

    n

    )

    L

    L

    (

    j

    +

    1

    )

    +

    h

    (

    m

    )

    g

    (

    n

    )

    L

    H

    (

    j

    +

    1

    )

    +

    g

    (

    m

    )

    h

    (

    n

    )

    H

    L

    (

    j

    +

    1

    )

    +

    g

    (

    m

    )

    g

    (

    n

    )

    H

    H

    (

    j

    +

    1

    )

    ]

    (

    x

    +

    m

    ,

    y

    +

    n

    )

    LL(j) = \\frac{1}{2} \\sum_{m,n} \\Bigg[ h(m)h(n)\\cdot LL(j+1) + h(m)g(n)\\cdot LH(j+1) + \\\\ g(m)h(n)\\cdot HL(j+1) + g(m)g(n)\\cdot HH(j+1) \\Bigg]_{(x+m, y+n)}

    LL(j)=21m,n[h(m)h(n)LL(j+1)+h(m)g(n)LH(j+1)+g(m)h(n)HL(j+1)+g(m)g(n)HH(j+1)](x+m,y+n)

    (2)公式关键参数解读
    符号/项含义(图像场景适配)工程注意事项

    L

    L

    (

    j

    )

    LL(j)

    LL(j)

    j

    j

    j 层低频近似分量(重构后的上一层低频)

    多级分解需从最细层逐层重构

    h

    (

    n

    )

    /

    g

    (

    n

    )

    h(n)/g(n)

    h(n)/g(n)

    重构滤波器(分解滤波器的反转) db2 重构

    h

    =

    [

    0.12941

    ,

    0.22414

    ,

    0.83652

    ,

    0.48296

    ]

    h=[-0.12941, 0.22414, 0.83652, 0.48296]

    h=[0.12941,0.22414,0.83652,0.48296]

    1

    2

    \\frac{1}{2}

    21

    尺度归一化系数 必须保留,否则重构图像亮度异常

    (

    x

    +

    m

    ,

    y

    +

    n

    )

    (x+m, y+n)

    (x+m,y+n)

    滤波器滑动偏移 对应图像像素的行列偏移,避免边界失真
    (3)核心逻辑补充
  • 重构顺序:从最细层级(如3级 LL3)开始,逐层向上重构,最终还原原始图像;
  • 处理逻辑:重构前对高频分量(LH/HL/HH)做系数调整(去噪:HH 系数置0;增强:LH/HL 系数放大);
  • 正交性保证:重构滤波器是分解滤波器的反转,确保重构后图像无失真、无伪影。
  • (4)db2 小波重构实例
    • 分解滤波器:

      h

      分解

      =

      [

      0.48296

      ,

      0.83652

      ,

      0.22414

      ,

      0.12941

      ]

      h_{分解}=[0.48296, 0.83652, 0.22414, -0.12941]

      h分解=[0.48296,0.83652,0.22414,0.12941]

      g

      分解

      =

      [

      0.12941

      ,

      0.22414

      ,

      0.83652

      ,

      0.48296

      ]

      g_{分解}=[-0.12941, -0.22414, 0.83652, -0.48296]

      g分解=[0.12941,0.22414,0.83652,0.48296]

    • 重构滤波器:

      h

      重构

      =

      r

      e

      v

      e

      r

      s

      e

      (

      h

      分解

      )

      =

      [

      0.12941

      ,

      0.22414

      ,

      0.83652

      ,

      0.48296

      ]

      h_{重构}=reverse(h_{分解})=[-0.12941, 0.22414, 0.83652, 0.48296]

      h重构=reverse(h分解)=[0.12941,0.22414,0.83652,0.48296]

      g

      重构

      =

      r

      e

      v

      e

      r

      s

      e

      (

      g

      分解

      )

      =

      [

      0.48296

      ,

      0.83652

      ,

      0.22414

      ,

      0.12941

      ]

      g_{重构}=reverse(g_{分解})=[-0.48296, 0.83652, -0.22414, -0.12941]

      g重构=reverse(g分解)=[0.48296,0.83652,0.22414,0.12941]

    核心说明:重构滤波器反转是保证小波变换正交性的关键,无此操作会导致重构图像失真。


    Ⅲ、二维图像小波分解结构:LL、LH、HL、HH

    在计算机视觉中,图像本质是二维离散像素信号(像素值随坐标(x,y)变化),一维小波变换无法适配其二维特性,因此需采用二维离散小波变换(2D-DWT) 处理。2D-DWT 的核心逻辑是“分维度分解”:先对图像行方向做一维小波变换,再对列方向做一维小波变换,最终将原始图像拆解为4个物理意义明确的频带子图(LL、LH、HL、HH),也是后续图像去噪/增强/融合的操作基础。

    一、二维小波分解的完整流程

    2D-DWT 分解分为“行滤波+下采样”和“列滤波+下采样”两步,以灰度图像为例,具体流程如下:

  • 第一步:行方向小波变换

    • 对图像的每一行像素,分别用低通滤波器 h 和高通滤波器 g 做卷积运算:
      • 低通滤波结果:保留行方向的低频信息(如行内平缓的灰度变化);
      • 高通滤波结果:保留行方向的高频信息(如行内的边缘、灰度突变);
    • 对滤波结果做 2 倍下采样(取偶数位置像素),行方向数据量减半;
    • 最终行变换后,图像分为“行低频矩阵”和“行高频矩阵”两部分,列数不变、行数减半。
  • 第二步:列方向小波变换

    • 对第一步得到的“行低频矩阵”和“行高频矩阵”,分别按列做卷积+下采样:
      • 对“行低频矩阵”列滤波:低通得 LL、高通得 LH;
      • 对“行高频矩阵”列滤波:低通得 HL、高通得 HH;
    • 对列滤波结果做 2 倍下采样,列方向数据量减半;
  • 最终结果:原始图像被分解为 4 个尺寸为原图 1/4 的子图(LL、LH、HL、HH),4 个子图像素总数与原图一致,无信息丢失。

  • 补充:滤波器选择(以 db2 小波为例)

    • 低通滤波器 h = [0.48296, 0.83652, 0.22414, -0.12941](保留低频、平滑信号);
    • 高通滤波器 g = [-0.12941, -0.22414, 0.83652, -0.48296](保留高频、捕捉突变); 滤波器长度决定分解精度,db2 是 CV 中最常用的选择(兼顾计算速度与保边效果)。

    二、小波二维分解(2D-DWT)的4个分量数学定义

    频带名称分解逻辑物理意义能量占比典型特征(CV 场景)处理策略
    LL 行低频+列低频 图像全局轮廓、背景、主体结构 ~80% 如人脸图像的脸型、建筑图像的整体框架 极少修改,保留核心信息
    LH 行低频+列高频 水平方向边缘、线条、灰度突变 ~10% 如地平线、文字的水平笔画、桌面的水平边 增强/保留(提升边缘清晰度)
    HL 行高频+列低频 垂直方向边缘、线条、灰度突变 ~8% 如建筑的垂直线条、文字的竖笔画、柱子 增强/保留(提升边缘清晰度)
    HH 行高频+列高频 对角纹理、细节、噪声(高斯/椒盐) ~2% 如图像的颗粒感、噪点、对角纹理细节 去噪时抑制、增强时适度保留

    import cv2
    import pywt
    import numpy as np
    import matplotlib.pyplot as plt

    # 解决中文显示问题
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False

    def wavelet_bands_compare(image_path, wavelet='db2'):
    # 读取图像
    img = cv2.imread(image_path)
    if img is None:
    raise ValueError("无法读取图像!请检查路径或文件格式(jpg/png)")

    # 转灰度图(小波分解用)和RGB图(显示用)
    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY).astype(np.float64)
    img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

    # 1级二维小波分解
    coeffs = pywt.wavedec2(gray_img, wavelet=wavelet, level=1)
    LL, (LH, HL, HH) = coeffs

    # 频带归一化(0-255)
    def normalize_band(band):
    min_val = np.min(band)
    max_val = np.max(band)
    if max_val min_val == 0:
    return band
    return (band min_val) / (max_val min_val) * 255

    # 归一化处理
    LL_norm = normalize_band(LL).astype(np.uint8)
    LH_norm = normalize_band(LH).astype(np.uint8)
    HL_norm = normalize_band(HL).astype(np.uint8)
    HH_norm = normalize_band(HH).astype(np.uint8)

    # 绘制对比图(1行5列)
    plt.figure(figsize=(20, 6))

    # 原始图像
    plt.subplot(1, 5, 1)
    plt.imshow(img_rgb)
    plt.title('原始图像', fontsize=14, pad=10)
    plt.axis('off')

    # LL低频分量
    plt.subplot(1, 5, 2)
    plt.imshow(LL_norm, cmap='gray')
    plt.title('LL 低频近似分量\\n(图像骨架)', fontsize=12, pad=10)
    plt.axis('off')

    # LH水平细节分量
    plt.subplot(1, 5, 3)
    plt.imshow(LH_norm, cmap='gray')
    plt.title('LH 水平细节分量\\n(水平边缘)', fontsize=12, pad=10)
    plt.axis('off')

    # HL垂直细节分量
    plt.subplot(1, 5, 4)
    plt.imshow(HL_norm, cmap='gray')
    plt.title('HL 垂直细节分量\\n(垂直边缘)', fontsize=12, pad=10)
    plt.axis('off')

    # HH对角细节分量
    plt.subplot(1, 5, 5)
    plt.imshow(HH_norm, cmap='gray')
    plt.title('HH 对角细节分量\\n(纹理+噪声)', fontsize=12, pad=10)
    plt.axis('off')

    plt.tight_layout()
    plt.show()

    # 输出基础信息
    print("="*50)
    print(f"原始图像尺寸:{gray_img.shape} (高×宽)")
    print(f"各频带尺寸:{LL_norm.shape} (均为原图1/4)")
    print(f"使用小波基:{wavelet}")
    print("="*50)

    # 批量处理测试图
    if __name__ == "__main__":
    # 测试图像路径(替换为本地路径)
    test_images = [
    "building.jpg",
    "lighthouse.jpg",
    "cat.jpg",
    "lenna_noisy.jpg"
    ]

    # 批量执行
    for img_path in test_images:
    print(f"\\n{img_path}")
    try:
    wavelet_bands_compare(image_path=img_path, wavelet='db2')
    except Exception as e:
    print(f"❌ 处理{img_path}失败:{str(e)}")

    print("\\n所有图像可视化完成!")


    (1)LL 低频近似分量
    • 数学本质:

      L

      L

      =

      I

      ϕ

      (

      x

      )

      ϕ

      (

      y

      )

      LL = I * \\phi(x) \\otimes \\phi(y)

      LL=Iϕ(x)ϕ(y)(图像与二维尺度函数做卷积+下采样);

    • 核心特征:灰度变化平缓,是图像的“骨架”,包含图像最核心的视觉信息;
    • 分解特性:可对 LL 继续做 2D-DWT 得到 LL2、LH2、HL2、HH2(二级分解),数学上表示为:

      L

      L

      2

      (

      m

      ,

      n

      )

      =

      x

      ,

      y

      L

      L

      (

      x

      ,

      y

      )

      ϕ

      (

      x

      2

      m

      )

      ϕ

      (

      y

      2

      n

      )

      LL2(m,n) = \\sum_{x',y'} LL(x',y') \\cdot \\phi(x'-2m) \\cdot \\phi(y'-2n)

      LL2(m,n)=x,yLL(x,y)ϕ(x2m)ϕ(y2n) LL2 可继续分解为 LL3 等,形成“多分辨率金字塔”;

    • 实例:对一张包含猫的图像,LL 分量能清晰看到猫的整体轮廓,但看不到胡须、花纹等细节。 在这里插入图片描述
    (2)LH 水平细节分量
    • 数学本质:

      L

      H

      =

      I

      ϕ

      (

      x

      )

      ψ

      (

      y

      )

      LH = I * \\phi(x) \\otimes \\psi(y)

      LH=Iϕ(x)ψ(y)(行方向低通+列方向高通);

    • 核心特征:仅响应列方向的灰度突变(行方向平缓),对应图像中水平走向的边缘; 物理意义:

      ϕ

      (

      x

      )

      \\phi(x)

      ϕ(x) 保留行方向的平缓信息,

      ψ

      (

      y

      )

      \\psi(y)

      ψ(y) 提取列方向的灰度差(突变),因此仅对水平边缘敏感;

    • 实例:对包含海平面的图像,LH 分量会清晰显示海平面的水平边缘,而垂直的灯塔边缘则几乎无响应。

    在这里插入图片描述

    (3)HL 垂直细节分量
    • 数学本质:

      H

      L

      =

      I

      ψ

      (

      x

      )

      ϕ

      (

      y

      )

      HL = I * \\psi(x) \\otimes \\phi(y)

      HL=Iψ(x)ϕ(y)(行方向高通+列方向低通);

    • 核心特征:仅响应行方向的灰度突变(列方向平缓),对应图像中垂直走向的边缘; 物理意义:

      ψ

      (

      x

      )

      \\psi(x)

      ψ(x) 提取行方向的灰度差,

      ϕ

      (

      y

      )

      \\phi(y)

      ϕ(y) 保留列方向的平缓信息,因此仅对垂直边缘敏感;

    • 实例:对包含高楼的图像,HL 分量会清晰显示高楼的垂直轮廓线,而水平的窗户边缘则几乎无响应。 在这里插入图片描述
    (4)HH 对角细节分量
    • 数学本质:

      H

      H

      =

      I

      ψ

      (

      x

      )

      ψ

      (

      y

      )

      HH = I * \\psi(x) \\otimes \\psi(y)

      HH=Iψ(x)ψ(y)(行+列方向高通);

    • 核心特征:响应行+列方向的灰度突变,对应对角纹理、微小细节,也是图像噪声的主要载体; 物理意义:

      ψ

      (

      x

      )

      \\psi(x)

      ψ(x)

      ψ

      (

      y

      )

      \\psi(y)

      ψ(y) 同时提取行、列方向的灰度差,因此对任意方向的微小突变(噪声/对角纹理)都敏感;

    • 实例:对含高斯噪声的人像图,HH 分量中噪声点会以高亮像素呈现,而人脸的对角纹理(如眼角)也会保留。 在这里插入图片描述

    三、多级小波分解(多分辨率金字塔)

    import cv2
    import pywt
    import numpy as np
    import matplotlib.pyplot as plt

    # 中文显示设置
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False

    def show_all_level_wavelet(image_path, wavelet='db2'):
    # 读取图像
    img = cv2.imread(image_path)
    if img is None:
    raise ValueError("未找到lighthouse.jpg,请确认文件路径正确!")

    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY).astype(np.float64)
    img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    h, w = gray.shape
    print(f"原始图像尺寸:{h}×{w}")

    # 归一化函数
    def norm(band):
    return ((band band.min()) / (band.max() band.min() + 1e-8) * 255).astype(np.uint8)

    # 存储分解结果
    levels_data = {}

    # 1级分解
    coeffs1 = pywt.wavedec2(gray, wavelet=wavelet, level=1)
    LL1, (LH1, HL1, HH1) = coeffs1
    levels_data[1] = {
    'LL': norm(LL1), 'LH': norm(LH1), 'HL': norm(HL1), 'HH': norm(HH1),
    'shape': LL1.shape
    }
    print(f"1级分解 – LL1尺寸:{LL1.shape}(原图1/4)")

    # 2级分解
    coeffs2 = pywt.wavedec2(LL1, wavelet=wavelet, level=1)
    LL2, (LH2, HL2, HH2) = coeffs2
    levels_data[2] = {
    'LL': norm(LL2), 'LH': norm(LH2), 'HL': norm(HL2), 'HH': norm(HH2),
    'shape': LL2.shape
    }
    print(f"2级分解 – LL2尺寸:{LL2.shape}(原图1/16)")

    # 3级分解
    coeffs3 = pywt.wavedec2(LL2, wavelet=wavelet, level=1)
    LL3, (LH3, HL3, HH3) = coeffs3
    levels_data[3] = {
    'LL': norm(LL3), 'LH': norm(LH3), 'HL': norm(HL3), 'HH': norm(HH3),
    'shape': LL3.shape
    }
    print(f"3级分解 – LL3尺寸:{LL3.shape}(原图1/64)")

    # 可视化多分辨率金字塔
    plt.figure(figsize=(20, 5))
    plt.subplot(1, 4, 1)
    plt.imshow(img_rgb)
    plt.title('0级 – 原始图像', fontsize=12)
    plt.axis('off')

    plt.subplot(1, 4, 2)
    plt.imshow(levels_data[1]['LL'], cmap='gray')
    plt.title(f'1级 – LL1\\n{levels_data[1]["shape"][0]}×{levels_data[1]["shape"][1]}', fontsize=10)
    plt.axis('off')

    plt.subplot(1, 4, 3)
    plt.imshow(levels_data[2]['LL'], cmap='gray')
    plt.title(f'2级 – LL2\\n{levels_data[2]["shape"][0]}×{levels_data[2]["shape"][1]}', fontsize=10)
    plt.axis('off')

    plt.subplot(1, 4, 4)
    plt.imshow(levels_data[3]['LL'], cmap='gray')
    plt.title(f'3级 – LL3\\n{levels_data[3]["shape"][0]}×{levels_data[3]["shape"][1]}', fontsize=10)
    plt.axis('off')

    plt.suptitle('小波分解多分辨率金字塔(LL分量)', fontsize=14)
    plt.tight_layout()
    plt.show()

    # 可视化各层级完整频带
    fig, axes = plt.subplots(3, 4, figsize=(18, 12))
    fig.suptitle('1/2/3级小波分解完整频带', fontsize=16)

    # 1级分解行
    axes[0, 0].imshow(levels_data[1]['LL'], cmap='gray')
    axes[0, 0].set_title('1级 LL(图像骨架)', fontsize=10)
    axes[0, 0].axis('off')
    axes[0, 1].imshow(levels_data[1]['LH'], cmap='gray')
    axes[0, 1].set_title('1级 LH(水平边缘)', fontsize=10)
    axes[0, 1].axis('off')
    axes[0, 2].imshow(levels_data[1]['HL'], cmap='gray')
    axes[0, 2].set_title('1级 HL(垂直边缘)', fontsize=10)
    axes[0, 2].axis('off')
    axes[0, 3].imshow(levels_data[1]['HH'], cmap='gray')
    axes[0, 3].set_title('1级 HH(纹理/噪声)', fontsize=10)
    axes[0, 3].axis('off')

    # 2级分解行
    axes[1, 0].imshow(levels_data[2]['LL'], cmap='gray')
    axes[1, 0].set_title('2级 LL(更粗轮廓)', fontsize=10)
    axes[1, 0].axis('off')
    axes[1, 1].imshow(levels_data[2]['LH'], cmap='gray')
    axes[1, 1].set_title('2级 LH(大尺度水平细节)', fontsize=10)
    axes[1, 1].axis('off')
    axes[1, 2].imshow(levels_data[2]['HL'], cmap='gray')
    axes[1, 2].set_title('2级 HL(大尺度垂直细节)', fontsize=10)
    axes[1, 2].axis('off')
    axes[1, 3].imshow(levels_data[2]['HH'], cmap='gray')
    axes[1, 3].set_title('2级 HH(大尺度纹理)', fontsize=10)
    axes[1, 3].axis('off')

    # 3级分解行
    axes[2, 0].imshow(levels_data[3]['LL'], cmap='gray')
    axes[2, 0].set_title('3级 LL(全局轮廓)', fontsize=10)
    axes[2, 0].axis('off')
    axes[2, 1].imshow(levels_data[3]['LH'], cmap='gray')
    axes[2, 1].set_title('3级 LH(超大尺度水平细节)', fontsize=10)
    axes[2, 1].axis('off')
    axes[2, 2].imshow(levels_data[3]['HL'], cmap='gray')
    axes[2, 2].set_title('3级 HL(超大尺度垂直细节)', fontsize=10)
    axes[2, 2].axis('off')
    axes[2, 3].imshow(levels_data[3]['HH'], cmap='gray')
    axes[2, 3].set_title('3级 HH(超大尺度纹理)', fontsize=10)
    axes[2, 3].axis('off')

    plt.tight_layout()
    plt.subplots_adjust(top=0.92)
    plt.show()

    # 输出应用说明
    print("\\n各层级应用价值:")
    print("1级分解:细节最丰富,噪声也最明显 → 适合去噪、精细边缘检测、细节增强")
    print("2级分解:平衡轮廓与细节 → 适合图像融合、特征提取、中等尺度分析")
    print("3级分解:仅保留全局轮廓,细节极少 → 适合图像压缩、轮廓提取、粗粒度分析")

    # 执行主函数
    if __name__ == "__main__":
    try:
    show_all_level_wavelet(image_path="lighthouse.jpg", wavelet='db2')
    except Exception as e:
    print(f"程序执行错误:{str(e)}")

    单次小波分解仅能得到“1级频带”,为实现更精细的多尺度分析,可对 LL 分量重复执行 2D-DWT,形成“多级分解金字塔”:

    在这里插入图片描述

  • 1级分解:原图 → LL1 + LH1 + HL1 + HH1(LL1 为1级低频,保留原图1/4的轮廓);
  • 在这里插入图片描述

  • 2级分解:LL1 → LL2 + LH2 + HL2 + HH2(LL2 为2级低频,保留原图1/16的轮廓);
  • 在这里插入图片描述

  • 3级分解:LL2 → LL3 + LH3 + HL3 + HH3(LL3 为3级低频,保留原图1/64的轮廓);
  • 在这里插入图片描述

    多级分解的 CV 应用价值
    • 低层级(1级):聚焦图像细节、噪声,适合去噪、细节增强;
    • 高层级(2/3级):聚焦图像全局轮廓,适合图像融合、轮廓提取;
    • 工程建议:CV 中常用 1~3 级分解,超过 3 级后 LL 分量信息过少,无实际应用价值。

    四、小波分解的物理意义

  • 信息解耦:将图像的“轮廓、边缘、噪声”解耦到不同频带,实现“精准处理”——如去噪时仅抑制 HH 分量的噪声系数,不破坏 LL/LH/HL 中的轮廓和边缘;
  • 能量集中:80%以上的图像能量集中在 LL 分量,仅需保留少量系数即可还原图像主体,适合图像压缩;
  • 局部化特性:频带中的系数与原图像素位置一一对应,修改某一位置的系数仅影响原图对应位置的特征,无全局失真;
  • 对比傅里叶/STFT:傅里叶无空间定位,STFT 有固定窗伪影,而小波分解既保留空间定位,又无窗效应,是 CV 中高频处理的最优选择。

  • Ⅳ、小波图像融合的数学原理

    一、小波融合的数学本质

    小波图像融合的本质是:在小波变换域中,对多幅图像的分解系数进行加权、选取或组合,再通过逆变换重构得到融合图像。 设两幅待融合图像为

    f

    A

    (

    x

    ,

    y

    )

    f_A(x,y)

    fA(x,y)

    f

    B

    (

    x

    ,

    y

    )

    f_B(x,y)

    fB(x,y),融合图像为

    f

    F

    (

    x

    ,

    y

    )

    f_F(x,y)

    fF(x,y),则数学流程为:

    {

    W

    {

    f

    A

    }

    =

    分解

    (

    f

    A

    )
      


      

    {

    L

    L

    A

    ,

    L

    H

    A

    ,

    H

    L

    A

    ,

    H

    H

    A

    }

    W

    {

    f

    B

    }

    =

    分解

    (

    f

    B

    )
      


      

    {

    L

    L

    B

    ,

    L

    H

    B

    ,

    H

    L

    B

    ,

    H

    H

    B

    }

    W

    {

    f

    F

    }

    =

    F

    (

    W

    {

    f

    A

    }

    ,

    W

    {

    f

    B

    }

    )

    f

    F

    =

    W

    1

    (

    W

    {

    f

    F

    }

    )

    \\begin{cases} W\\{f_A\\} = \\text{分解}\\big(f_A\\big) \\implies \\{LL_A, LH_A, HL_A, HH_A\\} \\\\ W\\{f_B\\} = \\text{分解}\\big(f_B\\big) \\implies \\{LL_B, LH_B, HL_B, HH_B\\} \\\\ W\\{f_F\\} = F\\big(W\\{f_A\\}, W\\{f_B\\}\\big) \\\\ f_F = W^{-1}\\big(W\\{f_F\\}\\big) \\end{cases}

    W{fA}=分解(fA){LLA,LHA,HLA,HHA}W{fB}=分解(fB){LLB,LHB,HLB,HHB}W{fF}=F(W{fA},W{fB})fF=W1(W{fF}) 其中:

    • (W{\\cdot}):二维离散小波变换(2D‑DWT)
    • (W^{-1}{\\cdot}):逆二维离散小波变换(IDWT)
    • (F(\\cdot)):频带系数融合算子

    二、小波分解的数学表达(融合基础)

    对图像 (f(x,y)) 进行一层二维小波分解,得到四个子带:

    {

    L

    L

    (

    x

    ,

    y

    )

    =

    (

    f

    ϕ

    )

    (

    x

    ,

    y

    )

    2

    L

    H

    (

    x

    ,

    y

    )

    =

    (

    f

    ψ

    h

    )

    (

    x

    ,

    y

    )

    2

    H

    L

    (

    x

    ,

    y

    )

    =

    (

    f

    ψ

    v

    )

    (

    x

    ,

    y

    )

    2

    H

    H

    (

    x

    ,

    y

    )

    =

    (

    f

    ψ

    d

    )

    (

    x

    ,

    y

    )

    2

    \\begin{cases} LL(x,y) = \\big(f * \\phi\\big)(x,y) \\downarrow 2 \\\\ LH(x,y) = \\big(f * \\psi^h\\big)(x,y) \\downarrow 2 \\\\ HL(x,y) = \\big(f * \\psi^v\\big)(x,y) \\downarrow 2 \\\\ HH(x,y) = \\big(f * \\psi^d\\big)(x,y) \\downarrow 2 \\end{cases}

    LL(x,y)=(fϕ)(x,y)2LH(x,y)=(fψh)(x,y)2HL(x,y)=(fψv)(x,y)2HH(x,y)=(fψd)(x,y)2

    • (\\phi):二维尺度函数(低通)
    • (\\psih,\\psiv,\\psi^d):水平、垂直、对角小波函数(高通)
    • (*):卷积运算
    • (\\downarrow 2):行列各 2 倍下采样

    三、频带融合的数学规则

    1. LL 低频融合(加权平均)

    LL 代表图像轮廓与结构,采用加权线性融合:

    L

    L

    F

    (

    i

    ,

    j

    )

    =

    α

    L

    L

    A

    (

    i

    ,

    j

    )

    +

    (

    1

    α

    )

    L

    L

    B

    (

    i

    ,

    j

    )

    LL_F(i,j) = \\alpha \\cdot LL_A(i,j) + (1-\\alpha)\\cdot LL_B(i,j)

    LLF(i,j)=αLLA(i,j)+(1α)LLB(i,j)

    • (\\alpha\\in[0,1]):加权系数,通常取 (\\alpha=0.5)
    2. LH / HL 边缘融合(绝对值取大)

    LH、HL 对应水平、垂直边缘,采用系数绝对值最大准则:

    L

    H

    F

    (

    i

    ,

    j

    )

    =

    {

    L

    H

    A

    (

    i

    ,

    j

    )

    ,

    L

    H

    A

    >

    L

    H

    B

    L

    H

    B

    (

    i

    ,

    j

    )

    ,

    else

    LH_F(i,j)= \\begin{cases} LH_A(i,j),&|LH_A|>|LH_B|\\\\ LH_B(i,j),&\\text{else} \\end{cases}

    LHF(i,j)={LHA(i,j),LHB(i,j),LHA>LHBelse

    H

    L

    F

    (

    i

    ,

    j

    )

    =

    {

    H

    L

    A

    (

    i

    ,

    j

    )

    ,

    H

    L

    A

    >

    H

    L

    B

    H

    L

    B

    (

    i

    ,

    j

    )

    ,

    else

    HL_F(i,j)= \\begin{cases} HL_A(i,j),&|HL_A|>|HL_B|\\\\ HL_B(i,j),&\\text{else} \\end{cases}

    HLF(i,j)={HLA(i,j),HLB(i,j),HLA>HLBelse

    3. HH 细节与噪声融合(取大+阈值)

    HH 对应细节与噪声,采用绝对值取大+阈值去噪:

    H

    H

    F

    (

    i

    ,

    j

    )

    =

    {

    H

    H

    A

    ,

    H

    H

    A

    >

    H

    H

    B

    ,

     

    H

    H

    A

    >

    T

    H

    H

    B

    ,

    H

    H

    B

    >

    H

    H

    A

    ,

     

    H

    H

    B

    >

    T

    0

    ,

    else

    HH_F(i,j)= \\begin{cases} HH_A,&|HH_A|>|HH_B|,\\ |HH_A|>T\\\\ HH_B,&|HH_B|>|HH_A|,\\ |HH_B|>T\\\\ 0,&\\text{else} \\end{cases}

    HHF(i,j)=

    HHA,HHB,0,HHA>HHB, HHA>THHB>HHA, HHB>Telse

    • (T):噪声阈值

    四、小波逆变换(重构数学原理)

    由融合系数 (LL_F, LH_F, HL_F, HH_F) 重构图像:

    f

    F

    (

    x

    ,

    y

    )

    =

    W

    1

    {

    L

    L

    F

    ,

    L

    H

    F

    ,

    H

    L

    F

    ,

    H

    H

    F

    }

    f_F(x,y) = W^{-1}\\big\\{LL_F, LH_F, HL_F, HH_F\\big\\}

    fF(x,y)=W1{LLF,LHF,HLF,HHF} 其离散形式为:

    f

    F

    (

    x

    ,

    y

    )

    =

    m

    ,

    n

    L

    L

    F

    (

    m

    ,

    n

    )

    ϕ

    (

    x

    2

    m

    )

    ϕ

    (

    y

    2

    n

    )

    +

    m

    ,

    n

    L

    H

    F

    (

    m

    ,

    n

    )

    ϕ

    (

    x

    2

    m

    )

    ψ

    (

    y

    2

    n

    )

    +

    m

    ,

    n

    H

    L

    F

    (

    m

    ,

    n

    )

    ψ

    (

    x

    2

    m

    )

    ϕ

    (

    y

    2

    n

    )

    +

    m

    ,

    n

    H

    H

    F

    (

    m

    ,

    n

    )

    ψ

    (

    x

    2

    m

    )

    ψ

    (

    y

    2

    n

    )

    \\begin{aligned} f_F(x,y) =& \\sum_{m,n} LL_F(m,n)\\phi(x-2m)\\phi(y-2n) \\\\ &+ \\sum_{m,n} LH_F(m,n)\\phi(x-2m)\\psi(y-2n) \\\\ &+ \\sum_{m,n} HL_F(m,n)\\psi(x-2m)\\phi(y-2n) \\\\ &+ \\sum_{m,n} HH_F(m,n)\\psi(x-2m)\\psi(y-2n) \\end{aligned}

    fF(x,y)=m,nLLF(m,n)ϕ(x2m)ϕ(y2n)+m,nLHF(m,n)ϕ(x2m)ψ(y2n)+m,nHLF(m,n)ψ(x2m)ϕ(y2n)+m,nHHF(m,n)ψ(x2m)ψ(y2n)


    import cv2
    import pywt
    import numpy as np
    import matplotlib.pyplot as plt

    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False

    # 读取图像
    img = cv2.imread('cat.jpg')
    if img is None:
    raise ValueError("未找到cat.jpg!请确认路径正确")
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    h, w = img.shape[:2]
    mid = w // 2

    # 生成高模糊图
    img1 = img.copy()
    img1[:, :mid] = cv2.GaussianBlur(img1[:, :mid], (35, 35), 15)
    img2 = img.copy()
    img2[:, mid:] = cv2.GaussianBlur(img2[:, mid:], (35, 35), 15)

    # 转灰度
    gray1 = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)
    gray2 = cv2.cvtColor(img2, cv2.COLOR_RGB2GRAY)

    # 小波融合
    def wavelet_fusion(im1, im2, wavelet='db2', level=1):
    coeffs1 = pywt.wavedec2(im1, wavelet=wavelet, level=level)
    coeffs2 = pywt.wavedec2(im2, wavelet=wavelet, level=level)
    fused_coeffs = []
    for c1, c2 in zip(coeffs1, coeffs2):
    if isinstance(c1, np.ndarray):
    fused = 0.5 * c1 + 0.5 * c2
    fused_coeffs.append(fused)
    else:
    fused_sub = tuple(np.where(np.abs(x) > np.abs(y), x, y) for x, y in zip(c1, c2))
    fused_coeffs.append(fused_sub)
    fused_img = pywt.waverec2(fused_coeffs, wavelet=wavelet)
    return np.clip(fused_img, 0, 255).astype(np.uint8)

    # 执行融合
    fused_gray = wavelet_fusion(gray1, gray2)

    # 可视化
    plt.figure(figsize=(20, 7))
    plt.subplot(1, 3, 1)
    plt.imshow(img1)
    plt.title('左侧高模糊图', fontsize=16)
    plt.axis('off')
    plt.subplot(1, 3, 2)
    plt.imshow(img2)
    plt.title('右侧高模糊图', fontsize=16)
    plt.axis('off')
    plt.subplot(1, 3, 3)
    plt.imshow(fused_gray, cmap='gray')
    plt.title('小波融合后清晰图', fontsize=16)
    plt.axis('off')
    plt.tight_layout()
    plt.show()

    在这里插入图片描述

    五、小波融合的数学意义

  • 变换域最优融合:在小波域完成结构、边缘、细节的分离式处理,比像素域更合理。
  • 能量保持与信息互补:LL 保持能量,LH/HL/HH 补充细节与边缘。
  • 完全重构保证:正交小波满足完全重构条件,保证融合图像无失真。

  • Ⅴ、小波图像压缩的数学原理与工程实现

    小波图像压缩是基于“小波变换能量集中特性”的高效压缩方案,核心优势是:在大幅降低数据量的同时,最大限度保留图像核心视觉信息(远优于传统JPEG的DCT压缩),是医学影像、遥感图像、高清图像压缩的主流技术。

    一、小波压缩的数学本质

    图像经小波分解后,80%以上的能量集中在LL低频分量,LH/HL/HH高频分量仅包含边缘/细节/噪声,且大部分高频系数绝对值趋近于0。 小波压缩的本质是:

    压缩

    =

    小波分解

    +

    高频系数阈值量化

    +

    稀疏编码

    \\text{压缩} = \\text{小波分解} + \\text{高频系数阈值量化} + \\text{稀疏编码}

    压缩=小波分解+高频系数阈值量化+稀疏编码

    解压

    =

    稀疏解码

    +

    逆小波变换

    \\text{解压} = \\text{稀疏解码} + \\text{逆小波变换}

    解压=稀疏解码+逆小波变换

    二、小波压缩的核心数学规则

    设图像

    f

    (

    x

    ,

    y

    )

    f(x,y)

    f(x,y) 经1级小波分解得到系数

    {

    L

    L

    ,

    L

    H

    ,

    H

    L

    ,

    H

    H

    }

    \\{LL, LH, HL, HH\\}

    {LL,LH,HL,HH},压缩流程的数学表达:

    1. 系数阈值量化(核心步骤)

    保留LL分量全部系数,对高频分量按阈值过滤:

    L

    H

    Q

    (

    i

    ,

    j

    )

    =

    {

    L

    H

    (

    i

    ,

    j

    )

    ,

    L

    H

    (

    i

    ,

    j

    )

    >

    T

    0

    ,

    L

    H

    (

    i

    ,

    j

    )

    T

    LH_Q(i,j) = \\begin{cases} LH(i,j), & |LH(i,j)| > T \\\\ 0, & |LH(i,j)| \\leq T \\end{cases}

    LHQ(i,j)={LH(i,j),0,LH(i,j)>TLH(i,j)T

    H

    L

    Q

    (

    i

    ,

    j

    )

    =

    {

    H

    L

    (

    i

    ,

    j

    )

    ,

    H

    L

    (

    i

    ,

    j

    )

    >

    T

    0

    ,

    H

    L

    (

    i

    ,

    j

    )

    T

    HL_Q(i,j) = \\begin{cases} HL(i,j), & |HL(i,j)| > T \\\\ 0, & |HL(i,j)| \\leq T \\end{cases}

    HLQ(i,j)={HL(i,j),0,HL(i,j)>THL(i,j)T

    H

    H

    Q

    (

    i

    ,

    j

    )

    =

    {

    H

    H

    (

    i

    ,

    j

    )

    ,

    H

    H

    (

    i

    ,

    j

    )

    >

    T

    0

    ,

    H

    H

    (

    i

    ,

    j

    )

    T

    HH_Q(i,j) = \\begin{cases} HH(i,j), & |HH(i,j)| > T \\\\ 0, & |HH(i,j)| \\leq T \\end{cases}

    HHQ(i,j)={HH(i,j),0,HH(i,j)>THH(i,j)T

    • T

      T

      T:压缩阈值(

      T

      T

      T 越大,压缩比越高,细节丢失越多)

    • 工程常用阈值:

      T

      =

      k

      mean

      (

      L

      H

      +

      H

      L

      +

      H

      H

      )

      T = k \\cdot \\text{mean}(|LH|+|HL|+|HH|)

      T=kmean(LH+HL+HH)

      k

      k

      k 取1~3)

    2. 压缩比计算

    压缩比

    =

    原始数据量

    保留系数数量

    \\text{压缩比} = \\frac{\\text{原始数据量}}{\\text{保留系数数量}}

    压缩比=保留系数数量原始数据量

    • 1级小波压缩:保留LL(1/4数据)+ 少量高频系数,压缩比可达4:1~10:1;
    • 2级小波压缩:保留LL2(1/16数据),压缩比可达16:1~50:1。

    三、小波压缩的工程流程

  • 小波分解:对图像做1~2级db2小波分解,得到LL/LH/HL/HH;
  • 阈值量化:保留LL全部系数,对LH/HL/HH按阈值过滤(置零小系数);
  • 稀疏编码:仅存储非零系数的位置和值(大幅减少数据量);
  • 解压重构:恢复系数矩阵→逆小波变换→还原图像。
  • import cv2
    import pywt
    import numpy as np
    import matplotlib.pyplot as plt

    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False

    # 读取图像
    img = cv2.imread('lenna.jpg', 0)
    if img is None:
    raise ValueError("未找到lenna.jpg!请确认图片路径正确")

    # 计算原始数据量(字节)
    h, w = img.shape
    original_size = h * w * 1 # 灰度图1字节/像素
    original_size_mb = original_size / 1024 / 1024 # 转换为MB

    # 小波压缩核心函数
    def wavelet_compress(img, wavelet='db2', level=1, k=2):
    # 小波分解
    coeffs = pywt.wavedec2(img, wavelet=wavelet, level=level)
    LL, (LH, HL, HH) = coeffs

    # 计算阈值
    threshold = k * np.mean(np.abs(LH) + np.abs(HL) + np.abs(HH))

    # 高频系数阈值量化
    LH_q = np.where(np.abs(LH) > threshold, LH, 0)
    HL_q = np.where(np.abs(HL) > threshold, HL, 0)
    HH_q = np.where(np.abs(HH) > threshold, HH, 0)

    # 计算压缩后非零系数数量 & 压缩后数据量(仅存储非零系数,模拟实际存储)
    non_zero_LL = np.count_nonzero(LL)
    non_zero_LH = np.count_nonzero(LH_q)
    non_zero_HL = np.count_nonzero(HL_q)
    non_zero_HH = np.count_nonzero(HH_q)
    total_non_zero = non_zero_LL + non_zero_LH + non_zero_HL + non_zero_HH
    compress_size = total_non_zero * 1 # 非零系数1字节/个
    compress_size_mb = compress_size / 1024 / 1024

    # 计算压缩比
    compress_ratio = original_size / total_non_zero

    # 逆变换解压
    coeffs_q = (LL, (LH_q, HL_q, HH_q))
    img_recon = pywt.waverec2(coeffs_q, wavelet=wavelet)
    img_recon = np.clip(img_recon, 0, 255).astype(np.uint8)

    return img_recon, compress_ratio, original_size_mb, compress_size_mb

    # 执行压缩(k=2,压缩比约8:1)
    img_recon, cr, ori_mb, com_mb = wavelet_compress(img, k=2)

    # 打印数据对比
    print(f"===== 小波压缩数据对比 =====")
    print(f"原始图像数据量:{ori_mb:.4f} MB")
    print(f"压缩后数据量:{com_mb:.4f} MB")
    print(f"压缩比:{cr:.1f}:1")
    print(f"数据量减少:{((ori_mb com_mb)/ori_mb)*100:.1f}%")

    # 可视化对比
    plt.figure(figsize=(15, 7))
    plt.subplot(1, 2, 1)
    plt.imshow(img, cmap='gray')
    plt.title(f'原始Lenna图({ori_mb:.4f} MB)', fontsize=14)
    plt.axis('off')

    plt.subplot(1, 2, 2)
    plt.imshow(img_recon, cmap='gray')
    plt.title(f'小波压缩后({com_mb:.4f} MB,压缩比{cr:.1f}:1)', fontsize=14)
    plt.axis('off')

    plt.tight_layout()
    plt.show()

    在这里插入图片描述

    四、小波压缩的核心优势(对比JPEG)

  • 无方块效应:JPEG的DCT变换有8×8块效应,小波压缩是全局变换,视觉效果更自然;
  • 可分级压缩:支持“先传LL轮廓,再补高频细节”,适配不同带宽场景;
  • 能量保持好:80%能量集中在LL分量,低压缩比下仍能保留图像主体;
  • 适合CV处理:压缩后仍可直接做边缘检测/特征提取,无需完全解压。
  • 五、典型应用场景

  • 医学影像(CT/MRI):低压缩比(4:1)下保留病灶细节,满足诊断需求;
  • 遥感图像:高压缩比(20:1)下保留地形轮廓,降低传输/存储成本;
  • 高清图片传输:分级压缩,弱网环境先传模糊轮廓,网络恢复后补细节。

  • Ⅵ、总结

    本文系统介绍了二维离散小波变换(2D‑DWT)的数学原理、分解结构、以及在图像融合与图像压缩中的典型应用。

  • 小波分解将图像拆分为低频轮廓分量

    L

    L

    LL

    LL 与水平、垂直、对角高频分量

    L

    H

    LH

    LH

    H

    L

    HL

    HL

    H

    H

    HH

    HH,实现了图像信息的多尺度、分频带解析,为后续处理提供基础。

  • 小波图像融合通过在变换域对不同图像的系数进行选取与加权,再经逆变换重构,能够将多张互补图像的清晰区域、结构与细节有效合并,得到整体清晰的融合结果,适合同一场景、已对齐图像的信息增强。
  • 小波图像压缩利用小波系数能量集中于低频、高频系数大量趋近于0的特点,通过阈值量化实现稀疏化,在显著降低数据量的同时,较好保留图像主体信息,且无明显方块效应。
  • 整体来看,小波变换具有多分辨率分析、局部化特性和完全重构能力,在图像特征提取、多源信息融合、数据压缩与传输等计算机视觉任务中结构清晰、效果稳定,是经典且实用的图像处理方法。


    上一章

    傅里叶变换:从空域到频域的图像分析【计算机视觉】https://blog.csdn.net/R_Feynman_/article/details/158626321?spm=1001.2014.3001.5502

    下一章

    图像去雾:从直方图增强到暗通道先验【计算机视觉】https://blog.csdn.net/R_Feynman_/article/details/158807328?spm=1001.2014.3001.5501

    赞(0)
    未经允许不得转载:171主机测评 » 小波变换:多分辨率分析与图像小波去噪 / 增强 / 融合【计算机视觉】
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址