問題タブ [wavelet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - CDF 9/7 離散ウェーブレット変換 (畳み込み)
CDF 9/7ウェーブレットを使用して、1Dリストで単一レベルの離散ウェーブレット変換を実行し、それを再構築する単純な自己完結型プログラムを作成しようとしています。畳み込み/フィルターバンク法を使用して、それがどのように機能するかを把握しています。言い換えると、リストをフィルターで畳み込み、スケール係数を取得し、リストを別のフィルターで畳み込み、ウェーブレット係数を取得しますが、これは他のすべての要素から開始するだけです。次に、アップサンプリング (つまり、要素間にゼロを追加) し、フィルタをウェーブレットに適用して係数をスケーリングし、それらを加算して、元のリストを取得します。
これを Haar ウェーブレット フィルターで機能させることはできますが、CDF 9/7 フィルターを使用しようとすると、同じ入力が生成されません。ただし、結果のリストと元のリストの合計は同じになります。
たたみ込みの非常にばかげたエラーだと確信していますが、それを理解することはできません。左端から開始するのではなく、インデックス「i」にフィルターを配置するなど、畳み込みの一連の順列を試しましたが、何も機能していないようです...おそらく、作成するバグの1つです私はそれを理解したときに頭を平手打ちします。
コードは次のとおりです。
ちなみに、ここの付録からフィルター値を取得しました:http://www1.cs.columbia.edu/~rso2102/AWR/Files/Overbeck2009AWR.pdf、しかし、私はそれらが一連のmatlabサンプルコードで次のように使用されているのを見てきました良い。
java - haar ウェーブレットを生成するには、画像のどの値を使用すればよいですか?
現在、画像内の各ピクセルの RGB 値を取得する Java プログラムがあります。また、値の 2 次元行列で Haar ウェーブレットを計算する方法もあります。しかし、Haar ウェーブレットを計算するメソッドにどの値を指定すればよいかわかりません。各ピクセルの RGB 値を平均し、その上で haar ウェーブレットを計算する必要がありますか? または、r、g、b のいずれかを使用することもできます。画像の一意のフィンガープリントを作成しようとしています。2 つのウェーブレットの内積をとって画像が互いにどの程度類似しているかを確認できるため、これは良い方法であると他の場所で読みました。
Haar ウェーブレットを計算する必要がある値を教えてください。ありがとうジェス
image-processing - Daubechiesフィルターを使用したサブバンド分解
次の2つの8タップフィルターがあります。
ここにそれらはグラフ上にあります:
近似値(画像の下部サブバンド)を取得するために使用しています。これはa(m,n)
次の図にあります。
係数と図は、デジタル画像処理、第3版から入手したので、正しいと思います。星印は、1次元の畳み込み(行または列のいずれか)を示します。下矢印は、1次元(行または列のいずれか)でのダウンサンプリングを示します。
私の問題は、のフィルター係数h0
とh1
合計が1より大きいことです(正確には約1.4またはsqrt(2))。当然、フィルターで画像を畳み込むと、画像が明るくなります。確かに、これが私が得たものです(右側に期待される結果):
誰かがここで問題が何であるかを提案できますか? 畳み込みフィルター係数の合計が1より大きい場合、なぜそれが機能する必要がありますか?
私はソースコードを持っていますが、かなり長いので、ここに投稿しないようにしたいと思っています。どうしても必要な場合は、後であげます。
編集
私がしていることは:
- サブバンドに分解する
- サブバンドの1つをフィルタリングします
- サブバンドを元の画像に再構成します
重要なのは、表示可能なサブバンド分解画像だけではないことに注意してください。サブバンドから元の画像を完全に再構築できる必要もあります。したがって、分解フィルターを補正して画像を明るくするためにフィルター処理された画像をスケーリングする場合、これは私がしなければならないことです:
- サブバンドに分解する
- 近似サブバンドに強度スケーリングを適用する
- サブバンドの1つをフィルタリングします
- 近似サブバンドに逆強度スケーリングを適用する
- サブバンドを元の画像に再構成します
ステップ2はスケーリングを実行します。これは@Benjaminが提案していることです。問題は、ステップ4が必要になるか、元の画像が適切に再構成されないことです。この長い方法が機能します。ただし、教科書には、近似サブバンドではスケーリングが実行されないと明示的に記載されています。もちろん、教科書が間違っている可能性もあります。しかし、もっと可能性があるのは、これがすべてどのように機能するかについて何かを誤解していることです-これが私がこの質問をしている理由です。
編集(2010/7/8)
私はその本の著者に確認のために手紙を書いた。彼は、本の中で言われていることにもかかわらず、あなたはスケーリングを実行しなければならないと言いました。
python - pyWaveletsを拡張してN次元データを処理するにはどうすればよいですか?
これは別のフォーラムへの質問かもしれません。もしそうなら、私に知らせてください。ウェーブレットタグをフォローしているのは14人だけであることに気づきました。
ここでは、pywt(pyWaveletsパッケージ)のウェーブレット分解を複数の次元に拡張するエレガントな方法を紹介します。pywtがインストールされている場合、これは箱から出して実行する必要があります。テスト1は、3Dアレイの分解と再構成を示しています。必要なのは、次元数を増やすことだけです。コードは、4、6、または18次元のデータで分解/再構成する際に機能します。
ここでpywt.wavedec関数とpywt.waverec関数を置き換えました。また、fn_decでは、新しいwavedec関数が古い関数と同じように機能することを示しています。
ただし、1つの落とし穴があります。それは、ウェーブレット係数をデータと同じ形状の配列として表します。結果として、ウェーブレットに関する知識が限られているため、ハールウェーブレットにしか使用できませんでした。DB4のような他の例では、この厳密な境界の端で係数をブリードします(配列のリストとしての係数の現在の表現[CA、CD1 ... CDN]では問題ありません。もう1つの問題は、これを2でしか処理していないことです。データの^Nエッジ直方体。
理論的には、「出血」が起こらないようにすることは可能だと思います。この種のウェーブレット分解と再構成のアルゴリズムは、William Press、Saul A teukolsky、William T. Vetterling、Brian P. Flannery(Second Edition)による「Cの数値レシピ」で説明されています。このアルゴリズムは、他の形式のエッジ拡張(zpdなど)ではなく、エッジでの反射を想定していますが、この方法は、他の形式の拡張で機能するのに十分一般的です。
この作業を他のウェーブレットに拡張する方法について何か提案はありますか?
注:このクエリはhttp://groups.google.com/group/pywaveletsにも投稿されています
ありがとう、阿城
matlab - ウェーブレット係数のしきい値処理
Mathematica と Matlab の両方で、画像データにウェーブレットを使用していくつかの実験を行っています。次のように、基本的に私が望むことを行うと思われる Mathematica のコードを特定しました。
上記は、最大 100 個の係数のみを保持することにより、ウェーブレットのしきい値処理を実行します。しかし、私が好むのは、同じこと (または多かれ少なかれ同じこと) を行う Matlab コードです。
私は Wavelet ツールボックスを少し試してみましたが、今のところあまり成功していません。これまでに最も近いと思われるのは、を使用することwavedec2
です。私はこのようなものを少しいじっています:
結果は似ていますが、これが正しい方法ではないようです。私を混乱させているのは、ここでさまざまな種類の係数 (詳細と近似) が使用されていることだと思います。どこで (どのように) しきい値処理を行うのが適切かわかりません。
ウェーブレットは私にとって非常に新しいものであるため、ガイダンスをいただければ幸いです。
編集:threshold(c,100)
上記のスニペットではc
、1 次元のベクトルとして処理し、上位 100 個の最大 (絶対) 値以外のすべてをゼロにするだけであることに注意してください。
signal-processing - EEGウェーブレット分析
脳波信号の時間周波数解析をしたいのですが。ウェーブレット係数を計算するためのGSLウェーブレット関数を見つけました。その係数から実際の周波数帯域(たとえば、8〜12 Hz)を抽出するにはどうすればよいですか?GSLマニュアルには次のように書かれています。
順方向変換の場合、元の配列の要素は
f_i -> w_{j,k}
、パックされた三角形のストレージレイアウトで離散ウェーブレット変換に置き換えられます。ここJ
で、はレベルのインデックスでj = 0 ... J-1
ありK
、は各レベル内の係数のインデックスですk = 0 ... (2^j)-1
。レベルの総数はですJ = \log_2(n)
。出力データの形式は次のとおりです。
(s_{-1,0}, d_{0,0}, d_{1,0}, d_{1,1}, d_{2,0}, ..., d_{j,k}, ..., d_{J-1,2^{J-1}-1})
私が正しく理解している場合、出力配列には、周波数帯域2 ^ 0 = 1 Hzの振幅が (たとえば)data[]
位置に含まれています。1
data[1]
等々 ...
つまり、周波数1 Hz、2 Hz、4 Hz、8 Hz、16 Hzの振幅しかありません...たとえば、5.3 Hzで振動する周波数成分の振幅を取得するにはどうすればよいですか?周波数範囲全体の振幅、たとえば8〜13 Hzの振幅を取得するにはどうすればよいですか?良好な時間-度数分布を取得するための推奨事項はありますか?
watermark - 画像の離散ウェーブレット変換と LL バンド係数への透かし埋め込み、IDWT-DWT を再度実行するとデータが失われますか?
離散ウェーブレット変換を使用して画像の輝度チャネルを変換し、DWT 出力の LL 帯域の係数を変更することにより、画像の低周波数帯域の透かしを非表示にする画像透かしシステムを作成しています。次に、逆 DWT を実行してイメージを再構築します。
私が抱えている問題は、DWT 出力の係数を変更し、次に逆 DWT、次に DWT を変更すると、変更された係数が根本的に異なることです。
たとえば、2 スケール DWT の LL バンドの出力係数の 1 つは -0.10704 でした。この係数を 16.89 に変更し、データに対して IDWT を実行しました。次に、IDWT の出力を取得し、再度 DWT を実行したところ、16.89 に変更された係数は 0.022 になりました。
DWT と IDWT のコードが正しいことはかなり確信しています。他のライブラリに対してテストした結果、フィルター係数と他のパラメーターが同じ場合、各変換からの出力が一致するからです。(丸め誤差により想定できる範囲内)
私が抱えている主な問題は、おそらくDWTをよく理解していないことです.DWTとIDWTは(丸め誤差などを除いて)かなりロスレスであるはずだと思っていましたが、ここではそうではないようです. .
その位置の他のサブバンド (LH、HL、HH) の係数が重要ではないため、データを失っている可能性はありますか? もしそうなら、これがどの係数に発生するかをどのように判断できますか?
私の埋め込み関数は以下のとおりです。係数は LL バンドで選択され、選択された位置の LH、HH、または HL バンドの絶対値が対応するサブバンドの平均値より大きい場合、「強い」と判断されます。
matlab - N 次元のウェーブレット変換
私はこの驚くべき反応に出くわしましたMATLAB をidwt2
数回適用して、それを自分で理解するために実行しました。ただし、RGB 画像を使用して同じものを使用する方法がわかりません。それで、私は3つの質問があります。
行と列に沿った高周波成分と低周波成分とともに出力に表示される変換された画像のみを使用して、コードを RGB 画像に適用するにはどうすればよいでしょうか。すべての成分の融合を単一の画像として表示することは可能ですか? cat オペレーターを配置する必要があることは承知していますが、その方法がわかりません。
第二に、迷路のようなイメージも得ています! 理由が分からず困っています。この画像がどのように生成されたかを示すステートメントと同じコードも添付しました。
db1
3.の関数シグネチャの用語は何をdwt
意味しますか?
コード:
matlab - Matlab-信号ノイズ除去
-2020の範囲の整数を含むデータのベクトルがあります。
以下は、次の値のプロットです。
これは、ベクターデータからの96要素のサンプルです。上記のプロットからわかるように、要素の大部分は-2、2の間隔にあります。
データからノイズを除去したい。低振幅のピークを排除し、高振幅のピーク、つまりインデックス74のようなピークを維持したいと思います。
基本的には、高振幅のピークと低振幅のピークのコントラストを上げたいだけで、低振幅のピークをなくすことができればと思います。
これを行う方法を教えていただけますか?
関数を試しmapstd
ましたが、問題は、その高振幅ピークも正規化することです。
ウェーブレット変換ツールボックスの使用を考えていましたが、ウェーブレット分解係数からデータを再構築する方法が正確にわかりません。
これを行う方法を教えてもらえますか?
matlab - MatlabのGabor辞書を使用したマッチング追跡アルゴリズム
Gaborアトムで構成されるMatchingPursuit(MP)アルゴリズムを使用して信号を分解するMatlab関数を探しています。
私は適応信号処理にかなり慣れていません。Wavelabをダウンロードしましたが、Gabor辞書を使用したMPアルゴリズムを実装していません。