您的位置:程序门 -> vc/mfc -> 图形处理/算法



求一判断抖动程度的算法


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求一判断抖动程度的算法[已结贴,结贴人:lgdgyd2]
发表于:2007-10-11 10:42:55 楼主
最近公司给了个题目,要求判断一个曲线的抖动程度,然后根据判断结果决定是否对此曲线进行平滑!请问,如何获得一条曲线的抖动程度,或者说是光滑程度阿!各位大侠帮帮偶吧,给点相关思路或者资料来源也行啊!先谢过啦!
发表于:2007-10-11 10:44:271楼 得分:0
靠,忘了设置分数了!5天后才能给帖子加分!大侠们帮帮我吧,过几天加到100分!
发表于:2007-10-11 12:44:542楼 得分:0
等了一中午了,分少是真没人来啊!
发表于:2007-10-11 13:16:113楼 得分:0
关注
发表于:2007-10-12 12:20:374楼 得分:0
是不是按照曲线斜率判断??
发表于:2007-10-12 12:22:125楼 得分:0
曲线的导数?曲线的二次导数?
发表于:2007-10-12 13:30:156楼 得分:20
我的一个想法,不太成熟:
你在曲线设置一些标识点,当抖动发生后,在新曲线上需要相应的标识点,计算新、旧标识点的移动距离,
应该这样能够判断出曲线的抖动程度吧
发表于:2007-10-12 13:48:417楼 得分:0
可是因为曲线是随机画出来的,所以标识点的选取有一定的难度阿!
发表于:2007-10-12 14:09:238楼 得分:0
是什么曲线,二次,一次,还是什么都有可能?
你以什么形势得到这个曲线呢?
是公式,还是屏幕图像?
发表于:2007-10-12 14:29:099楼 得分:0
鼠标移动得到的点画出的曲线!所以在用鼠标画的过程中,手有可能抖的很厉害,要判断是否需要平滑,如果所有的都平滑,又会失真,所以的先判断,后处理
发表于:2007-10-12 14:44:3710楼 得分:0
你可以试试在画的过程中判断:
随时记录当前点坐标与前面若干点的坐标值(例如记录当前点x0与前面的20个点x1……x20)
然后计算x0点与x1点间的斜率值,并计算x1与x2间,x2与x3间……x19与x20间的斜率。
根据已有的前面的范围计算出一个斜率变化的阈值范围,看x0与x1间的斜率是否在你计算出的
合理阈值变化范围之内,如果在,ok;否则,则x0点坐标需要平滑处理。

k1=k(x1,x2),   k2=k(x2,x3)……   k19=   k(x19,   x20)
使用k1等形成一个判断阈值a

k_unknow   =   k(x0,   x1)
if(k_unknow   <   a)
{
        pass//合理值
}
else
{
      平滑处理
}
发表于:2007-10-12 14:46:0911楼 得分:0
这是我目前想的一个方法,可能匆忙之间不是很完善,
也是一个大概思路
发表于:2007-10-12 15:06:0812楼 得分:0
谢谢   drowdrow  
阀值的选取可能有点难度,倘若我是用鼠标画一个圆,那么阀值要怎么选,这个阀值可能要动态选取吧,这个是不是传说中的自适应?
发表于:2007-10-12 15:19:5113楼 得分:0
因为你不能限制用户的输入,所以不能使用一个相对固定的值进行平滑程度的判断。
只有从用户已有的一些点来动态决定可能的合理范围。
自适应或自调整的算法才能比较好的满足要求。
至于阈值的选择,可以很灵活,我暂时也没有十全十美的方法来满足各种各样复杂的输入情况。
但是你可以多向这方面考虑。
发表于:2007-10-12 15:35:5514楼 得分:0
而且x1、x2……x20点之间的距离的选取也应该很重要。
若x1、x2点间的距离太小了,例如为1,则可能计算出的k值之间会变化很大
距离太大了,不能对快速变化做出反映。
因此每隔鼠标移动3~5个点记录一次参考点比较合适
发表于:2007-10-12 15:45:3115楼 得分:0
唉,算法想好了,但是具体实现的时候细节很多,搞的头疼!
发表于:2007-10-12 17:10:0816楼 得分:0
drowdrow   ,我是用这种方法实现的!把每个点到     它两边的点所连直线     的距离相加,然后除以曲线的总长度,作为门限值!
比如:a   b   c   d   ······四个点,计算点b   到   线ac的距离+点c   到线bd的距离+······   然后用总和除以线的长度,计算出的值跟一个门限值比较!
可是,有点小问题!倘若画一条垂直的线(比较长的),线中间有一点发生抖动(就一点,还比较严重),这种情况下算出来的值虽然很小,但是抖动的效果却非常明显,请问,能否通过别的办法,把线段的长度作为权重加到门限的计算中?
发表于:2007-10-15 09:38:3517楼 得分:0
你可以用你计算出的值与你门限值的比例关系来判断。
这样即使你得到的点到直线的距离很小,但是你的计算出的门限值更小。
用比例来看,还是能判断出来。
就是不要用点到直线的绝对距离来判断就行了。
发表于:2007-10-15 10:10:0618楼 得分:0
学习
发表于:2007-10-15 11:29:1319楼 得分:0
drowdrow谢谢你帮忙,等过几天能给帖子加分了,我再结帖!
发表于:2007-10-15 11:32:4520楼 得分:0
呵呵,好的。
能帮上你我也很高兴。
发表于:2007-10-19 09:01:0621楼 得分:0
为什么总说我无权使用加分功能呢?版主,快来看看啊!
发表于:2007-10-19 11:37:2822楼 得分:0
呵呵,出问题了?
可以这样,你先把这个帖子结了,
然后再单开一个把剩下的分给了就行了。
:)


快速检索

最新资讯
热门点击