ピーク検出アプローチ


24

存在するピーク検出アルゴリズムは何ですか?ノイズの多いデータがあり、このデータのピーク検出を実装したいと思います。データは逆で、実際に私は底を決定しようとしています。

これがExcelのデータのスナップショットです。私は両方の底を検出するのが好きです。データをローパスフィルターに通してから、移動平均を行ってピークを決定し、移動平均内で別の検索を行うことを考えました。DSPバックグラウンドはゼロです。これは単なる常識的なアプローチです。専門家が推奨することを聞きたいです。

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


2
検出する2つのボトムは何ですか?明らかなものが1つだけ表示されます。あなたはどんな種類のノイズを持っているのか、それがどこから来るのか知っていますか?
ジェイソンR

ピーク検出戦略に影響するため、特定のハードウェア(リソースの制約)に実装するかどうかを知りたいです。
-anasimtiaz

@JasonR紫色のものは明らかです。ただし、鋭いエッジには外れ値があります。理想的には、それを削って下点を計算したいです。(したがって、私のアプローチではLPフィルターです)水色ではっきりしないフィルターは、紫色のピークの右側の最小点です。紫は本当に問題ではありませんが、水色は心配です。Excelプロットは正義を行いませんが、これは4096が2Vの12ビットADCからのものです。
Ktuncer

@anasimtiazは、これがiPhone / Android上で実行されるかどうかを信じているので、PCのようなものだと言えるでしょう。ハードウェアの制約はありません。
Ktuncer

@Ktuncerあなたが自分で見るためにいくつかの画像を追加しました。
スペイシー

回答:


12

Ktuncer、ここで使用できる多くの方法があります。私がお勧めする1つの方法は、離散ウェーブレット変換(DWT)を使用することです。特に、Daubechiesウェーブレットを見てください。たとえば、Daub-14 / Daub-Tetraを選択します。

基本的にあなたが本当にする必要があるのは、シグナルを「トレンド」し、そこから最小値または最大値を選択することです。それは外れ値を取り除きます。daub-14 / daub-tetraウェーブレット変換はこれを行うのに役立ちます。これは特に信号の性質がわからないため役立ちます。(daub-14を使用すると、14/2 = 7の次数の多項式信号を正確に表すことができ、それ以上必要ないように見えます)。

このウェーブレット変換の計算は、本質的にエネルギーをいくつかの指標に「圧縮」します。これらのインデックスは、基底ベクトルの重みを表します。残りの重みは(理想的には)ゼロに近くなります。信号にノイズがある場合(通常どおり)、通常はゼロだった重みに重みがありますが、単純にゼロにして信号の「ノイズ除去」を行うことができます。それが完了すると、単純な最大/最小検出を実行できます。

より詳細な情報があります。実装方法について議論したい場合は、私にメールを送ってください。これについても同様の仕事をしたことがあります。

編集:ここにダウブテトラDenoiserを示すいくつかの画像があります:

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


1
私はこれが好きです.. matlabにこれのための参照ライブラリがありますか?
Ktuncer

@Ktuncerメールを送ってください。
スペイシー

4

私は専門家になるにはほど遠いですが、ここで私は何をすべきかです:

ゆらぎが重畳されたゆっくり変化する信号があるようです。検索するピークはより強い変動であるため、それを使用して検出します。

  1. X(T)Y(t)

  2. XYσXY

  3. |(XY)(t)|>α×σα

オーバーシュートまたはアンダーシュートは、絶対値を削除し、適切なテストを使用することで具体的に検出できます。それはあなたが探しているものですか?


1
興味深いアプローチ。σとは?(標準開発?)。また、数学は別として、その背後にあるロジックは何ですか?
Ktuncer

σ

4σ

@ user4749これは、外れ値のピークを取得するのに役立ちますが、探している全体のピークを取得できるかどうかはわかりません(「広い」ピークを探していると思いますか?)
Spacey

1
@ Jean-Yvesこんにちは!:-)ノイズはここではガウスであると仮定していますか?(それが標準しきい値を設定できる理由です)。興味がありますが、ノイズが色付けされているとどうなりますか?
スペイシー

4

ピーク検出には、1Dまたは多次元信号用のアプリケーションがかなりあります。これらの信号とピークの解釈がどの程度変化するかを示す例をいくつか示します。

  • 元のポスターの1Dデータ。

  • 画像のハフ変換。各ピークは元の画像の線に対応します。 ここに画像の説明を入力してください

  • 画像の自己相関。各ピークは「周期的パターン」を示す周波数に対応します。 ここに画像の説明を入力してください

  • 画像とテンプレートの「一般化された」相互相関。各ピークは画像内のテンプレートの出現に対応します(最良のピークまたは複数のピークのみを検出することに関心がある場合があります)。

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

  • Harrisコーナーの画像をフィルタリングした結果、各ピークは元の画像のコーナーに対応します。

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

これらは、私が遭遇したピークの定義と検出技術です。確かに、忘れたり知らなかったりする他のものがありますが、他の答えがそれらをカバーすることを願っています。

前処理技術には、平滑化とノイズ除去が含まれます。@Mohammadの答えはウェーブレットに関するものであり、それらのさまざまな使用法はMathematicaのWaveletThresholdのドキュメントで見ることができます(ちなみに私もサンプルを取りました)。

次に、maximaを検索します。アプリケーションに応じて、必要なのはグローバルな最大値(例:画像登録)、いくつかのローカルな最大値(例:ライン検出)、または多くのローカルな最大値(キーポイント検出)のみです。これは、データの最大値を探して繰り返し実行できます次に、選択されたピークの周囲の領域を、残りの最大値がしきい値を下回るまで消去します。または、特定の近傍サイズ内で局所的最大値を探し、値がしきい値を超える局所的最大値のみを保持することができます-一部の局所的最大値までの距離に基づいて局所的最大値を維持することをお勧めします(さらによりいい)。武器庫には形態学的操作もあります。拡張最大値とトップハット変換の両方が適しています。

Harrisコーナーでフィルター処理された画像で、これらの3つの手法の結果を確認してください。

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

さらに、アプリケーションによっては、サブピクセル解像度でピークを見つけようとします。補間は、アプリケーション固有の場合がありますが、便利です。

私が知る限り、特効薬はなく、どの技術が最も効果的かはデータからわかります。

答えがもっとあると本当に嬉しいです。他の分野から来ています。


質問本文のデータをどのように抽出して使用しましたか?きれいな形で見つけることができません。
レオレオポルドヘルツ

1
私は?他の例を使用しました。今日質問をもう一度見ると、質問からデータをきれいに抽出する方法がわかりません。
マティアスオディシオ

-1

私は1つの典型的なピーク検出アルゴリズムはどこのようだと思うrefですpeak(bottom)

for i=1,N   {
       if i=1   {  ref=data(i) }
       else { if data(i)<=ref {ref =data(i) }}
}

3
私はあなたの答えに反対票を投じませんでしたが、それをした人たちはそれを話題外と見なしたと思います。このスケッチは、シーケンスの絶対最小値を検出します。OPは、局所性とノイズに対処する必要があるピークを探しています。
マティアスオディシオ

残念ながら、「標準的な答え」の恩恵にはまったく反応していません。その点で、すべての答えは等しく「無関係」です。最も古いので、私はこの答えに賞金を授与しました。
マティアスオディシオ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.