0

論文1にある透かしアルゴリズムを実装しようとしています。これは紙の一行です:

再番号付けされたすべてのセグメントに対して H レベル DWT を実行します。

次に、シミュレーションのセクションで、著者は実験に使用されるウェーブレットについて説明します。

DWT 変換は、一般的なウェーブレット「Daubechies-1」とレベル H = 3 を採用しました。

H の意味がわかりません。matlab DWT 関数で H=3 を入力するにはどうすればよいですか?

私の実際のコードは次のとおりです。

[cA,cD] = dwt(audio,'db3');

誰かが私を助けることができますか?


1 Ji, Y. & Kim, J. DWT-DCT に基づく定量化されたオーディオ透かしアルゴリズム。マルチメディア、コンピュータ グラフィックス、放送 339–344 (2011)

4

3 に答える 3

4

1. Q:「H(レベル)とは?」

A:ウィキペディアはこの概念をうまく説明していますが、要約しようと思います。レベルごとに、データ (レベル 1 の元のデータ、それ以外の場合は前のレベルからの近似データ) は、近似データと詳細データに分解されます。結果は、異なる周波数ビンのデータを表す係数です。

2. Q: matlab DWT 関数に H=3 を入力するにはどうすればよいですか?

A: ご指摘のとおり、db1 を使用しています。レベル H=3 の正しい係数を抽出するには、このカスケード アルゴリズムを実装する必要があります。コードの大まかなスケッチを次に示します。

nLevels = 3;

% Get the coefficients for level 1
[cA,cD{1}] = dwt(audio,'db1');

% Continue to cascade to get additional coefficients at each level
for n = 2:nLevels
   [cA,cD{n}] = dwt(cA,'db1');
end

% Final coefficients are cA from highest level and cD from each level
于 2013-03-27T03:23:21.193 に答える
3

提供されたソリューションはさらに改善される可能性がありますが、あなたの質問は kl3755 によって非常にうまく回答されました。dwtマルチレベル ウェーブレット変換の場合、コマンドを使用する代わりに、次を使用しwavedecます。

H = 3;
[cA, cD] = wavedec(audio, H, 'db1');
于 2013-03-27T13:09:07.060 に答える
1

Daubechies-1 は Haar ウェーブレットです。ローパスフィルターhとハイパスフィルターの組み合わせですg

>> s = sqrt(2);
>> h = [1  1] / s;
>> g = [1 -1] / s;

dwt の動作を確認するには、シグナルを送信します。

>> x = (1:64) / 64;
>> y = humps(x) - humps(0);


@ kl3755が言っ
 たように、3 回 適用する必要があり
 ます 。-- これは、高速ウェーブレット変換によく使用されます。これは、反復ごとに近似値と詳細を係数 2 でダウンサンプリングします。これが最も使用されているバージョンであるため、ここで FWT を実行します。

dwtfwt

>> c1 = filter (h, s, y);                % level 1 approximation
>> d1 = filter (g, s, y);                % level 1 detail
>> c1 = c1 (2:2:end); d1 = d1 (2:2:end); % downsample
>> c2 = filter (h, s, c1);               % level 2 approximation
>> d2 = filter (g, s, c1);               % level 2 detail
>> c2 = c2 (2:2:end); d2 = d2 (2:2:end); % downsample
>> c3 = filter (h, s, c2);               % level 3 approximation
>> d3 = filter (g, s, c2);               % level 3 detail
>> c3 = c3 (2:2:end); d3 = d3 (2:2:end); % downsample

この再帰をどのようにプログラムするかは簡単にわかります。fwt出力は通常、最終近似 (c3) と詳細信号のみを使用します。

>> fwt_y_3 = [c3 d3 d2 d1];

表現の「魔法」はfwt、フィルターを逆にした後、上記と同じ方法でフィルター処理とアップサンプリングを行うことにより、元の画像を再構築できることです。

>> g=reverse(g); % h is symmetric
>> d3 (2,:) = 0; d3 = d3 (:)';                     % upsample d3
>> c3 (2,:) = 0; c3 = c3 (:)';                     % upsample c3
>> r2 = filter (h, 1/s, c3) + filter (g, 1/s, d3); % level 2 reconstruction
>> d2 (2,:) = 0; d2 = d2 (:)';                     % upsample d2
>> r2 (2,:) = 0; r2 = r2 (:)';                     % upsample r2
>> r1 = filter (h, 1/s, r2) + filter (g, 1/s, d2); % level 1 reconstruction
>> d1 (2,:) = 0; d1 = d1 (:)';                     % upsample d1
>> r1 (2,:) = 0; r1 = r1 (:)';                     % upsample r1
>> ry = filter (h, 1/s, r1) + filter (g, 1/s, d1); % reconstruction of y

すべてが正しいかどうかを確認します。

>> subplot(2,2,1);plot([y' 80+ry']);          
>> subplot(2,2,2);plot([c1' 80+r1(1:2:end)']);
>> subplot(2,2,3);plot([c2' 80+r2(1:2:end)']);
>> subplot(2,2,4);plot(fwt_y_3);hold on;plot(80+c3(1:2:end));hold off

名前dwtは、非間引きウェーブレット変換のさまざまなバージョンを指す場合があります。はfwtはるかに高速で冗長ではありませんが、主な欠点は、シフト不変ではないことです。シフトされた y を再構築して y をシフトすることはできませんfwt。間引きされていないウェーブレット変換はシフト不変です:
1. 連続ウェーブレット変換cwtは上記のとおりですが、ダウンサンプリングとアップサンプリング
  はありません。dl.acm.org/citation.cfm?id=603242.603246 を参照してください
。 transform はサブサンプリングを行いますが、各レベルで可能なすべてのシフトに対して実行します。
  dl.acm.org/citation.cfm?id=1746851 を参照

于 2013-03-27T12:43:44.963 に答える