信号を平滑化するこの単純な方法に専門用語はありますか?


26

まず、DSPを初めて使用し、実際の教育を受けていませんが、オーディオビジュアライゼーションプログラムを開発しており、一般的な周波数スペクトルビジュアライゼーションのように、FFTアレイを垂直バーとして表現しています。

私が抱えていた問題は、FFT値を直接マッピングしただけでは、オーディオ信号値の変化が速すぎて、心地よい視覚的な出力が得られないことでした。

ここに画像の説明を入力してください

したがって、結果を「滑らかにする」ために値に単純な関数を適用します。

// pseudo-code
delta = fftValue - smoothedFftValue;
smoothedFftValue += delta * 0.2; 
// 0.2 is arbitrary - the lower the number, the more "smoothing"

つまり、現在の値を取得して最後の値と比較し、最後の値にそのデルタの一部を追加しています。結果は次のようになります。

ここに画像の説明を入力してください

だから私の質問は:

  1. これは、用語がすでに存在する、確立されたパターンまたは機能ですか?そうですか、用語は何ですか?上記の「スムージング」を使用していますが、これはDSPに特有の何かを意味し、正しくない可能性があることを認識しています。それ以外は、ボリュームエンベロープに関連しているように見えましたが、まったく同じではありませんでした。

  2. これを解決するためのより良いアプローチやさらなる研究はありますか?

これが馬鹿げた質問であれば、時間と謝罪に感謝します(他の議論を読んで、私の知識は平均よりもはるかに低いことを認識しています)。


1
ここで、平滑化されたFFTと逆FFTを使用すると何が得られるのかと思います。
user253751

最初の回答を別の順序で行う方が簡単ですか?current_value = current_value *減衰; if(new_value> current_value){current_value = new_value; }
リチャードフォースター

@immibisこれは私の理解からのリバーブでなければなりません。私が間違っている場合、私を修正します。
アンドレアス

もちろん、最適化コンパイラは同じ実装を生成します。キーポイントは、(current_value * decay)<new_value <current_valueの場合に正しい結果を取得することでした。
リチャードフォースター

2
私はこの質問が本当に好きです。いくつかのことを試してみようとする人が、膨大な知識ツリー(特に無限インパルス応答フィルター)の最下部で誤って自分自身を発見する人の1つです。一方、すでに木に登っている人は、枝の間ですでに発見したすべてのクールなことを説明することができます
...-DrMcCleod

回答:


37

実装したのは、漏れのある積分器とも呼ばれる単極ローパスフィルターです。信号には差分方程式があります。

y[n]=0.8y[n1]+0.2x[n]

ここで、は入力(平滑化されていないビンの値)、は平滑化されたビンの値です。これは、シンプルで低複雑度のローパスフィルターを実装する一般的な方法です。以前の回答でそれらについて何度か書いたことがあります。[1] [2] [3]を参照してください。y [ n ]x[n]y[n]


4
これに感謝します。とても助かります。自分でグーグルをすることは、DSPのことになると海で失われるようなものです。検索する用語がいくつかあるだけで、把握することができます。
マイケルブロムリー

3
私は疑問に思う。OPは、周波数ドメインの個々のビンの一連の値にこのフィルターを適用すると思います。時間領域の一連のサンプルに通常のローパスが適用されます。効果は同じですか(高周波部分はまだ信号内にあるので、そうは思いませんが、強度の変化はよりゆっくりですか?)?そうでない場合、フィルターが時間領域の信号に対して実際に行うことについて詳しく説明してください。
ジョナスシェーファー

3
@JonasWielicki目標は個々のビンの値を平滑化することだと思うので、急激に変化することはありません。また、ローパスフィルター(回答で説明)は、そのドメイン(時間または周波数またはその他)に関係なく、任意の時系列に適用できます。
アーピットジャイン

@arpitjainそれはわかります。あなたがそれを行うとき、それが時間領域にどのように影響するかについての理解(必ずしもあなた、OP、または回答者によってではない)があるかどうかを知りたいです。
ジョナスシェーファー

@JonasWielicki操作は周波数領域での畳み込みであるため、時間領域での(対応する(逆)フーリエ変換の)乗算に変換されます。
MBaz

17

警告:いくつかの歴史、古い論文(私はそれらが大好きです)、パンチカードが含まれています!

a=0.2

y(n)=y(n1)+a[x(n)y(n1)],
y(n)=ax(n)+(1a)y(n1).

