曲线优化需求外包
大家好,公司有一个算法项目外包;算法框架源码我会提供,只要实现算法即可;我整理了一个文档,文档内容具体如下(有兴趣的人请帮忙直接联系我,谢谢!):曲线优化需求文档
江工,电话:17666090116,
QQ:1224758460(大时代)
2018-2-4
一、 项目背景
1. 产品主要针对手写屏,主要用于绘画;下面这个链接就是Wacom也是我们参考的产品:
http://www.wacom.com/zh-cn/products/pen-displays/cintiq-13-hd
2. 这个设备会模拟真人书写效果,当书写轻时,感应压力就小,画出来的笔画就比较轻;当书写重时,感应压力就大,画出来的笔画就较浓。
3. 我们产品的绘画效果截图:
如上图,我们产品在绘制曲线的时候,不够圆滑。
二、 项目需求:
1. 增加曲线优化算法,使绘制出来的曲线看起来足够圆滑
2. 增加直线优化算法,当用在手写屏上架着尺子绘制直线的时候,使直线看起来非常直,没有扭曲。
3. 当绘制的时候,会自动选择采用曲线优化还是直线优化(也许直线优化也是曲线优化的一种,那这样就只有一种算法了),然后修正。
4. 采用C++实现,需提供所有源码以及算法文档,项目不能使用没有源码的第三方库。
5. 项目源码可以编译成32位以及64位。
6. 主要负责优化算法的实现,我们会提供项目框架的源码,你们把算法实现在框架里面即可。
三、 项目样品:
1. 我们会提供一个参考厂家的设备以及驱动,以及我司的产品以及程序。
四、 项目术语:
i. 落笔:笔尖接触手写面进行手写的过程
ii. 抬笔:笔尖从手写面上离开的过程
iii. 坐标:水平的手写屏拥有横坐标和纵坐标,屏幕左上角为坐标原点。由于硬件分辨率比屏幕分辨率更细腻,所以横坐标和纵坐标的最大值往往都是大于屏幕的分辨率的。
iv. 压感:用笔进行书写时候的压力大小,当笔尖未接触时,压感为0;当正在书写时,是肯定有压感的,压感范围从1~Pmax,一般压感最大值为1023或2047,
v. 压感级数(压感级别):当最大值压感为1023,加上0压感,就总共有1024种取值范围,这种压感级别就叫做1024级,常见的压感级别有512、1024、2048等级别。
五、 项目要求:
1. 驱动级优化算法(较简单)
i. 这个算法主要用在编译sys程序时使用,主要作用是在驱动层修改硬件坐标
ii. 不能产生过渡点,只能修正当前的坐标点,使绘制出来的点符合曲线要求。
iii. 当压感为0时,不需要优化
2. 动态库级优化算法
i. 这个算法主要用在中间件的动态库里面,主要作用是在无驱环境下向上一级程序(调用这个动态库的程序)上报坐标时,自动修改坐标,并能产生过渡点。
ii. 需具备驱动级优化算法的所有功能
iii. 两点之间智能插入过渡点(比如当两点距离过长时),使曲线过渡细腻
iv. 在抬笔时,可以智能补偿理想抬笔点,举例如下:
如上图,蓝色为硬件报出来的点,但是在压感只到50%时,下一包数据就已经弹出;这样就在这包数据之前,模拟插入红色的点,这样看起来就很有笔尖。
3. 应用级优化算法
i. 这个算法主要用在应用程序软件,比如各类绘画软件就属于应用级优化算法的范畴
ii. 需具备动态库级优化算法的所有功能
iii. 应用程序是最终的绘画软件,它可以控制什么时候开始绘制,什么时候还不需要绘制,比如说它可以统计20ms里面的所有笔画,优化以后再一次性绘制出来。
iv. 在落笔时,可以智能修正前面几个点的压感,这样看起来更有笔锋。
v. 可以设置抖动修正级别(最大为20级),如下图:
级别n的意思,当产生一个新点的时候,就会统计之前n*10(ms)的这段时间内所有点(落笔后的连续有压感的点才算,已经抬笔的点不算),如果不足n*10ms,先不绘制,直至满足时间的时候一次性绘制出来(这样的曲线修正效果是最好的);如果产生一个新点的时候,之前已经有n*10ms的点,那么会根据之前n*10ms内的点以及这个点计算一个当前点的修正坐标出来。如果抖动修正级别n=0,那么就没有抖动修正。
vi. 在统计时间这里,必须使用高精度延时timeGetTime来计算时差,不能使用GetTickCount函数
没人回复吗?:'(
页:
[1]