Podejście do wykrywania pików


24

Jakie są algorytmy wykrywania pików? Mam zaszumione dane i chciałbym wdrożyć wykrywanie pików dla tych danych. Dane są odwrócone, w rzeczywistości próbuję ustalić dno.

Oto migawka danych w programie Excel. Lubię wykrywać oba dna. Pomyślałem o przepuszczeniu danych przez filtr dolnoprzepustowy, a następnie wykonałem średnią ruchomą, w której określam piki, i w ramach średniej ruchomej przeprowadzam kolejne wyszukiwanie. Mam zerowe tło DSP; jest to tylko zdrowy rozsądek. Chciałbym usłyszeć, co zalecają eksperci.

Wpisz opis zdjęcia tutaj


2
Jakie dwa dna chcesz wykryć? Widzę tylko jeden oczywisty. Czy wiesz, jaki masz hałas lub skąd pochodzi?
Jason R

Chciałbym wiedzieć, czy chcesz go wdrożyć na jakimkolwiek konkretnym sprzęcie (ograniczenia zasobów), ponieważ wpłynie to na moją strategię wykrywania szczytów.
anasimtiaz

@JasonR fioletowy jest oczywisty. Jednak ostra krawędź jest odstająca. Idealnie byłoby, gdyby to zostało ogolone, a następnie obliczyć dolny punkt. (stąd mój filtr LP w moim podejściu) Nieoczywisty na jasnoniebieskim jest minimalny punkt po prawej stronie fioletowego piku. Fiolet nie jest tak naprawdę problemem, ale jasnoniebieski jest. Fabuła Excela nie oddaje sprawiedliwości, ale pochodzi z 12-bitowego ADC, gdzie 4096 to 2 V.
Ktuncer

@anasimtiaz w to wierzy lub nie, to będzie działać na iPhone / Android, więc myślę, że możemy powiedzieć, że to jest jak komputer. Brak ograniczeń sprzętowych.
Ktuncer

@Ktuncer Dodałem kilka zdjęć, które możesz zobaczyć na własne oczy.
Spacey,

Odpowiedzi:


12

Ktuncer, możesz tu użyć wielu metod. Jedną z metod, którą poleciłbym, jest użycie dyskretnej transformaty falkowej (DWT), a w szczególności spojrzenie na falkę Daubechies . Wybrałbym, powiedzmy, Daub-14 / Daub-Tetra.

Zasadniczo to, co naprawdę musisz zrobić, to „trendować” swój sygnał, a następnie wybrać minimalną lub maksymalną wartość. Pozbędzie się twoich wartości odstających. Transformacja falkowa daub-14 / daub-tetra może ci w tym pomóc, a to szczególnie pomaga, ponieważ nie znasz natury swojego sygnału. (Używając daub-14, możesz dokładnie przedstawić sygnały wielomianowe stopnia 14/2 = 7, i wygląda na to, że nie będziesz potrzebować więcej niż to).

Obliczenie tej transformaty falkowej zasadniczo „kompresuje” twoją energię w kilka wskazań. Wskazania te reprezentują wagi na podstawie wektorów. Reszta ciężarów będzie (idealnie) zbliżona do zera. Kiedy masz szum w swoim sygnale (tak jak to robisz), te wagi, które zwykle były zerowe, mają teraz pewne wagi, ale możesz je po prostu wyzerować i „odszumić” swój sygnał. Po zakończeniu możesz wykonać proste wykrywanie maks./min.

Jest więcej szczegółów, możesz wysłać mi e-mail, jeśli chcesz omówić sposób jego wdrożenia. Wcześniej robiłem w tej sprawie podobną pracę.

EDYCJA: Oto kilka zdjęć ilustrujących Denubera Daub-Tetra:

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj


1
Podoba mi się to .. Czy istnieje biblioteka referencyjna w Matlabie?
Ktuncer

@Ktuncer Strzel do mnie e-mail.
Spacey

4

Daleki jestem od bycia ekspertem, ale oto co bym zrobił:

Wydaje się, że masz powoli zmieniający się sygnał nałożony na fluktuacje. Szczyty, których szukasz, są silniejszymi fluktuacjami, więc wykryłbym je za pomocą tego.

  1. Niech będzie twoim surowym sygnałem. Weź średnią ruchomą z odpowiedniej liczby próbek, aby stworzyć gładki nośnik.Y ( t )X(T)Y(t)

  2. Jeśli ci się udaXYσXY

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

Przeregulowanie lub przeregulowanie można konkretnie wykryć, usuwając wartość bezwzględną i stosując odpowiedni test. Czy tego szukasz?


