二维经验模式分解(BEMD)图像自适应分析系统
项目介绍
本项目实现了一套完整的二维经验模式分解(BEMD)算法,旨在对复杂、非平稳的图像信号进行自适应分解。BEMD技术能够将图像在不需要预训练或预设基函数的情况下,根据其自身的时间尺度特征,分解为一系列具有不同特征尺度的二维本征模态函数(BIMF)以及一个代表平滑背景趋势的残余分量。该系统适用于图像去噪、特征提取、图像增强以及纹理分析等多种数字图像处理任务。
功能特性
- 自适应分解:算法完全基于图像自身的局部特征(极值点)进行分解,具有高度的自适应性。
- 多尺度分析:通过提取不同频率和尺度的BIMF,实现对图像从细节到整体轮廓的逐层解析。
- 自定义配置:支持设置最大分解数量、筛选迭代次数以及停止迭代的对比标准(SD)。
- 鲁棒的包络构造:结合样条插值思想与平滑滤波,生成稳定的上、下包络面。
- 自包含实现:内部实现了图像填充、卷积滤波等基础函数,降低了对外部特定工具箱的依赖。
- 可视化验证:自动生成原图、各级BIMF及残余分量的对比图,并计算重构误差以验证分解精度。
系统要求
- 软件环境:MATLAB R2013a 或更高版本。
- 硬件要求:建议 4GB 以上内存,以支持大尺寸图像的插值计算。
- 工具箱依赖:主要依赖核心MATLAB函数,代码中已包含自定义的图像处理基础函数。
实现逻辑与算法分析
系统通过一个主入口函数驱动,严格遵循BEMD的筛选过程(Sifting Process),具体逻辑如下:
#### 1. 信号初始化与测试数据生成
系统首先生成一个128x128的模拟图像作为分析对象。该图像由高频正弦信号、中频高斯脉冲和线性低频趋势叠加而成,并加入了适量的高斯噪声,用以模拟真实的非平稳复杂信号环境。
#### 2. 图像分解主循环
分解过程分为内外两层循环:
- 外层循环:负责提取指定数量的BIMF。每提取出一个分量后,从当前残余信号中减去该分量,再进行下一轮提取。
- 内层循环(筛选过程):对当前的残余分量进行多次迭代。通过计算均值面并减去该面,逐步使提取出的信号满足BIMF的定义。
#### 3. 核心功能函数实现
算法采用3x3的滑动窗口在图像上进行局部遍历。若中心像素值大于或小于邻域内所有点,则判定为极大值或极小值点。为了解决插值过程中的边界发散问题,算法在图像的四个顶点手动添加了虚拟极值点,确保插值面覆盖整个区域。
系统利用获取的散乱极值点坐标和对应象素值,通过自然邻域法(Natural Neighbor)和线性插值构建连续的曲面。生成的包络面随后经过一个5x5的均值滤波器进行平滑处理,以防止包络面因噪声或离散点产生剧烈的跳变。
将拟合得到的上包络面和下包络面取算术平均,得到图像的局部均值面。从当前待分解信号中减去此均值面。
系统计算连续两次迭代结果之间的标准差(SD)。当SD值降至设定阈值以下,或达到最大迭代次数时,认为当前分量已收敛,完成一个BIMF的提取。
#### 4. 后处理与验证
- 残余分量生成:当达到最大分解层数或极值点过少无法继续插值时,剩下的部分即为残余分量。
- 重构与误差分析:通过将所有BIMF与残余分量重新求和,计算其与原始图像的Frobenius范数相对误差。在逻辑正确的实现中,该误差值通常应达到机器精度量级。
使用方法
- 启动MATLAB软件。
- 将系统代码文件放置在当前工作路径下。
- 在命令行窗口输入入口函数名运行。
- 程序将自动执行分解流程,并在完成后弹出一个包含原始图像、三个BIMF分量和残余分量的多子图窗口。
- 在命令行窗口查看重构误差,验证分解的完整性。