Стратегия алгоритма, предотвращающая отскок значений между двумя значениями, находящимися на грани двух "сегментов"
Я отслеживаю различные цветные шары в 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]
Временное усреднение не является идеальным (и не слишком хорошо работает) - и увеличивает задержку.
У меня просто предчувствие, есть целый набор компьютерных / сигнальных наук об этом.