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.
filters
peak-detection
Ktuncer
źródło
źródło
Odpowiedzi:
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:
źródło
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.
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 )
Jeśli ci się udaX- Y σ X- Y
Przeregulowanie lub przeregulowanie można konkretnie wykryć, usuwając wartość bezwzględną i stosując odpowiedni test. Czy tego szukasz?
źródło
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;
autokorelacja obrazu, każdy pik odpowiada częstotliwości ujawniającej „wzór okresowy”;
„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);
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:
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.
źródło
Myślę, że jeden typowy algorytm wykrywania pików jest taki, gdzie
ref
jestpeak(bottom)
.źródło