Ok, więc mam histogram (reprezentowany przez tablicę int) i szukam najlepszego sposobu na znalezienie lokalnych maksimów i maksimów. Każdy histogram powinien mieć 3 wierzchołki, z których jeden (pierwszy) prawdopodobnie jest znacznie wyższy od pozostałych.Znajdowanie lokalnych maksimów/szczytów i minimów/dolin histogramów
chcę zrobić kilka rzeczy:
Znajdź pierwszy „dolinę” Po raz pierwszy szczyt (aby pozbyć się pierwszego piku całkowicie na zdjęciu)
znaleźć optymalna wartość "doliny" pomiędzy dwoma pozostałymi pikami w celu oddzielenia obrazu
Już wiem, jak zrobić krok 2, wdrażając wariant Otsu. Ale zmagam się z krokiem 1
W przypadku, gdy dolina pomiędzy dwoma pozostałymi szczytami nie jest wystarczająco niska, chciałbym dać ostrzeżenie.
Ponadto obraz jest bardzo czysty z małym hałasem stanowią
Jaki byłby algorytm brute-force turystyczne kroki 1 i 3? Mógłbym znaleźć sposób na wdrożenie Otsu, ale brutalna siła ucieka mi, matematycznie. Jak się okazuje, jest więcej dokumentacji na temat metod, takich jak otsu, a mniej na po prostu znalezienie szczytów i dolin. Nie szukam niczego więcej niż to, co dostaje pracę (to jest tymczasowe rozwiązanie, musi być możliwe do wdrożenia w rozsądnym czasie, aż będę mógł spędzać na nim więcej czasu)
Robię to wszystko w C#
Każda pomoc, od której należy wykonać czynność, zostanie doceniona! Dziękuję bardzo!
EDIT: kilka danych:
najbardziej histogram mogą być jak pierwsza, z pierwszego piku reprezentujących tło.
mógłbyś podać kilka przykładowych danych proszę? – ose
Czy obszar wokół szczytów wygląda tak, jakby był normalnie rozłożony? Możesz np. dopasuj trzy niezależne normalne dystrybucje do twoich danych. Następnie możesz użyć odchylenia standardowego, aby zdecydować o punktach odcięcia w celu zidentyfikowania szczytów i dolin. – Andreas
Co powiesz na użycie k-środków Algortihm z k = 3, aby uzyskać 3 różne klastry? Każdy środek ciężkości powinien odpowiadać jednemu ze szczytów, jeśli wszystko pójdzie dobrze. – Reinhard