離散(逆)Haar(2D)変換の実装


7

合成すると常に恒等演算が行われるように、Haar変換とその逆の実装に興味があります。私の入力は、指定された範囲内の離散的な序数です。Haar変換の出力も、同様に離散的な序数(または固定小数点)の数値にする必要があります。

私は、入力信号が範囲内に均一に分散されたサンプルで構成されている場合に基づいて作業しました 0..(2n1) そして、私の変換された信号もそうです、そしてそれで、原則として、私の元の信号は逆ハールによって完全に再現されるべきです。

私は、GNU Octaveを使用してこの(Matlab)実装に手を加えました。

http://people.sc.fsu.edu/~jburkardt/m_src/haar/haar.html

これは倍精度値を使用します...変換された表現を元の状態空間と同じ状態空間に合わせるために、round()を使用して変換されたデータの離散表現を確立するように強制します。当然のことながら、逆変換の出力に対して再びround()を使用する必要があることがわかりました。

round(haar_2d_inverse(round(haar_2d(signal))))がほとんどの信号値の恒等関数ではないことは、おそらく驚くことではありません...事例では、通常、再構成された信号-ほぼ対称に見え(少数の再構成されたサンプルで+1または-1)、これはnの選択にほとんど依存しないようです。

私が知りたいのは、順序サンプルで機能するhaar_2dおよびhaar_2d_inverseの「より良い」実装があるかどうかです。異常は、Haar実装自体の結果なのか、中間段階でround()を適用した方法なのでしょうか?後者の場合、丸める前にスケーリングしてこれを修正できますか?


浮動小数点で近似しようとするのではなく、固定小数点演算が必要なようです。
データガイスト

私はあなたが正しいと思います-データガイスト-しかし、root-2への依存は関連があり、これをトリッキーにするかもしれません。グーグル検索でサンプル実装が見つからないことに驚いています。
aSteve

回答:


1

2Dハールでは 2変換が両方向で同時に適用される場合は必要ありません。それはの形になるだろうa+b+c+d2、レベル数に基づいてQポイントが選択される固定小数点の実装のみが必要です。私はこれを使用して組み込みシステム用のCでHaarを実装し、丸め/切り捨てエラーなしで動作しました。

注意:
私の担当者は50ではないので、回答として投稿します。誰かがそれをコメントに移動できるなら、それは良いでしょう。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.