次のような配列を作成する必要があります。
array = [(image),(1,ll),(1,lh),(1,hl),(2,ll),(2,lh),(2,hl)]
ここで、image は 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(構造体decのフィールド) にあります。udwt1 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)の第 1 レベルの低低コンポーネント (近似コンポーネント) を取得していないことです。
2 レベルの分解に使用ndwt2すると、各レベル (lh、hl、hh) について 1 つの近似と 3 つの詳細のみが得られます。
一方、Python のpywt.swt2()では、レベルごとに近似値を取得し、レベルごとに 3 つの詳細 (lh,hl,hh) を取得します。
では、Matlab のどこでこの 1,ll を見つけることができますか?
ここudwt.dec{1}での回答に基づいて、2、ll(1レベルではなく2レベルのローロー)であると考えています。
dec{ 1 } approximation level n
の代わりに他の関数を使用しndwt2ますか?
