(4)附图说明
图1为一般地表示可合并本发明的计算机系统的方框图;
图2为一般地表示根据发明的一个方面的用于识别手绘对象的形状的系统部件的示例结构的方框图;
图3为一般地表示根据发明的一个方面为识别手绘对象的形状所采取的步骤的流程图;
图4为一般地表示根据发明的一个方面为识别容器和连接器的形状所采取的步骤的流程图;
图5为一般地表示根据发明的一个方面的用于进行形状识别的决策树,它能将特定形状的总的统计特征与基于规则的说明相结合;
图6为一般地表示根据发明的一个方面为识别闭合容器的形状所采取的步骤的流程图;
图7为一般地表示根据发明的一个方面为执行圆度测试所采取的步骤的流程图;
图8为一般地表示根据发明的一个方面由分类器采取的用来区分闭合容器的形状是圆还是椭圆的步骤的流程图;
图9为一般地表示根据发明的一个方面由分类器采取的用来区分闭合容器的形状是何种多边形的步骤的流程图;
图10为一般地表示根据发明的一个方面在围绕该形状的凸包中具有最大内接多边形的形状的笔划的示例图;
图11为一般地表示根据发明的一个方面的形状的笔划与围绕该形状的凸包中最大的内接多边形之间的最大距离的示例图;
图12为一般地表示根据发明的一个方面从手绘形状中识别出的多边形的边的精细的示例图;
图13为一般地表示根据发明的一个方面为识别连接器的形状而采取的步骤的流程图;
图14为一般地表示根据发明的一个方面的两个容器之间的连接器的示例图;
图15为一般地表示根据发明的一个方面合并基干笔划或笔划件的示例图。
(5)具体实施方式
图1示出可实施本发明的合适的计算系统环境100的例子。计算系统环境100只是合适的计算环境的一个例子,并不旨在限定本发明的使用范围和功能。不应将计算环境100解释成依赖于或需要示例操作环境100中所示的任何一个部件或其组合。
本发明可用许多其它通用或专用计算系统环境或配置操作。熟知的可适合与本发明一起使用的计算系统、环境、和/或配置包括,但不限于:个人电脑、服务器计算机、手提或膝上设备、图形输入板设备、无头服务器、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费电子产品、网络PC机、微型计算机、大型计算机、包括任何以上系统或设备的分布式计算机环境等等。
本发明可以在计算机可执行指令的总的上下文中描述,例如:由计算机执行的程序模块。一般来说,程序模块包括执行特定任务或实施特定抽象数据类型的例行程序、程序、对象、部件、数据结构等等。本发明也可应用于分布式计算环境中,在该环境中任务是由通过通信网络链接的远程处理设备执行的。在分布式计算环境中,可将程序模块定位于包含存储器设备的本地和/或远程计算机存储器媒体中。
参见图1,用于实施本发明的示例系统包括以计算机110形式的通用计算装置。计算机110的部件可包括,但不限于:处理单元120、系统存储器130、和连接各种系统部件(包括将系统存储器连接至处理单元120)的系统总线121。系统总线121可以是几种总线结构(包括:存储器总线或存储器控制器、外围总线、和使用各种总线结构中任一种的本地总线)中的任一种。作为示例而非限定,这种结构包括:工业标准结构(ISA)总线、微通道结构(MCA)总线、扩展工业标准结构(EISA)总线、视频电子标准协会(VESA)本地总线、和外部设备互连(PCT)总线(也称为夹层总线)。
计算机110通常包括各种计算机可读媒体。计算机可读媒体可以是可由计算机110访问的任何可用媒体,并包括以任何方法或技术实施的用于存储信息的易失性和非易失性媒体,及可移动/不可移动媒体,作为示例而非限定,计算机可读媒体可包括计算机存储媒体和通信媒体。计算机存储媒体包括以任何用于存储信息的方法或技术(例如:计算机可读指令、数据结构、程序模块或其它数据)实施的易失性和非易失性、可移动和不可移动媒体。计算机存储器媒体包括,但不限于:RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字通用光盘(DVD)或其它光盘存储器、磁带盒、磁带、磁盘存储器或其它磁存储装置、或任何可用于存储可由计算机110访问的想要的信息的其它媒体。通信媒体通常体现计算机可读指令、数据结构、程序模块或以已调制的数据信号(例如:载波或其它传输机制)形式的其它数据并包括任何信息传输媒体。“已调制的数据信号”一词指一个信号一个或多个属性被设定,或以编码信号中的信息的方式被改变。作为示例而非限定,通信媒体包括有线网络或直接连线连接之类的有线媒体,以及诸如声、RF、红外线的无线媒体及其它无线媒体。任何上述媒体的组合也应包括在计算机可读媒体的范围内。
系统存储器130包括以诸如只读存储器(ROM)131和随机存储器(RAM)132之类的易失性和/或非易失性存储器形式的计算机存储媒体。包括帮助在计算机110的元件之间传输信息(例如在启动期间)的基本例行程序的基本输入/输出系统133(BIOS)通常被存储在ROM131中。RAM132通常包括可由处理单元120立即访问和/或当前由处理单元120操作的数据和/或程序模块。作为示例而非限定,图1示出操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可包括其它可移动/不可移动、易失性和非易失性计算机存储媒体。仅作为示例,图1示出硬盘驱动器141(它从不可移动媒体、非易失性磁媒体读取或写入不可移动媒体、非易失性磁媒体)、磁盘驱动器151(它从可移动、非易失性磁盘152读取或写入可移动、非易失性磁盘152)、及光盘驱动器155(它从诸如CD ROM或其它光媒体之类的可移动、非易失性光盘156读取或写入诸如CD ROM或其它光媒体之类的可移动、非易失性光盘156)。其它可用于示例操作环境中的可移动/不可移动、易失性和非易失性计算机存储媒体包括,但不限于:盒式磁带、闪存卡、数字通用光盘、数字视频带、固态RAM、固态ROM等等。通常通过诸如接口140之类的不可移动存储器接口将硬盘驱动器141连接到系统总线121,并通过诸如接口150之类的不可移动存储器接口将磁盘驱动器151和光盘驱动器155。
上述和图1中示出的驱动器及与它们相关联的计算机存储媒体为计算机110提供计算机可读指令、数据结构、程序模块和其它数据。在图1中,例如:硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146及程序数据147。注意这些部件既可以与操作系统134、应用程序135、其它程序模块136及程序数据137相同,也可以与之不同。这里给予存储操作系统144、应用程序145、其它程序模块146及程序数据147不同的编号是为了至少表示了它们是不同的副本。用户可通过诸如图形输入板、或电子数字转换器164、麦克风163、键盘162和指点装置161(通常称为鼠标、跟踪球或触摸输入板)之类的输入装置将命令和信息输入到计算机110。图1中未示出的其它输入装置可包括操纵杆、游戏板、圆盘式卫星电视天线、扫描仪或包括了包含生物测定传感器、环境传感器、位置传感器或其它类型的传感器的装置的其它装置。这些和其它输入装置通常由耦合至系统总线的用户输入接口160连接到处理单元120,但也可由诸如:并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构连接。监视器191或其它类型的显示装置也通过诸如视频接口190之类的接口连接到系统总线121。也可将监视器191与触摸输入板等一体化。注意可以将监视器和/或触摸输入板物理连接至合并了计算装置110的机架(例如:在一图形输入板型的个人电脑中)。另外,诸如计算装置110之类的计算机也可包括其它外围输出设备,如扬声器195和打印机196,它们可以通过输出外围接口194等连接。
本发明中的计算机110可以使用到一个或多个如远程计算机180那样的远程计算机逻辑连接,在联网的环境中操作。该远程计算机180可以是个人电脑、服务器、路由器、网络PC、对等装置或其它公共网络节点并通常包括上述与计算机110相关的全部或许多元件,尽管图1仅示出了存储装置181。图1示出的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络。这种连网环境在办公室、企业范围计算机网络、企业内部互联网和因特网中是很常见的。当用于LAN的网络环境中时,计算机110通过网络接口和适配器170连接到LAN171。当用于WAN的网络环境中时,计算机110通常包括调制解调器172和用于在WAN173(例如:因特网)上建立通信的其它装置。该调制解调器172(可以是内置的或外接的)可以通过用户输入接口160或其它合适的机构连接到系统总线121。在联网的环境中,相对所述的与计算机110画出的程序模块或其一部分可以存储在远程存储装置中。作为示例而非限定,图1示出在存储器装置181上的远程应用程序185。我们将会理解所示的网络连接是示例性的,还可以用其它在计算机之间建立通信链路的方法。
手绘对象的形状识别
本发明通常针对用于提供手绘对象的形状识别的系统和方法。如这里使用的那样,手绘对象指任何手写的非字符的形状或绘图。用户可不受手绘输入的限制自由地画图和画流程图。一个形状可以有许多笔划,且输入笔划的次序可以是任意的,使得系统和方法可将任何墨水作为输入接受。另外,笔划可以是过度绘制或重叠的。在这两种情况下,该系统和方法都可自动地检测到正确的形状。
具体来说,该系统和方法可以识别容器和在容器之间绘制的连接器的手绘形状。如这里使用的那样,容器指任何闭合的绘图对象。如这里使用的那样,连接器指任何连接容器的绘图对象。如将会理解的那样,这里所述的各种方框图,流程图和情况只是示例,本发明还会应用于许多其它的情况。
回到图2,它示出了一般地表示手绘对象的形状识别的系统部件的示例结构的方框图。那些本领域的技术人员会理解可以将在图中所示的方框中实施的功能作为分开的部件实施,或可以在一个单个的部件中实施几个或所有方框的功能。例如:可以将图表检测器204的功能包括在形状识别器206中。或可将容器识别器208的功能作为一个分开的部件实施。
墨水解析器202可接受任何墨水,包括具有绘图对象的墨水。墨水解析器202可包括一可操作地耦合的图表检测器204和可操作地耦合的形状识别器206。一般来说,图表检测器204和形状识别器206可以是诸如:核心部件、应用程序、链接程序库、对象等等之类任何类型的可执行软件代码。图表检测器204可包括可操作地耦合的容器检测器212和可操作地耦合的连接器检测器214,而形状识别器206可包括可操作地耦合的容器识别器208和可操作地耦合的连接器识别器210。容器识别器208可包括任何数量的可操作地耦合的分类器,例如:椭圆/圆分类器216、多边形分类器218、三角形分类器220、四边形分类器222等等。连接器识别器210可包括任何数量的可操作地耦合的识别器,例如:基干识别器224、箭头识别器226等等。这些部件中的每一个都可以是诸如核心部件、应用程序、链接程序库、对象等等之类任何类型的可执行软件代码或其它类型的可执行软件代码。
图3示出一般地表示为手绘对象的形状识别所采取的步骤的流程图。在步骤302中,包括具有绘图对象的墨水在内的任何墨水都可被解析。例如:在一个实施例中,一页墨水可作为输入接受并被解析。在此实施例中,例如墨水解析器可能不具有在该页面上的墨水的先验知识。因此,可以执行诸如词分组、写/绘图分类和绘图分组之类的基础算法。为了执行词分组,可将笔划分组到词、线和块的层次级别中。这样,词分组过程可包括笔划的特征提取,以捕获距离、几何相异点和线性及其它笔划特征。词分组过程还可包括根据暂时信息将笔划分组的动态编程。词分组过程还可包括根据空间信息收集分组笔划。在组中识别的词、线和块不必与现实的语义词、线和块相对应。实际上,这些组可包括手绘对象的笔划。
为了执行写/绘图分类,可识别各种特征来区别写和画。例如:可将诸如曲率、密度和其它手写模块特征之类的单字特征用于区分写和画图。在一个实施例中,可将诸如临时和空间语境特征之类的语境特征用于区分写和画图。可将各特征映射至模糊函数,并根据模糊函数的组合确定写和画之间的分类。
在执行词分组和写/绘图分类之后,可通过执行绘图分组来很好地组织绘图笔划。可根据它们之间的空间关系将绘图笔划分组成单个的对象来执行绘图分组。可将一有效的基于网格的方法用于使墨水笔划适合于具有合适尺寸的图象网格。可标志图象网格来找到连接的部件。每个连接的部件可对应于一绘图对象。可将启发式规则用于调节绘图对象。
在步骤304中,可通过找到属于一个绘图对象的所有笔划来执行图表检测,以对绘图笔划进行分组。这样用户就能不受输入限制自由地绘制图表和流程图了。例如:一个形状可具有许多笔划而输入次序可以是任意的。另外,笔划可以是过度绘制或重叠的。在其中任何一种情况下,该系统都可自动地检测到正确的形状。在一个实施例中,可将超图用于表示图表和流程图,这样就可以完全地表示容器和连接器之间的关系了。因此,在此实施例中可以支持可与两个以上容器相连的连接器。
在一个实施例中,容器检测器212可以找到属于一个容器的所有笔划,而连接器检测器214可以找到属于一个连接器的所有笔划。这样,就可以按时间次序执行最佳搜索以检测任何容器。也可以执行有效的搜索来检测容器和连接器。最后,可以为每个检测到的容器执行内容检测。
在步骤306中,可以执行形状识别来识别容器和连接器。在为每个容器和每个连接器将所有的笔划分组之后,形状识别引擎206(在一个实施例中)可用于识别在诸如图表之类的图中的闭合的容器和未闭合的连接器。识别出之后,可提供该形状的类型、位置、方向和大小。有利的是笔划输入的次序和笔划的数量不影响识别。当执行形状识别来识别闭合的容器和未闭合的连接器时,可在步骤308生成图。
图4为一般地表示根据发明的一个方面为进行如步骤306所指的容器和连接器的形状识别所采取的步骤的流程图。可以在步骤402对每个容器进行容器识别以识别包括圆形、三角形、四边形、五边形、六边形等等闭合形状。另外,可以识别形状的特定类型,例如:区分圆和椭圆,或将等腰三角形与等边三角形或直角三角形区别开来。象另一个例子,可以识别四边形的几种类型,包括梯形、平行四边形、菱形、矩形和正方形。
在一个实施例中,例如:容器识别器208可运用决策树,该树可以将特定形状的总的统计特征和基于规则的说明结合起来。在此实施例中,总的统计特征对诸如笔划的重叠绘制之类的局部变异是稳健的,并且基于规则的说明可以提供更详细有关形状的信息。例如:对一等腰三角形的基于规则的说明可包括具有两个相等长度的边的三角形的说明。
在步骤404中,可以对每个连接器进行连接器识别,以识别包括基干、箭头等在内的闭合连接器的形状。在一个实施例中,折线可用于逼近一基干。在该实施例中,例如:连接器识别器210可处理基干的连续笔划、基干的重叠笔划和基干的过度绘制笔划。在识别出连接器的基干后,可以识别位于基干一端或两端的箭头。连接器识别器210可调用基干识别器224和/或箭头识别器226,用于分别识别连接器的基干和箭头。
图5为一般地表示根据发明的一个方面的用于进行形状识别的决策树,它能将特定形状的总的统计特征与基于规则的说明相结合。可以将属于一个容器的分成一组的笔划502输入到圆度测试504以确定笔划的形状有多象一个圆或椭圆。然后圆度测试504就可确定是否使用椭圆/圆分类器506或多边形分类器508来识别笔划502的形状。椭圆/圆分类器506可确定笔划的形状是椭圆510或是圆512。多边形分类器508可确定笔划的形状是五边形518或是六边形520,或是否采用三角形分类器514或多边形分类器516来识别笔划502的形状。三角形分类器514可以确定笔划的形状是否为三角形,并且还可以用基于规则的说明来为区别该三角形是等腰三角形522、等边三角形524或是直角三角形526提供更详细的信息。同样地,四边形分类器可以确定笔划的形状是否为四边形,并且还可以用基于规则的说明来为区别该多边形是正方形528、矩形530、菱形532、梯形534、或平行四边形536提供更详细的信息。
图6为一般地表示为识别闭合容器的形状所采取的步骤的流程图。在步骤602中,可以进行以测试该形状有多象一个圆或椭圆。如果在步骤604中,圆度测试的结果示出该形状可能是圆或椭圆,则在步骤606执行用于识别圆或椭圆的过程。如果示出该形状不可能是圆或椭圆,则在步骤608执行用于识别多边形的过程。步骤608中的用于识别多边形的过程可以示出该多边形可能是三角形或四边形。如果在步骤610中用于识别多边形的过程的结果示出该多边形可能是三角形,则可以在步骤612中执行三角形的特定类型或子分类的识别过程。例如:三角形的特定类型可以是等腰三角形522、等边三角形524或是直角三角形526。然而,如果在步骤614中用于识别多边形的过程的结果示出该多边形可能是四边形,则可以在步骤616中执行四边形的特定类型或子分类的识别过程。例如:四边形的特定类型可以是正方形528、矩形530、菱形532、梯形534、或平行四边形536。否则在步骤608中的用于识别多边形的过程示出该多边形可能是五边形518或六边形520。如果在步骤618中用于识别多边形的过程的结果示出该多边形可能是五边形,则可以在步骤620中执行五边形的识别过程。如果在步骤622中用于识别多边形的过程的结果示出该多边形可能是六边形,则可以在步骤624中执行六边形的识别过程。
图7为一般地表示为在步骤602中执行圆度测试所采取的步骤的流程图。可分配一个阈值来比较圆度测试的结果,以区分闭合容器的形状是圆/椭圆或是多边形。在一个实施例中,诸如薄度比Pch 2/Ach(其中,Pch和Ach分别代表形状的凸包周长和面积)之类的特征用于测试圆度。在计算形状的薄度比之前,可以依比例决定形状笔划,使最小边界矩形成为一正方形。因为圆可具有最小薄度比4*π,圆和椭圆都可具有最小薄度比4*π,其中π(pi)被定义成圆的周长与其直径的比。在步骤702中,可以确定笔划的最小边界矩形,然后在步骤704中依比例决定形状笔划,使最小边界矩形成为一正方形。接着可以在步骤706中用格雷厄姆算法(可以在1998年由剑桥大学出版社出版的Joseph O’Rourke写的C中的计算几何学(第二版)中找到)计算形状的笔划的凸包。然后可以在步骤708中计算薄度比Pch 2/Ach。可以在步骤710中将薄度比Pch 2/Ach与阈值相比较。在一个实施例中,可以分配阈值4*π*1.05。如果在步骤712中薄度比Pch 2/Ach小于等于阈值4*π*1.05,则该形状可能是圆或椭圆,且在步骤714可将一分类器用于进一步区分该闭合容器是圆还是椭圆。如果在步骤712中薄度比大于阈值4*π*1.05,则该形状有可能是多边形,且在步骤716中可将多边形分类器用于进一步区分该闭合容器可能是哪种类型的多边形。本领域的技术人员能理解可以将其它阈值和其它特征用于测试圆度。
图8为一般地表示根据所步骤714所示由分类器采取的用来区分闭合容器的形状是圆还是椭圆的步骤的流程图。一般来说,可以将诸如最小边界矩形的宽高比之类的特征用于一个实施例,以区分圆和椭圆。在步骤802中,可以确定该形状的最小边界矩形的宽高比,然后可以在步骤804中根据给定的阈值确定该形状是圆806或是椭圆808。在一个实施例中,如果宽高比接近1,例如在0.83和1.20的范围内,可以将该形状分类成圆形;否则分类成椭圆。本领域的技术人员能理解可以将其它阈值和其它特征用于区分圆和椭圆。
图9为一般地表示由分类器采取的用来区分闭合容器的形状是何种多边形的步骤的流程图。可以对每个想要的n边形的类型进行多边形形状测试以确定该多边形的形状。在一个实施例中,可以对三角形、四边形、五边形和六边形进行多边形测试。为了区分n边形是哪种形状对每个想要的n边形的类型进行多边形测试的结果进行比较,可以为多边形测试分配一个或多个阈值。在一个实施例中,可以将诸如面积比An/Ach(An表示在凸包内的最大内接n边形的面积,而Ach表示笔划的一个凸包的面积)之类的特征用于确定多边形的形状。在此实施例中,可以用格雷厄姆算法(可以在1998年由剑桥大学出版社出版的Joseph O’Rourke写的C中的计算几何学(第二版),ISBN:0-521-64976-5中找到)计算形状的笔划的凸包,并在步骤902中计算笔划的凸包面积。然后可以在步骤904中为每个想要的n边形类型计算最大内接n边形及其面积An。最大内接n边形可以用由Boyce提出的算法(可以在1985年的Finding Extremal Polygons,SIAM Journal onComputing,14(1):134-147中找到,作者:J.E.Boyce和D.P.Dobkin)来计算。例如:可以计算最大内接三角形、四边形、五边形和六边形及它们各自的面积A3、A4、A5和A6。在步骤906中,可以对每个想要的n边形类型计算面积比An/Ach。在步骤908中可以将每个想要的n边形类型的面积比An/Ach与相应的阈值比较。最后在步骤910中可以将面积比An/Ach大于其相应阈值的具有最少边数的n边形选择成表示闭合容器形状的多边形类型。在一个实施例中,对A3、A4、A5和A6的阈值可以分别为0.73、0.84、0.93和0.94。图10示出在围绕形状1002的凸包中具有最大内接四边形1004的形状1002的笔划的例子。在此例中,在和诸如五边形或六边形之类的其它n边形的面积比相比时,内接四边形和凸包的面积比可以比相应的阈值大,并且具有最少的边数。因此,将该形状分类成四边形。
因为将凸包用于计算面积比,在一个实施例中,可以对凹容器进行测试以避免虚假的分类。可以通过核查笔划中的点与识别的形状的边之间的最大距离来测试该凹容器。例如:图11示出手绘形状1002的笔划的点与识别的形状的边之间的最大距离1102和最大内接四边形1004。如果最大距离1102比经验阈值大,则不得分类成四边形。
因为已经计算了最大面积内接三角形或四边形,我们能在一个实施例中在进行形状识别时根据特定类型形状的基于规则的说明确定子分类。例如:如果三角形的两个边的长度几乎相等,则可以进一步将其分类为等腰三角形;如果三角形的所有三个边都几乎相等,则可以进一步将其分类为等边三角形;如果两边的平方和近似等于第三边的平方,则可以进一步将其分类为直角三角形。
类似地,对于四边形,如果所有四个边的长度都几乎相等,并且每对邻边几乎正交,则可以进一步将该形状分类为正方形。如果所有四个边的长度不都几乎相等,并且每对邻边几乎正交,则可以进一步将该形状分类为长方形。如果每对对边几乎平行,且任何两个邻边都不几乎相等,则可以进一步将该形状分类为平行四边形。如果只有一对对边几乎平行,且任何两个邻边都不几乎正交,则可以进一步将该形状分类为梯形。
在将多边形的形状分类之后,为了更好地表示,可以在步骤912中将多边形的边提纯。具体来说,可以计算输入笔划的每个点到识别的形状的边之间的距离以确定输入笔划的每个点属于识别的多边形的哪条边。然后,可以根据输入笔划的相应点的稳健回归结果重新计算识别的多边形的每个边的位置和方向。作为精细化,如图12所示,精细化后的形状1206可以更好地表示从手绘形状1202的笔划识别出的形状1204的边。
图13为一般地表示为识别连接器的形状而采取的步骤的流程图。如图14所示,用于识别连接器的形状的输入可包括笔划及与已由图表检测器识别的容器的交点。这里所定义的交点指连接器的笔划与容器距离最近的点。例如:如图14所示,在连接器1406两端的交点1404处,都可将交点连接到容器1402和1412中的一个。一般来说,每个连接器可包括交点或箭头与另一交点或箭头之间的一条直线或曲线(这里定义为基干1408),并且每个连接器可包括在基干的任一端或两端处的箭头1410。
在绘制连接器时,一些用户可能会用重叠的笔划来回运动绘制连接器的基干。另一些用户可能会同样地来回运动绘制连接器的箭头。还有一些用户可能会一笔绘出连接器的基干和箭头。因为用户可能会一笔绘出连接器的基干和箭头,可以解析笔划的不同部分并分开识别。因此,在图13的步骤1302中,可以在高曲率的点(这里定义为顶角)拆分笔划。通过将一个笔划解析成一条折线,该笔划的每个非结尾点可以形成两条线段的交点。在一个实施例中,可以计算笔划的每个非结尾点处两条线段之间的角度,并且可以在相应的角度小于诸如80度之类的阈值的点处断开笔划。为了避免在局部波动处将笔划断成过多无意义的片段,可以首先通过应用Sklansky的折线近似法(可以在1980年Sklansky J.和GonzalezV.写的Fast Polygonal Approximation of Digitized Curves,PatternRecognition的卷12,第327-331页中找到)使笔划平滑,以简化和平滑笔划。
在步骤1304中,可以将笔划或笔划片段分类成基干笔划或箭头笔划,以便分开识别连接器的基干笔划和连接器的箭头笔划。
如果一个笔划或笔划片段的尺寸小于经验阈值并且其到交点的距离很小,可以其认作箭头笔划。在一个实施例中,这一经验阈值可以是12.8毫米,而到交点的距离可以是小于8.5毫米。任何不认作为箭头笔划的笔划都可分类成基干笔划。为了避免将短箭头的所有笔划错误地分类成箭头笔划,可以将距离连接器的凸包最近的笔划或笔划片段识别成基干笔划或笔划片段。
在步骤1306中,可以合并基干笔划或笔划片段。可以在一个笔划或片段与另一个笔划或片段分开时,一个笔划或片段与另一个笔划或片段重叠时,或在一个笔划或片段重迭描绘另一个笔划或片段时合并基干笔划或片段。这些一般的情况在图15中示出。对其中每种情况,都可以通过制作可包含分开的笔划或笔划的片段的两端,或可包含在合并时可形成重叠连续1504的重叠笔划或笔划的片段的重叠区域,或可包含可在合并时形成过度绘制连续1506的过度绘制的笔划或片段的过度绘制区域的四边形来定义可合并区域1508。为了合并基干笔划或笔划片段,可以为每对笔划或笔划片段定义一个连接分。在一个实施例中,对过度绘制和重叠连续的情况,可以将该连接分定义成:
和对连续的情况定义成:
其中l为两个笔划或笔划片段的总长度,w1、w2为重量,而dm、lm分别为定义的可合并区域的宽度和长度。一般来说,此连接分在两个笔划或笔划片段靠近时较大,而在笔划或笔划片段远离时较小。对所有基干笔划或基干笔划的片段,都可以通过合并具有最高连接分的两个基干笔划或笔划片段直至不再有可合并的笔划对来进行递归合并过程。
在步骤1308中,可以将每个合并的笔划或笔划片段标准化以减少局部波动。在一个实施例中,可以用Sklansky的折线近似法(可以在1980年Sklansky J.和Gonzalez V.写的Fast Polygonal Approximation of Digitized Curves,PatternRecognition的卷12,第327-331页中找到)使每个合并的基干笔划或笔划片段标准化。当最后一个合并的基干笔划被标准化后,就可完全生成连接器的最终基干。
在步骤1310中,可以识别箭头笔划或笔划的片段。在一个实施例中,可以对箭头笔划或笔划片段的凸包进行测试来看该形状是否可能是三角形。将诸如面积比An/Ach(An表示在凸包内的最大内接n边形的面积,而Ach表示笔划的一个凸包的面积)之类的特征用于确定三角形的形状。在此实施例中,可以用格雷厄姆算法(可以在1998年由剑桥大学出版社出版的Joseph O’Rourke写的C中的计算几何学(第二版),ISBN:0-521-64976-5中找到)计算笔划的凸包,并随后计算笔划的凸包面积Ach。最大内接三角形可以用由Boyce提出的算法(可以在1985年的Finding Extremal Polygons,SIAM Journal on Computing,14(1):134-147中找到,作者:J.E.Boyce和D.P.Dobkin)来计算,并计算出它的面积An。接着,计算面积比An/Ach并将其与相应的阈值比较,例如:在接近1的范围内以确定箭头笔划或笔划片段的形状可能是三角形。
在一个实施例中,可以通过核查笔划中的点与识别的形状的边之间的最大距离来测试该凹容器,以避免虚假的分类。然后,为了更好地表示,可以将三角形的边精细化。首先,可以计算输入笔划的每个点到识别的形状的边之间的距离以确定输入笔划的每个点属于识别的多边形的哪条边。然后,可以根据输入笔划的相应点的稳健回归结果重新计算识别的多边形的每个边的位置和方向。可以通过将最终的基干与任何识别的箭头相结合来生成完整的连接器。
在用所述的系统和方法生成所有容器和连接器后,可以完全识别和生成以墨水输入的手绘对象。通过使用本发明,用户能不受手绘输入限制而自由地绘制图表和流程图。一个形状可以有许多笔划,且输入笔划的次序可以是任意的,使得系统和方法可将任何墨水作为输入接受。另外,笔划可以是过度绘制或重叠的。在这两种情况下,该系统和方法都可自动地检测到正确的形状。
从以上的详细说明中可见,本发明提供一种用于识别手绘对象的形状的系统和方法。有利的是系统和方法对笔划输入次序和形成手绘形状的笔划数量不敏感。另外,本系统和方法提供了灵活性和可扩展性。正如现在理解的,可将该系统和方法用于识别绘图中任何闭合容器的和未闭合的连接器,包括图示和图表。一旦识别,就可以提供形状的类型、位置、方向和大小。因此该方法和系统提供了当代计算中所需的重要优点和益处。
虽然本发明容许各种修改和备择性结构,在附图中示出和详细描述了本发明的某些实施例。然而,应理解并不想将本发明限定于所揭示的特定形式,相反,是想揭示所有落在本发明的精神和范围之内的修改及选择性结构。