存在するピーク検出アルゴリズムは何ですか?ノイズの多いデータがあり、このデータのピーク検出を実装したいと思います。データは逆で、実際に私は底を決定しようとしています。
これがExcelのデータのスナップショットです。私は両方の底を検出するのが好きです。データをローパスフィルターに通してから、移動平均を行ってピークを決定し、移動平均内で別の検索を行うことを考えました。DSPバックグラウンドはゼロです。これは単なる常識的なアプローチです。専門家が推奨することを聞きたいです。
存在するピーク検出アルゴリズムは何ですか?ノイズの多いデータがあり、このデータのピーク検出を実装したいと思います。データは逆で、実際に私は底を決定しようとしています。
これがExcelのデータのスナップショットです。私は両方の底を検出するのが好きです。データをローパスフィルターに通してから、移動平均を行ってピークを決定し、移動平均内で別の検索を行うことを考えました。DSPバックグラウンドはゼロです。これは単なる常識的なアプローチです。専門家が推奨することを聞きたいです。
回答:
Ktuncer、ここで使用できる多くの方法があります。私がお勧めする1つの方法は、離散ウェーブレット変換(DWT)を使用することです。特に、Daubechiesウェーブレットを見てください。たとえば、Daub-14 / Daub-Tetraを選択します。
基本的にあなたが本当にする必要があるのは、シグナルを「トレンド」し、そこから最小値または最大値を選択することです。それは外れ値を取り除きます。daub-14 / daub-tetraウェーブレット変換はこれを行うのに役立ちます。これは特に信号の性質がわからないため役立ちます。(daub-14を使用すると、14/2 = 7の次数の多項式信号を正確に表すことができ、それ以上必要ないように見えます)。
このウェーブレット変換の計算は、本質的にエネルギーをいくつかの指標に「圧縮」します。これらのインデックスは、基底ベクトルの重みを表します。残りの重みは(理想的には)ゼロに近くなります。信号にノイズがある場合(通常どおり)、通常はゼロだった重みに重みがありますが、単純にゼロにして信号の「ノイズ除去」を行うことができます。それが完了すると、単純な最大/最小検出を実行できます。
より詳細な情報があります。実装方法について議論したい場合は、私にメールを送ってください。これについても同様の仕事をしたことがあります。
編集:ここにダウブテトラDenoiserを示すいくつかの画像があります:
私は専門家になるにはほど遠いですが、ここで私は何をすべきかです:
ゆらぎが重畳されたゆっくり変化する信号があるようです。検索するピークはより強い変動であるため、それを使用して検出します。
オーバーシュートまたはアンダーシュートは、絶対値を削除し、適切なテストを使用することで具体的に検出できます。それはあなたが探しているものですか?
ピーク検出には、1Dまたは多次元信号用のアプリケーションがかなりあります。これらの信号とピークの解釈がどの程度変化するかを示す例をいくつか示します。
元のポスターの1Dデータ。
画像のハフ変換。各ピークは元の画像の線に対応します。
画像の自己相関。各ピークは「周期的パターン」を示す周波数に対応します。
画像とテンプレートの「一般化された」相互相関。各ピークは画像内のテンプレートの出現に対応します(最良のピークまたは複数のピークのみを検出することに関心がある場合があります)。
これらは、私が遭遇したピークの定義と検出技術です。確かに、忘れたり知らなかったりする他のものがありますが、他の答えがそれらをカバーすることを願っています。
前処理技術には、平滑化とノイズ除去が含まれます。@Mohammadの答えはウェーブレットに関するものであり、それらのさまざまな使用法はMathematicaのWaveletThresholdのドキュメントで見ることができます(ちなみに私もサンプルを取りました)。
次に、maximaを検索します。アプリケーションに応じて、必要なのはグローバルな最大値(例:画像登録)、いくつかのローカルな最大値(例:ライン検出)、または多くのローカルな最大値(キーポイント検出)のみです。これは、データの最大値を探して繰り返し実行できます次に、選択されたピークの周囲の領域を、残りの最大値がしきい値を下回るまで消去します。または、特定の近傍サイズ内で局所的最大値を探し、値がしきい値を超える局所的最大値のみを保持することができます-一部の局所的最大値までの距離に基づいて局所的最大値を維持することをお勧めします(さらによりいい)。武器庫には形態学的操作もあります。拡張最大値とトップハット変換の両方が適しています。
Harrisコーナーでフィルター処理された画像で、これらの3つの手法の結果を確認してください。
さらに、アプリケーションによっては、サブピクセル解像度でピークを見つけようとします。補間は、アプリケーション固有の場合がありますが、便利です。
私が知る限り、特効薬はなく、どの技術が最も効果的かはデータからわかります。
答えがもっとあると本当に嬉しいです。他の分野から来ています。
私は1つの典型的なピーク検出アルゴリズムはどこのようだと思うref
ですpeak(bottom)
。
for i=1,N {
if i=1 { ref=data(i) }
else { if data(i)<=ref {ref =data(i) }}
}