2

大致根据上图: 在此处输入图像描述

我需要做一个这样的数组:

array = [(image),(1,ll),(1,lh),(1,hl),(2,ll),(2,lh),(2,hl)]

这里,image是一个numpy的二维数组,其余的数组项是未抽取离散小波变换得到的分量,也是二维数组。

例如,

(1,ll) is level 1 component,channel low-high
(2,hl) is level 2 component, channel high-low

使用 Python 2.7,这相当简单。

udwt = np.asarray(pywt.swt2(image, 'haar',2))
array = [image,
         udwt[0][0] ,    #1,ll
         udwt[0][1][0],  #1,lh
         udwt[0][1][1],  #1,hl
         udwt[1][0] ,    #2,ll
         udwt[1][1][0],  #2,lh
         udwt[1][1][1]]  #2,hl

但是,我无法在 Matlab 中执行此操作。

udwt = ndwt2(image,2,'haar');

组件将在udwt.dec(结构decudwt)中找到,来自1 to 7.

从 Python 代码创建并行:

Python                               Matlab
udwt[0][0]                         My question
udwt[0][1][0]                      udwt.dec{5}
udwt[0][1][1]                      udwt.dec{6}
udwt[1][0]                         udwt.dec{1}
udwt[1][1][0]                      udwt.dec{2}
udwt[1][1][1]                      udwt.dec{3}

(Python's function gives components from level 1 to level n.
 Matlab's function gives components from level n to level 1.(reverse order))

问题是,我没有得到Matlab(1,ll)中第一级的低低分量(近似分量)。

在使用ndwt22 级分解时,它只为每个级别(lh、hl、hh)提供了一个近似值和 3 个细节。

而在 Python 的pywt.swt2()中,我得到了每个级别的近似值,以及每个级别的 3 个细节(lh,hl,hh)。

那么我在哪里可以在 Matlab 中找到这个 1,ll 呢?

我认为是 2,ll (根据这里udwt.dec{1}的答案,第二级的低点而不是第一级。

dec{ 1 }        approximation level n

我应该使用其他功能代替ndwt2吗?

4

0 回答 0