首页 > 解决方案 > 相当于opencv中的wavedec(matlab函数)

问题描述

我正在尝试将 matlab 代码重写为 cpp,但我仍然被这一行阻止:

[c, l]=wavedec(S,4,'Dmey');

在 opencv 中有类似的东西吗?如果有人对此有任何想法,请尝试与它分享并提前感谢。

标签: c++matlabwavelet

解决方案


也许如果您将您的代码与 Python 集成,那么PyWavelet可能是一个选择。

我看到你正在寻找的功能在那里。该函数称为离散迈耶( Dmey)。不知道你打算用它做什么,也许你正在处理一些图像或其他东西,但Dmey没关系,不是很广泛使用。您可能只想找到一些GitHub 代码并集成到您正在做的任何事情中,看看它是否会首先工作,并且基于这些代码您还可以更改当前发布的功能的详细信息(可能会找到更有效的东西)。


一维小波分解 ( wavedec )

在您的代码中,c代表l系数和级别。你正在通过一个Dmey函数的第四级。如果你有一维数据,下面的地图是你的分解的样子,我大致猜想:

在此处输入图像描述

Wavelets 中通常使用两种类型的分解模型,从架构的角度来看,一种称为,类似于完整二叉树

在此处输入图像描述

另一个是您最有可能使用的,计算成本较低,因为如果您愿意,它不会分解树的两个分支。它只是在树的一个分支中进行数学分解。也许,这些图像会散发出一些光芒:

1 天

在此处输入图像描述

2 天

在此处输入图像描述

笔记:

如果您在 MatLab 中有一个工作模型,您可能希望在 MatLab 中查看C/C++ 代码生成,它将自动将 MatLab 代码转换为 C++。

参考:

图片来自维基百科或mathworks.com


推荐阅读