我正在实时跟踪 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]
这很好,但是当初始值的微小变化可能导致它在分区的“边缘”或“敏感”区域快速更改输出单个 Ie 时,就会出现问题。
input: [4 5 4 5 4 5 5 4 ...]
output:[0 1 0 1 0 1 1 0 ...]
即值 4 和 5(落在 1 个像素错误/“噪声”边距内)会导致输出快速变化。
有哪些策略/算法可以处理这些问题,从而进一步帮助我?
我进行了搜索,但似乎我不知道如何为 Google(或 StackOverflow)正确表达问题。
我尝试添加“死区”。即,而不是纯粹划分我在我的输出范围内留下“间隙”,这意味着一个值有时没有输出(即在“桶”之间)。这有点工作,但意味着我有很多未使用的屏幕(即波动范围)......
IE
input = [0 1 2 3 4 5 6 7 8 9]
output = [0 0 0 0 x x 1 1 1 1]
时间平均并不理想(也不能很好地工作) - 并增加了延迟。
我只是有一个“预感”,有一整套关于此的计算机/信号科学。