Стратегия алгоритма, предотвращающая отскок значений между двумя значениями, находящимися на грани двух "сегментов"

Я отслеживаю различные цветные шары в OpenCV (Python) в режиме реального времени. Отслеживание очень стабильное. т.е. когда они неподвижны, значения не меняются более чем на 1 / 2 пикселя для центра круга.

Однако я сталкиваюсь с тем, что, безусловно, должно быть хорошо исследовано: мне нужно теперь поместить позиции шаров в более грубую сетку - по сути, просто разделив (+ округляя) позиции x,y.

например

input range is 0 -> 9 
target range is 0 -> 1  (two buckets)

так что я делаю: пол (вход / 5)

input:  [0 1 2 3 4 5 6 7 8 9] 
output: [0 0 0 0 0 1 1 1 1 1]

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

input: [4 5 4 5 4 5 5 4 ...]
output:[0 1 0 1 0 1 1 0 ...]

то есть значения 4 и 5 (которые находятся в пределах ошибки в 1 пиксель / "шумного" поля) вызывают быстрые изменения выходных данных.

Какие стратегии / алгоритмы имеют к ним отношение, так что помогите мне дальше?

Я искал, но, кажется, я не знаю, как правильно выразить проблему для Google (или Stackru).

Я пытался добавить "мертвые зоны". то есть, вместо того, чтобы просто разделить, я оставляю "пробелы" в моем диапазоне выходных данных, что означает, что значение иногда не имеет выхода (то есть между "сегментами"). Это несколько работает, но означает, что у меня есть много (то есть диапазон колебаний) экрана, который не используется...

т.е.

input =  [0 1 2 3 4 5 6 7 8 9]
output = [0 0 0 0 x x 1 1 1 1]

Временное усреднение не является идеальным (и не слишком хорошо работает) - и увеличивает задержку.

У меня просто предчувствие, есть целый набор компьютерных / сигнальных наук об этом.

0 ответов

Другие вопросы по тегам