2

上の図に大まかに基づいて: ここに画像の説明を入力

次のような配列を作成する必要があります。

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ますか?

4

0 に答える 0