我需要制作一个这样的数组:
array = [(image),(1,ll),(1,lh),(1,hl),(2,ll),(2,lh),(2,hl)]
这里,图像是一个numpy 2D数组,其余的数组项是通过未抽取的离散小波变换获得的组件,它们也是2D数组。
例如,
(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
的{{1}} dec
结构的udwt
字段中找到。
从Python代码创建并行:
1 to 7
问题是,我没有在Matlab(1,ll)中得到第一级低 - 低分量(近似分量)
。使用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))
进行2级分解时,它只给出了一个近似值和每个级别的3个细节(lh,hl,hh)。
然而在Python的pywt.swt2()中,我得到了每个级别的近似值,以及每个级别的3个细节(lh,hl,hh)。
所以我在Matlab中找到这个1,ll?
我认为ndwt2
为2,ll(第2级的低 - 低,而不是基于答案here的第1级。
udwt.dec{1}
我应该使用其他功能代替dec{ 1 } approximation level n
吗?