1
Ciekawe podejście Co to jest σ? (Std. Dev?). Poza matematyką, jaka jest za tym logika?
Ktuncer

σ

4σ

@ user4749 Pomoże ci to uzyskać szczyty odstające, chociaż nie jestem pewien, czy uzyskasz ogólne szczyty, których szukasz, (zakładam, że szukasz „szerokich” pików?)
Spacey

1
@ Jean-Yves Hello! :-) Czy zakładasz, że hałas jest tu gwiaździsty? (Dlatego możemy ustawić próg standardowy). Jestem ciekawy, a co jeśli kolor jest kolorowy?
Spacey,

4

Wykrywanie pików ma wiele zastosowań, dla sygnałów 1D lub wielowymiarowych. Oto kilka przykładów pokazujących, jak różnorodne mogą być te sygnały i ich interpretacje piku:

  • Dane 1D oryginalnego plakatu;

  • Przekształcenie Hougha obrazu, każdy pik odpowiada linii na oryginalnym obrazie; wprowadź opis zdjęcia tutaj

  • autokorelacja obrazu, każdy pik odpowiada częstotliwości ujawniającej „wzór okresowy”; wprowadź opis zdjęcia tutaj

  • „uogólniona” korelacja krzyżowa obrazu i szablonu, każdy pik odpowiada wystąpieniu szablonu na obrazie (możemy być zainteresowani wykryciem tylko najlepszego piku lub kilku pików);

wprowadź opis zdjęcia tutaj

  • w wyniku filtrowania obrazu dla narożników Harrisa, każdy pik odpowiada narożnikowi oryginalnego obrazu.

wprowadź opis zdjęcia tutaj

Są to definicje i techniki wykrywania szczytów, z którymi się spotkałem - z pewnością są inne, o których albo zapomniałem, albo nie wiem, i mam nadzieję, że pokryją je inne odpowiedzi.

Techniki wstępnego przetwarzania obejmują wygładzanie i odszumianie. @ Odpowiedź Mohammada dotyczy falek i możesz zobaczyć ich różne zastosowania w dokumentacji Mathematica's WaveletThreshold (skąd przy okazji, wziąłem moje przykłady).

Następnie wyszukujesz maksima. W zależności od aplikacji potrzebujesz tylko globalnych maksimów (np. Rejestracja obrazu), kilku lokalnych maksimów (np. Wykrywanie linii) lub wielu lokalnych maksimów (wykrywanie punktów kluczowych): Można to zrobić iteracyjnie, szukając najwyższej wartości w danych następnie kasowanie regionu wokół wybranego piku itp., aż najwyższa pozostała wartość znajdzie się poniżej progu. Alternatywnie możesz szukać lokalnych maksimów w obrębie określonego rozmiaru dzielnicy i zachować tylko te lokalne maksima, których wartości są powyżej progu - niektórzy zalecają, aby lokalne maksima opierać się na ich odległości do reszty lokalnych maksimów (dalsze lepiej). Arsenał obejmuje także operacje morfologiczne: odpowiednie mogą być zarówno rozszerzone maksima, jak i transformata w kształcie kapelusza.

Zobacz wyniki trzech z tych technik na zdjęciu przefiltrowanym dla narożników Harrisa:

wprowadź opis zdjęcia tutaj

Co więcej, niektóre aplikacje próbują znaleźć piki przy rozdzielczości subpikseli. Przydaje się interpolacja, która może być specyficzna dla aplikacji.

O ile mi wiadomo, nie ma srebrnej kuli, a dane pokażą, które techniki działają najlepiej.

Będzie naprawdę miło mieć więcej odpowiedzi, szczególnie. pochodzący z innych dyscyplin.


W jaki sposób wyodrębniłeś dane treści pytania do własnego użytku? Nie mogę znaleźć tego w czystej formie.
Léo Léopold Hertz

1
Czy ja? Użyłem innych przykładów. Patrząc dziś ponownie na pytanie, nie widzę, jak wyodrębnić dane z pytania.
Matthias Odisio

-1

Myślę, że jeden typowy algorytm wykrywania pików jest taki, gdzie refjest peak(bottom).

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

3
Nie głosowałem za twoją odpowiedzią, ale myślę, że została uznana za nie na temat przez tych, którzy to zrobili. Ten szkic wykrywa absolutne minimum sekwencji. OP szuka szczytów, w których trzeba poradzić sobie z lokalizacją i hałasem.
Matthias Odisio

Niestety, nie było żadnej odpowiedzi na nagrodę za „odpowiedź kanoniczną”. Pod tym względem wszystkie odpowiedzi są równie „nieistotne”; Przyznam nagrodę za tę odpowiedź, ponieważ jest ona najstarsza.
Matthias Odisio
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.