CN106687891B - 数字墨水的平滑和gpu使能的渲染 - Google Patents
数字墨水的平滑和gpu使能的渲染 Download PDFInfo
- Publication number
- CN106687891B CN106687891B CN201580049708.9A CN201580049708A CN106687891B CN 106687891 B CN106687891 B CN 106687891B CN 201580049708 A CN201580049708 A CN 201580049708A CN 106687891 B CN106687891 B CN 106687891B
- Authority
- CN
- China
- Prior art keywords
- ink
- ink dot
- bezier
- dot
- smoothed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/171—Editing, e.g. inserting or deleting by use of digital ink
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0354—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
- G06F3/03545—Pens or stylus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
- G06F3/0412—Digitisers structurally integrated in a display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
- G06F3/0416—Control or interface arrangements specially adapted for digitisers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
- G06F3/04883—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/14—Image acquisition
- G06V30/142—Image acquisition using hand-held instruments; Constructional details of the instruments
- G06V30/1423—Image acquisition using hand-held instruments; Constructional details of the instruments the instrument generating sequences of position coordinates corresponding to handwriting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/32—Digital ink
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/32—Digital ink
- G06V30/333—Preprocessing; Feature extraction
- G06V30/347—Sampling; Contour coding; Stroke extraction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Character Discrimination (AREA)
- Ink Jet (AREA)
- Processing Or Creating Images (AREA)
Abstract
提供了用于墨水笔画输入的高效实时墨水笔画平滑、轨迹预测和借力GPU的渲染的系统、方法和计算机可读存储介质。接收第一和第二墨点,并且基于此来计算现行的贝塞尔逼近。在时间上按顺序晚于第一和第二墨点地接收第三墨点。确定第三墨点是否充分拟合现行的贝塞尔逼近。在确定第三墨点充分拟合的情况下,计算包括第一、第二和第三墨点的更新的现行的贝塞尔逼近。在确定第三墨点未能充分拟合的情况下,计算包括第三墨点但不包括第一和第二墨点的不同的新贝塞尔逼近。借力GPU,渲染基于(多个)贝塞尔逼近的经平滑的墨水笔画。
Description
背景技术
“数字墨水”是指从输入工具记录的一个或多个笔画(stroke),输入工具是诸如鼠标、数字化器图形输入板上的触笔/笔、电容式触摸数字化器上的电容式触笔或电容性物体(例如,手指),或者在与数字化器图形输入板——其可以使用或可以不使用触敏显示屏——集成的显示屏上的触笔/笔。当在本文中使用时,术语“墨水”与“数字墨水”可互换地使用并且是指“数字墨水”。另外,术语“笔”和/或“触笔”一般地且可互换地用于指代任何类型的输入工具。每个笔画可被存储为一个或多个墨点,并且每个墨点可以包含各种属性,包括(仅作为示例)压力、倾斜、方位角和对应于输入工具的位置的坐标(x,y)。例如,用户可以沿着计算机系统的触敏显示屏移动笔以便绘制直线或曲线,并且当用户移动输入工具时,计算机系统可以随着时间(或在本领域技术人员已知的任何其它间隔上)而沿着输入工具尖端位置的轨迹采样坐标(x,y)。这些坐标表示沿着由用户输入的曲线或直线的点,并且在本文中被称为“墨点(ink point)”。
发明内容
提供本概要以便以简化的形式介绍概念的选择,这些概念将在以下的详细说明中进一步描述。本概要既不打算标识所要求保护的主题的关键特征或必要特征,也不打算用于帮助确定所要求保护的主题的范围。
在各种实施例中,提供了用于高效实时墨水笔画平滑和轨迹预测的系统、方法和计算机可读存储介质。接收至少包括第一和第二墨点的多个墨点。至少基于第一和第二墨点(精确量至少部分地在相对于随后接收的墨点获得充分拟合(adequate fit)时确定,如下面更全面描述的),计算现行的贝塞尔逼近(active Bézier approximation)。在时间上接续于第一和第二墨点地,接收第三墨点,并且确定第三墨点是否充分拟合现行的贝塞尔逼近。如果确定在渲染时用户将不能检测到第三墨点与现行的贝塞尔逼近之间的差异,则确定第三墨点充分拟合现行的贝塞尔逼近。这样的确定通常基于预定的阈值差值。如果确定第三墨点充分拟合现行的贝塞尔逼近,则现行的贝塞尔逼近被更新成包括第三墨点。然而,如果确定第三墨点未充分拟合现行的贝塞尔逼近,则终止现行的贝塞尔逼近并且计算新的贝塞尔逼近。与笔画接收表面(例如,触敏显示屏)相关联地渲染(render)包括第一、第二和第三墨点的经平滑的墨水输出。
本发明的实施例提供了即使在显著的缩放级别(例如,200-400%的缩放级别)下在笔画输入期间和之后看起来仍平滑的数字墨水输入。本发明的实施例还提供用于数字墨水笔画的平滑和渲染,使得用户在笔画输入或后笔画(post-stroke)期间基本上不会感觉到基于平滑的对笔画的改变。更进一步地,根据本发明的实施例,渲染等待时间不增加,并且经常通过使用本文下面进一步描述的预测技术来被减少。
在考虑以下的详细说明后,本发明的这些和其它特征将是显而易见的。根据本说明书,对相关技术领域的技术人员而言将显而易见的是,可以将本发明的各方面的可替换组合(不管是单独地还是与本文定义的步骤的一个或多个元素组合地)用作为本发明的修改或更改,或者作为本发明的一部分。本文所包含的对本发明的书面描述旨在覆盖这样的修改和更改。
附图说明
当结合附图阅读时前述的概要以及下面的详细说明被更好地理解,附图是作为示例而不是作为对于所要求保护的实施例的限制来包括的。在附图中,单元用参考标号来标注,其中三位数字的参考标号的第一位数字和四位数字的参考标号的前两个数字指示该单元在其中被首次图示的附图编号。不同附图中的相同参考标号是指相同或相似的单元。
图1是适合用于实现本发明实施例的示范性计算环境的框图;
图2是其中可以采用本发明的实施例的示范性计算系统的框图;
图3是示出根据本发明的实施例的、可以产生的C0连续样条的示范性“差的”伪像(artifact)的示意图;
图4是示出根据本发明的实施例的、可以由C1连续拟合器产生的示范性摆动行为(wobbly behavior)的示意图;
图5是示出根据本发明的实施例的、没有图4所示的摆动行为的示范性连续样条的示意图;
图6是示出根据本发明的实施例的、用于五点提前预测的示范性预测、实现和误差向量的示意图;
图7是图示根据本发明的实施例的、墨水笔画的一段的示意图;
图8是示出根据本发明实施例的、用于渲染墨水的示范性方法的流程图;
图9是图示根据本发明实施例的、实例镶嵌(tessellation)的示范性实现的示意图;
图10是图示根据本发明实施例的、实例镶嵌的另一示范性实现的示意图;
图11是根据本发明实施例的、两个相邻墨点(假设M是单位矩阵)的示意图;
图12是图示根据本发明实施例的、围绕P(i+1)的特写(close-up)(假设TopOrBottom = 0,StartOrEnd = 1,且M是单位矩阵)的示意图;
图13是图示围绕P+D的图12的一部分的特写(假设TopOrBottom = 0,StartOrEnd= 1,且M是单位矩阵)的示意图;
图14是图示根据本发明实施例的、用于平滑数字墨水输入的示范性方法的流程图;
图15是图示根据本发明的实施例的、用于平滑和渲染数字墨水输入的示范性方法的流程图;和
图16是图示根据本发明的实施例的、用于平滑和渲染数字墨水输入的另一示范性方法的流程图。
具体实施方式
用本文的特异性描述本发明的主题以满足法定要求。然而,描述本身不打算限制本专利的范围。相反,发明人已经设想到所要求保护的主题还可以以其他方式来具体化,以便结合其他现有或未来的技术,而包括与本文档中描述的步骤类似的不同步骤或步骤的组合。此外,尽管术语“步骤”和/或“框”在本文可以用来意指所采用的方法的不同单元,但是除非且除了在明确描述各个步骤的顺序时,否则这些术语不应被解释为暗示本文公开的各种步骤之中或之间的任何特定顺序。
数字墨水的渲染受到许多问题的困扰,问题包括:在缩放操作期间墨水不是平滑的而是具有阶梯状外观、等待时间增加(例如,由于高速缓存和/或后笔画平滑和渲染),以及当笔或其他输入工具从接收表面脱开(release)(即,后笔画)时墨水颜色或其它外观特性的改变。
本文所描述的技术的各个方面总地针对用于高效实时的墨水笔画平滑、轨迹预测和借力GPU(图形处理单元)的渲染的系统、方法和计算机可读存储介质。当各个墨点被数字化时,接收至少包括第一和第二墨点的多个墨点。基于至少第一和第二墨点,计算现行的贝塞尔逼近。如本领域技术人员将理解的,贝塞尔逼近或曲线是在图形渲染中经常被用于对平滑曲线建模的参数曲线。当在本文中使用时,如果贝塞尔逼近是最新近接收和处理的墨点(在本实例中,是第二墨点)所属的曲线或逼近,则认为该贝塞尔逼近是“现行的”。在现行的贝塞尔逼近中使用的墨点的确切量至少部分地取决于针对随后接收的墨点获得充分拟合。也就是说,可以为了拟合的目的而累积N个墨点,其中N的值持续增长,直到不再可能有适当的拟合为止,正如下面更全面地描述的。
在时间上相对于第一和第二墨点按顺序更晚地接收第三墨点,并且确定第三墨点是否充分拟合现行的贝塞尔逼近。如果确定在渲染时用户将不能检测到第三墨点与现行的贝塞尔逼近之间的差异,则确定第三墨点充分拟合现行的贝塞尔逼近。这样的确定通常基于预定的阈值差值,例如10个himetric(0.001cm)单位(0.1mm)。如果确定第三墨点充分拟合现行的贝塞尔逼近,则现行的贝塞尔逼近被更新成包括第三墨点。在实施例中,“更新的”贝塞尔逼近可以被认为是“新的”贝塞尔逼近或曲线。然而,如果确定第三墨点未充分拟合现行的贝塞尔逼近,则终止现行的贝塞尔逼近,并且计算不同的新贝塞尔逼近。借力GPU,与笔画接收表面(例如,触敏显示屏)相关联地渲染所得到的经平滑的墨水输出,所得到的输出包括第一、第二和第三墨点。(正如本领域技术人员将理解和意识到的,尽管本文主要描述了三次贝塞尔平滑,但是在本文的实施例中可以使用二次贝塞尔平滑、四次及更大次幂的贝塞尔或任何其他已知的平滑算法。)。
因此,本发明的一个实施例针对一种由至少包括一个处理器的一个或多个计算设备执行的方法,所述方法用于平滑数字墨水输入。该方法包括:接收第一墨点,接收第二墨点,基于第一和第二墨点计算现行的三次贝塞尔逼近,接收第三墨点(第三墨点在时间上比第一和第二墨点按顺序更晚地接收),确定第三墨点是否充分拟合现行的三次贝塞尔逼近,以及利用第一、第二和第三墨点计算新的三次贝塞尔逼近。在确定第三墨点充分拟合现行的三次贝塞尔逼近的情况下,新的三次贝塞尔逼近可以包括更新的现行的三次贝塞尔逼近,或者在确定第三墨点未能充分拟合现行的三次贝塞尔逼近的情况下,新的三次贝塞尔逼近可以包括不同的新的三次贝塞尔逼近。
在另一个实施例中,本发明针对一种包括中央处理单元(CPU)和图形处理单元(GPU)的系统。CPU被配置为:顺序地接收第一和第二墨点,基于第一和第二墨点生成一现行的经平滑的墨水片段(ink fragment),接收第三墨点(在时间上按顺序更晚),确定第三墨点是否充分拟合现行的经平滑的墨水片段,并且在确定第三墨点充分拟合现行的经平滑的墨水片段时,更新该现行的经平滑的墨水片段。替换地,在确定第三墨点未充分拟合现行的经平滑的墨水片段时,CPU被配置为终止该现行的经平滑的墨水片段并且发起另一经平滑的墨水片段。GPU被配置为与显示表面相关联地渲染包括第一、第二和第三墨点的经平滑的墨水输出。
在又一个实施例中,本发明针对一种设备,其包括至少一个处理器和存储数字墨水平滑和渲染例程的存储器。当由至少一个处理器执行时,数字墨水平滑和渲染例程使得该设备:接收第一墨点;接收第二墨点;基于第一墨点和第二墨点计算现行的三次贝塞尔逼近;接收第三墨点(相对于第一墨点和第二墨点在时间上按顺序更晚地);确定第三墨点是否充分拟合现行的三次贝塞尔逼近;使用第一、第二和第三墨点计算新的三次贝塞尔逼近;并且与显示表面相关联渲染包括第一、第二和第三墨点的经平滑的墨水输出。
在已经简要描述了本发明的实施例的概观后,下面描述在其中可以实现本发明的实施例的示范性操作环境,以便为本发明的各个方面提供一般的上下文。一般性地参考附图,且初始地具体参考图1,其示出了用于实现本发明的实施例的示范性操作环境,并且其总地被指定为计算设备100。计算设备100仅仅是合适的计算环境的一个示例,且其并不打算暗示对本发明的实施例的使用或功能性范围的任何限制。计算设备100也不应被解释为具有与所图示组件中的任何一个组件或任何组合相关的任何依赖性或要求。
本发明的实施例可以在计算机代码或机器可使用指令的一般上下文中描述,计算机代码或机器可使用指令包括计算机可使用或计算机可执行指令,比如程序模块,其由计算机或诸如个人数据助理或其他手持设备的其他机器执行。通常,程序模块包括例程、程序、对象、组件、数据结构等,和/或指代执行特定任务或实现特定抽象数据类型的代码。本发明的实施例可以在各种各样的系统配置中实行,系统配置包括但不限于手持设备、消费电子设备、通用计算机、更专业的计算设备等。本发明的实施例还可以在分布式计算环境中实行,其中任务由通过通信网络链接的远程处理设备执行。
继续参考图1,计算设备100包括总线110,其直接或间接地耦合以下设备:存储器112、一个或多个处理器114、一个或多个呈现组件116、一个或多个输入/输出(I/O)端口118、一个或多个I/O组件120以及说明性的电源122。总线110表示可以是一个或多个总线的东西(例如地址总线、数据总线或其组合)。尽管图1的各个框为了清楚起见用线条示出,但是事实上,这些框表示逻辑的、不一定是实际的组件。例如,人们可以将诸如显示设备这样的呈现组件视为I/O组件。此外,处理器具有存储器。本发明人于此认识到这是技术的本质,并且重申图1的图仅仅是可以结合本发明的一个或多个实施例使用的示范性计算设备的说明。在诸如“工作站”、“服务器”、“膝上型计算机”、“手持设备”等类别之间不进行区分,因为所有这些类别都被设想为在图1的范围内且是对“计算设备”的引用。
计算设备100通常包括各种各样的计算机可读介质。计算机可读介质可以是可由计算设备100访问的任何可用介质,并且包括易失性和非易失性介质、可拆卸和不可拆卸介质。计算机可读介质包括计算机存储介质和通信介质;计算机存储介质排除信号本身。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的任何方法或技术实现的易失性和非易失性、可拆卸和不可拆卸介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储装置、磁带盒、磁带、磁盘存储装置或其它磁存储设备、或可被使用来存储所期望的信息并且可由计算设备100访问的任何其它介质。另一方面,通信介质将计算机可读指令、数据结构、程序模块或其他数据具体化在诸如载波或其它传输机制的调制的数据信号中,并且包括任何信息传递介质。术语“调制的数据信号”意指使它的特性中的一个或多个以将信息编码在信号中这样的方式设置或改变的信号。作为示例而非限制,通信介质包括有线介质以及无线介质,有线介质诸如是有线网络或直接有线连接,无线介质诸如是声学、RF、红外和其他无线介质。任何上述项的组合也应当被包括在计算机可读介质的范围内。
存储器112包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可拆卸的、不可拆卸的或其组合。示范性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备100包括从诸如存储器112或I/O组件120的各种实体读取数据的一个或多个处理器。(多个)呈现组件116向用户或其他设备呈现数据指示。示范性呈现组件包括显示设备、扬声器、打印组件、振动组件等。
I/O端口118允许计算设备100逻辑地耦合到包括I/O组件120的其它设备,其中的一些可以被内置。说明性I/O组件包括麦克风、操纵杆、游戏板、圆盘式卫星电视天线、扫描仪、打印机、显示设备、无线设备、控制器(比如触笔、键盘和鼠标)、自然用户界面(NUI)等。在实施例中,提供笔式数字化器(未示出)和附带的输入工具(也未示出,但仅作为示例,其可以包括笔或触笔),以便数字地捕获徒手进行的用户输入。笔式数字化器和(多个)处理器114之间的连接可以是直接的或者是经由利用本领域中已知的串行端口、并行端口和/或其他接口和/或系统总线的耦合。此外,数字化器输入组件可以是与诸如显示设备的输出组件分离的组件,或者在一些实施例中,数字化器的可使用输入区域可以与显示设备的显示区域有同等范围,数字化器输入组件可以与显示设备集成,或者可以作为覆盖或以其它方式附加到显示设备的单独设备存在。任何和所有这样的变化及其任何组合都被设想为在本发明的实施例的范围内。
NUI处理由用户生成的空中手势、话音或其他生理输入。适当的NUI输入可以被解释为墨水笔画以便与计算设备100相关联地呈现。这些请求可以被传送到适当的网络单元以用于进一步处理。NUI实现语音识别、触摸和触笔识别、面部识别、生物测定识别、在屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备100上的显示相关联的触摸识别的任何组合。计算设备100可以配备有深度相机,诸如立体相机系统、红外相机系统、RGB相机系统以及这些的组合,用于手势检测和识别。另外,计算设备100可以配备有使得能够检测运动的加速度计或陀螺仪。可以将加速度计或陀螺仪的输出提供给计算设备100的显示器,以渲染沉浸式增强现实或虚拟现实。
本文所描述的主题的各方面可以在由移动设备执行的诸如程序模块这样的计算机可执行指令的一般上下文中描述。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本文描述的主题的各方面还可以在分布式计算环境中实行,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质两者中。计算机可使用指令形成允许计算机根据输入的源而作出反应的接口。指令与其它代码段协作,以结合接收到的数据的源来响应于所接收到的数据而发起各种各样的任务。
如前所述,本发明的实施例提供了系统、方法和计算机可读存储介质,以让系统、方法和计算机可读存储介质被提供用于高效实时的墨水笔画平滑、轨迹预测和借力GPU的墨水笔画渲染。参考图2,提供了图示其中可以采用本发明的实施例的示范性计算系统200的框图。一般性地,计算系统200图示了一环境,在其中数字墨水输入在笔画输入期间和之后,甚至是在显著的缩放水平上,看起来是平滑的。计算系统200还图示了一个环境,在其中提供数字墨水笔画的平滑和渲染,使得在笔画输入或后笔画期间用户基本上不会察觉到基于平滑和/或其他处理的对笔画的改变。计算系统200更进一步地图示了一个环境,在其中渲染等待时间不增加,且经常至少部分地通过使用本文下面进一步描述的预测技术而被减少。
在未示出的其他组件中,计算系统200通常包括:用户计算设备210,其被配置用于接收数字墨水输入并且与显示器224相关联地提供经平滑的墨水输出;以及墨水平滑引擎212,其被配置用于平滑和预测未来的墨水笔画输入,正如下面更全面地描述的。在实施例中(并且如图2所示),用户计算设备210和墨水平滑引擎212可以经由网络214彼此通信。网络214可以包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。这样的联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。因此,本文不进一步地描述网络214。
应当理解,在本发明的实施例的范围内,可以在计算系统200中采用任何数量的用户计算设备210和/或墨水平滑引擎212。每个可以包括单个设备/接口或在分布式环境中协作的多个设备/接口。例如,墨水平滑引擎212可以包括被安排在分布式环境中的多个设备和/或模块,其共同地提供本文描述的墨水平滑引擎212的功能性。附加地,在计算系统200内也可以包括未示出的其他组件或模块。
在一些实施例中,所图示的组件/模块中的一个或多个可以被实现为独立的应用。在其他实施例中,可以经由用户计算设备210、墨水平滑引擎212或作为基于因特网的服务来实现所图示的组件/模块中的一个或多个。本领域的技术人员将理解,图2中所图示的组件/模块在性质和数量上是示范性的,并且不应被解释为限制。可以采用任何数量的组件/模块来在其实施例的范围内达到所期望的功能性。进一步地,组件/模块可以位于任何数量的墨水平滑引擎212和/或用户计算设备210上。仅作为示例,墨水平滑引擎212可以被提供为单个计算设备、计算设备的群集或远离其余组件中的一个或多个组件的计算设备。
应当理解,本文描述的这种和其他安排是仅作为示例来阐述的。附加于或者替代所示出和/或所描述的那些,可以使用其它的安排和单元(例如,机器、接口、功能、命令以及功能的编组等),并且一些单元可以完全省略。进一步地,本文描述的许多单元是功能实体,它们可以被实现为离散或分布式的组件或与其他组件结合、且处于任何合适的组合和位置中。在本文中被描述为由一个或多个实体执行的各种功能可以由硬件、固件、应用、驱动程序和/或软件来完成。例如,各种功能可以由执行存储在存储器中的指令的处理器来完成。
用户计算设备210可以包括任何类型的计算设备,举例而言,比如参考图1描述的计算设备100。如图所示,用户计算设备210包括墨水输入接收组件216、墨水输入传送组件218、经平滑的(并且在实施例中为扩展的)墨水笔画输出接收组件220,以及用于与显示器224相关联地渲染经平滑的墨水输出的GPU 222。墨水输入接收组件216被配置为接收通常经由I/O组件(比如笔或触笔)输入的墨水笔画的用户输入。墨水输入传送组件218被配置为例如经由网络214将由墨水输入接收组件216接收的墨水笔画传送到墨水平滑引擎212。经平滑的墨水笔画输出接收组件220被配置为(通常经由网络214从墨水平滑引擎212,正如下面更全面地描述的)接收经平滑的墨水输出,以用于与显示器224相关联地渲染。GPU 222被配置为处理(正如下面更全面地描述的)所接收的经平滑的墨水输出,以用于与显示器224相关联地渲染。
应当注意,在本文中被描述为由用户计算设备210的任何组件执行的功能性可以由能够渲染图形内容的任何其他应用、应用软件、用户界面等来执行。还应当注意,本发明的实施例同样适用于移动计算设备和接受手势、触摸和/或话音输入的设备。任何和所有这样的变化及其任何组合都被设想为处在本发明的实施例的范围内。
如图所示,墨水平滑引擎212包括样条拟合器226、墨水预测组件232和墨水渲染组件234。样条拟合器226被配置为用一组三次贝塞尔段(Bézier segment)逼近墨点的笔画。样条拟合器226每次被馈送以单个墨点,并且对于每个新墨点,被配置为或者更新现行的贝塞尔段,或者如果新墨点不能与现行的贝塞尔段足够好地拟合,则发起新的贝塞尔段。因此,样条拟合器226包括两个子组件:贝塞尔拟合器228和分段组件230。
贝塞尔拟合器228被配置为维持一组现行的点,这组点在它们被数字化时一次一个地被顺序接收。每次更新该组时,贝塞尔拟合器228被配置为计算新的三次贝塞尔逼近。然而,现行的组不是必然地包含自笔画的开始起的所有点,因为其可能由分段组件230重置,正如下面更全面地描述的。
分段组件230被配置为评估由贝塞尔拟合器228产生的拟合的质量,并且判定何时更新现有的贝塞尔逼近以及何时发起新的贝塞尔逼近或曲线。贝塞尔拟合器228还执行诸如尖突检测的任务(下面更全面地描述),并通过配置贝塞尔拟合器228来控制样条的分析属性(如下面更全面地描述的)。
贝塞尔拟合器 228
本节描述了贝塞尔拟合器228如何利用三次贝塞尔逼近或曲线逼近一组墨点。为了简洁,在本说明书中仅考虑位置信息。然而,将这些公式扩展到任何数量的特征是简单明了的。例如,在一些实现中,可以利用接收的墨点的半径(其可以与所施加的压力和输入画笔笔画的大小成比例)。在其他实现中,可以使用包括倾斜、方位角等的属性。任何和所有这样的特征及其任何组合都被设想为处在本发明的实施例的范围内。
在任何给定的时间点,贝塞尔拟合器228利用一单个贝塞尔段B(t)拟合有效点(active point)的一个集合。拟合任务被制定为最小化问题:
其中E是将在下面更全面地描述的误差函数。
令为通过集合Sk描述的隐含折线。于是,
。
由于计算折线上的点和贝塞尔曲线之间的距离是昂贵的,所以根据本实施例,通过在参数t的相同值处对折线和贝塞尔曲线进行采样而获得的两个点之间的距离被约计(approximate):
。
然后可以将期望最小化的误差函数定义为:
选择N=k和ti,使得,如此使得误差函数虑及所有且仅在Sk中的点。然而,由于正在使用三次逼近,所以样本至少包括四个点。
最小化
最小化问题的变量是B的控制点。令C = [C0,C1,C2,C3]是控制点的向量。使用梯度下降法来找到最佳值:
。
更新规则的参数α控制收敛速率。一般地,对于较大的值需要较少的迭代,但是同时,当α较大时,计算可能变得不稳定。可以使用的一个示范性参数α是:
。
更进一步地,可以通过用α除以对拟合误差没有产生任何改进的迭代次数来减轻发散的风险。
是相对于B的控制点的近似误差的梯度,并且可以如下地计算:
应当注意,在更新规则中存在四个自由度,对应于三次贝塞尔逼近的四个控制点。然而,在下一节中描述的分段组件230将使用这些自由度中的一些来对样条施加期望的分析属性(例如,连续性)。
分段组件230
分段组件230完成两个基本任务。首先,它判定是开始一个新的贝塞尔逼近还是更新当前的这个。其次,它通过在任何时候开始新的逼近或曲线时重新配置三次贝塞尔拟合器228来在样条上强加(enforce)分析属性(最显著的是C0或C1连续性)。当在本文中使用时,并且如本领域技术人员将理解的,“连续性”是指在邻近的贝塞尔曲线连接的接头处的相对平滑度。“C0连续性”是指邻近的贝塞尔曲线共享相同端点的情况。“C1连续性”是指邻近的贝塞尔曲线共享相同的端点和相同的导数(derivative)的情况。
判定是开始新的贝塞尔逼近还是更新当前的这个是基于拟合的质量。更具体地,判定是开始新的贝塞尔逼近还是更新当前的这个是基于在所接收的数字化墨点与由三次贝塞尔拟合器228计算的最佳逼近之间的最大距离。在实施例中,截止阈值可以是10个himetric单位(0.1mm),这是一个高于其用户便在可用性研究中指明:随着新点到达(除了延伸到新点之外),墨水改变是显著的点。然而,应当注意,阈值与墨水正在被渲染时墨水的物理尺寸相关。例如,如果正以10倍的放大倍数渲染湿的墨水(即,在输入工具从接收表面脱离之前在笔画活动期间渲染的墨水),则阈值可能将需要小至1/10或者用户将注意到墨水改变。当然,由于干的墨水(即,一旦输入工具从接收表面脱离的接收表面上的墨水)不改变(即,分段已经完成),所以这个点仅对于湿的墨水是有意义的。还应当注意,阈值可以是先前墨点的任何量、这样的墨点的任何特征(例如,坐标、压力、倾斜、扭曲等)的函数,和/或可以是设备相关的(例如DPI、可用的存储器、CPU、GPU等)。任何和所有这样的变化及其任何组合都被设想为处在本发明的实施例的范围内。
由分段组件230完成的另一个重要任务是要对样条施加期望的分析属性。起码样条必须是连接的(C0连续性),这意味着每个贝塞尔曲线或段的第一控制点必须与前一个曲线或段的最后的控制点相匹配,从而失去一个自由度:
C0连续性:。
虽然C0连续性保证样条是连接的,但是它并不足以产生如图3所示的平滑墨水,其中圈出的连接区指出差的(未平滑的)伪像。
根据本发明的实施例,可以通过施加C1连续性来去除图3中的差的伪像。参数的C1连续性要求在t = 0处的段的导数与在t = 1处的前一段的导数相匹配:
。
然而,当施加参数的C1连续性时,丧失了另一个自由度,这为产生良好拟合留下了很少的自由度。幸运的是,对于样条看起来平滑而言所需要的全部只是几何的(与参数的相反)C1连续性,其限制较少,并且仅需要约束第二控制点的方向:
几何的C1连续性:。
根据本实施例,可以在应用更新规则之后,通过在所需要的方向上投影第二控制点来施加几何的C1连续性。
防止摆动行为
有时,几何的C1连续性的实现导致观察到令人不快的摆动行为,例如,如图4所示的。这种行为常常看起来比在C0连续样条中观察到的偶然尖突(cusp)更差。这种行为的根本原因似乎是在t = 1中最后提交的(committed)贝塞尔的导数与对应的数字化点的导数不相符。因此,如图5所图示的,通过在贝塞尔拟合器228上添加新的约束可以缓解该问题,新的约束即:在t = 1中的贝塞尔逼近的导数必须匹配连接最后两个数字化点的贝塞尔逼近或段的导数。应当注意,在本实施例的范围内,其他缓解是可能的。例如,可以更新先前和当前的贝塞尔两者。替换地,可以一次拟合两个贝塞尔,在两者之间施加连续性,并且无论何时不满足拟合要求,都开始新的一对贝塞尔段。
尖突检测
虽然一般而言C1连续性是期望的属性,但是存在当强加并非有利时的情况。最值得注意的是,C1连续性甚至去除了预期的尖突。为此,分段组件230还被配置为基于尖突检测的结果来针对C1连续性而配置贝塞尔拟合器228。
尖突检测的简单明了的方法是检查由最后三个点形成的角并将低于预定义阈值的角分类为尖突。类似的方法是要使判定基于由t = 1中的前一段的导数与t = 0中的当前段的导数形成的角。任何和所有这样的方法及其任何组合都被设想为处在本发明的实施例的范围内。
墨水预测组件232
对输入工具的接下来的几个位置进行预测是难以解决的问题,因为手写充满了方向上的急剧的、不可预测的改变,并且用户可以在任何时候提起笔(或其他输入工具),从而使得预测不仅不必要,而且潜在地是有害的。
墨水预测组件232被配置为首先通过定义允许评估墨水预测的质量的度量来确立预测质量。有两个主要方面要考虑:用户体验和性能。就用户体验而言,错误预测的结果是:一片墨水在屏幕或其他显示表面上渲染,并且一旦预测证明是错误的,则那片墨水在几帧内被清除。这可能产生闪烁的效应,其在预测是跨帧地不稳定时加剧。该度量必须反映预测误差是否可以被最终用户观察到。
就性能而言,示范性方法是要使用误差向量的主分量和作为预测质量的度量。图5提供了五点提前预测的示例。数字化点用圆点表示。与实线610连接的那些点已经被数字化,而未连接(并且出现在较大三角形的内部)的那些点是未来的。预测的点由虚线612连接。连接预测的点与最后的数字化点的向量是预测向量。将未来的数字化点与最后的数字化点连接的向量是实现(realization)向量。向量是预测误差,并且和是其主分量。测量该预测是滞后或过冲多少。测量该预测的点距实现向量有多远。
可以由墨水预测组件232用于墨水预测的一种技术涉及用三次贝塞尔样条拟合数字化点。基本思想是通过将最后的贝塞尔段B(t)扩展到其未来而进行预测,这简单地意味着在某些t > 1处(图6中的虚线)采样B(t)。
t的选择
令k是期望对于其进行未来预测的点的数量,且令是最后两个数字化点之间的距离。那么可以以这样一种方式选择t≥1,即:使得B(1)和B(t)之间的贝塞尔曲线或段的弧长等于。
由于对于三次曲线的弧长没有闭合形式解,因此可以利用采用多个已知事实的逼近。首先,贝塞尔曲线的端点之间的距离是其弧长的下限。其次,贝塞尔曲线的控制多边形的长度是其弧长的上限。
重新参数化
用于渲染预测的最简单的选项是从最后的数字化点到预测的点画一条线。然而,更好的方法是画如图6所示的贝塞尔曲线的延长线(虚线6线)。因此,墨水预测组件232还被配置为以不改变曲线这样的方式重新参数化贝塞尔曲线,并且:
,
,
其中B是原始贝塞尔,而是重新参数化的贝塞尔。重新参数化的成本是可忽略的,因为它可以在恒定的时间内执行。
利用该技术,墨水预测组件232可以提前大约16毫秒进行预测,而不引入差的伪像(即,可见的误预测)。
墨水渲染
在拟合和预测完成时,结果是一组贝塞尔逼近和一组对应的半径。通常,是由四个控制点参数化的三次函数。在一些表现(manifestation)中,可以是线性的,并且仅通过开始和结束半径来参数化:
。
在其他表现中,它们可以是三次的,并且使用本领域技术人员公知的伯恩斯坦(Bernstein)多项式、通过四个控制点中的每一个处的权重来参数化:
。
给定的对一起表示墨水笔画的一段,正如图7所示的。用符号表示,这对应于点的轨迹(locus)。
图8的流程图示了根据本发明的实施例的、用于渲染墨水的示范性一般过程800。可以例如利用图2的墨水平滑引擎212的墨水渲染组件234来执行在虚线左侧描述的功能。例如,可以利用图2的用户计算设备210的GPU 222来执行在虚线右侧描述的功能。
轮廓变换810
本发明的实施例允许在墨水已被捕获和拟合之后、但在渲染之前将任意的2D仿射变换(由3×2矩阵定义)应用于墨水。这样的变换对于例如对包含墨水的文档的扫视(panning)和缩放进行建模是有用的。
变换在两个步骤中实现。在第一步骤(“轮廓”变换)中,贝塞尔函数被变换。这通过简单地用贝塞尔控制点乘以规定的矩阵来完成(概念上,这影响墨水的整体形状,但不影响宽度(thickness))。
第二步骤是要变换(transform)半径。这在顶点着色器(vertex shader)820中完成,下面将更全面地描述。注意,当变换半径时,M(m31和m32)的转换(translation)分量未被使用。此后,在本说明书中,符号M将指代2×2矩阵。
展平(flatten)812
为了渲染给定的笔画,作为组成部分的(constituent)贝塞尔逼近的每一个是“被展平的”。形式上,为每个对挑选一组,并且在那些t处对这些函数求值(这实质上是反向曲线拟合)。挑选该组的确切方法是由实现方式定义的(implementationdefined)。在一个示范性实现中,可以使用如在美国专利第5367617号中所述的混合前向差分算法,其通过引用被并入本文,如同在本文中阐述其全部内容一样。本领域技术人员将理解,诸如前向差分的其它技术在本行业中是常见的且公知的,并且也可以被利用。
结果是沿着曲线伸展(lie)的点和半径的列表。然后将该数据发送到GPU并存储在所谓的“顶点缓冲器”(此后称为VB1)中。
实例镶嵌814
同样传递给GPU的是另外两个顶点缓冲器:一个包含近似圆的三角形网格,另一个是表示梯形的三角形网格。这些网格在初始化期间计算一次,并在后续渲染操作中被高速缓存和重新使用。
具体的实现可以以不同方式表示镶嵌。一个示范性实现利用了以下方案:
圆三角形网格中的每个顶点包含以下数据:
CenterOrEdge:1位(0:中心,1:边沿)
InteriorOrExterior:1位(0:内部,1:外部)
方向:float2(规格化)。
连接内部和外部顶点的三角形被使用来提供抗混叠(由图8中所图示的亮到暗的梯度标示)。应当注意,没有实际存储关于顶点的绝对坐标,仅记录顶点与其他顶点相关时它的拓扑关系。例如,下图中的顶点A是内部边缘顶点,且将被存储为:
而顶点B是外部边缘顶点,且将被存储为:
(假设是倒的y轴)。只有一个中心顶点(图9中标示为C),其位于内部并且被分配给任意的方向。
还应当注意,三角形(以及因此是顶点)的确切数量可以在实现中变化,并且通常取决于正被渲染的墨水的最大半径。
梯形中的每个顶点包含以下数据:
StartOrEnd:1位(0:起点,1:终点)
InteriorOrExterior:1位(0:内部,1:外部)
TopOrBottom:1位(0:顶部,1:底部)。
例如,下图中的顶点A是在顶部的内部起点顶点,且将被存储为:
。
顶点B是在底部的内部终点顶点,且将被存储为:
正如图10所示的。在这种情况下,不管正在渲染的墨水的半径如何,独特的顶点的数量固定为8。
加宽和光栅化816
一旦数据被上传到GPU,则光栅化的剩余步骤在两趟(pass)中执行:一趟渲染圆,一趟渲染梯形。一个示范性实现使用例如下面描述的标准Direct3D管线的五个级(818、820、822、824和826)来执行每一趟。本领域技术人员将理解和意识到,其他的与Direct3D的直接类似的实现在诸如OpenGL的其他平台上是可能的。任何和所有这样的变化及其任何组合都被设想为处在本发明的实施例的范围内。
输入装配器818、光栅化器822和输出合并器826是固定的功能,并且基本上由GPU本身自动执行。顶点着色器820和像素着色器824是可编程的。
输入装配器818
输入装配器818被配置为取得VB1中的圆/梯形网格和顶点,并且准备它们以便由管线的其余部分进行处理。部分地,这牵涉到跨VB1中的顶点复制这些网格的副本(本领域技术人员已知的被称为“实例化”的常见技术)。在圆那趟中,输入装配器818被配置为按VB1中每个顶点分配网格的一个副本。在梯形那趟中,输入装配器818按VB1中每对连续顶点分配一个副本。由输入装配器818输出的顶点包含来自网格和VB1数据两者的合并的数据:
圆那趟的顶点格式:
梯形那趟的顶点格式:
。
顶点着色器820
根据本实施例,提供了顶点着色器820,其取得由输入装配器818输出的每个顶点,并将其向下精简(condense)到位置和不透明度。对于圆那趟,使用以下公式:
。
这里,M是在本文档中早先定义的2×2矩阵,并且是其逆转置。
稍后将更详细地讨论offset(偏移)和opacityModifier(不透明度修改器)函数,但在通常情况下,它们仅仅是和。
对于梯形那趟,可以使用更复杂的公式:
这里,是90度旋转矩阵。
应当注意,这些公式的类似版本已经使用于墨水渲染的早先版本中。然而,与先前的具体化(incarnation)不同,本发明的实施例在GPU上执行变换。
还应当注意,这些公式的推导超出本说明书的范围。然而,图11、12和13可以帮助将各种量彼此相关。图11图示了两个邻近墨点的图(假设M是单位矩阵)。图12示出了围绕P(i+1)的特写(假设TopOrBottom = 0,StartOrEnd = 1,并且M是单位矩阵)。图13示出了围绕P+D的特写(假设TopOrBottom = 0,StartOrEnd = 1,并且M是单位矩阵)。
光栅化器822
一旦复制的网格的顶点已被变换,对应的三角形就由GPU利用光栅化器822“光栅化”。换句话说,由三角形覆盖的像素被识别,并且像素着色器824按每个被覆盖的像素被调用一次。D3D光栅化对于本领域技术人员是已知的,因此在本文中不进一步描述。
像素着色器824
像素着色器824被配置为从光栅化器8222取得不透明度且使用其来调制墨水的颜色:
。
这种颜色调制模拟沿着墨水边缘的抗混叠。(在一些表现中,这是简单的纯色,但是在更复杂的表现中,颜色可以取决于像素的位置)。该颜色值然后被传递到输出合并器826。
输出合并器826
输出合并器826被配置为取得颜色值并将其混合到渲染目标上。输出合并对于本领域技术人员是已知的,因此在本文中不进一步描述。
薄的特征缓解
如上文所述,本发明的实施例供应了利用两个辅助函数offset和opacityModifier的顶点着色器820。offset的目的是在屏幕空间中将顶点偏移半个像素,从而模拟抗混叠。当正被渲染的圆/梯形的尺寸小于1个像素时,可以添加特别的逻辑以减少该偏移将导致重叠的三角形的机会。当执行这样的逻辑时,顶点的不透明度被相应地修改。
offset和opacityModifier的完整定义如下:
。
现在转到图14,图示了一个流程图,其示出根据本发明的实施例的、用于平滑数字墨水输入的示范性方法1400。如框1410所指示的,接收第一墨点。如框1412所指示的,还接收第二墨点。如框1414所指示的,基于第一和第二墨点计算现行的三次贝塞尔逼近。如框1416所指示的,接收第三墨点。如框1418所指示的,确定第三墨点是否充分拟合现行的三次贝塞尔逼近,并且如框1420所指示的,利用第一、第二和第三墨点计算新的三次贝塞尔逼近。
参考图15,图示了一个流程图,其示出根据本发明的实施例的、用于平滑和渲染数字墨水输入的示范性方法1500。如框1510所指示的,接收第一和第二墨点;其被顺序地接收。如框1512所指示的,基于第一和第二墨点生成现行的经平滑的墨水片段。如框1514所指示的,接收第三墨点。然后确定第三墨点是否充分拟合现行的经平滑的墨水片段,如判定框1516所指示的。如果确定第三墨点充分拟合现行的经平滑的墨水片段,则如框1518所指示的,更新现行的经平滑的墨水片段。然而,如果确定第三墨点未充分拟合现行的经平滑的墨水片段,则如框1520所指示的,终止现行的经平滑的墨水片段,并且发起另一经平滑的墨水片段。利用GPU,渲染包括第一、第二和第三墨点的经平滑的墨水输出。这在框1522处指示。
现在转到图16,图示了一个流程图,其示出根据本发明的实施例的、示出用于平滑和渲染数字墨水输入的示范性方法1600。如框1610所指示的,接收第一墨点。如框1612所指示的,还接收第二墨点。如框1614所指示的,基于第一和第二墨点计算现行的三次贝塞尔逼近。如框1616所指示的,接收第三墨点。然后如框1618所指示的,确定第三墨点是否充分拟合现行的三次贝塞尔逼近。如框1620所指示的,利用第一、第二和第三墨点计算新的三次贝塞尔逼近。然后渲染包括第一、第二和第三墨点的经平滑的墨水输出。这在框1622处指示。
正如可以理解的,本发明的实施例提供了尤其用于墨水笔画输入的高效实时墨水笔画平滑、轨迹预测和借力GPU的渲染的系统、方法和计算机可读存储介质。接收至少包括第一和第二墨点的多个墨点。基于第一和第二墨点,计算现行的贝塞尔逼近。在时间上接续于第一和第二墨点地接收第三墨点,并且确定第三墨点是否充分拟合现行的贝塞尔逼近。如果确定在渲染时用户将不能检测到第三墨点和现行的贝塞尔逼近之间的差异,则确定第三墨点充分拟合于现行的贝塞尔逼近。这样的确定通常基于预定的阈值差值。如果确定第三墨点充分拟合现行的贝塞尔逼近,则现行的贝塞尔逼近被更新成包括第三墨点。然而,如果确定第三墨点未充分拟合现行的贝塞尔逼近,则终止现行的贝塞尔逼近并且计算新的贝塞尔逼近。与笔画接收表面(例如,触敏显示屏)相关联地渲染包括第一、第二和第三墨点的经平滑的墨水输出。
已经相关于具体实施例描述了本发明,这些具体实施例在所有方面都打算是说明性的而不是限制性的。在不脱离本发明范围的情况下,替换实施例对于本发明所属领域的普通技术人员来说将变得显而易见。
尽管本发明容许各种修改和替换构造,但是其某些图示的实施例在附图中被示出并且已经在上面被详细描述。然而,应当理解,没有将本发明限制为所公开的特定形式的意图,而是相反,意图是覆盖落入本发明的精神和范围内的所有修改、替换构造和等同物。
本领域技术人员将理解,在图14的方法1400、图15的1500和图16的1600中所示出的步骤的顺序不意味着以任何方式限制本发明的范围,并且事实上,这些步骤可以在其实施例内以各种各样不同的顺序发生。任何和所有这样的变化及其任何组合都被设想为处在本发明的实施例的范围内。
Claims (20)
1.一种由包括至少一个处理器的一个或多个计算设备执行的方法,所述方法用于平滑经由笔画接收表面接收的数字墨水输入,所述方法包括:
接收多个墨点,并且建立第一组墨点;
基于所述第一组墨点计算第一三次贝塞尔逼近;
相对于所述第一组墨点顺序地和稍后地接收第一附加墨点;
至少基于接收所述第一附加墨点,动态地确定所述第一附加墨点是否拟合所述第一三次贝塞尔逼近;
至少基于确定所述第一附加墨点拟合所述第一三次贝塞尔逼近:
更新所述第一组墨点和所述第一三次贝塞尔逼近以包括所述第一附加墨点;以及
生成包括更新的所述第一组墨点的第一经平滑的墨水输出;
至少基于确定所述第一附加墨点不拟合所述第一三次贝塞尔逼近:
终止所述第一组墨点,并且建立第二组墨点;以及
至少使用所述第一附加墨点发起第二三次贝塞尔逼近;以及
在与所述笔画接收表面相关联的显示器上渲染所述第一经平滑的墨水输出。
2.根据权利要求1所述的方法,还包括相对于所述第一附加墨点顺序地和稍后地接收第二附加墨点,并且确定所述第二附加墨点是否拟合所述第一三次贝塞尔逼近和所述第二三次贝塞尔逼近之一。
3.根据权利要求2所述的方法,还包括生成和渲染包括所述第二附加墨点的第二经平滑的墨水输出。
4.根据权利要求1所述的方法,还包括确定是否存在一个或多个预期的尖突,其中C1连续性在没有检测到预期的尖突时在所述第一三次贝塞尔逼近和所述第二三次贝塞尔逼近之间保持。
5.根据权利要求1所述的方法,其中所述第一组墨点中的所述多个墨点和所述第一附加墨点在它们被数字化时被顺序地接收,并且其中在输入工具继续提供输入数据的同时计算所述第一贝塞尔逼近。
6.根据权利要求1所述的方法,其中确定所述第一附加墨点是否充分拟合所述第一三次贝塞尔逼近包括:约计在由紧接在所述第一附加墨点之前的所述第一组墨点中的墨点描述的折线与所述第一三次贝塞尔逼近之间的距离。
7.根据权利要求6所述的方法,其中如果在连接紧接在所述第一附加墨点之前的所述第一组墨点中的所述墨点的所述折线与所述第一三次贝塞尔逼近之间的所述距离小于或等于阈值,则确定所述第一附加墨点充分拟合所述第一三次贝塞尔逼近。
8.根据权利要求7所述的方法,其中所述阈值至少部分地基于以下之一或两者:所述数字墨水在其上被渲染的显示器的分辨率,和所述数字墨水利用其来渲染的变换。
9.根据权利要求1所述的方法,还包括通过将所述第一贝塞尔逼近扩展到未来而预测要在稍后的时间点接收的至少一个后续墨点。
10.一种用于平滑和渲染数字墨水的系统,包括:
中央处理单元,其:
顺序地接收至少包括第一墨点和第二墨点的多个墨点;
至少基于所述第一墨点和所述第二墨点生成现行的经平滑的墨水片段;
相对于所述第一墨点和所述第二墨点顺序地和稍后地接收第三墨点;
至少基于接收所述第三墨点,动态地确定所述第三墨点是否充分拟合所述现行的经平滑的墨水片段;以及
至少基于确定所述第三墨点充分拟合所述现行的经平滑的墨水片段,更新所述现行的经平滑的墨水片段,否则终止所述现行的经平滑的墨水片段并且发起第二经平滑的墨水片段;以及
图形处理单元,其与显示表面相关联地渲染经平滑的墨水输出,所述经平滑的墨水输出至少包括所述第一墨点、所述第二墨点和所述第三墨点。
11.根据权利要求10所述的系统,其中所述中央处理单元通过将贝塞尔曲线至少拟合到所述第一墨点和所述第二墨点,来生成所述现行的经平滑的墨水片段。
12.根据权利要求10所述的系统,其中所述中央处理单元在所述第一墨点、所述第二墨点和所述第三墨点被数字化时顺序地接收所述第一墨点、所述第二墨点和所述第三墨点,并且其中在输入工具继续提供连续输入数据的同时计算所述现行的经平滑的墨点片段。
13.根据权利要求10所述的系统,其中所述中央处理单元通过约计由所述第二墨点和所述第三墨点描述的折线与所述现行的经平滑的墨水片段之间的距离,来确定所述第三墨点是否充分拟合所述现行的经平滑的墨水片段。
14.根据权利要求13所述的系统,其中如果连接所述第二墨点和所述第三墨点的所述折线与所述经平滑的墨水片段之间的所述距离小于或等于阈值,则确定所述第三墨点充分拟合所述现行的经平滑的墨点片段。
15.根据权利要求10所述的系统,其中所述图形处理单元部分地通过在所述显示表面上定位预先生成的圆点和四边形的镶嵌,来渲染所述经平滑的墨水输出。
16.根据权利要求10所述的系统,其中所述图形处理单元在渲染所述经平滑的墨水输出时采用薄特征缓解。
17.一种用于平滑和渲染数字墨水的装置,包括:
至少一个处理器;以及
存储器,其存储数字墨水平滑和渲染例程,所述数字墨水平滑和渲染例程当由所述至少一个处理器执行时,使所述装置:
接收第一墨点;
接收第二墨点;
至少基于所述第一墨点和所述第二墨点计算现行的三次贝塞尔逼近;
相对于所述第一墨点和所述第二墨点顺序地和稍后地接收第三墨点;
至少基于接收所述第三墨点,动态地确定所述第三墨点是否充分拟合所述现行的三次贝塞尔逼近;
至少使用所述第一墨点、所述第二墨点和所述第三墨点计算新的三次贝塞尔逼近;以及
与显示表面相关联地渲染经平滑的墨水输出,所述经平滑的墨水输出至少包括所述第一墨点、所述第二墨点和所述第三墨点。
18.根据权利要求17所述的装置,其中至少基于所述装置确定所述第三墨点充分拟合所述现行的三次贝塞尔逼近,所述数字墨水平滑和渲染例程使所述装置通过更新所述现行的三次贝塞尔逼近来计算新的三次贝塞尔逼近。
19.根据权利要求17所述的装置,其中至少基于所述装置确定所述第三墨点不充分拟合所述现行的三次贝塞尔逼近,所述数字墨水平滑和渲染例程使所述装置通过终止所述现行的三次贝塞尔逼近和发起第二三次贝塞尔逼近,来计算新的三次贝塞尔逼近。
20.根据权利要求17所述的装置,还包括图形处理单元,其对所述经平滑的墨水输出进行光栅化和合并以进行渲染。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/486,735 US9508166B2 (en) | 2014-09-15 | 2014-09-15 | Smoothing and GPU-enabled rendering of digital ink |
US14/486735 | 2014-09-15 | ||
PCT/US2015/050097 WO2016044214A1 (en) | 2014-09-15 | 2015-09-15 | Smooothing and gpu-enabled rendering of digital ink |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106687891A CN106687891A (zh) | 2017-05-17 |
CN106687891B true CN106687891B (zh) | 2019-12-03 |
Family
ID=54251732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580049708.9A Active CN106687891B (zh) | 2014-09-15 | 2015-09-15 | 数字墨水的平滑和gpu使能的渲染 |
Country Status (10)
Country | Link |
---|---|
US (2) | US9508166B2 (zh) |
EP (1) | EP3195094B1 (zh) |
JP (2) | JP6553710B2 (zh) |
KR (2) | KR102450683B1 (zh) |
CN (1) | CN106687891B (zh) |
AU (1) | AU2015318093B2 (zh) |
CA (1) | CA2959665C (zh) |
MX (1) | MX370913B (zh) |
RU (1) | RU2701471C2 (zh) |
WO (1) | WO2016044214A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170236318A1 (en) * | 2016-02-15 | 2017-08-17 | Microsoft Technology Licensing, Llc | Animated Digital Ink |
US10282867B2 (en) * | 2016-03-25 | 2019-05-07 | Microsoft Technology Licensing, Llc | Shading for variable opacity stroke rendering |
US10627910B2 (en) * | 2017-02-21 | 2020-04-21 | Adobe Inc. | Stroke operation prediction for three-dimensional digital content |
US10134158B2 (en) | 2017-02-23 | 2018-11-20 | Microsoft Technology Licensing, Llc | Directional stamping |
US10930045B2 (en) | 2017-03-22 | 2021-02-23 | Microsoft Technology Licensing, Llc | Digital ink based visual components |
US10147159B2 (en) | 2017-04-07 | 2018-12-04 | Microsoft Technology Licensing, Llc | Ink render using high priority queues |
US10657682B2 (en) | 2017-04-12 | 2020-05-19 | Adobe Inc. | Drawing curves in space guided by 3-D objects |
CN109544658B (zh) * | 2017-09-21 | 2022-03-25 | 腾讯科技(深圳)有限公司 | 地图的渲染方法和装置、存储介质、电子装置 |
EP3745240B1 (en) * | 2018-04-19 | 2022-08-31 | Shenzhen Goodix Technology Co., Ltd. | Coordinate smoothing method, touch control chip, and electronic terminal |
US10740966B2 (en) | 2018-05-14 | 2020-08-11 | Microsoft Technology Licensing, Llc | Fake thickness on a two-dimensional object |
CN109408161A (zh) * | 2018-08-22 | 2019-03-01 | 安徽慧视金瞳科技有限公司 | 一种模拟毛笔笔触的绘制算法 |
TWI774019B (zh) | 2020-07-13 | 2022-08-11 | 元太科技工業股份有限公司 | 電子紙顯示裝置及電子紙顯示面板的驅動方法 |
US20230045646A1 (en) * | 2021-06-25 | 2023-02-09 | Tata Consultancy Services Limited | SYMBOL RECOGNITION FROM RASTER IMAGES OF P&IDs USING A SINGLE INSTANCE PER SYMBOL CLASS |
JP7098799B1 (ja) * | 2021-07-08 | 2022-07-11 | レノボ・シンガポール・プライベート・リミテッド | 情報処理装置、情報処理システム、及び制御方法 |
TWI817840B (zh) * | 2022-11-23 | 2023-10-01 | 大陸商北京集創北方科技股份有限公司 | 觸摸軌跡優化方法、觸控裝置及資訊處理裝置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0762265A2 (en) * | 1995-08-31 | 1997-03-12 | Canon Kabushiki Kaisha | Coordinate input device and method |
US7196707B2 (en) * | 2003-09-11 | 2007-03-27 | Autodesk Canada Co. | Tangent balancing |
CN102937848A (zh) * | 2012-12-04 | 2013-02-20 | 上海合合信息科技发展有限公司 | 对手写笔迹进行编辑处理的方法及电子设备 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5367617A (en) | 1992-07-02 | 1994-11-22 | Microsoft Corporation | System and method of hybrid forward differencing to render Bezier splines |
US6101280A (en) | 1994-07-04 | 2000-08-08 | Hewlett-Packard Company | Method and apparatus for compression of electronic ink |
US5694535A (en) * | 1995-03-24 | 1997-12-02 | Novell, Inc. | Direct interactive, constant-time curve apparatus and method |
US5897213A (en) * | 1997-11-21 | 1999-04-27 | Bayside Controls, Inc. | Slide assembly for preloading roller bearings |
US6850228B1 (en) | 1999-10-29 | 2005-02-01 | Microsoft Corporation | Universal file format for digital rich ink data |
US6707473B2 (en) | 2001-08-01 | 2004-03-16 | Microsoft Corporation | Dynamic rendering of ink strokes with transparency |
US6909430B2 (en) * | 2001-08-01 | 2005-06-21 | Microsoft Corporation | Rendering ink strokes of variable width and angle |
US20030123745A1 (en) | 2001-12-28 | 2003-07-03 | Mattias Bryborn | Method and apparatus for compression and reconstruction of electronic handwriting |
US7146046B2 (en) | 2002-06-24 | 2006-12-05 | Microsoft Corporation | Method and apparatus for scale independent cusp detection |
US7274831B2 (en) * | 2003-04-03 | 2007-09-25 | Microsoft Corporation | High quality anti-aliasing |
US7551187B2 (en) * | 2004-02-10 | 2009-06-23 | Microsoft Corporation | Systems and methods that utilize a dynamic digital zooming interface in connection with digital inking |
US7284192B2 (en) | 2004-06-24 | 2007-10-16 | Avaya Technology Corp. | Architecture for ink annotations on web documents |
US7574048B2 (en) | 2004-09-03 | 2009-08-11 | Microsoft Corporation | Freeform digital ink annotation recognition |
KR20120095852A (ko) | 2009-10-15 | 2012-08-29 | 스마트 테크놀러지스 유엘씨 | 디스플레이 표면상에서 손글씨 잉크 객체를 그리기 및 지우기 하는 방법 및 장치 |
KR101126167B1 (ko) * | 2010-06-07 | 2012-03-22 | 삼성전자주식회사 | 터치 스크린 및 디스플레이 방법 |
US20120050293A1 (en) * | 2010-08-25 | 2012-03-01 | Apple, Inc. | Dynamically smoothing a curve |
CA2820108C (en) | 2010-12-06 | 2017-03-14 | Douglas Blair Hill | Annotation method and system for conferencing |
US20130198653A1 (en) | 2012-01-11 | 2013-08-01 | Smart Technologies Ulc | Method of displaying input during a collaboration session and interactive board employing same |
AU2012202651A1 (en) * | 2012-05-04 | 2013-11-21 | Canon Kabushiki Kaisha | A method for stroking paths |
TWI486837B (zh) * | 2012-09-18 | 2015-06-01 | Egalax Empia Technology Inc | 基於預測的位置追蹤方法 |
KR101867494B1 (ko) | 2012-10-05 | 2018-07-17 | 텍추얼 랩스 컴퍼니 | 저지연 유저 입력 프로세싱과 피드백용 하이브리드 시스템 및 방법 |
US20150301726A1 (en) * | 2014-04-16 | 2015-10-22 | Societe Bic | Systems and Methods for Displaying Free-Form Drawing on a Contact-Sensitive Display |
-
2014
- 2014-09-15 US US14/486,735 patent/US9508166B2/en active Active
-
2015
- 2015-09-15 EP EP15775037.3A patent/EP3195094B1/en active Active
- 2015-09-15 KR KR1020227011163A patent/KR102450683B1/ko active IP Right Grant
- 2015-09-15 AU AU2015318093A patent/AU2015318093B2/en active Active
- 2015-09-15 KR KR1020177010313A patent/KR102385256B1/ko active IP Right Grant
- 2015-09-15 WO PCT/US2015/050097 patent/WO2016044214A1/en active Application Filing
- 2015-09-15 CN CN201580049708.9A patent/CN106687891B/zh active Active
- 2015-09-15 MX MX2017003419A patent/MX370913B/es active IP Right Grant
- 2015-09-15 CA CA2959665A patent/CA2959665C/en active Active
- 2015-09-15 JP JP2017507991A patent/JP6553710B2/ja active Active
- 2015-09-15 RU RU2017108212A patent/RU2701471C2/ru active
-
2016
- 2016-08-16 US US15/238,336 patent/US9697625B2/en active Active
-
2019
- 2019-07-04 JP JP2019125319A patent/JP6918053B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0762265A2 (en) * | 1995-08-31 | 1997-03-12 | Canon Kabushiki Kaisha | Coordinate input device and method |
US7196707B2 (en) * | 2003-09-11 | 2007-03-27 | Autodesk Canada Co. | Tangent balancing |
CN102937848A (zh) * | 2012-12-04 | 2013-02-20 | 上海合合信息科技发展有限公司 | 对手写笔迹进行编辑处理的方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
BR112017003480A2 (pt) | 2017-12-12 |
MX370913B (es) | 2020-01-09 |
KR102450683B1 (ko) | 2022-10-04 |
CN106687891A (zh) | 2017-05-17 |
US20160358348A1 (en) | 2016-12-08 |
RU2701471C2 (ru) | 2019-09-26 |
CA2959665C (en) | 2022-10-04 |
US9508166B2 (en) | 2016-11-29 |
JP6553710B2 (ja) | 2019-07-31 |
KR20220047671A (ko) | 2022-04-18 |
WO2016044214A1 (en) | 2016-03-24 |
RU2017108212A (ru) | 2018-09-14 |
US20160078649A1 (en) | 2016-03-17 |
RU2017108212A3 (zh) | 2019-04-23 |
EP3195094B1 (en) | 2018-07-25 |
AU2015318093A1 (en) | 2017-03-16 |
JP2017528812A (ja) | 2017-09-28 |
MX2017003419A (es) | 2017-06-19 |
JP2019204522A (ja) | 2019-11-28 |
CA2959665A1 (en) | 2016-03-24 |
US9697625B2 (en) | 2017-07-04 |
KR102385256B1 (ko) | 2022-04-08 |
KR20170054519A (ko) | 2017-05-17 |
JP6918053B2 (ja) | 2021-08-11 |
EP3195094A1 (en) | 2017-07-26 |
AU2015318093B2 (en) | 2020-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106687891B (zh) | 数字墨水的平滑和gpu使能的渲染 | |
US10719168B2 (en) | Wet ink predictor | |
CN104951263B (zh) | 避免向显示器发送未改变的区域 | |
KR101665396B1 (ko) | 파일의 도면화 방법 | |
US8830258B2 (en) | Generating strokes in real-time on an electronic paper display | |
US10970889B2 (en) | Stroke prediction for stylized drawings based on prior strokes and reference image | |
Wong et al. | Model-based analysis of Chinese calligraphy images | |
US20170148212A1 (en) | Color-based dynamic sub-division to generate 3d mesh | |
CN105976362A (zh) | 一种适用于3d打印的图像线画生成方法 | |
JP2006072531A (ja) | 有限要素解析用の四面体メッシュの生成方法およびその方法を用いた有限要素解析システム | |
US20240168575A1 (en) | Input support apparatus, method, computer-readable medium, and input system | |
KR102237090B1 (ko) | 두 개의 링크로 구성된 3d 객체의 리깅 보완 방법 | |
BR112017003480B1 (pt) | Método para suavização e renderização de tinta digital |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |