求一判断抖动程度的算法
最近公司给了个题目,要求判断一个曲线的抖动程度,然后根据判断结果决定是否对此曲线进行平滑!请问,如何获得一条曲线的抖动程度,或者说是光滑程度阿!各位大侠帮帮偶吧,给点相关思路或者资料来源也行啊!先谢过啦!
[解决办法]
在一点O前后各取一个点(与点O的距离接近)A和B,看看OA线段和OB线段的斜率,斜率的差值除以AB横坐标的差大致就可以表示在o点附近的抖动程度了
[解决办法]
可以分析曲线的频谱,(对于分离的点也可以类似处理,)依据其某些频率段的强度大小为判据。
[解决办法]
终于发现可以发言一下了:
曲线中点的抖动程度,即曲线的曲率,在解析式曲线中,曲线的曲率可以直接根据表达式计算
但在具体实现中,不可能也不需要所有点都计算,因为点的数量都是无穷的。
在工程实现中,可以按照象素或x轴间隔来取点,判断离散域的曲率,近似等于标准曲率,若取点间隔较大,可以采取多边形顶点曲率计算公式。
[解决办法]
对于某个信号,通过频谱分析,可以看出其中噪音的含量。如果你的曲线是由好多的数据点组成,我想抖动的大小或许可以理解成为信号中噪音含量的比例。因此,我说可以进行所谓的频谱分析。
如果你的目的是:(比方说:)计算用户在用鼠标画曲线时手是不是在发抖。那么我想或许也不用那么复杂。比如说,用户控制鼠标,鼠标经过的位置依次为A、B、C、D、……(假定采样时间间隔相等)。那么我们可以可用点B到线段AC的距离加上点C到线段BD的距离……,用这些距离的平均数的大小,来衡量用户哆嗦的程度;再如,我们也可以用AB和BC的夹角(求所有夹角的平均值,求平均时也可以加入关于线段长度的权重。)来衡量。这些模型或许能符合某些需求,并且计算量小,也比较直观。
[解决办法]
Zgg的意思就是FFT之类的东西,13楼的和我说的一样