发明名称 基于前次偏差的控制点平滑化方法
摘要 本发明公开了一种基于前次偏差的控制点平滑化方法。基于前次预测的偏差来动态调整控制点的位置,实现远程控制点的平滑化处理。本发明是对Dead-reckoning方法进行改进,Dead-reckoning方法利用了对象的速度、加速度参数进行动态预测,而本发明不仅应用了对象的速度、加速度,并且利用了以往的偏差进行微量的调整,提高了控制点运动的预测精度。弥补网络抖动带来的不良结果,展示给用户平滑的远程控制点移动轨迹,达到较好的感知效果。
申请公布号 CN100416551C 申请公布日期 2008.09.03
申请号 CN200610052098.0 申请日期 2006.06.23
申请人 浙江大学 发明人 陈纯;卜佳俊;杨建旭;姜波
分类号 G06F17/00(2006.01);G06F9/46(2006.01) 主分类号 G06F17/00(2006.01)
代理机构 杭州求是专利事务所有限公司 代理人 林怀禹
主权项 1. 一种基于前次偏差的控制点平滑化方法,其特征在于:1)记录最近N秒钟之内的远程控制点在每个毫秒的移动位置;2)当网络抖动发生时,为了预测控制点的移动位置,首先计算控制点在X方向和Y方向的当前速度,用aveVelocityX和aveVelocityY来表示;当前速度是通过离当前最近的Tlast时刻的位置坐标(Xlast,Ylast)以及M毫秒前Tflag时刻接收到的位置坐标(Xflag,Yflag)来计算的;<math><mfenced open='{' close=''><mtable><mtr><mtd><mi>aveVelocit</mi><msub><mi>y</mi><mi>X</mi></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>X</mi><mi>last</mi></msub><mo>-</mo><msub><mi>x</mi><mi>flag</mi></msub><mo>)</mo></mrow><mo>/</mo><mrow><mo>(</mo><msub><mi>T</mi><mi>last</mi></msub><mo>-</mo><msub><mi>T</mi><mi>flag</mi></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>aveVelocity</mi><mi>Y</mi></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>Y</mi><mi>last</mi></msub><mo>-</mo><msub><mi>Y</mi><mi>flag</mi></msub><mo>)</mo></mrow><mo>/</mo><mrow><mo>(</mo><msub><mi>T</mi><mi>last</mi></msub><mo>-</mo><msub><mi>T</mi><mi>flag</mi></msub><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></math> 3)计算控制点在X方向和Y方向的当前加速度,用aveAccelerationX和aveAccelerationY来表示;当前加速度是通过离当前最近的Tlast时刻的速度以及Tflag时刻速度来计算的;其中,Tlast时刻的位置是(Xlast,Ylast),Tflag时刻的位置是(Xflag,Yflag);Tflag时刻是Tlast时刻M毫秒前的时刻;<math><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>aveAcceleration</mi><mi>X</mi></msub><mrow><mo>=</mo><mrow><mo>(</mo><msub><mi>Velocity</mi><mi>Xlast</mi></msub><mo>-</mo><msub><mi>Velocity</mi><mi>Xflag</mi></msub><mo>)</mo></mrow><mo>/</mo><mrow><mo>(</mo><msub><mi>T</mi><mi>last</mi></msub><mo>-</mo><msub><mi>T</mi><mi>flag</mi></msub><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><msub><mi>aveAcceleration</mi><mi>Y</mi></msub><mrow><mo>=</mo><mrow><mo>(</mo><msub><mi>Velocity</mi><mi>Ylast</mi></msub><mo>-</mo><msub><mi>Velocity</mi><mi>Yflag</mi></msub><mo>)</mo></mrow><mo>/</mo><mrow><mo>(</mo><msub><mi>T</mi><mi>last</mi></msub><mo>-</mo><msub><mi>T</mi><mi>flag</mi></msub><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mfenced></math> 其中:VelocityXlast是控制点在横坐标X方向Tlast时刻的速度;VelocityXflag是控制点在横坐标X方向Tflag时刻的速度;VelocityYlast是控制点在纵坐标Y方向Tlast时刻的速度;VelocityYflag是控制点在纵坐标Y方向Tflag时刻的速度;4)计算控制点在横坐标X方向和纵坐标Y方向的校正量,分别用Δx和Δy来表示,Δx和Δy与如下因素相关:(1)前一次抖动结束时横纵坐标(X,Y)的预测值;(2)前一次抖动结束时接收到的相对应的横纵坐标(X,Y)的真实值;(3)当前抖动延时;(4)前一次抖动延时,如果系统是第一次预测,Δx和Δy的值为0;计算Δx和Δy的公式为:<math><mfenced open='{' close=''><mtable><mtr><mtd><mi>&Delta;x</mi><mo>=</mo><mrow><mo>(</mo><msub><mi>X</mi><mi>true</mi></msub><mo>-</mo><msub><mi>X</mi><mi>last</mi></msub><mo>)</mo></mrow><mo>*</mo><mi>JitterLapse</mi><mo>*</mo><mi>C</mi><mo>/</mo><mi>JitterPeriod</mi></mtd></mtr><mtr><mtd><mi>&Delta;y</mi><mo>=</mo><mrow><mo>(</mo><msub><mi>Y</mi><mi>true</mi></msub><mo>-</mo><msub><mi>Y</mi><mi>last</mi></msub><mo>)</mo></mrow><mo>*</mo><mi>JitterLapse</mi><mo>*</mo><mi>C</mi><mo>/</mo><mi>JitterPeriod</mi></mtd></mtr></mtable></mfenced></math> 其中:Xlast是前一次网络抖动过程中预测的最后一个横坐标X的值;Xtrue是前一次网络抖动过程中被抖动延时阻塞的最后一个横坐标X真实值;Ylast是前一次网络抖动过程中预测的最后一个纵坐标Y的值;Ytrue是前一次网络抖动过程中被抖动延时阻塞的最后一个纵坐标Y真实值;JitterLapse是当前抖动延时;JitterPeriod前一次抖动延时;C是一个调节系数;5)将控制点的当前位置记做(Xcurrent,Ycurrent),而控制点的下一个位置记做(Xnext,Ynext),当网络抖动发生的时候,(Xnext,Ynext)通过以下公式来计算:<math><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>X</mi><mi>next</mi></msub><mo>=</mo><msub><mi>X</mi><mi>current</mi></msub><mo>+</mo><mi>aveVelo</mi><mi>cot</mi><msub><mi>y</mi><mi>X</mi></msub><mo>*</mo><mi>T</mi><mo>+</mo><msub><mi>aveAcceleration</mi><mi>X</mi></msub><mo>*</mo><msup><mi>T</mi><mn>2</mn></msup><mo>+</mo><mi>&Delta;x</mi></mtd></mtr><mtr><mtd><msub><mi>Y</mi><mi>next</mi></msub><mo>=</mo><msub><mi>Y</mi><mi>current</mi></msub><mo>+</mo><msub><mi>aveVelocity</mi><mi>Y</mi></msub><mo>*</mo><mi>T</mi><mo>+</mo><msub><mi>aveAcceleration</mi><mi>Y</mi></msub><mo>*</mo><msup><mi>T</mi><mn>2</mn></msup><mo>+</mo><mi>&Delta;y</mi></mtd></mtr></mtable></mfenced></math> 其中:T是当前抖动延时,等同于JitterLapse;6)将远程控制点按照预测的位置(Xnext,Ynext)绘制在用户的屏幕上;7)擦除前一个预测的控制点,绘制最新预测的控制点,依此类推,直到将抖动过程中所有预测的控制点绘制完成。
地址 310027浙江省杭州市西湖区浙大路38号