Apa algoritma deteksi puncak yang ada? Saya memiliki data yang bising, dan saya ingin menerapkan deteksi puncak untuk data ini. Data terbalik, sebenarnya saya mencoba menentukan bagian bawah.
Ini adalah snapshot data di Excel. Saya suka mendeteksi kedua pantat. Saya berpikir tentang meneruskan data melalui filter low-pass dan kemudian melakukan rata-rata bergerak di mana saya menentukan puncak dan dalam rata-rata bergerak saya melakukan pencarian lain. Saya tidak memiliki latar belakang DSP; ini hanya pendekatan akal sehat. Saya ingin mendengar apa yang para ahli rekomendasikan.
filters
peak-detection
Ktuncer
sumber
sumber
Jawaban:
Ktuncer, ada sejumlah metode yang dapat Anda gunakan di sini. Salah satu metode yang saya rekomendasikan adalah menggunakan Discrete Wavelet Transform, (DWT), dan khususnya, lihat Daubechies Wavelet . Saya akan memilih, katakanlah, Daub-14 / Daub-Tetra.
Pada dasarnya apa yang benar-benar perlu Anda lakukan adalah 'tren' sinyal Anda, dan kemudian dari sana, lakukan pick min atau max. Itu akan menyingkirkan outlier Anda. Transformasi wavelet daub-14 / daub-tetra dapat membantu Anda melakukan ini, dan ini membantu terutama karena Anda tidak tahu sifat sinyal Anda. (Menggunakan daub-14, Anda dapat secara akurat mewakili sinyal polinomial derajat 14/2 = 7, dan sepertinya Anda tidak perlu lebih dari itu).
Perhitungan wavelet ini pada dasarnya mengubah 'memampatkan' energi Anda menjadi beberapa indeks. Indeks tersebut merepresentasikan bobot berdasarkan vektor basis. Sisa bobot akan (idealnya) mendekati nol. Ketika Anda memiliki noise dalam sinyal Anda (seperti yang Anda lakukan), bobot yang biasanya nol memiliki beberapa bobot sekarang, tetapi Anda dapat dengan mudahnya mengeluarkannya dan 'membatalkan sinyal Anda. Setelah selesai, Anda dapat melakukan deteksi maks / menit sederhana.
Ada lebih banyak detail yang terlibat, Anda dapat mengirim saya email jika Anda ingin membahas bagaimana menerapkannya. Saya telah melakukan pekerjaan serupa sebelumnya.
EDIT: Berikut adalah beberapa gambar yang menggambarkan Daub-Tetra Denoiser:
sumber
Saya jauh dari ahli, tetapi inilah yang akan saya lakukan:
Anda tampaknya memiliki sinyal yang bervariasi secara perlahan yang ditumpangkan dengan fluktuasi. Puncak yang Anda cari adalah beberapa fluktuasi yang lebih kuat, jadi saya akan mendeteksi mereka menggunakan itu.
Overhoot atau undershoot dapat dideteksi secara khusus dengan menghapus nilai absolut dan menggunakan tes yang tepat. Apakah itu yang Anda cari?
sumber
Deteksi puncak memiliki beberapa aplikasi, untuk sinyal 1D atau multidimensi. Berikut adalah beberapa contoh yang menunjukkan betapa beragamnya sinyal-sinyal ini dan interpretasinya terhadap suatu puncak:
Data 1D poster asli;
Transformasi gambar yang besar, setiap puncak sesuai dengan garis pada gambar asli;
autokorelasi suatu gambar, setiap puncak berhubungan dengan frekuensi yang mengungkapkan "pola periodik";
korelasi silang "umum" dari gambar dan templat, setiap puncak sesuai dengan kemunculan templat pada gambar (kami mungkin tertarik untuk mendeteksi hanya puncak terbaik atau beberapa puncak);
Ini adalah definisi dan teknik deteksi puncak yang saya temui - tentu saja ada yang lain yang saya lupa atau tidak tahu, dan mudah-mudahan jawaban lain akan membahasnya.
Teknik preprocessing termasuk smoothing dan denoising. @ Jawaban Mohammad adalah tentang wavelet, dan Anda dapat melihat berbagai penggunaannya dalam dokumentasi WaveletThreshold Mathematica (di mana saya juga mengambil contoh dari, by the way).
Kemudian Anda mencari maxima. Bergantung pada aplikasi Anda, Anda hanya perlu maxima global (mis. Registrasi gambar), beberapa maxima lokal (mis. Deteksi garis), atau banyak maxima lokal (deteksi titik kunci): Ini dapat dilakukan secara iteratif, mencari nilai tertinggi dalam data kemudian menghapus wilayah di sekitar puncak yang dipilih, dll. hingga nilai sisa tertinggi di bawah ambang batas. Sebagai alternatif, Anda dapat mencari maxima lokal dalam ukuran lingkungan tertentu, dan hanya menyimpan maxima lokal yang nilainya di atas ambang batas - beberapa merekomendasikan untuk menjaga maxima lokal berdasarkan jaraknya dengan sisa maxima lokal (selanjutnya lebih baik). Gudang senjata juga memiliki fitur operasi morfologis: Maxima yang diperluas dan transformasi top-hat keduanya cocok.
Lihat hasil tiga teknik ini pada gambar yang difilter untuk sudut Harris:
Selain itu, beberapa aplikasi mencoba menemukan puncak pada resolusi sub-pixel. Interpolasi, yang bisa khusus untuk aplikasi, berguna.
Sejauh yang saya tahu, tidak ada peluru perak, dan data akan menunjukkan teknik mana yang paling berhasil.
Akan sangat menyenangkan memiliki lebih banyak jawaban, khususnya. berasal dari disiplin ilmu lain.
sumber
Saya pikir salah satu algoritma deteksi puncak khas adalah seperti ini mana
ref
adalahpeak(bottom)
.sumber