Written by: Dodge(Lang HE) asdsay@gmail.com Updated date: 2023-11-15
VMD, aka Variational Mode Decomposition, is a signal processing tool that decompse the input signal into different band-limited IMFs. Similar to the Project VMD_CPP, Project VMD_2D_CPP is an imitation of that in MATLAB. Spectrum-based decomposition of a 2D input signal into k band-separated modes.
If you are looking for document to describe Variational mode decomposition, please turn to the original paper Variational Mode Decomposition. You can also find the MATLAB codes here.
In this project, I used Eigen3 to refactor VMD in C++, so that we can use it without MATLAB. Also here, I input an image by CImg to test. This sample code was written in MSBuild. You can both run in Visual Studio 2022 or MSVC or CMAKE/GCC, you can use either the sln project file, or the CMakeList.txt, they both work. Detail input and output please check out function VMD_2D in file VMD_2D_Utils.cpp.
PS: This VMD_2D runs too slow. I will use OpenCV to re-write it soon.
作者:Dodge asdsay@gmail.com 更新日期:2023-11-15
VMD(变分模态分解)是一种信号处理算法,可以将输入信号分解为不同带限的内禀模态函数(IMFs)。类似于项目VMD_CPP,本项目VMD_2D_CPP是参考于其在MATLAB中的实现。基于频谱的二维输入信号分解为k个带分离模式。
如果需要描述变分模态分解的文档,可参阅原始论文Variational Mode Decomposition。此链接中有MATLAB代码。
在这个项目中,我用Eigen3实现了C++中的VMD,无须MATLAB。同时,为了输入一张图片进行测试,使用了另一个库CImg。这个示例代码是用MSBuild编写的。 本项目用MSBuild编写,也可在Visual Studio 2022、MSVC或CMAKE/GCC中运行,sln项目文件或CMakeList.txt都能用。详细的输入和输出请查看VMD_2D_Utils.cpp文件中的VMD_2D_CPP函数。
附:这个VMD_2D运行稍慢。我之后会尝试用OpenCV重新实现。