Сегментация сигнала акселерометра - PullRequest
4 голосов
/ 03 декабря 2010

alt text

У меня есть сигнал 1D акселерометра (только одна ось).Я хотел бы создать надежный алгоритм, который сможет распознавать некоторые формы в сигнале.

Сначала я применяю фильтр скользящей средней к необработанному сигналу.На прилагаемом изображении необработанный сигнал окрашен в красный цвет, а усредненный сигнал - в черный.Как видно из рисунка, некоторые тренды видны из усредненного (черного) сигнала - сигнал содержит 10 повторений пиковой модели, где ускорение достигает максимума, а затем падает вниз.Я пометил начало и конец этих паттернов крестиком.

Поэтому моя цель - найти отмеченные позиции автоматически.Проблема, затрудняющая извлечение шаблона:

  • начало шаблона может иметь значение y, отличное от конца шаблона
  • шаблон может иметь более одного пика
  • У меня нет какой-либо конкретной информации о времени (от начала до конца схемы, которая занимает единицы времени)

Я пробовал разные подходы, которые в значительной степени домашниепоэтому я не буду упоминать их - я не хочу, чтобы вы были предвзяты из-за моего мышления.Существуют ли какие-то стандартные или общепринятые подходы для такого извлечения образцов?Или, может быть, кто-нибудь знает, как решительно решить проблему?

Любая идея будет оценена.

Ответы [ 2 ]

2 голосов
/ 03 декабря 2010

Сохраняйте это простым!
Похоже, что скользящее среднее достаточно хорошее демпферное устройство ; оставьте его как есть, возможно, увеличивая или уменьшая количество выборок, только если вы заметили, что он либо оставляет слишком много шума, либо удаляет слишком много сигнала соответственно. Затем вы работаете исключительно с этим усредненным сигналом.

Маркеры, которые вы ищете, кажутся относительно простыми для обнаружения. Выраженные на английском языке, эти маркеры:
Targets = точки перегиба на усредненной кривой показаний, когда наклон становится заметно от отрицательного к положительному.
Поэтому вы должны быть в состоянии обнаружить эту ситуацию путем сравнения значений наклона, рассчитанных вместе со скользящим средним , по мере появления каждого нового значения чтения (конечно, с небольшой задержкой, как, конечно, наклон в данная точка может быть рассчитана только при наличии усредненного показания для следующей [нескольких] точек [с])

Однако, чтобы избежать ложного обнаружения, вам нужно определить несколько параметров, направленных на фильтрацию нежелательных шаблонов . Эти параметры будут более точно определять значение « заметно » в приведенном выше определении цели.

Ориентировочно формула для определения интересующей точки может быть такой простой, как эта
(- 1 * S (t-1) + S t )> Min_delta_Slope
где
S - наклон (подробнее об этом) в моменты времени t-1 и t соответственно
Min_delta_Slope - это параметр, определяющий, насколько «резким» будет изменение минимального наклона.
Предполагая нормализованные единицы t и Y, мы можем установить параметр Min_delta_Slope вблизи или даже после 1. Интуитивно значение 1 (опять же в нормализованных единицах) будет означать, что мы нацеливаемся на точки, где изогнутые «прибыли» с нисходящим уклоном, скажем, 50 % и покинул точку с наклоном вверх 50% (или 40% + 60% или .. 10%, т.е. почти плоско и 90%, то есть почти вертикально).
Чтобы избежать обнаружения точек в случае, когда это просто небольшое падение кривой, мы можем принять во внимание больше точек, используя более красивую формулу, например, скажем

(Pm2 * S (т-2) + Pm1 * S (т-1) + P0 * S т + Pp1 S (t + 1) )> Min_delta_Slope
где
Pm2, Pm1, P0 и Pp1 являются коэффициентами, дающими относительную важность наклону в различных точках до и после точки интереса. (Pm2 и Pm1 обычно отрицательные значения, если только мы не используем только положительный параметр и не используем отрицательные знаки в формуле)
S t +/- n - это наклон в разное время
а Min_delta_Slope - это параметр, определяющий, насколько «резким» является изменение минимального наклона, которое мы хотим.
Интуитивно понятно, что эта формула с 4 точками будет учитывать форму кривой в точке, которая за два чтения до и два за пределами интересующей точки (в дополнение к рассмотрению точки непосредственно до и после нее). Учитывая правильные значения параметров, формула потребует, чтобы кривая неуклонно падала «вниз» для двух временных срезов, а затем неуклонно повышалась в течение следующих двух временных срезов, следовательно, избегая пометки меньших провалов на кривой.
Альтернативным способом достижения этого может быть вычисление наклона с использованием разницы в значении Y между [усредненным] показанием из двух (или более) временных интервалов назад и показателем текущего [усредненного] показания , Эти два подхода схожи, но дают немного другой результат; как правило, мы можем сказать больше о желаемой форме кривой с параметрами Pm2, Pm1, P0 и P1.

2 голосов
/ 03 декабря 2010

Возможно, вы захотите взглянуть на сегментацию водосбора, которая делает нечто похожее (деление ландшафтов на отдельные бассейны). Как ни странно, я на самом деле пишу кандидатскую диссертацию, которая в настоящее время много использует водораздел (серьезно:))

...