litong 发表于 2024-4-14 23:46:02

曲线优化需求外包

大家好,公司有一个算法项目外包;算法框架源码我会提供,只要实现算法即可;我整理了一个文档,文档内容具体如下(有兴趣的人请帮忙直接联系我,谢谢!):

曲线优化需求文档
江工,电话:17666090116,
QQ:1224758460(大时代)
2018-2-4

一、      项目背景
      1.      产品主要针对手写屏,主要用于绘画;下面这个链接就是Wacom也是我们参考的产品:
http://www.wacom.com/zh-cn/products/pen-displays/cintiq-13-hd
      2.      这个设备会模拟真人书写效果,当书写轻时,感应压力就小,画出来的笔画就比较轻;当书写重时,感应压力就大,画出来的笔画就较浓。
      3.      我们产品的绘画效果截图:
         https://bbs.emath.ac.cn/data/attachment/forum/201802/22/213430qxyfsncr94s5rnll.png
      如上图,我们产品在绘制曲线的时候,不够圆滑。
二、      项目需求:
      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.      在抬笔时,可以智能补偿理想抬笔点,举例如下:
               https://bbs.emath.ac.cn/data/attachment/forum/201802/22/213539vw4y3s8x8i848ny8.png
                如上图,蓝色为硬件报出来的点,但是在压感只到50%时,下一包数据就已经弹出;这样就在这包数据之前,模拟插入红色的点,这样看起来就很有笔尖。
      3.      应用级优化算法
                i.      这个算法主要用在应用程序软件,比如各类绘画软件就属于应用级优化算法的范畴
                ii.      需具备动态库级优化算法的所有功能
                iii.      应用程序是最终的绘画软件,它可以控制什么时候开始绘制,什么时候还不需要绘制,比如说它可以统计20ms里面的所有笔画,优化以后再一次性绘制出来。
                iv.      在落笔时,可以智能修正前面几个点的压感,这样看起来更有笔锋。
                v.      可以设置抖动修正级别(最大为20级),如下图:
               https://bbs.emath.ac.cn/data/attachment/forum/201802/22/213606v5ii2iiooiogigi0.png
                级别n的意思,当产生一个新点的时候,就会统计之前n*10(ms)的这段时间内所有点(落笔后的连续有压感的点才算,已经抬笔的点不算),如果不足n*10ms,先不绘制,直至满足时间的时候一次性绘制出来(这样的曲线修正效果是最好的);如果产生一个新点的时候,之前已经有n*10ms的点,那么会根据之前n*10ms内的点以及这个点计算一个当前点的修正坐标出来。如果抖动修正级别n=0,那么就没有抖动修正。
                vi.      在统计时间这里,必须使用高精度延时timeGetTime来计算时差,不能使用GetTickCount函数

xiaobai 发表于 2024-4-14 23:46:26

没人回复吗?https://bbs.emath.ac.cn/static/image/smiley/1/cry.gif
页: [1]
查看完整版本: 曲线优化需求外包