《数字图像处理》第七章 小波域多分辨率处理 学习笔记

小波域多分辨率处理

    • [0. 前言](#0. 前言)
    • [1. 背景](#1. 背景)
      • [1.1 图像金字塔](#1.1 图像金字塔)
      • [1.2 子带编码](#1.2 子带编码)
    • [2. 多分辨率展开](#2. 多分辨率展开)
      • [2.1 级数展开](#2.1 级数展开)
      • [2.2 尺度函数](#2.2 尺度函数)
      • [2.3 小波函数](#2.3 小波函数)

0. 前言

本章难度大(看不太懂),没有什么详细记录,大家还得自行查阅其他相关博客视频等。

小波变换基于小型波(傅里叶变换以正弦函数为基函数).

FT的结果完全丢失了时间信息, 而小波变换的意义就在于判断什么时间(间隔)出现什么样的频谱成分.

辅助材料: THE WAVELET TUTORIAL (unr.edu)

辅助视频: Wavelets: a mathematical microscope (youtube.com)

第三版教材中图片下载地址: book images downloads

vs2019配置opencv可以查看:VS2019 & Opencv4.5.4配置教程

前情回顾:
数字图像处理第三章 灰度变换和空间滤波 学习笔记
数字图像处理第四章 频率域滤波 学习笔记

数字图像处理第五章 图像复原和重建(内容较简单,就没有详细记录笔记)
数字图像处理第六章 彩色图像处理 学习笔记

后续剧情:
数字图像处理 第九章 形态学图像处理 学习笔记
数字图像处理 第十章 图像分割 学习笔记
数字图像处理 第11章 标识和描述 学习笔记

1. 背景

1.1 图像金字塔

  • 步骤1: 计算第j-1级近似. 第j级通过滤波并以2为因子进行下采样.

  • 步骤2: 通过对步骤1结果进行上采样, 得到第j级预测值.

  • 步骤3: 汁算步骤 2 的预测图像和步骤 1 的输入之间的差. 把得到的结果放在预测残差金字塔的第j级。

c 复制代码
void test04(string path) {
    Mat img = imread(path);
    if (img.empty()) {
        cout << "Error: unable to load the image\n";
        return;
    }

    //构建图像金字塔
    vector<Mat> pyramid;
    pyramid.push_back(img.clone());
    for(int i = 0; i < 4; i++) {
        Mat blurred;
        GaussianBlur(pyramid.back(), blurred, Size(5, 5), 0, 0);
        Mat downsampled;
        pyrDown(blurred, downsampled);
        pyramid.push_back(downsampled);
    }

    //构建残差金字塔
    vector<Mat> residualPyramid;
    for (int i = 1; i < pyramid.size(); i++) {
        Mat upsampled;
        pyrUp(pyramid[i], upsampled, Size(pyramid[i - 1].cols, pyramid[i - 1].rows));
        residualPyramid.push_back(pyramid[i - 1] - upsampled);
    }

    for (int i = 0; i < pyramid.size() - 1; i++) {
        imshow("level_" + to_string(i), pyramid[i]);
        imshow("residual" + to_string(i), residualPyramid[i]);
    }
    waitKey(0);
}

1.2 子带编码

2. 多分辨率展开

多分辨率分析(MRA)中, 尺度函数被建立成一个函数或一幅图像的一系列近似值, 每个近似与其最近邻近似在分辨率方面都用因子2来区分.

2.1 级数展开

2.2 尺度函数

2.3 小波函数

小波函数是小波变换的基础,以下是整个小波函数家族

小波函数的满足条件:

  1. 积分为 0 , ∫ − ∞ + ∞ ψ ( t ) d t = 0 积分为0, \int_{-\infty}^{+\infty}\psi (t)dt =0 积分为0,∫−∞+∞ψ(t)dt=0

  2. 能量有限 , ∫ − ∞ + ∞ ∣ ψ ( t ) ∣ 2 d t < ∞ 能量有限, \int_{-\infty}^{+\infty}|\psi (t)|^2 dt < \infty 能量有限,∫−∞+∞∣ψ(t)∣2dt<∞

将小波函数进行平移缩放

ψ a , b = ψ ( t − b a ) \psi_{a,b}= \psi(\frac{t-b}{a}) ψa,b=ψ(at−b)

其中, b表示平移因子, a表示缩放因子

某一小波函数对于信号y(t)具有的贡献:

T ( a , b ) = ∫ − ∞ + ∞ y ( t ) ⋅ ψ a , b ( t ) d t T(a, b)=\int_{-\infty}^{+\infty}y(t)\cdot \psi _{a,b}(t)dt T(a,b)=∫−∞+∞y(t)⋅ψa,b(t)dt

相关推荐
SUN_Gyq1 分钟前
什么是 C++ 中的模板特化和偏特化? 如何进行模板特化和偏特化?
开发语言·c++·算法
愿天垂怜11 分钟前
【C++】C++11引入的新特性(1)
java·c语言·数据结构·c++·算法·rust·哈希算法
垂杨有暮鸦⊙_⊙14 分钟前
阅读《先进引信技术的发展与展望》识别和控制部分_笔记
笔记·学习
大帅哥_18 分钟前
访问限定符
c语言·c++
特种加菲猫27 分钟前
初阶数据结构之栈的实现
开发语言·数据结构·笔记
小林熬夜学编程1 小时前
【Linux系统编程】第五十弹---构建高效单例模式线程池、详解线程安全与可重入性、解析死锁与避免策略,以及STL与智能指针的线程安全性探究
linux·运维·服务器·c语言·c++·安全·单例模式
明明真系叻1 小时前
第二十二周机器学习笔记:动手深度学习之——线性代数
笔记·深度学习·线性代数·机器学习·1024程序员节
大筒木老辈子1 小时前
Linux笔记---进程:初识进程
linux·服务器·笔记
凯子坚持 c1 小时前
C++之二叉搜索树:高效与美的极致平衡
开发语言·c++
埋头编程~1 小时前
【C++】踏上C++学习之旅(十):深入“类和对象“世界,掌握编程黄金法则(五)(最终篇,内含初始化列表、静态成员、友元以及内部类等等)
java·c++·学习