上記の最初のバージョンはそれほど自然ではありませんが、1回の乗算を避け、何らかの形でより効率的です。両方の式は、線形因果的無限インパルス応答フィルターを生成します。ストーリーは、ポアソン、コルモゴロフ-ズルベンコ適応フィルター、ブラウン(在庫管理の統計的予測。マッグヒル、1959)、ホルト(1957)、ウィンターズ(1960)にまで遡ります。これは、文献全体で異なる名前で知られている再帰的なフィルタリングスキームとして実装されています

  • 一次指数平均化ローパスフィルタ、
  • 指数平均器、
  • 指数平滑化
  • 指数移動平均(EMA)、
  • 指数加重移動平均(EWMA)、
  • ブラウンの単純(線形)指数平滑法(SESと呼ばれることもあります)、
  • ARIMA(0,1,1)モデル。

名前の「指数関数」は、指数関数的減衰をサンプリングするインパルス応答に関連しており、指数関数的減衰をサンプリングします:。h[n]=(1a)u[n]an

歴史的なメモとして、ロバートG.ブラウンとアーサーD.リトルは、1956年に明らかにタバコ産業の需要を予測するため指数平滑法でこの方法を使用しました。もう少し歴史と説明は、Holt-Winters Forecasting for Dummies(またはDevelopers)-Part Iにあります。Peter Zehnaは、指数平滑化に関するいくつかの備考、1966年に批判的なレビューを提供しています。オペレーションリサーチアンドマネジメントサイエンス百科事典(Googleブック)の R.ブラウンの章は、1944年に歴史をさかのぼります。

指数平滑法、p。 205、オペレーションズリサーチアンドマネジメントサイエンスの百科事典

指数平滑法、p。 206、オペレーションズリサーチアンドマネジメントサイエンスの百科事典

多くの方法はこの平滑化を拡張しますが、データに傾向や季節性がある場合、妥当性が失われます。そのようなもののいくつかは、二重または三重指数平滑化、およびホルト-ウィンターフィルターとして知られています。

次のことも確認できます。この「単純なフィルター」はどのように機能しますか?


1
おかげで、これは素晴らしいです。既に述べたように、私はこれに全く新しいので、あなたの答えのいくつかは私が完全に感謝するためにさらなる研究を必要としますが、それは確かに私の質問に答え、そしていくつかに答えます。他の以前の答えがなければ、これはもちろん答えとして受け入れる価値があります。
マイケルブロムリー

1
小さな修正、冬1(960)は冬(1960)になります
SGR

9

これを解決するためのより良いアプローチやさらなる研究はありますか?

オーディオメーターの通常のアプローチは、「損失ピーク検出器」です。

if new_value > current_value
  current_value = new_value;
else
 current_value = current_value * decay;  

これは、信号の新しい、ピーク、またはトランジェントにすぐに反応しますが、しばらくは残るので、はるかに多忙な画像を作成します。減衰は0から1の間の定数である必要があります。0が瞬間的で1が決してない状態で、バーがどのくらい速く行われるかを制御します。


これは大学で行った課題と類似していることに注意してください。非常に小さな音のMIDI(以前の課題で作成された)は、三角形の(完全に長方形の)ノート信号を畳み込む(ピークに合わせてスケーリングする)ことで改善されました信号が非常に急激に(瞬時ではないが)上昇し、その後徐々に減衰して、「自然に」消えた鋭い音を生成します。この場合、歌の音の大幅改善(この場合はエリーゼ)。
KRyan

new_valueより大きい場合は保持したいと思うと思いますcurrent_value * decay
-user276648

6

米国のDoD請負業者の円の周りでは、この特定のフィルターは「アルファフィルター」と呼ばれます。これは、伝統的に「アルファ」と呼ばれる1つのパラメーターで特徴付けられるためです。

これは、単純なアナログRCローパスフィルターに直接類似しています。

これらは非常にシンプルで、重大な制限がありますが、より複雑な(そして複雑な!)フィルターよりも紛れもない利点があり、問題のある領域を避ければ、仕事が完了します。


3

他の回答で述べたように、これは単極再帰フィルター、無限インパルス応答(IIR)フィルターの一種です。

この機能やその他のDSP機能に関する情報の優れたリソースは、Steven W. Smithの『The Scientist and Engineer's Guide to Digital Signal Processing』です。 無限インパルス応答(IIR)

...出力信号の各ポイントは、入力信号からの値に「a」係数を乗算し、出力信号から以前に計算された値に「b」係数を乗算し、積を加算することによって検出されます。これは計算されるサンプルに対応するため、b0の値はありません。式19-1は再帰式と呼ばれ、それを使用するフィルターは再帰フィルターと呼ばれます。フィルターを定義する「a」と「b」の値は、再帰係数と呼ばれます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.