我需要做一个这样的数组:
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
(结构dec
域udwt
)中找到,来自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)中第一级的低低分量(近似分量)。
在使用ndwt2
2 级分解时,它只为每个级别(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
吗?