本周我们进行了系统最终的验收测试。这也是解决的验收测试时出现的一个问题。
由于模型每0.1秒对视线进行一次回归,有可能会导致视线位置的波动,影响用户正常使用,因此需要对预测点进行稳定化处理。
算法设计1
起初打算使用滑动窗口的思想,设定一个大小为10的滑动窗口。由于模型每0.1s预测一次视线位置,因此滑动窗口保存1s前的所有预测点。
假设窗口内的预测点为10个向量[x0,x1,x2,x3,x4,x5,x6,x7,x8,x9],计算出相邻点之间的差值向量,差值向量有9个[x1-x0,x2-x1,x3-x2,x4-x3,x5-x4,x6-x5,x7-x6,x8-x7,x9-x8]。计算这9个向量的平均值,作为当前移动的方向。
把该移动方向乘以一个固定的系数α,再加上前一个时刻的视线位置,就得到了当前的视线位置。
后来发现这个平滑方式没有考虑到前一个时刻点的位置,因此不可采纳。
算法设计2
记录前一个时刻点的位置(x0,y0),模型预测的当前时刻的位置(x,y),则视点的位置则变为(x0,y0)+α*[(x,y)-(x0,y0)]。(0<α<1)
后经测试,这种方法只会使点的移动幅度降低,仍然会存在明显的抖动,影响体验,不可采纳。
算法设计3
记录前一个时刻点的位置(x0,y0),模型预测的当前时刻的位置(x,y),设定一个变量α,0<α<1,屏幕长为w,则当||(x,y)-(x0,y0)||<α*w时,视点不变,经测试α取0.2左右时效果较好,能有效地降低抖动,改善用户操作性,予以采纳。