2010-05-07 2 views
2

У меня есть образец, который может создать несколько шумный выход. Образец является результатом некоторой обработки изображения с камеры, которая указывает заголовок капли определенного цвета. Это угол от около -45 ° до +45 °, или a NaN, что означает, что капля на самом деле не отображается.Использование экспоненциального сглаживания с значениями NaN

Чтобы бороться с шумными данными, я чувствовал, что exponential smoothing будет делать трюк. Однако я не уверен, как обрабатывать значения NaN.

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

Любые идеи о том, как я мог бы реализовать такую ​​экспоненциальную гладкость?

ответ

1

Как насчет сохранения двух распределений? Первым может быть ваш сглаженный заголовок blob, как обычно, за исключением случаев, когда вы получаете NaN, вместо этого просто вводите то, что было последним увиденным значением, отличным от NaN (или некоторым другим значением по умолчанию); другой - «NaN-распределение», который просто получает 0 для каждого значения, отличного от NaN, и 1 для каждого NaN (или что-то в этом роде).

Таким образом, даже если он будет закрыт, ваш основной дистрибутив будет продолжать прогнозирование на основе «последнего известного заголовка», не получая данные об мусоре или испортить сглаживание, но вы также получите одновременный всплеск на NaN- чтобы вы знали, что что-то происходит.

0

Ну, это действительно зависит от того, что вы делаете с сглаженными данными. Одна вещь, которую вы можете попробовать, - это иметь экспоненциально взвешенное сглаживание скорости блоба в дополнение к его местоположению, где NaNs вносят нулевое значение. Когда вы сталкиваетесь с NaN, вы можете заменить его на проецируемую позицию на основе предыдущей позиции и сглаженной скорости. Сглаживая скорость, вы можете предотвратить целую последовательность NaNs от создания совершенно сумасшедшего большого или небольшого значения. Это может привести к тому, что значения будут равны [-45,45], что должно учитывать, что оно вне поля зрения и сторона, на которую он оставил представление. Теперь вам нужно будет убедиться, что это дает хорошие результаты в алгоритме компьютерного зрения. Если нет, вы также можете попробовать заменить NaN на предыдущее значение или на ноль или просто игнорировать NaN и посмотреть, что работает лучше всего.

+0

Одна из проблем заключается в том, что я хочу _preserve_ 'NaN', когда они появляются в группе, так что я могу быть уверен, что blob вышел из поля зрения, а не просто сложно обнаружить. Капля, о которой идет речь, фиксирована, камера движется, и blob также может быть скрыт, что еще более усложняет проблему – Eric