基于Delaunay三角剖分及三次插值的图像二维经验模态分解系统
项目介绍
本项目实现了一个完整的图像二维经验模态分解(BEMD)系统。该系统属于自适应非平稳信号处理领域,专门用于处理图像这种多维、非线性的空间信号。通过将复杂的数字图像分解为多个不同尺度的本征模态函数(IMF)和一个代表整体趋势的残差分量,该系统能够有效地提取图像的边缘、纹理、背景等特征。其核心价值在于不依赖于预定义的基函数(如傅里叶变换的三角函数或小波变换的小波基),而是根据图像自身的极值分布特性进行自适应分解。
功能特性
- 自适应信号生成与读取:系统支持读取外部位图图像,并具备模拟数据生成功能,可自动合成包含高频噪声、中频纹理及低频趋势的复合图像用于验证。
- 多尺度极值检测:利用形态学算子(膨胀与腐蚀)精准识别图像中的局部极大值点和局部极小值点,作为包络拟合的基础。
- 空间三角网格构建:基于离散的极值点集合,隐式利用Delaunay三角剖分算法建立几何关联。
- 精细包络面拟合:采用三次插值(Cubic Interpolation)算法生成平滑的上下包络曲面,确保对图像波动的紧密包裹。
- 分层迭代提取:通过严格的筛选过程(Sifting Process),逐层剥离分量,默认可提取多层IMF及残差。
- 边界稳定性处理:通过在插值过程中加入边界参考点,并结合高斯滤波平滑和缺失值填充,解决了传统插值在边缘缩减的问题。
- 重构验证与可视化:系统提供完整的可视化界面,展示原始图像、各级IMF分量、残差图像以及加和重构后的图像,确保分解过程的无损性。
核心算法与逻辑实现
1. 图像预处理与环境准备
系统启动后首先进行环境清理,确保计算资源充足。在输入阶段,程序会检查指定路径的图像文件,若文件缺失,则利用网格坐标生成三个不同频率的正弦函数之和作为原始信号,并将其映射至灰度空间。
2. 递归分解逻辑
系统设置了两层循环:外层循环控制提取IMF的数量(默认为3个),内层循环执行筛选迭代(针对每个IMF迭代5次)。这种设计在保证计算效率的同时,能够有效分离出图像中的不同视觉特征。
3. 局部极值提取技术
为了定位包络面的支撑点,程序使用半径为2的盘状结构元素对当前残差进行形态学膨胀和腐蚀操作。通过将原始图像与膨胀/腐蚀后的图像进行对比,筛选出局部最大值和最小值像素坐标及对应的灰度值。
4. 边界约束增强
针对插值算法在图像边缘容易产生发散或“断崖式”畸变的问题,程序在极值点集中人工加入了图像四个角点、四条边界上的采样点。这些辅助点在插值计算中起到了锚固作用,保证了包络面对全图区域的覆盖。
5. 空间插值与包络计算
系统调用数值计算模块,将离散的极值点坐标(包含边缘点)作为输入,构建空间曲面。核心采用三次样条(Cubic)插值,若极值点分布过稀疏导致计算失败,系统具备自动补全机制,退而求其次采用线性插值,并对生成的包络面应用5x5高斯模板进行平滑,以滤除插值过程中产生的伪影。
6. 筛选过程(Sifting Process)
在每一轮筛选中,计算上包络面与下包络面的均值。将当前待分解信号减去该均值,得到初步的IMF候选分量。该过程不断迭代,使得均值面趋近于零,从而满足本征模态函数的定义。
关键函数与功能模块分析
- 主控流程模块:负责整个BEMD生命周期的管理。它定义了分解的深度、迭代的精度,并协调数据的输入输出。在获取所有IMF后,还负责将分量相加与原图对比,完成算法的完备性检查。
- 包络面提取模块:系统中最核心的数学计算模块。包含了从极值提取到曲面生成的全过程。该模块集成了一套鲁棒性方案,通过捕获异常并切换插值模式,保证了算法在处理极端图像时的稳定性。
- 缺失数据填充模块:专门用于处理插值区域外的非法值(NaN)。结合了内置函数与自定义的局部近邻搜索算法(knnsearch),确保在各种版本的计算环境下均能返回完整的、无空洞的包络数据。
- 可视化呈现模块:利用多子图布局,同步展示从高频到低频的分解结果。IMF 1通常呈现图像的边缘和细微噪声,IMF 2反映纹理特征,IMF 3和残差则体现光照分布和背景趋势。
使用方法
- 准备图像:将待处理的灰度图像文件放置于程序根目录下,建议命名为 input.bmp(程序支持自动检索)。
- 运行程序:在MATLAB环境下运行主程序脚本。
- 观察结果:程序将自动弹出一个图形窗口,分区域展示分解出的IMF层。
- 获取结果:分解得到的IMF分量存储在元组(Cell Array)中,残差存储在矩阵变量中,可直接用于后续的分析或保存。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 工具箱需求:
* Image Processing Toolbox(用于形态学处理和滤波)。
* Statistics and Machine Learning Toolbox(若需使用内置的缺失值填充功能)。
* MATLAB核心数值库(支持griddata插值)。
- 硬件性能:建议内存不低于 8GB,以处理大尺寸图像的三角剖分运算。