专利名称:栅格编码的制作方法
技术领域:
本申请涉及用于编码栅格数据的方法与装置。
背景技术:
栅格是包括多个由定向链接互连的节点的定向非循环图。产生栅格数据的系统的一个例子是语音识别应用,其中栅格数据用于表示当检测到的语音信号被处理时的大量可选假设。然后,由语音识别系统产生的栅格数据可以用作其它应用的输入。在用于语音识别系统的栅格数据的情况下,栅格的节点和链接与其它识别词的数据或其它如音素和概率的语音单元关联,因此栅格数据记录了检测到的信号可能表示的可选假设。
在产生栅格数据的时候,两种类型的栅格数据可以被识别。首先是与识别栅格所表示假设的栅格的各个链接和节点关联的数据。其次是识别栅格节点如何互连的栅格结构。
栅格结构通常是通过以起始节点结束节点数据的形式存储链接数据来存储的。链接数据更紧凑的表示可以通过存储由起始节点分类的链接(因此只有结束节点数据需要存储)及通过使用节点偏移而不是绝对节点号来实现。这种方法的主要问题是结果编码不一定会显示栅格中的任何规律性。即,两个看起来完全相同的子结构会导致两个完全不同的符号序列。这是因为链接数据和节点号(或偏移)独立于特定子结构的编码。因此,压缩表示以这种形式存储的栅格结构的数据是困难的。
根据剪枝参数,由例如语音识别系统产生的栅格结构会非常大。如果要存储大栅格结构,则需要大量存储器。如果大栅格结构要通过网络发送,则需要大量的发送容量。因此,为了存储和发送,需要有效地压缩栅格结构。
因此,需要一种具有更高利用相同符号序列表示等效结构的可能性的栅格结构表示,因而更易于利用传统压缩技术进行更高的压缩。
现在参考附图,仅作为例子描述本发明的一种实施方式,其中图1是体现根据本发明栅格处理器和再生模块的文档检索系统的示意性方框图;图2是由语音识别系统解码表示短语“Taj Mahal画...”的信号的示例栅格结构的示意图;图3是图1栅格处理器功能单元的示意性方框图;图4是由图1栅格处理器执行的处理操作概述的流程图;图5是由图1栅格处理器的嵌入模块执行的处理操作的流程图;图6A-6E是图1栅格处理器的嵌入模块处理示例栅格结构的示意图;图7是由图1栅格处理器的链接编码模块执行的处理操作的流程图;图8A-8H是图1栅格处理器的链接编码模块处理图6E示例嵌入式栅格结构的示意图;图9A和B是由图1栅格处理器的形状编码模块执行的处理操作的流程图;图10A、B、C是图1栅格处理器的编码模块编码图8H示例嵌入式栅格的示意图;图11A-D是由图1栅格处理器的解码模块执行的处理操作的流程图;图12是由图1栅格处理器的解码模块处理链接编码所执行的处理操作的流程图;图13A-13F是利用链接编码数据的嵌入式栅格部分再生的示意图;
图14A-14G是图1栅格处理器的解码模块再生图6A的示例嵌入式栅格的示意图;及图15是响应压缩数据的接收,由图1的文档存储单元执行的处理操作的流程图。
具体实施例方式
现在仅作为例子描述本发明的一种具体实施方式
。
参考图1,这是文档检索系统的示意性方框图,提供了经网络3连接到文档存储单元2的客户计算机1。连接到客户计算机1的还有麦克风5。
在这种实施方式中,客户计算机1和文档存储单元2每个都包括通过从如磁盘8的存储介质读计算机指令或通过经网络3下载信号9形式的指令来配置的可编程计算机,从而配置成多个概念性功能模块。
在这种实施方式中,客户计算机1的功能模块包括语音识别模块10、栅格处理器11和数据压缩模块12。文档存储单元2的功能模块包括解压缩单元15,再生模块17和文档检索单元19。
客户计算机1的语音识别模块10布置成响应检测到如用户说出的短语的音频信号而接收由麦克风5产生的电信号。语音识别模块10处理接收到的电子信号,产生表示由用户说出并由麦克风5检测到的音频信号表示什么短语的多种假设的语音栅格。
作为例子,图2是解码表达“Taj Mahal画...”的假设性组合音素与词的栅格结构的示意图。图中节点由圆圈表示,而且圆圈从左向右以递增的时间增序排列。图2栅格结构中的链接是由节点之间的箭头表示的。这些链接每个都示为与由大写字母表示的词或由小写字母表示的音素关联。在这种实施方式中,语音识别模块10布置成以例如[节点号、从节点出发的链接列表、节点所表示的时间、与节点关联的其它数据]形式的传统形式产生并存储语音栅格数据。语音栅格的链接数据也以例如[起始节点、结束节点、与链接关联的数据]形式的传统方式存储。
由语音识别模块10产生的语音栅格可以非常大。为了避免经网络3发送大量数据,在语音栅格产生后,栅格处理器11产生栅格结构的紧凑表示。如随后将具体描述的,紧凑表示是利用相同的符号序列编码相同的栅格子结构,因而尤其容易利用传统的数据压缩技术进行压缩。
一旦产生了栅格结构的紧凑表示,这种表示然后就和与最初产生的语音栅格中的链接和节点关联的数据一起由数据压缩模块12利用传统数据压缩技术进行压缩。然后,压缩数据经网络3发送到文档存储单元2。
利用解压缩单元15和再生模块17的文档存储单元2处理压缩数据,以便再生原始语音栅格。然后,再生的语音栅格传递到响应接收到的语音栅格而检索文档的文档检索单元17。然后,该检索出的文档经计算机经网络3发送回客户计算机1。
栅格处理器的结构参考图3,这是栅格处理器11功能组件的示意性方框图,在这种实施方式中栅格处理器11包括数据存储器20、嵌入模块22、链接编码模块24、形状编码模块26、解码模块28及输出模块29。
更具体而言,在这种实施方式中,数据存储器20布置成从语音识别模块10接收语音栅格数据。然后,包括语音节点数据30和语音链接数据32的语音栅格数据存储到数据存储器20中。
在这种实施方式中,语音节点数据30包括定义以传统形式存储的语音栅格的数据,如以[节点号、所连接的节点列表、由该节点表示的时间及如与节点关联的变化概率的其它数据]形式的数据形式。语音链接数据32包括将由语音节点数据30定义的栅格结构中的链接与识别词或音素的数据关联起来的数据。语音链接数据32也是以传统形式存储的,如[起始节点、结束节点、如识别与该链接关联的词或音素或变化概率的数据的其它数据]形式的数据。
嵌入模块22布置成处理语音节点数据30,以便产生识别由语音节点数据30的节点所表示不同时间的定时数据34。然后,定时数据存储在数据存储器20中。然后如随后将具体描述的,嵌入模块22产生由语音节点数据30定义的栅格结构的第一表示。这种表示是以嵌入表36、虚链接和节点数据38及交叉链接数据39的形式的。
在这种实施方式中,由嵌入模块22产生的栅格结构表示随后由链接编码模块24处理。更具体而言,链接编码模块24处理该栅格结构表示,从而使栅格结构通过从栅格结构中除去某些链接和节点而简化,同时产生识别从栅格结构中除去的链接和节点的链接编码数据40。链接编码数据40也存储在数据存储器20中。
在栅格结构由链接编码模块24简化以后,形状编码模块26然后处理该简化的栅格结构并产生最终的栅格结构编码。在这种实施方式中,以形状编码42、链接列表43和节点列表44形式的这种编码全都存储在数据存储器20中。与随后将具体描述的由语音节点数据30表示的原始栅格结构相反,形状编码42和链接列表43包括以使等效结构利用相同的符号序列被编码的表示来编码相同栅格结构的数据,因而易于利用传统的压缩技术进行更高的压缩。
在形状编码模块26产生最终的栅格结构编码以后,解码模块28处理该最终编码,以确定编码栅格结构中链接的排序。这是通过解码模块28再生编码栅格结构然后确定再生栅格结构中链接的排序实现的。
在链接的排序由解码部分28确定以后,输出模块29然后向数据压缩模块12输出由嵌入模块22产生的定时数据34、识别虚节点和链接的数据38及交叉链接数据39;由形状编码模块26产生的形状编码42和链接列表43;及与原始语音栅格上分别来自语音节点数据30和语音链接数据32的节点和链接关联的其它数据。与节点关联的其它数据利用由形状编码模块26产生的节点列表44排序;而与链接关联的其它数据以由解码模块28确定的顺序排序。
然后,由输出模块29输出的数据被数据压缩模块12以传统方式压缩,因此压缩数据可以在被解压缩之前经网络3发送,语音栅格可由文档存储单元2再生。
现在参考图4描述栅格处理器11更具体的处理概述,图4是由栅格处理器11执行的处理的流程图。
栅格处理器执行的处理概述最初(S4-1),当由语音节点数据30和语音链接数据32表示的语音栅格被栅格处理器11接收并存储在数据存储器20中时,嵌入模块22确定由语音节点数据30表示的栅格结构的第一表示。这种初始表示是以存储在数据存储器20中的定时数据34及嵌入表36的形式的。
更具体而言,当语音节点数据30被栅格处理器11接收时,嵌入模块22首先产生包括由语音节点数据30的节点表示的所有不同时间的列表的定时数据34。
如前所述,语音节点数据30为语音栅格中的每个节点识别由该节点表示的时间。因而,例如在图2所示语音栅格的情况下,这些不同的定时是由表示图2示例栅格中节点的圆圈不同的左/右位置表示的。
由于语音节点数据30明确地将时间数据与各节点关联在一起,因此在不止一个节点与同一时间关联的情况下,这种时间数据将会重复。因此,有可能通过除去这种重复减少表示由节点所表示时间的数据量。更具体而言,如果产生不同定时的列表,则各个节点可以识别为与该列表中的特定定时关联。以这种许多节点与同一定时关联的方式,通过作为时间数据显式地包括在与各节点关联的语音节点数据30中,这种定时数据只记录一次而不是多次。
在用于栅格结构的定时数据34被嵌入模块22确定并存储在数据存储器20以后,由语音节点数据30编码的栅格结构的初始表示由嵌入模块22产生。
在这种实施方式中,这种初始表示为每个此后称为层的、由定时数据34列表中的时间识别的定时包括由语音节点数据30在那些定时与其关联的节点列表及为栅格中每个链接识别起始节点和结束节点对的数据拷贝。这种数据由嵌入模块22作为嵌入数据和链接数据存储在数据存储器20的嵌入表36中。
图6A是栅格结构的示意图,其中节点由包含数字的圆圈表示,而节点之间的链接示为圆圈之间箭头的形式。在图6A中,共享同一定时数据的节点在同一水平位置示出。
在图6A栅格的情况下,所说明的由嵌入模块22产生的栅格结构的初始表示将是以下存储在嵌入表36中的嵌入数据的形式层号节点列表1
2 [1,2]3 [3,4,5]4 [6]5 [7,8]6 [9]其中层号指示包含节点的列,而节点列表指示该列中的节点。在这个例子中,链接数据包括识别对图6A所示每个箭头的起始节点和结束节点的数据列表。因而,以链接(0,1)、(0,2)、(1,3)、(1,4)、(1,5)等形式的链接数据也将存储在嵌入表36中。
如随后具体描述的,由嵌入模块22产生的初始表示随后被处理,以便产生可选表示。
在图6A栅格的情况下,这种可选表示是由图6E说明的。比较图6A和图6E的结构,与图6A中有些箭头(例如,节点3和7及节点4和7之间的箭头)将彼此不相邻的列中的节点链接在一起相反,在图6E中向表示添加了附加虚节点和虚链接,因此每个节点都连接到相邻列中的一个或多个节点。在图6E中,这些附加节点由出现在栅格中的方框示出,而附加链接由虚线示出。
另外,与图6A相比,在图6E中向栅格添加了额外的层,因此最后一层包含在图6E中示为虚节点D4的单个节点。这种结构还通过重新布置列中节点的顺序并除去链接(节点5和6之间的链接)来改变,因此图6E所示的结果结构不包含以图6A中链接2-3和1-5所示方式彼此交叉的链接。即,该表示中的链接和节点识别出了平面图,及,可以不带任何交叉链接地嵌入在平面中的图。
识别作为嵌入模块22处理结果而添加或除去的节点和链接的数据由嵌入模块22分别作为虚链接/节点数据38和交叉链接数据39存储在数据存储器20中。
一旦栅格结构的修正表示已由嵌入模块22确定,栅格处理器11然后开始产生这种修正结构的编码。这种编码是以两阶段处理执行的。
最初(S4-2),链接编码模块24使结构的某些部分以与节点间链接关联的数据形式编码。具体而言,如随后将具体描述的,链接编码模块24编码修正栅格结构中对应于彼此串联连接的多个链接或通过多条不连接到栅格结构中任何其它节点的并行路径的部分。
因而,例如在图6E所说明栅格结构的情况下,就象图6E中节点1和节点7之间经节点4和5的并行路径的编码那样,确定了图6E中节点6和D4之间经节点8和10的链接与节点的编码。
图8H是对应于在线性和并行路径编码后的图6E栅格的简化栅格结构的例子。在图8H中,节点由圆圈说明,而节点之间的链接由箭头示出。与图8H所示每个链接关联的是紧挨着箭头写的码。这些码由链接编码模块24产生并作为链接编码数据40存储在数据存储器20中。
在链接编码模块24产生简化的栅格结构和链接编码数据40以后,如由图8H的栅格结构所说明的,该简化的栅格结构将是没有交叉链接的平面图,其链接和节点定义了多个互连区域。在图8H的情况下,这些区域在图8H中从左向右是由节点0、2、3和1及其相关链接构成的菱形,由节点2、6、7和3及其相关链接构成的菱形,由节点1、3和7及其相关链接构成的三角形,及由节点6、7和D4及这些节点间链接构成的另一三角形。
然后(S4-3),形状编码模块26开始以3个符号列表的形式编码最初由链接编码模块24处理的栅格结构。
在这种实施方式中,这些列表包括识别由链接编码模块24所产生简化栅格定义的区域彼此链接的方式的形状编码42、是与简化栅格中链接关联的链接编码数据40的有序级联的链接列表43及识别节点号出现在简化栅格和相关链接编码数据中的顺序的节点列表44。
如当具体描述这些列表的产生时将变得明显的,这些列表以一种使相同子结构由相同符号序列编码并因而产生非常易于利用传统数据压缩技术进行数据压缩的编码的方式编码由链接编码模块24处理的栅格结构。
在这三个列表由形状编码模块26产生并存储在数据存储器20中以后,形状编码42、链接列表43和节点列表44随后(S4-4)被解码模块28处理。解码模块28的解码结果是产生由存储在数据存储器20的嵌入表36中的语音节点数据30表示的栅格结构的另一表示。从为图6A的栅格结构产生的形状编码42、链接列表43和节点列表44产生栅格的处理随后将具体描述。
通过解码用于图6A结构的形状编码42、链接列表43和节点列表44而确定的最终表示在图14G中示出。比较由图14G和图6A所说明的栅格结构的说明,尽管列中节点表示的排序在两个说明之间不同,但看起来有可能让人觉得图6A和14G所示链接之间的互连是完全相同的,而且节点示为在相同列中。但是,由于列中的排序不依赖于语音节点数据30,因此尽管图6A和图14G的嵌入式栅格不是完全相同,它们也表示相同的栅格结构。
在由存储在数据存储器20中的数据编码的实际嵌入栅格结构被解码模块28确定以后,输出模块29随后(S4-5)向数据压缩模块12传递定时数据34、虚节点和虚链接列表38、交叉链接数据39及表示由解码模块28解码的最终嵌入式表示的形状编码42和链接列表43。
此外,如随后具体描述的,输出模块29还向输出模块12传递与语音节点数据30和语音链接数据32的节点和链接关联的数据的有序列表。
与语音节点数据30的节点关联的数据是以对应于存储在数据存储器20中的节点列表44的顺序排序的。与语音链接数据32的链接关联的数据是基于由解码模块28为语音栅格产生的最终栅格结构排序的。例如,在图13G语音栅格的情况下,链接数据可以对应于从上到下然后从左到右出现的链接列来排序。因而,例如,最初链接0-2的数据将由输出模块29传递到解压缩模块12,然后是对应于图14G链接顺序的顺序0-1、2-6、2-3、1-3、1-4、1-5等的以下链接的链接数据。
如前所述,用于编码栅格结构的形状编码数据42和链接列表43表示利用完全相同符号序列的等效结构。这意味着在许多栅格子结构类似的时候,由栅格处理器11传递到数据压缩模块12的数据可以有效地利用传统压缩技术压缩,从而减少需要经网络3发送的数据量。
当压缩数据被解压缩单元15解压缩时,解压缩数据用于再生原始语音栅格,该原始语音栅格随后用于使文档检索单元19访问存储在文档存储单元2中的特定文档。
嵌入模块22、链接编码模块24、形状编码模块26和解码模块28具体的数据处理现在依次考虑。
嵌入模块执行的处理现在参考图5和图6A-E具体描述栅格处理器11的嵌入模块22的处理。
最初(S5-1),当以语音节点数据30和语音链接数据32形式的语音栅格被栅格处理器11接收并存储在数据存储器20中时,嵌入模块22开始产生识别由语音节点数据30中节点表示的各时间的定时数据34。
更具体而言,在这种语音节点数据30以[节点号、连接的节点列表、节点的定时、与节点关联的其它数据]形式存储在数据存储器20中的实施方式中,嵌入模块22最初处理语音节点数据30,以便产生由语音节点数据30的节点所表示的所有定时的列表。然后,嵌入模块22处理所产生的列表,以创建有序的定时列表。列表中表示的副本定时随后被除去,因此创建了包括以不同定时顺序排序的由语音节点数据30不同节点表示的不同时间的列表的定时数据34。这个列表随后作为定时数据34存储在栅格处理器11的数据存储器20中。
在定时列表以定时数据34的形式存储在数据存储器20中以后,嵌入模块22随后(S5-2)为由存储在数据存储器20中的语音节点数据30所表示的栅格结构产生初始嵌入数据。
具体而言,嵌入模块22为下文中称为层、由定时数据34表示的每个定时确定具有对应于所识别时间的时间数据的节点列表。这些列表作为嵌入数据存储在嵌入表36中,对于由定时数据列表34识别的每个时间都有一个列表。此外,对于由语音节点数据30识别的节点之间的每个链接,嵌入模块22随后产生并在嵌入表36中存储包括识别每个链接起始节点和结束节点的数据的链接数据。
因而,例如在图6A所说明其中节点号由包含数字的圆圈说明,而链接在连接圆圈的箭头间说明,而且其中与相同定时关联因而在同一层中的节点示为彼此在垂直列中的栅格结构的情况下,以下数据将存储在嵌入表36中。
嵌入数据层号节点列表1
2[1,2]3[3,4,5]4[6]5[7,8]6[9,10]链接(0,1)、(0,2)、(1,3)、(1,4)、(1,5)、(2,3)、(2,6)、(3,7)、(4,7)、(5,6)、(6,7)、(6,8)、(6,8)、(7,9)、(8,10)。
应当理解,定时数据34和嵌入表36一起编码从语音识别模块10接收到的语音栅格的所有栅格结构。此外,定时数据34和嵌入表36还隐含记录识别与各节点关联的定时的数据。
而且,节点之间链接的方向也隐含地在嵌入表36中的数据中编码。这是因为由不同层因此由不同定时识别的节点列表是以定时顺序排序的,因此表示较早时间的节点出现在嵌入表36较早层号的列表中,而在较晚定时出现的节点出现在较晚层的列表中。因此,这暗示在一个链接从一个节点到另一个记录的时候,如图6A箭头所示的该链接的方向将是从较早定时的层的节点到较晚定时的层的节点的方向。
在栅格结构的初始嵌入确定以后,嵌入模块22随后(S5-3)开始修改初始存储的数据,向嵌入表36添加多个附加节点并更新链接数据,因此,每个链接只从一层的节点连接到相邻层的节点,而且第一和最后一层的节点列表只包括单个节点。
具体而言,嵌入模块22开始依次考虑存储在嵌入表36中的每个链接。对于每个链接,链接起始节点的层号与结束节点的层号进行比较。在起始节点和结束节点的层号只由单个数字隔开的任何时候,不采取进一步的行动。在起始节点链接到由多于一层隔开的结束节点的任何时候,虚节点添加到每个插入层。然后,链接数据被更新,以便正在处理的链接数据替换成识别每一层中起始节点和结束节点之间经每个添加的虚节点的链接的一连串链接数据项。
因而,例如在图6A所说明嵌入的情况下,每个链接都要依次考虑。当处理节点2和节点6之间的链接时,节点2将识别为在第二层,而节点6将识别为在第四层。然后,嵌入模块22将开始在第三层的节点列表中添加一虚节点,并将节点2和节点6之间的链接替换成两个链接,节点2和所添加虚节点之间的链接及所添加虚节点和节点6之间的链接。
更具体而言,在图6A所示栅格的情况下,2和6、3和7及4和7之间的链接将识别为在被多于一层隔开的层中的连接节点。然后,存储在嵌入表36中的嵌入数据将如下更新
层号节点列表1
2 [1,2]3 [3,4,5,D1]4 [D2,D3,6]5 [7,8]6 [9,10]其中D1、D2、D3是由嵌入模块22添加的附加虚节点,节点2和6、3和7及4和7之间链接的链接数据替换成以下链接数据(2,D1)、(D1,6)、(3,D2)、(D2,7)、(4,D3)、(D3,7)。
然后,识别这些虚节点的数据被嵌入模块22存储在数据存储器20的虚链接/节点数据38中。
然后,嵌入模块22考虑存储在嵌入表36中数据第一和最后一层的节点列表。如果第一层包含不止一个节点,则添加包含一虚节点的附加0层,并在该初始虚节点和第一层的节点之间添加虚链接。
然后考虑最后一层的节点列表。当不止一个节点出现在最后一层时,包含单个虚节点的附加层添加到嵌入数据,而且从最后一层每个节点到该所添加虚节点的链接添加到链接列表。然后,识别所有所添加虚节点的数据添加到存储在数据存储器20中的虚链接/节点数据38。
因而,在图6A例子的情况下,由于第一层包含单个节点,节点0,因此不添加虚节点。但是,最后一层最初包含节点9和10。于是要添加包含单个虚节点的附加最后一层。先前最后一层的所有节点,在这种情况下是节点9和10,然后记录为连接到额外层的该最后一个节点。
图6B是虚节点添加到栅格后图6A栅格的示意图。在图6B中虚节点示为标号为D1、D2、D3和D4的方框。添加到栅格的额外链接在图6B中由虚线示出。如由图6B可以看到的,在图6B栅格的情况下,图中出现的所有箭头都不横跨多于一列,而且整个栅格具有在图左侧的单个起始节点,节点0,和在图右侧的标号为D4的单个结束节点。
在虚节点添加到栅格以确保链接将相邻列的节点连接在一起且添加虚节点以确保栅格包含单个起始节点和单个结束节点以后,嵌入表36中的嵌入数据然后被处理(S5-4)以便重新排序与各层关联的节点列表,因此由嵌入表36中嵌入数据表示的栅格嵌入包含有限个彼此交叉的链接。
在这种实施方式中,嵌入模块22利用如在此引入作为参考的Roberto Tamassia“Graph Drawing”“CRC Handbook of Discreteand Computational Geometry”,CRC Press,ed.Jacob Goodman andJoseph O’Rouke,1997所述的传统技术处理存储在嵌入表36中的嵌入数据。
更具体而言,从第二层开始,层中每个节点最初都分配一个对应于那层中节点排序的序号。因而,在图6B节点的情况下,节点1分配顺序1,节点2分配顺序2。然后,下一层中的节点根据前一层中链接到那些节点的节点平均顺序值进行排序。
因而,在图6B的情况下,如果节点1和2分别给予值1和2,则链接到节点1和节点2的节点3将分配给值(1+1)/2=1.5。只连接到节点1的节点4和5分别分配给值1。只连接到节点2的节点D1分配给值2。
然后嵌入模块22开始重新排序下一层中的节点,因此具有与其关联的最低序号的节点出现在列表的头,而与逐渐增高的编号关联的节点在列表中随后出现。
因而,在图6B的情况下,表示第三层的列的列表从列表[3,4,5,D1]重新排序变成列表[4,5,3,D1]。然后以类似的方式重新排序下一层,直到到达最后一层的最后一个节点。然后从节点第二到最后一层重复每一层中节点的重新排序,并根据由从该最后一层的链接识别的顺序号平均值确定的顺序值重新排序紧接着的前一层。这种处理对下个前一层重复,直到到达第一层。
图6C是节点重新排序以最小化交叉链接以后图6B栅格的示意图。如从图6B和6C可以看到的,在图6B中节点2和节点3及节点1和节点4和5之间的链接全都彼此交叉,而在图6C中只剩下一对交叉链接,即节点3和节点D2及节点5和节点6之间的链接。
在嵌入模块22重新排序嵌入表36中嵌入数据层中的节点以后,嵌入模块22随后(S5-5)依次考虑每个链接并从修正栅格中除去交叉链接,并将识别所除去链接的数据存储在数据存储器20所存储的交叉链接数据39中。
更具体而言,每层中的每个链接依次考虑,无论何时当确定链接与任何其它链接交叉时,表示该链接与任何其它链接交叉次数的数字加1。当用于所有链接的数据都产生以后,依次考虑层之间的每组链接。在存在任何交叉链接的时候,具有与其关联的最大数字的一个链接被除去,而识别该链接的数据存储在交叉链接数据39中。然后,每一层中交叉链接的个数计算被更新,而链接被除去,直到不剩余交叉链接。以这种方式,被除去并作为交叉链接39与嵌入隔开存储在嵌入表36中的交叉链接选择为对应于与最多其它链接交叉的链接。即,在一个链接与两个其它链接交叉的时候,该单个链接将被除去,而不是除去交叉的两个链接。
参考图6C,在层中节点被重新排序以最小化交叉链接数以后,用于图6A示例栅格的嵌入数据将重新排序,从而成为以图6C所表示的顺序。在图6C中,只有一对交叉链接是节点3和D2之间的链接及节点5和6之间的链接。由于这些链接都只与一个其它链接交叉,因此,随机选择这些链接中的一个并存储在交叉链接数据39中。
图6D是节点5和节点6之间的链接除去后图6C栅格的说明性例子。如从图6D可以看到的,表示链接的每个箭头都连接相邻两列的两个节点,而且由箭头表示的链接中没有一个与任何其它由箭头表示的链接交叉。
在足够的链接从嵌入表36的链接数据中除去并存储为交叉链接数据39,从而由嵌入表36中数据表示的栅格不包含交叉链接以后,嵌入模块22随后(S5-6)依次考虑除第一和最后一层中的节点之外的每个节点,并确定那个节点是否既连接到其前面又连接到其后续层中的节点。
即,嵌入模块22依次考虑每个节点并检查嵌入表36中的链接数据,以确定被处理的节点是否在栅格的嵌入表36中存储为链接数据的至少一个链接中呈现为起始节点和结束节点。在任何识别出这种未连接节点的时候,嵌入模块22然后添加链接数据来连接该节点到栅格中其它节点。
更具体而言,除最后一层中节点以外的每个节点都依次考虑。如果一个节点被确定不由嵌入表36中链接数据表示为起始节点,则随后考虑该层节点列表中与该未链接节点相邻的节点。
因而,在图6D栅格的情况下,对任何链接都不是起始节点的节点5被识别出来,而两个相邻节点,节点3和4将被考虑。然后,由以相邻节点作为起始节点的链接连接的节点被识别。在图6D的情况下,所讨论的节点将是虚节点D2和D3。
如果象在图6D的情况下一样这两个节点都是虚节点,则新虚节点添加到包括这两个虚节点的层的嵌入数据中这两个节点之间,并添加该未连接节点与新虚节点之间的链接。
然后,嵌入模块22考虑链接到这两个虚节点的节点。如果这些也是虚节点,则下一层中另外一个虚节点添加到那一层识别出的两个虚节点之间,而最近添加的虚节点与新虚节点之间的链接添加到嵌入表中的嵌入数据。
最后,在连接到未连接节点一个邻居的层中,将到达不作为虚节点的节点。当到达这一层时,嵌入模块22向连接前一层中未连接节点到下一层中实际节点的路径添加一链接。
在未连接节点已连接到该未连接节点不作为起始节点出现的栅格后,采取类似的处理,以便添加附加节点和到除出现在第一层中的单个节点以外识别为不是结束节点的节点的链接。无论何时节点和链接添加到存储在嵌入表36中的数据时,识别所添加虚节点和虚链接的数据都作为虚链接/节点数据38存储在数据存储器20中。
图6E是图6A的栅格被嵌入模块22处理后的图6A栅格的示意图。如从图6E可以看到的,在所处理的栅格中,所有链接都连接在相邻的层节点之间,而且图6E栅格中的链接没有一个与任何其它链接交叉。
这意味着连接节点的路径隐含地识别了节点所关联的层。这是因为第一层中的节点将利用从第一节点出发一节点长的路径识别,而第二层中的节点将通过两节点长的路径连接到第一层中的节点,以及概括地说第n层中的节点将通过包含n个节点的路径连接到第一节点。
在图6A的这个栅格处理阶段,以下嵌入数据将与识别结构中每个链接的链接数据一起存储在表示图6E结构的嵌入表中。
嵌入数据层号层中的节点1
2 [2,1]3 [D1,3,4,5]4 [6,D2,D5,D3]5 [8,7]6 [10,9]7 [D4]嵌入模块22随后排序(S5-7)存储在嵌入表中的链接数据。具体而言,以其起始节点出现在不同层嵌入数据中的顺序,嵌入模块22最初排序链接数据。然后,具有相同起始节点的链接以其结束节点出现在嵌入数据中的顺序排序。
因而,在图6E链接的情况下,以下有序链接数据将存储在嵌入表36中链接(0,2)、(0,1)、(2,D1)、(2,3)、(1,3)、(1,5)、(1,4)、(D1,6)、(3,D2)、(5,D5)、(4,D3)、(6,8)、(6,8)、(6,7)、(D2,7)、(D5,7)、(D3,7)、(8,10)、(7,9)、(10,D4)、(9,D4)。
附加存储在数据存储器20中的将是识别添加到图6A栅格的虚节点的以下数据虚节点D1、D2、D3、D4、D5。
以下数据将存储为虚链接数据(5,7)和交叉链接数据(5,6)。
如现在将要描述的,从其除去交叉链接和链接交叉相邻层的嵌入式栅格结构随后传递以便链接编码模块24进行处理,链接编码模块24开始简化该所产生的栅格结构。
链接编码模块的处理现在参考图7和8A-H具体描述由栅格处理器11的链接编码模块24所执行的处理。
链接编码模块的处理是处理由嵌入模块22产生的嵌入表36并简化由产生的表36中的结构所表示的栅格结构。具体而言,链接编码模块24的处理是编码由嵌入模块22产生的栅格结构部分,其中该栅格部分识别只连接到两个其它节点的节点之间的线性路径,而且其中多条线性路径连接相同的两个节点。
参考图7,当嵌入模块22产生并在嵌入表36中存储了嵌入数据和链接数据时,链接编码模块24最初(S7-1)产生初始链接编码数据40。
具体而言,对于由嵌入表36中链接数据所识别的每个链接,包括单个符号,在这种实施方式中是字母E的数据,作为用于所识别链接的链接编码在数据存储器20中存储为链接编码40。
图8A是图6E栅格的示意图,其中每个链接都与对每个链接包括单个符号E的链接编码40关联。如随后将更具体描述的,链接编码模块24的后续处理是修改链接编码40和存储在嵌入表36中的数据,以便从由嵌入表36中数据所表示的栅格除去链接和节点,同时修改链接编码40以识别从栅格中什么地方除去了节点和链接。
在初始链接编码数据40存储以后,链接编码模块24随后选择第一节点进行处理(S7-2)。在这种实施方式中,进行处理的第一节点是从识别由嵌入表36中嵌入数据定义的栅格结构第二至最后一层中节点的列表头选择的。
在图8A示例栅格的情况下,第二至最后一层上选择的节点是节点10。
在初始节点选定以后,链接编码模块24随后(S7-3)选择初始链接进行处理。在这种实施方式中,从选定节点出发的链接以嵌入表所存储链接数据中以该节点作为起始节点的链接出现顺序选择。在图8A的当前例子中,由于从节点10到节点D4只有单个链接,因此它就是首先被选择进行处理的链接。
一旦已选择一个链接进行处理,链接编码模块24然后就(S7-4)考虑所处理链接的结束节点。具体而言,链接编码模块24确定由该链接识别的结束节点在嵌入表36所存储的嵌入数据的链接列表中是否作为起始节点只出现一次及作为结束节点只出现一次。
如果情况是这样,则只有单条路径通过该节点,而链接编码模块24然后继续修改链接编码数据40和嵌入表36中的数据,以便编码该单条路径上该节点的存在(S7-5)。
具体而言,当被处理的链接包括链接数据(N1,N2),其中N1识别链接的起始节点,而N2识别结束节点,而且有另外一个以N2为起始节点的链接(N2,N3)时,链接编码模块24开始从嵌入表36删除这些链接数据项,并用单个链接数据项(N1,N3)代替它们,其中新链接包括在所删除链接(N1,N2)位置的有序链接数据中。
链接编码模块24随后利用已删除的两个链接的链接编码数据为新链接产生链接编码数据。
具体而言,链接编码模块24将链接(N1,N2)的链接编码数据附加到链接(N2,N3)的编码数据的末尾。然后,链接编码模块24将节点N2对应于由虚节点38中数据识别的虚节点时的字母D或者符号P和识别该编号节点从嵌入表表示中推出来的节点编号添加到新产生符号列表的头。然后,链接编码模块24从存储在嵌入表36的嵌入数据中的节点列表删除所识别的节点N2。
因而,在图8A中节点8和节点10及节点10和节点D4之间链接的情况下,在删除识别节点8和节点10及节点10和节点D4之间链接的链接数据后,包括识别节点8和节点D4之间链接的数据的新链接数据将被存储。为节点8和节点10及节点10和节点D4之间链接所存储的链接编码数据40将然后用于产生新链接的链接编码数据,在本例中其包括符号P和所除去节点的识别符,在这种情况下是10,及以节点8和节点10之间链接的链接编码然后是节点10和节点D4之间链接的链接编码的顺序与被除去链接关联的符号。在本例中,这将是编码E,后面跟着另一个E。然后,嵌入表36中所删除链接的编码数据和节点10的表示将删除。
在嵌入表36和链接编码40更新以后,当前节点与其它节点之间的连接将然后重新考虑(S7-3,S7-4)。具体而言,嵌入表36的链接数据中以当前所选节点作为起始节点的第一链接将重新考虑(S7-3),并确定由该链接识别的结束节点是否由嵌入表36中链接数据中的单个起始节点识别(S7-4)。如果情况是这样,则嵌入表36和链接编码40然后以上述方式更新(S7-5)。
如果确定(S7-4)所选链接识别了被嵌入表36中数据不止识别为起始节点一次和识别为结束节点一次的节点,则(S7-6)链接编码模块24确定是否从当前所选节点出发的所有链接都处理了。如果情况不是这样,则(S7-7)链接编码模块24考虑嵌入表36的链接数据中以当前所选节点作为起始节点的下一链接并以上述相同方式确定(S7-4)该链接数据是否识别了作为起始节点只出现一次的结束节点。
当从当前所选节点出发的所有链接都处理完以后,链接编码模块24然后确定在当前所选节点与任何其它节点之间是否存在不止一个链接(S7-8)。即,链接编码模块24确定以当前所选节点为起始节点的任意存储链接数据项是否是存储在嵌入表36中的任何其它链接数据项的副本。如果确定情况是这样,则链接编码模块24删除(S7-9)一个副本链接并更新与剩余链接关联的链接编码40。
具体而言,链接编码更新成符号列表,该符号列表包括指示两个链接已合并的符号,在这种实施方式中是M,后面是包括用于所处理链接对中一个的链接编码的两个符号列表中较长的一个,后面是所考虑另一链接的符号列表。在链接以上述相同方式处理(S7-4-S7-8)之前,从当前所选节点出发的第一链接(S7-3)然后被重新考虑。
如果确定从当前所选节点出发的剩余链接中没有一个具有与从当前所选节点出发的任何其它链接相同的结束节点(S7-8),则链接编码模块24(S7-10)确定是否到达最后一个节点。
具体而言,链接编码模块24确定当前节点是否对应于在嵌入数据第一层中识别的节点。如果情况是这样,则栅格中线性和并行路径的编码都已完成,处理结束。
如果情况不是这样,则选择下一节点进行处理(S7-11)。在这种实施方式中,该下一节点是列表中与先前处理节点在同一层的下一节点,或者如果到达列表尾部,则是下一较早定时层的节点列表中的第一节点。
然后选择从新选择节点出发的第一链接(S7-3),然后以上述相同方式进行处理(S7-4-S7-10)。
因而,例如,当处理图8A的栅格时,最初节点10和9将被选择并处理。对于这两个节点,都有从该节点到节点D4的单个链接。但是,D4对任何链接都不是起始节点,因而在这个阶段没有链接或节点被除去。
然后,链接编码模块24将考虑节点8和节点10之间的链接。这识别出了节点10,如图8A的说明所示,这是由节点8和节点10之间的链接作为单个结束节点识别一次并作为节点10和节点D4之间链接的起始节点识别一次的节点。因此,当考虑以节点10作为起始节点或结束节点的链接时,链接编码模块24将确定节点10是线性路径上的节点。
然后,链接编码模块24将开始删除节点10和嵌入表36中嵌入数据中节点8和节点10及节点10和节点D4之间的链接,并用节点8和节点D4之间的单个链接代替它们。与新链接关联的将是包括符号P、识别所删除节点的数字10及两个删除链接的附加编码的两个符号EE的链接编码40。
然后,链接编码模块24将重新考虑从节点8出发的链接,在这种情况下是节点8和节点D4之间的单个链接,以确定节点D4是否作为起始节点只出现一次和作为结束节点只出现一次。由于情况不是这样,因此节点8和节点D4之间链接的链接编码不再修改。由于从节点8出发的所有链接都处理了,因此链接编码模块24将继续考虑从节点7出发的链接。
以与处理节点10类似的方式,链接编码模块24将识别节点7和节点9之间的链接识别出了作为起始节点只出现一次并作为结束节点只出现一次的节点,节点9。然后,链接编码模块24开始删除节点7和节点9及节点9和D4之间的链接并以节点7和节点D4之间的单个链接代替它,该单个链接与识别节点9已除去的链接编码数据P9EE关联。在这个阶段图6E栅格的处理由图8B说明。
在删除节点9以后,链接编码模块24将重新考虑从节点7到节点D4的链接,并确定没有更多链接可以从节点7除去。
然后,链接编码模块24将转向节点6,在节点6的情况下,从节点6出发的两个链接都识别出节点8。这意味着节点8作为起始节点不止识别一次。但是,由于从节点6出发的两个链接是完全一样的,因为它们都链接到节点8,因此链接编码模块24将这些识别为编码并行路径并删除一个链接,同时更新剩余链接的链接编码为链接编码MEE,字母M后面跟着之前彼此附加的两个编码E和E。
图8C说明了在节点6和节点8之间的一个链接删除且链接编码更新后图8B栅格的处理结果。
然后将考虑从节点6到节点8的新的单个链接,现在节点8将作为链接8-D4中的起始节点识别一次,并作为新的单个链接6-8中的结束节点识别一次。因此,这意味着节点8可以删除,用于节点6和节点D4之间新链接的链接编码是表示删除节点的P8,后面跟着用于节点6和节点8的链接编码MEE,后面跟着用于节点8和节点D4之间链接的前一链接编码P10EE。
图8D是这阶段处理栅格的说明。如从图8D可以看到的,节点6和节点D4之间的链接与编码P8MEEP10EE关联,节点7和节点D4之间的链接与编码P9EE关联,而所有剩余链接都与相同的编码,即单个字母E,关联。
在处理节点6并除去节点8以后,不会发生更多从节点6出发的链接处理,因此,链接编码模块24将依次考虑节点D2、D5和D3中的每一个。在所有这些情况下,节点都连接到对4个链接是结束节点因此不能除去的节点7。
考虑完节点D2、D5和D3以后,考虑节点D1。它由单个链接连接到节点6。但是,节点6是到节点7的链接和到节点D4的链接这两个链接的起始节点。因此节点6不能除去。
然后考虑节点3。这个节点是到节点D2的单个链接的起始节点。除了在链接3-D2中作为结束节点出现一次,节点D2还对于单个链接D2-7作为起始节点记录一次。因此,D2被处理。由于D2是虚节点,因此D2从存储在嵌入表36中的数据删除,而节点3和D2及节点D2和7之间的链接被节点3和节点7之间的单个链接代替,该链接与编码DEE关联,D识别已删除的虚节点,而E和E是与已除去的两个链接关联的两个编码。
图8E说明了在这个处理阶段的栅格和链接编码。
处理完节点3以后,节点5、4和2以类似的方式一个接一个处理,分别除去虚节点D5、D3和D1,并以除去虚节点D2处理相同的方式更新嵌入表36中的链接数据和与所处理链接关联的链接编码40。
图8F是虚节点D5、D3和D1被处理并除去后栅格的示意图。在这个阶段,节点2和节点6、节点3和节点7、节点5和节点7及节点4和节点7之间的每个链接都与指示从每个链接除去单个虚节点的编码DEE关联。
处理完节点2以后,选择节点1。节点1和节点3之间的链接识别出节点3,它对于节点1和节点3之间的链接及节点2和节点3之间的链接是结束节点。为此,节点3不能除去。
然后选择以节点1为起始节点的下一链接。在这个例子中,该下一链接将是节点1和节点5之间的链接。然后,节点5将被识别为作为该链接的结束节点出现一次并作为节点5到节点7的链接的起始节点出现一次。因此节点5将被删除,节点1和节点7之间的新链接将产生并与链接编码P5EDEE关联。
然后以相同的方式处理节点1和节点4及节点7之间的链接,节点4被删除,节点1和节点4及节点4和节点7之间的链接被从节点1到节点7、与链接编码P4EDEE关联的单个链接代替。
在这个处理阶段所存储的栅格由图8G说明。在这个阶段,以节点1为起始节点的两个链接识别出了同一个结束节点,即节点7。因此,链接编码模块24将删除这些链接中的一个并将剩下的链接的编码更新为编码M后面跟着删除或剩下链接的较大编码然后是剩下或删除链接的较短编码。
在本例中,更新后的编码将是MP5EDEEP4EDEE。这个处理阶段的栅格在图8H中说明。在这个阶段,由从节点1出发的链接所识别出的节点中没有一个可以除去,因此考虑从节点0出发的链接。由于由以节点0为起始节点的链接所识别出的节点中没有一个可以除去,而且节点0是最后一个节点,因此链接编码模块的处理完成。
因而,在这个阶段,在图8H示例栅格的情况下,以下数据将存储在嵌入表36中。
嵌入数据层号节点1
2 [2,1]3 [3]4 [6]5 [7]
67[D4]链接数据(0,2)、(0,1)、(2,6)、(2,3)、(1,3)、(1,7)、(3,7)、(6,D4)、(6,7)、(7,D4)而且链接编码42将以上各链接分别与以下链接编码数据关联E、E、DEE、E、E、MP5EDEEP4EDEE、DEE、P8MEEP10EE、E、P9EE。
在链接编码模块24从栅格中除去所有线性和所有并行路径后,只有第一和最后一层中的节点及连接到至少三个其它节点的节点在简化嵌入中保留,然后如现在将要描述的,剩下的简化栅格由形状编码模块26编码。
形状编码模块执行的处理现在参考图9A和9B及图10A、10B和10C具体描述形状编码模块26的处理,其中图9A和9B是由形状编码模块26执行的处理操作的流程图,而图10A、10B和10C是图8H栅格编码的示意图。
如前所述,链接编码模块24简化了由嵌入表36中嵌入数据和链接数据40识别的栅格结构,以与该栅格结构中链接关联的链接编码数据40的形式编码对应于只连接到它们自己而不连接到栅格任何其它部分的节点之间的线性和并行路径的栅格部分。因此,链接编码模块24的处理结果是除栅格开始和末尾的节点(在图8H栅格的情况下是节点0和节点D4)以外,所有节点都连接到至少三个其它节点的栅格结构。另外,在简化的栅格结构中,节点之间的链接没有副本。即,在任何节点对之间都决不会有多于一个链接。
当简化的栅格结构由链接编码模块24产生以后,由链接编码模块24处理的原始栅格结构的完整表示由形状编码模块26以三组数据的形式产生。这三组数据包括编码由链接编码模块24产生的简化栅格形状的形状编码数据42;用于简化栅格中链接的确定链接编码40的级联列表的链接列表43;及包括由链接编码模块24所处理的原始栅格结构中所有节点的有序列表的节点列表44。
在这种实施方式中,形状编码数据42对由简化栅格定义的每个区域都包括三位数编码。这三个字母编码中的第一个数字识别区域附属于栅格什么地方,而后两个数字识别该区域中编码的链接编号。
因而,例如,参考图10A-10C并且如随后具体描述的,当处理图8H的栅格时,最初图10A中阴影节点0、2、3、1的区域被形状编码0、2、2包围。作为偏移,0、2和2识别定义编码形状的路径0、2、3和0、1、3中链接的编号。
确定要编码的下一区域的偏移。在这个例子中,下一区域是2、6、7、3。节点2相对于节点0的偏移是1,因而确定形状编码1、2、2。在这个阶段编码的区域在图10B中由阴影节点和完整箭头示出。
然后识别下一区域6、D4、7,随后这个区域如图10C所说明地被编码。然后识别最后未编码的区域1、3、7,并产生用于该区域的最后三位数编码。
如随后将具体描述的,一旦产生了完整的形状编码42、链接列表43和节点列表44,它们就由解码模块28处理,建立对应于由存储在数据存储器20中的语音节点数据30定义的栅格结构的最终栅格结构。然后,和与以对应于节点列表44的顺序排序的节点关联的附加数据及与以解码模块28产生的最终栅格结构确定的顺序排序的语音链接数据32节点中链接关联的数据一起,形状编码42和链接列表43由输出模块29输出。
参考图9A,最初(S9-1)识别用于第一层节点的节点列表中的单个节点。识别这个节点的数字添加到节点列表44,还添加到用于上下边界的列表,还设置成识别为当前节点和要处理的最后一个节点。
因而,例如,在图8H栅格的情况下,其中第一节点是0,以下数据将存储。
最后处理的节点0当前节点 0节点列表
上边界
下边界
然后(S9-2),形状编码模块26确定由嵌入表36中链接所识别的一个或多个链接是否识别出当前节点为起始节点。
如果只有单个以当前节点为起始节点的链接被嵌入表36中的链接数据识别出来,则这指示与当前节点直接相邻的栅格部分包括多个表示一条或多条并行或线性路径的链接或节点。如果情况是这样,则形状编码模块24(S9-3)比较所处理的最后一个节点的值与当前节点的值。如果这两个数字相同,如当处理初始节点时的情况,则链接编码模块24将包括设成0的偏移值及数字1和1的数字串添加到存储在数据存储器中的形状编码(S9-3)。如果两个值不相等,则如随后具体描述的计算不同的偏移数字。
然后(S9-4),形状编码模块26选择与当前所处理链接,即以当前节点为起始节点的单个链接,关联的链接编码数据40并利用与该链接关联的链接编码更新链接列表43和节点列表44。具体而言,如果任何数字出现在所处理链接的链接编码40中,则这些数字以它们出现在链接编码中的顺序添加到节点列表。然后,从中除去这些数字的链接编码的剩余部分添加到链接列表43。
然后(S9-5),处理的最后一个节点设置成识别为该链接结束节点的节点,而且当前节点、用于上下边界的列表全都重置以便仅识别该结束节点。然后该结束节点附加到节点列表44的末尾。
因而,例如,在节点0具有与以下链接编码MP4EEP3EEE关联的单个链接(0,5)的情况下,最后处理的节点、当前节点、节点列表44、链接列表43、形状编码42及上下边界将更新变成如下最后处理的节点5当前节点 5节点列表
链接列表 [MPEEPEEE]形状编码
上边界[5]下边界[5]如果形状编码模块26确定(S9-2)对于由嵌入表36中链接数据识别的链接当前节点作为起始节点出现了不止一次,如在图8H示例栅格的情况下,其中节点0由两个链接连接,一个在节点0和节点2之间,一个在节点0和节点1之间,则(S9-6)形状编码模块26识别出用于被编码栅格区域的上下路径。
具体而言,形状编码模块26最初识别出由嵌入表36中以当前节点作为起始节点的有序链接数据识别的最后两个未处理链接。
因而,在图8H栅格的情况下,节点0和节点2及节点1之间的链接被识别出来。然后,识别这些链接的数据作为被编码区域的路径数据由形状编码模块26存储。
具体而言,识别有序链接数据中后一链接的数据添加到识别下路径的路径,而识别另一链接的数据添加到用于上路径的数据。
因而,例如,在图8H栅格结构的情况下,以下数据将被存储上路径
下路径
然后比较由上下路径中最后一个节点识别的节点的层号。如果上路径列表中的最后一个节点比下路径列表中最后一个节点对应于较早定时数据34的层,则上路径列表被处理。如果情况不是这样,则处理下路径。
当处理上路径时,识别以上路径中最后一个节点作为起始节点的链接。在以上路径和图8H栅格结构的情况下,链接2-6和2-3将被识别。然后识别由有序链接数据中以上路径中最后一个节点作为起始节点的最后一个链接的结束节点所识别的节点。然后,识别出的节点添加到上路径列表的末尾。因而,在图8H栅格结构的情况下,上路径列表将更新变成
。
当处理下路径时,以下路径中最后一个节点作为起始节点的链接被识别,而且有序链接数据中以该最后一个节点作为起始节点的最早链接被识别。然后,这个识别出的链接的结束节点添加到下路径的节点列表。
这种处理对每一层重复,直到上下路径节点列表中的最后一个节点完全相同。因而,例如,在图8H栅格的情况下,包括节点0,2和3的上路径与包括节点0,1和3的下路径将被识别并存储。然后,由形状编码模块26存储的上下边界分别更新成对应于这些识别出的上下路径。
然后,形状编码模块26开始(S9-7)利用识别出的路径更新形状编码42。具体而言,比较最后处理的节点数据与当前节点并确定偏移值。就象处理栅格第一区域时的情况,当这两个数字相等时,确定零偏移。然后,通过向当前列表的末尾添加包括所确定偏移数字、识别上路径中链接数的数字及下路径中链接数的数字的三个数字列表来更新形状编码。因而,在图8H由节点0、2、3和1所识别区域的情况下,指示具有上下路径中两个链接的区域的形状编码
将被存储。
然后,与由上下路径识别的链接关联的链接数据被识别(S9-8)并处理(S9-9),链接列表43和节点列表44被更新。
具体而言,从由更新后的上路径列表识别的第一节点开始,识别由上边界列表中前两个数字识别的第一链接。在图8H栅格的情况下,这是节点0和节点2之间的链接。然后,与这个链接关联的链接数据被处理,因此出现在与该链接关联的链接编码中的任何节点号都添加到节点列表,而从中除去这些数字的链接编码添加到链接列表。
在图8H由0和2之间链接识别的链接编码数据的情况下,由于这个链接包括单个符号,字母E,因此没有节点添加到节点列表,而字母E添加到链接列表。然后,以前述相同的方式,上路径列表中的下一节点添加到节点列表,从那个节点出发由上路径节点列表识别的链接被处理。当所有上路径列表都以这种方式处理以后,下路径列表以相同的方式处理,直到下路径列表中最后两个节点之间的最后一个链接被处理。
因而,例如,在处理图8H栅格结构的情况下,在这个阶段以下数据将被存储。
最后处理的节点 0当前节点0节点列表
链接列表[EEEE]形状编码
上边界
下边界
在链接列表和节点列表更新以后,形状编码模块26(S9-10)确定当前节点是否对应于由上下边界列表中最后一个数字识别的节点。如果情况是这样,可选地在处理完从被处理的当前节点出发的单个链接以后(S9-2-S9-5),形状编码模块(S9-11)确定被处理的当前节点是否识别出了嵌入表36中嵌入数据最后一层中的单个节点。如果情况是这样,则整个栅格结构都由形状编码模块26进行了编码,形状编码模块26的处理结束。
但是,如果当前节点没有识别出由嵌入表36中嵌入数据识别的最后一层中的节点,则形状编码模块(S9-2)确定以当前节点为起始节点的链接数并以上述方式继续处理那些链接(S9-2-S9-10)。
如果当前节点没有识别出上下边界列表中的最后一个节点,则形状编码模块26(S9-12)确定当前节点是否与任何还未处理的链接关联。
如果情况不是这样,则形状编码模块26(S9-13)继续选择另一节点进行处理。
更具体而言,在当前节点对应于上边界列表中除该边界列表中最后两个节点以外的一个节点时,进行处理的下一节点选为上边界列表中的下一节点。如果当前节点识别出了上边界列表中的倒数第二个节点,则选择的下一节点是下边界列表中的第二节点。如果当前节点是由下边界列表中除第一节点编号以外的任何数字识别的节点,则选择下边界列表中的下一节点。因而,在图8H栅格的情况下,在所有从节点0出发的链接都处理完以后,所选的下一节点将是节点2。
在当前节点更新以后,形状编码模块26在确定是否所有节点都已处理(S9-11)或确定新选节点是否是任何还未处理的链接的起始节点(S9-12)之前,确定当前节点是否识别了上下边界列表中的最后一个节点(S9-10)。
当确定(S9-12)当前节点是任何还未处理的链接的起始节点时,确定(S9-14)用于包括该未处理链接的区域的上下路径。
更具体而言,如果当前节点在上边界列表中,则识别出以当前节点为起始节点的链接和上边界列表中当前节点的下一节点。这个链接用于设置下一要处理区域下路径中的前两个节点。因而,在图8H栅格的情况下,在由节点0、2、3和1定义的区域被编码且节点2被处理以后,节点2和3将设为下路径列表中的初始节点。
然后,最接近以当前节点为起始节点的有序链接数据尾部的未处理链接用于识别要添加到上路径的节点。在以上图8H栅格的情况下,这将是链接(2,6),因而上路径将被更新设置成列表[2,6]。
在当前节点不由上边界列表中的数字识别时,由当前节点和下边界列表中下一节点识别的链接设置为上路径列表的开始,最接近有序链接数据头并以当前节点为起始节点的下一未处理链接用于设置下路径列表的开始。
然后以前述相同的方式关于步骤(S9-6)为要编码的区域确定剩余的上下路径列表。因而,在图8H以节点2为起始节点的区域的情况下,将确定识别节点的上下路径[2,6,7]和[2,3,7]。
然后(S9-15)形状编码模块26确定由计算出的上下路径定义的区域是否可以在这个阶段编码。为了确定这个,形状编码模块26最初检查当前节点是否由上边界列表中的节点识别。如果情况是这样,则形状编码模块26确定当前区域的下路径是只包括由上边界列表识别的节点还是包括上边界列表中从当前节点到上边界列表末尾的全部节点。如果情况是这样,则该区域可以编码。
在当前节点不对应于上边界列表中任何节点时,形状编码模块26确定为该区域确定的上路径是只包括由下边界列表识别的节点还是包括下边界列表中从当前节点到下边界列表末尾的全部节点。如果情况是这样,则该区域可以编码。
如果确定(S9-15)当前区域在这个阶段不能编码,则该节点及与该节点关联的上下路径被存储(S9-16),边界上当前节点的下一节点被选择进行处理(S9-13)。
如果形状编码模块26确定用于当前节点的区域可以编码(S9-15),则形状编码模块26确定从当前节点到最后处理节点的值的偏移值,并向形状编码添加对应于所确定偏移的数字及识别与被处理节点关联的上下路径中的链接数的数字。
由形状编码模块26确定的偏移是以步骤(S9-3)和(S9-7)确定偏移的相同方式确定的,如现在参考图10A将要具体描述的。
如前所述,无论何时当当前节点设成等于最后处理的节点时,由形状编码模块26产生的形状编码的偏移值设成0。
如果最后处理的节点号与当前节点号不相等,则偏移值以以下方式计算。首先通过拷贝上边界列表并在以逆序附加下边界列表之前除去出现在上边界列表中的最后一个节点来产生偏移列表。
因而,在图10A由加黑圆圈所示边界的情况下,将产生包括识别该边界中节点的数字
的偏移列表。
然后通过以由偏移列表识别的顺序沿节点以顺时针或逆时针前进确定以从最后处理节点开始到当前节点的顺序围绕边界在节点之后的步进数。
在顺时针前进步进值小于逆时针前进步进值时,这就是偏移值。在逆时针前进步进值小于顺时针前进步进值时,偏移设成对应于步进值的负数。
因而,例如,如图10A所示,当0是在图中由*识别的最后处理节点且上下边界分别包括节点0、2和3及0、1和3时,节点2、3和1的偏移分别是1、2和-1,如图中阴影圆圈上的数字所示。这些数字唯一识别出了边界上每个节点相对于最后处理节点,节点0,的位置。
在形状编码42更新以后,形状编码模块26更新边界列表(S9-19)。
具体而言,形状编码模块26首先确定识别为当前节点的节点是否在上边界列表中。如果情况是这样,则为被编码区域确定的下路径中的链接数与当前节点到上边界列表末尾节点之间的链接数进行比较。
如果下路径中的链接数大于将当前所处理节点与上边界列表最后一个节点隔开的链接数,则下路径末尾超过将当前节点与上边界列表最后一个节点隔开的节点的节点编号附加到下边界列表。
因而,例如,在图10A处理由节点2、6、7、3定义的区域的情况下,在由节点0、2、3和1定义的区域处理以后,由于用于被处理区域的下路径[2,3,7]包括多于将当前节点,节点2,与上边界列表
末尾隔开的链接,即一个链接,因此通过添加来自被编码区域的下路径的最后一个节点,节点7,来更新下边界。因而,在这种情况下,下边界变成
。
然后,通过删除从当前节点到列表末尾的全部节点及将上路径列表附加到缩短的上边界列表来修改上边界列表。
因而,在处理由节点2、6、7和3定义的区域的情况下,在当前节点是2且上边界最初是
时,上边界将首先缩短成
,然后上路径[2,6,7]将附加到该缩短的列表,因此上边界列表变成
。在图10B中,阴影节点是在这个阶段包括在边界列表中的节点。
当当前处理的节点不对应于上边界列表中的节点时,确定将当前节点与下边界列表中最后一个节点隔开的链接数。然后确定上路径超过这个链接数的链接数。然后,出现在上路径列表末尾、对应于这个数字的节点号附加到识别上路径边界的节点列表。然后,下边界中包括当前节点或后续节点的节点被删除,并且下路径列表附加到下边界列表。
在边界更新以后,识别(S9-20)已添加到栅格编码区域的链接。这些链接将包括分别添加到上下边界列表的链接。因而,在处理图10A由节点2、6、7和3定义的区域的情况下,在由节点0、2、3和1定义的区域已编码后,添加的链接将包括3和7、2和6及6和7之间的链接。
在被编码区域与上边界中当前节点关联的情况下,这些节点以添加到下边界然后是上边界的链接顺序排序,因而在上面的情况下链接以3-7、2-6和6-7排序。如果当前节点不在上边界列表中,则添加到上边界的链接放在添加到下边界的链接之前。
然后(S9-21)以前述相同的方式关于步骤(S9-5)和(S9-9)按顺序处理这些链接中每一个的链接数据,在链接数据处理以后,每个链接的结束节点如果还未添加到节点列表,则作为一节点添加到节点列表。然后,最后处理节点更新成等于当前节点的值。
因而,在编码图8H由节点2、6、7和3定义的区域的情况下,在由节点0、2、3和1定义的区域编码以后,以下数据将在这个阶段存储。
最后处理的节点2当前节点 2节点列表
链接列表 [EEEEDEEDEEE]形状编码
上边界
下边界
在链接列表、节点列表和最后处理的节点更新以后,形状编码模块26(S9-22)确定边界上任何节点是否已经调度进行随后的处理。如果情况是这样,则选择(S9-23)拒绝进行编码的最后一个区域,并且为将当前节点设置成等于所选节点并处理为该节点确定的上下路径的区域确定偏移和形状编码。然后,由形状编码模块26存储的边界数据、形状编码、节点列表和链接列表及其它数据利用如上所述的上下路径数据更新(S9-18-S9-22)。
当被调度进行随后处理的所有节点都处理以后,形状编码模块26确定当前所选节点是否还有任何可以编码区域的未处理链接(S9-12),然后处理那些链接(S9-14-S9-23)或在以前述方式处理节点(S9-23)之前选择边界上的下一节点(S9-13)。
因而,通过以这种方式处理简化的栅格,由栅格定义的每个区域都依次编码。参考图10A、B和C,例如,在由图10A中阴影圆圈识别的区域编码以后,选择进行编码的下一节点是节点2,节点2关于节点0有偏移值1,而节点0是前一编码区域的起始节点。然后,如图10B所示,由节点2和链接2-6、6-7、3-7及2-3识别的区域被编码,边界相应地更新。
在这个阶段,节点2是当前节点,来自边界的节点将包括图10B中的阴影节点。
当确定边界上与未处理链接关联的下一节点时,将识别出节点6。然后确定该节点相对于节点2的偏移,在这种情况下是1,如图10B圆圈上的数字所示。然后编码由节点1、6、D4和7识别的区域。
在处理完整个上边界以后,依次考虑下边界中的节点,识别出下边界中附属于一未处理链接的第一节点,节点1。然后确定相对于节点6的偏移值,如由图10C圆圈上的数字所示,这个值是-3。然后如前所述确定由节点1、3和7识别的形状的形状编码并更新链接列表和节点列表。在节点1考虑之后,依次考虑节点7和节点4,直到到达最后一个节点,节点D4,在这点不再发生任何编码。
在这种处理的末尾,以下数据将存储,其中用于栅格中链接的链接编码对应于图8H识别出的那些。
节点列表
链接列表[EEEEDEEDEEEPEEPMEEPEEMPEDEEPEDEE]形状编码
虚节点 [D1,D2,D3,D4,D5]
虚链接 (5-7)交叉链接 (5-7)如现在将要描述的,这些数据足以让解码模块28产生表示图6A所示原始编码栅格结构的栅格结构。
现在参考图11A-D,图12及图13A-G具体描述解码模块28再生栅格结构的处理。
解码模块执行的处理参考图11A,一旦用于整个栅格结构的节点列表44、链接列表和形状编码42已由形状编码模块26确定,解码模块28就继续从节点列表44、链接列表43、形状编码42及存储在数据存储器20中的虚节点和虚链接38及交叉链接39产生该栅格结构的另一表示。
具体而言,解码模块28最初(S11-1)从节点列表读出第一节点。这个节点是栅格结构中第一节点的节点号。然后解码模块28为所产生的栅格结构中的第一层产生节点列表,包括从节点列表中读出的节点号。
因而,在以上节点列表的情况下,其中节点列表44中的第一节点是节点0,为第一层产生包括节点列表
的嵌入数据项的节点列表。
然后解码模块28产生初始上下边界列表,这两个列表都包括单个元素,该元素是从节点列表44中读出的节点号。解码模块28还将最后处理的节点和当前节点设置成等于从节点列表读出的节点。
因而,在这个阶段,解码模块28将以下数据存储在数据存储器20中。
最后处理的节点0当前节点 0节点列表 [2,3,1,7,6,9,D4,8,10,5,4]链接列表[EEEEDEEDEEEPMEEPEEMPEDEEPEDEE]形状编码
虚节点[D1,D2,D3,D4,D5]虚链接(5-7)交叉链接 (5-7)上边界
下边界
嵌入数据第一层
链接数据 无然后(S11-2)解码模块28从形状编码读出下一数字,在这种情况下是值0,并更新当前节点号。
更具体而言,在从形状编码读出的数字等于0时,不采取任何动作。如果该数字不等于0,则如现在将要描述的,当前节点被更新。
最初,在从形状编码读出的数字是正数或负数时,识别当前节点在上下边界列表中的位置。
如果从形状编码读出的数字是正数且当前节点号识别出上边界列表中的节点,则识别节点号还在该列表中的列表中的节点,当前节点相应地更新。在当前节点在上边界列表中且从形状编码读出的数字是负数时,解码模块28向列表头计数。在对应于来自形状编码的数字的节点号读出时,识别读出的最后一个数字,当前节点相应地更新。
如果在正数的情况下到达上边界列表的头或尾,则考虑从下边界列表尾部将剩余节点数计算在内的后续节点,直到计数够要求的节点数。相反,在负数的情况下,如果到达列表头,则对于剩余的节点数,依次考虑从下边界列表头开始的节点号。
在当前节点不出现在上边界列表中时,识别当前节点在下边界列表中的位置,如果从形状编码读出的数字是正数,则读出朝下边界列表头方向的节点数,读出的最后一个节点用于更新当前节点。在从形状编码读出的数字是负数且当前节点不出现在上边界列表中时,从当前节点开始向着下边界列表尾,由来自形状编码的数字表示的节点数被读出。
如果到达下边界列表的头或尾,则更多节点从上边界列表计数(在正数情况下从头开始,在负数情况下从尾部向后),直到由形状编码识别的所有节点号都考虑了。然后,当前节点值设成等于该边界列表中识别的最后一个节点。
在当前节点数据更新以后(S11-2),解码模块28(S11-3)从形状编码列表读出下两个数字。在以上示例形状编码列表的情况下,这些数字是数字2和2。
在下两个数字从形状编码列表读出以后,解码模块28(S11-4)确定是否读出的这两个数字都等于1。
如果情况是这样,则解码模块28(S11-5)继续从链接列表43读符号,直到读出的符号E的个数超过从列表中读出的其它符号的个数。这将包括用于由链接编码模块24产生的简化栅格的一个链接的链接编码。然后,如现在参考图12将要具体描述的,从链接列表43读出的链接编码将被处理,其中图12是解码模块28处理来自链接列表43的链接编码以再生由该链接编码表示的编码栅格部分的流程图。
首先参考图12,解码模块28确定(S12-1)当前节点是否对应于上边界列表中的节点。如果情况是这样,则当处理链接编码时,添加到用于所产生栅格结构的嵌入数据的任何节点都添加到每层的列表头。否则新添加的节点添加到嵌入数据中的列表尾。
然后产生识别作为起始节点添加到栅格的最后一个节点和空结束节点的链接数据,而且从链接列表读出的链接编码与新产生的链接数据和识别包含所产生链接起始节点的层的层数据关联。然后解码模块28依次处理与链接编码关联的每个链接。
具体而言,解码模块28最初(S12-2)确定所处理链接编码中的第一个符号是否是字母D。如果情况是这样,则解码模块28(S12-3)增加与该链接关联的层数据并从用于该链接的链接编码中删除前两个符号。
如果与链接关联的链接编码的第一个符号不是字母D,则解码模块(S12-4)确定第一个符号是否是字母P(S12-4)。如果情况是这样,则节点列表中的下一元素被读出,而且与所处理链接编码关联的链接数据被更新(S12-5),以识别作为结束节点从节点列表读出的节点号。
大于与链接关联的数据的层的节点列表更新成包括该链接的结束节点。
然后产生以新读出节点为起始节点并具有空结束节点的新链接数据,并与识别包含该链接起始节点的层的层数据关联。然后,与所处理链接关联的链接编码通过从链接编码中删除第一个符号,字母P,来更新。然后一个接一个读出剩余链接编码中的符号,直到读出的字母E的个数超过其它字母的个数。该读出的链接编码数据与新产生的链接数据关联,由解码模块28读出的符号从当前处理的链接的链接编码中删除。
如果所处理链接编码的下一符号未确定是字母P(S12-4),则解码模块28(S12-6)确定所处理链接编码开始的符号是否是字母M。
如果情况是这样,则解码模块28(S12-7)产生与所处理链接编码关联的链接数据和层数据的拷贝。然后,解码模块28通过从与当前链接关联的符号序列开始删除字母M并读出链接编码数据的符号直到字母E的个数超过链接编码中其它字母的个数来更新与当前链接关联的链接编码数据。然后,从链接编码中读出的符号作为链接编码与新产生的链接关联,而用于所处理链接的链接编码通过将读出的链接编码从与该链接关联的符号列表中删除来更新。
因而,例如,参考图13A-F,考虑解码来自与以下初始链接数据和层数据(0,-)-层0关联的链接列表的以下数据[MDEPEEDEDEE]和以下嵌入数据的情况嵌入数据层0
参考图13A,以上链接编码和链接数据示意性地在图13A中说明,其中链接的起始节点示为圆圈中的数字,而链接示为指向第二个圆圈的箭头。图中,节点长度对应于层数据,较长的箭头与较大的层号关联,而链接编码示为紧挨着链接。
最初,链接编码中的第一个字母是字母M,因此将创建链接数据(0,-)和层数据的拷贝。链接数据的这两个拷贝将与以下链接编码[DEPEE]和[DEDEE]关联。因而在这个阶段,如图13B所说明的,以下数据将被存储链接链接编码层(0,-) [DEPEE] 层0(0,-) [DEDEE] 层0由于与这两个链接关联的编码数据不是单个字母E,因此其中一个链接编码将然后被选择进行处理。
在第一个链接编码[DEPEE]的情况下,第一个符号是D。于是用于该链接的层数据加1。用于该链接的链接编码由链接编码[PEE]代替。因而,在这个阶段,如图13C所说明的,以下数据将被存储链接链接编码层(0,-) [PEE]层1(0,-) [DEDEE] 层0当处理更新后的链接编码时,由于第一个符号是字母P,因此与该链接关联的链接编码通过将结束节点设成出现在节点列表上的下一节点来更新,以该新节点为起始节点的新链接产生并与从中删除第一和最后一个符号的前一链接编码关联。然后,该新节点添加到与由所处理链接的层数据识别的层相邻的节点列表,而且新链接然后与识别这层的层数据关联。
因而,在这个阶段,如果节点列表上的下一节点是节点1,则以下数据将存储。
嵌入数据层0
层1 -层2 [1]
链接数据链接编码层(0,1) [E] 层1(0,-) [DDEE] 层0(1,-) [E] 层2该数据由图13D说明。
由于剩余链接都与链接编码E关联,因此解码模块28然后将开始处理与链接数据(0,-)关联的链接编码。由于这个链接编码包括DEDEE,因此这将使层数据更新成等于2,在这点编码将只包括单个字母E。在此之后所有链接编码数据都已处理。在处理链接编码末尾的数据由图13E说明。
因而,以这种方式,解码模块28能够处理来自链接列表的数据,产生表示包括一条或多条由链接编码数据40编码的并行线性节点路径的栅格结构部分的嵌入数据和链接数据。
返回图11A,在所有链接数据都处理完以后(S11-5),解码模块28然后(S11-6)从节点列表44读下一节点。这个节点号用于通过用从节点列表44读出的节点值代替空值来更新由解码模块28根据处理从链接列表43获得的具有空结束节点的链接编码而产生的链接数据。然后选择刚更新的一个链接,而且从节点列表44读出的节点然后添加到由该链接层数据识别的层的下一层的节点列表。
因而,例如,在上述链接的情况下,如果下一节点号是节点2,则嵌入数据和链接数据将然后变成嵌入数据层0
层1层2 [1]层3 [2]链接数据(0,1),(0,2),(1,2)以上例子在节点2添加以后的最终结构由图13F示出。
然后,当前节点数据和最后处理的节点数据重置成等于从节点列表44读出的最后一个节点,而上下边界列表重置成包含单个元素,它是从节点列表44读出的最后一个节点号。
然后(S11-7),解码模块28确定是否所有形状编码数据42都已处理。如后所述,如果所有形状编码数据42都已处理,则(S11-23)解码模块28利用存储在数据存储器20中的虚链接/节点数据38和交叉链接数据39完成栅格结构的表示。可选地,如果情况不是这样,则解码模块28继续处理(S11-7)形状编码42中的下一数字,同样如后面具体描述的。
如果当初始上下路径数从形状编码42中读出时(S11-3)确定该数字不都是1(S11-4),则解码模块28继续(S11-8)从链接列表43读该链接编码的下一部分,直到由字母E表示的符号总数超过其它符号的个数,并以前述相同的方式关于步骤(S11-5)继续处理该链接编码数据。
在从链接列表43读出的链接编码数据处理完以后,解码模块28(S11-9)从节点列表44读下一节点号。然后,作为处理识别空结束节点的链接编码数据的结果而产生的任何链接数据都更新成包括从节点列表44读出的该节点作为起始节点。然后以前述方式更新栅格结构的嵌入数据,其中从节点列表44读出的节点号添加到由刚更新的任何链接的层数据所识别层的相邻层节点列表。
然后(S11-10)解码模块28确定是否由所处理形状编码数据编码的所有上路径都已解码(S11-10)。即,由于所处理形状编码是从形状编码42中读出的,因此解码模块28计算作为步骤(S11-9)处理结果链接编码和节点添加到所产生栅格结构的次数。如果这小于从形状编码42读出的三位数串中的第二个数字,则解码模块28继续处理(S11-8)来自链接列表43的链接编码的下一部分,然后读出并处理(S11-9)节点列表44中的下一节点。
因而,例如,如果以下数据由数据存储器20存储当前节点0
节点列表[2,3,1,...]链接列表[EEEE...]形状编码
嵌入数据层1
链接数据无上边界
下边界
在处理链接列表中的前两项之后,数据存储器中所存储的数据将是当前节点0节点列表[1...]链接列表[EE...]形状编码
嵌入数据层1
层2 [2]层3 [3]链接数据(0,2),(2,3)上边界
下边界
当解码模块28确定由形状编码42中第二个数字识别的用于处理的所有链接都处理完以后,解码模块28(S11-11)继续记下所添加最后一个节点的节点号并处理(S11-13)来自链接列表包括比其它字母多的字母E的链接编码的下一部分。然后,解码模块28将从链接列表43读出的链接编码与具有对应于当前节点的起始节点和空结束节点的所产生链接关联。然后以前述相同的方式处理该链接编码。在链接编码项处理完以后,解码模块28(S11-14)确定从记下最后一个节点值(S11-11)开始由步骤(S11-13)处理的链接编码部分的总数是否对应于所处理形状编码中的最后一个数字(S11-14)。
如果情况不是这样,则解码模块28(S11-15)从节点列表读出下一节点,将该节点作为结束节点添加到当前识别出空结束节点的链接数据。嵌入数据是以前述方式关于步骤(S11-9)利用这个节点号更新的。然后,解码模块28更新与所产生栅格关联的边界列表。在本例中,当当前节点同时是上下边界列表的成员时,与步骤(S11-9)的更新相反,这种更新涉及将新识别的节点添加到下边界列表。
因而,在上述例子的情况下,在来自链接列表的另两个链接编码数据项处理完之后,以下数据将被存储当前节点0节点列表[1...]链接列表[...]形状编码
嵌入数据层1
层2 [2,1]层3 [3]链接数据(0,2),(2,3),(0,1),(1,-)上边界
下边界
最后一个节点3当从记下最后一个节点(S11-11)开始由步骤(S11-13)处理的链接编码数据部分的总数对应于由所处理形状编码最后一个值识别的数字时,解码模块28(S11-16)修正以空值作为结束节点的链接数据以识别最后一个节点,并将该最后一个节点添加到下边界列表。
因此,关于上例,由解码模块28存储在数据存储器20中的嵌入数据、链接数据和上下边界列表如下嵌入数据层1
层2[2,1]层3[3]链接数据 (0,2),(2,3),(0,1),(1,3)上边界
下边界
在这个阶段由这种嵌入数据和链接数据编码的栅格结构由图14A说明,其中对应于同一层的节点在垂直列中示出,而链接数据由连接该链接数据起始节点和结束节点的箭头说明。
比较图14A与图10A的结构,很显然所产生的结构对应于图10A的阴影节点和完整箭头。进一步比较本例中的初始节点列表,链接列表及形状编码与图10A例子中对应的节点列表、链接列表及形状编码,很显然通过以所述方式处理为结构产生的节点列表、形状编码和链接列表使该结构可以重建。
在包括用于源自栅格中第一节点的链接的形状编码的第一组三位数被解码且对应的栅格结构产生以后,解码模块(S11-7)确定是否所有编码数据都已处理。
如果情况不是这样,参考图11C,解码模块28(S11-17)从形状编码42读出下一数字。然后,解码模块28以前述相同的方式关于步骤(S11-2)更新当前节点号。即,如果从形状编码列表42读出的数字是0,则不发生更新。如果该数字是正或负数,则选择已编码结构边界上的另一节点,所选节点是上或下边界列表中的一个节点。
因而,在图14A结构的情况下,如果形状编码中的下一数字是1,当前节点号当前设成0并存储了上下边界列表
和
,则当前节点号将设成2。
在当前节点号更新以后(S11-17),解码模块28(S11-18)确定由当前节点号识别的节点是否对应于边界列表中的最后一个节点。如果情况是这样,则解码模块28(S11-3-S11-6)以与前述完全相同的方式关于步骤(S11-3-S11-16)处理形状编码中的下两个数字及链接列表中的关联链接编码和节点列表44中的关联节点。
如果由当前节点号识别的节点不等于由边界列表中最后一个数字识别的节点,则读出形状编码42的下两个数字。然后(S11-19)如果有的话,则解码模块28确定要处理并添加到所产生结构中最后一个节点的链接数。
具体而言,最初解码模块28确定当前节点是否是上边界列表中的节点。如果情况是这样,则形状编码两个数字中的第二个数字与将当前节点和上边界列表末尾隔开的节点数进行比较。
在形状编码的该第二个数字超过将当前节点与上边界列表中最后一个节点隔开的节点数时,确定形状编码中第一个数字与将当前节点与上边界列表末尾隔开的节点数的差值,其设置成要处理的链接数。
如果当前节点不是由上边界列表中的节点识别,则确定将当前节点与下边界列表末尾隔开的节点数。然后这个数字与形状编码两个数字中的第一个数字进行比较。在形状编码的第一个数字超过将当前节点与下边界列表末尾隔开的节点数时,形状编码第一个数字与将当前节点和下边界列表末尾隔开的节点数之间的差值设置成要处理的链接数。
因而,例如,在处理形状编码[1,3,3]的情况下,其中当前节点设成节点2,上下边界等于以下上边界
下边界
当前节点2将识别为在上边界中并且由节点3和4与上边界的末尾隔开。由于节点总数2小于形状编码[1,3,3]中最后一个数字,因此额外的节点将识别为必须从已产生结构的最后一个节点(节点4)添加到该结构。
相反,如果上例中当前节点识别为节点1且相同的形状编码对相同的边界进行处理,则由于上例节点1是由节点2、3和4与上边界中的最后一个节点隔开的,因此比较这个节点数与所处理形状编码中的最后一个数字将识别出没有节点要添加到边界列表的最后一个节点。
在要添加的链接总数确定以后(S11-19),解码模块28确定是否所有必需的链接都已处理(S11-20)。如果情况不是这样,则解码模块28(S11-21)继续读是列表头符号的下一链接的链接编码数据,直到由字母E表示的符号总数超过由其它字母表示的符号总数。然后参考图12以前述相同的方式处理这个链接编码。
然后读节点列表44中的下一节点号(S11-22)。然后这个节点号用于更新将空值识别为结束节点的任何链接数据。然后识别与更新链接关联的层数据,而对应于读出节点号的数字添加到嵌入数据中与由所更新链接层数据识别的层相邻的层的节点列表。
当嵌入数据和链接数据都更新以后,在当前节点不由上边界列表中的节点识别时节点号添加到上边界列表的末尾,或者在当前节点由上边界列表中的节点号识别时添加到下边界列表。
然后解码模块28重新确定(S11-20)由步骤(S11-21)处理的链接数据部分的总数是否对应于需要处理的必需链接数。如果情况不是这样,则还有链接数据被处理(S11-21),而边界数据、嵌入数据和链接数据都更新(S11-21,S11-22)。
因而,例如,参考图14B,在由节点0、2、3和1识别的区域的形状编码已如上所述关于图14A处理以后,如果要处理的下一形状编码是编码[1,2,2]。在这种情况下,第一数字1指示从沿解码区域顺时针移动的原始起始节点0到达节点2的偏移。这个节点在上边界0、2、3中,并由单个链接2-3与该边界的最后一个节点隔开。
然后,比较形状编码中的最后一个数字,在这个例子中是2,与将当前节点2和解码区域中最后一个节点隔开的链接数,在这个例子中是单个链接。由于形状编码识别出比将当前节点与解码区域中最后一个节点隔开的链接数大的数字,因此需要添加到最后一个节点的链接数确定为该差值,在这种情况下是另一个链接。
然后处理一组链接数据,从节点表读出下一节点并添加到下一层。图14B是链接数据DEE已处理且下一节点号7已从节点列表44读出后图14A更新结构的说明。
在任何必需的节点已连接添加到前一编码区域中的最后一个节点以后,解码模块(S11-13)从链接列表43读出符号E比由其它字母表示的符号多的下一部分。然后以前述方式进行处理。
然后(S11-14)解码模块28确定是否所有必需的附加链接都已处理,如果情况不是这样,则解码模块28继续从节点列表读下一字节并利用新读出的节点更新上或下边界(S11-15)。
更具体而言,在当前节点由上边界列表上不是列表头数字的数字识别时,由步骤(S11-13)处理的链接编码部分数同从形状编码读出的数字对中的第一个数字进行比较。如果所处理链接编码的部分数等于这个数字,则不添加更多节点。如果情况不是这样,则读出下一节点,并且以前述方式预更新的嵌入数据和链接数据及上边界列表随后更新。
当第一次迭代更新边界列表时,从当前节点到上边界中最后一个节点的所有节点都删除,从节点列表44中读出的新节点附加到上边界的节点列表。对于所有后续迭代,不发生删除,而且新节点添加到上边界列表。
相反,当节点添加到下边界列表中不同时在上边界列表中的当前节点时,由步骤(S11-13)处理的链接编码部分数同从形状编码读出的数字对的第二个数字进行比较。如果链接编码部分数等于这个数字,则不添加更多节点。如果情况不是这样,则下一节点从节点列表读出,而嵌入数据和链接数据如前所述更新。然后更新下边界列表。这种更新是对第一次迭代从当前节点到下边界列表末尾的所有节点都删除,新读出的节点添加到列表末尾。在后续迭代不发生删除,且新节点号添加到列表末尾。
当确定解码模块28已处理完所需的链接编码部分数时(S11-14),更新所产生的具有空结束节点的链接,以便有识别不包括当前节点的边界列表中的最后一个节点的结束节点。然后,不包括当前节点的边界列表中的最后一个节点附加到包括当前节点的边界列表的末尾。
因而,例如,处理具有先前产生的图14A的结构和形状编码已处理部分的编码1、2、2,以产生图14B所示的结构,要添加到当前节点,节点2,的最后两个链接将被识别并一个接一个处理。
在这样做的时候,在节点列表中下一节点是[6]且链接编码下一部分是[DEEE]时,上边界列表将首先修正变成
。在两个所需链接都处理之后上边界将变成
。结果产生图14C的结构。
因而,考虑以下形状编码,链接列表和节点列表形状编码
链接编码[EEEEDEEDEEEPEEPMEEPEEMPEDEEPEDEE]节点列表
这对应于通过编码图8H结构所产生的形状编码、节点列表和链接列表,图14A-14F的结构将一个接一个逐步建立。
更具体而言,在处理以下之后形状编码
链接编码 [EEEEDEEDEEE]节点列表
图14C的结构将产生,所处理的节点将识别节点2。
形状编码的下一数字[1]将识别节点6为要处理的下一节点。下两个数字1,2将指示要添加到节点7的链接。处理链接编码下一部分[PEE]并添加下两个节点将产生图14D的结构。
然后处理链接编码下一部分[PMEEPEE],添加从节点6出发的链接。图14E说明了处理该链接编码的同时所产生的结构,其中链接编码[PEE]保留要与链接(8,-)关联进行处理。
然后处理剩余数据,最终将创建图14F的结构。
当确定最终形状编码处理完以后(S11-7),解码模块28开始(S11-23)除去添加到该结构的虚链接和虚节点。
更具体而言,解码模块识别出现在两个节点列表中的虚节点及由存储在数据存储器20中的数据所识别的虚节点/虚链接38,并从由解码模块28为所解码结构创建的嵌入数据除去表示对应的所产生节点的数据。无论何时除去一虚节点,将该虚节点识别为起始节点或结束节点的任何链接数据也要删除。
然后,对应于虚链接38的链接也从链接数据中删除,对应于交叉链接39的新链接添加到存储在嵌入表36中的数据。
因而,例如,在从形状编码数据42、链接列表43和节点列表44产生图14F所说明的栅格结构以后,如果以下虚链接/节点数据38和交叉链接数据39要存储虚节点 [D1,D2,D3,D4,D5]虚链接 (5,7)交叉链接 (5,6)在处理虚节点和链接数据38及交叉链接数据39之后,由嵌入表36中所产生嵌入数据和链接数据定义的栅格结构将定义由图14G说明的结构。
比较图14G的结构与图6A的原始结构,很显然图6A和图14G说明的栅格是完全相同的,因为尽管有些层中的节点稍微重新排了序,但相同的节点都出现在相同的层中。而且,对于图6A节点之间的每个连接,在图14G中对于具有相同编号的节点都有对应的连接。因此,由图14G识别的栅格结构是最初由嵌入模块22处理的语音节点数据30所表示的原始栅格结构的表示,图6A也是其一种表示。此外,由于图14G的栅格结构是从定义的形状编码42、链接列表43和节点列表44的解码操作的结果,因此当形状编码42、链接列表43和节点列表44被另一解码模块48以相同的方式处理,必然产生一种结构。
因此,由解码模块28产生的最终栅格结构可用于确定该栅格结构链接的特定顺序,因此由语音链接数据32与那些特定链接关联的数据可以特定顺序传递到压缩模块12。
输出模块执行的处理在语音栅格结构的最终表示由解码模块28产生并存储在嵌入表36中以后,调用输出模块29。然后输出模块29将先前由形状编码模块26产生的形状编码42和链接列表43传递到数据压缩模块12。然后输出模块29将识别虚链接38和交叉链接39的数据及定时数据34传递到数据转换模块12。
然后,输出模块29利用节点列表44依次选择由语音节点数据30与语音栅格中每个节点关联的其它数据项。具体而言,读出节点列表44中的第一个节点,然后由语音节点数据30与该节点关联的其它数据传递到数据压缩模块。然后识别节点列表中的下一节点,由语音节点数据30与该节点关联的其它数据传递到数据压缩模块12。在虚节点出现在节点列表44中的情况下,将节点识别为虚节点的数据传递到数据压缩模块。这种处理重复进行,直到到达节点列表44的末尾。
最后,输出模块29通过起始节点号排序存储在嵌入表36中的栅格结构的链接数据,并以该链接结束节点出现在与嵌入数据层关联的列表中的顺序排序具有相同起始节点号的链接数据。
因而,例如,在图14G栅格的情况下,图14G所示链接将以以下顺序放置(0,2),(0,1),(2,3),(2,6),(1,3),(1,4),(1,5),(3,7),(4,7),(5,6),(6,8),(6,8),(8,10),(7,9)然后,输出模块29为每个有序链接识别语音链接数据32中的对应链接,并将与那些链接中每个关联的数据以对应于链接顺序的顺序输出到数据压缩模块。
因而,以这种方式,使数据压缩模块12接收表示栅格结构的形状编码42和链接列表43、定时数据34的列表、添加到或从该栅格结构除去的链接和节点38及交叉链接39、虚数据34、以定义好的顺序与原始语音栅格中每个节点和链接关联的其它数据及与原始语音栅格中每个链接关联的数据。
在以压缩形式由网络3发送到文档存储单元2之前,所有这些数据都由数据压缩模块12以传统方式进行处理。
文档存储单元的处理现在将参考图15具体描述文档存储单元2响应压缩语音栅格数据的接收而执行的处理。
最初(S15-1),当经网络3从客户计算机1接收到压缩数据时,该压缩数据由解压缩单元15以传统方式解压缩。
解压缩单元15对数据的解压缩使文档存储单元2能够再生形状编码42、链接列表43、虚节点和链接列表38、交叉链接39、定时数据34、由语音节点数据30和语音链接数据32分别与链接和节点关联的原始有序数据。
由语音节点数据30和语音节点关联的其它数据再生成由栅格处理器输出到数据压缩模块12的顺序。其它数据的每一项都与一个节点号关联,该节点号以数字顺序产生。这种数据由再生模块17存储。由再生模块17存储的还有通过解压缩单元15处理压缩数据获得的定时数据34、虚链接和节点38、交叉链接39、形状编码42及链接列表43。
然后(S15-2)再生模块17继续处理所接收的形状编码42和链接列表43。除了在栅格处理器11需要新节点时不是从节点列表44选择数字而是使用下一个数字顺序的可用数字以外,再生模块17的处理与前述由解码模块28执行的处理是完全一样的,因此这里将不再重复。
作为处理形状编码42和链接列表43的结果,将由再生模块17产生定义由客户计算机1的栅格处理器11编码的栅格结构的嵌入数据和链接数据。然后,这些数据用于为由再生模块17存储的语音节点数据30的每一项创建链接节点列表和定时数据。
然后(S15-3),栅格处理器11如前所述关于客户计算机1栅格处理器11的输出模块29的处理通过起始节点和结束节点排序嵌入表36中的链接数据。然后,通过将以其接收顺序与链接关联的其它数据与识别嵌入表36中链接的有序数据关联产生语音链接数据32。这数据由再生模块17存储为语音链接数据32。
在语音节点数据30和语音链接数据32由再生模块17重建后,该语音节点数据30和语音链接数据32传递到文档检索单元19。然后(S15-4)文档检索单元19利用接收到的语音节点数据30和语音链接数据32选择一文档进行检索,该文档随后经网络3传递到客户计算机1。因而,以这种方式,由客户计算机1产生的语音栅格用于访问存储在文档存储单元2中的文档,为了经网络3发送,为语音信号产生的语音栅格被编码和压缩。
其它实施方式及修改尽管在上述实施方式中与节点和链接关联的数据已经描述为以特定方式排序,但是应当理解一旦由形状编码和链接列表表示的栅格结构形状已经以嵌入表36中嵌入数据和链接数据的形式确定,则任何合适的排序都可以用于将特定数据分配给识别出的节点或链接。
尽管在上述实施方式中嵌入模块22的处理已描述为基于作为对前一层中节点位置平均值计算的顺序号对层中的节点进行排序,但是应当理解用于最小化栅格结构嵌入中交叉链接数的任何传统技术都可以用于执行这种排序。因而,例如,排序可以根据中值而不是平均值执行。
在上述实施方式中,嵌入表36描述为重新排序以最小化初始嵌入表示中的交叉链接数。应当理解,这一步是为了最小化随后经网络3发送到文档存储单元2的交叉链接数据39的量而执行的。但是,应当理解该重新排序步骤可以忽略,而是更多交叉链接数据39经网络3发送。
在上述编码系统中,虚节点是对每个编码的虚节点利用字母DE编码的。但应当理解,更短的编码D可以使用。在这种实施方式中,用于不同链接的链接编码数据可以通过连续从链接列表44读符号读出,直到符号E的个数超过符号M和P的个数。当处理链接编码时,每次遇到字母D并从所处理链接编码的头除去字母D都将与链接关联的层数据更新1。
还应当理解,在链接编码中有同一字母的多个拷贝时,链接编码数据可以由识别不同字母的第一编码和对每个不同字母表示指示一特定字母重复次数的数字的第二编码来表示。
因而,例如,在链接列表[DDDDDDEEEEEEE]的情况下,该链接列表可以两个列表的形式代替表示,一个是列表[DE],另一个是[6,7]。
在这种实施方式的情况下,在多组字母D彼此相邻地编码时,与链接关联的层数据可以通过将层数据增加连续D的个数自动更新,而不是分别处理每个字母D。
此外,在其它实施方式中,这两个列表可以包括字母列表和数字列表,其中只有虚节点的副本字母从字母列表中除去,而数字列表识别虚节点重复编码的次数。在如上这种实施方式中,用于虚节点的字母可以通过将层数据增加与数字列表中该字母关联的数字一步处理。
尽管在上述实施方式中将新区域添加到所产生栅格结构的偏移值描述为正或负数,但是应当理解在可选实施方式中可能只使用正数,其中该偏移识别在特定方向将用于产生区域的最后一个节点和用于产生区域的下一节点隔开的围绕边界的节点数。
可选地,不利用当前节点和边界列表上要处理的下一节点的相对位置的偏移值,可以使用相对于例如节点列表中当前节点的偏移值。或者更一般地,任何能够使下一节点从偏移值和当前值识别出来的合适偏移都可以使用。
在上述实施方式中,当链接编码数据40产生且任两个链接合并时,新链接编码数据描述为通过以依赖于那些链接的链接编码数据40长度的顺序附加与被除去链接关联的链接编码数据来产生。以这种方式为新链接产生链接编码数据40是优选的,因为这往往产生重复的字母序列,因而很容易利用传统技术压缩。但是,产生该编码数据40的其它方法也可以使用,例如选择一种链接编码数据基于嵌入表36中链接排序附加的顺序。
在上述实施方式中,虚节点描述为添加到连接与非相邻定时数据关联的节点的所有链接。然后,所有虚节点都利用该链接编码数据编码。然后,所产生链接编码数据的后续解码用于确保当节点再生时它们与正确的定时关联。
应当理解,在添加对不止一个链接是结束节点的节点时,确保当链接编码处理时以一节点作为结束节点的至少一个所产生链接与层数据关联是足够的,因此该结束节点可以正确地放置在层中,从而与正确的定时数据关联。
在一种可选实施方式中,在栅格表示产生以后,每个节点在所有路径中都由相同个数的节点与起始节点隔开。然后,所产生的栅格结构可以进行处理,以除去多个虚节点,同时确保栅格结构中每个适当的节点仍然象前面一样在至少一条到达该节点的路径上由相同个数的节点与起始节点隔开。然后简化的栅格可以前述相同的方式编码。
更具体而言,从第一层开始,第一层中的所有实际节点都可以被识别并与识别已知节点层的数据关联。对于具有与识别已知层的数据关联的实际起始节点的每个链接,由那些链接识别的实际结束节点也与识别实际结束节点具有已知层的数据关联。
当所有链接都考虑完以后,可以识别不与已知层数据关联的每个实际节点。从第二层中的实际节点开始,如果任何实际节点不与已知层数据关联,则可以执行深度优先搜索,以便找出从前面任一层中与已知层数据关联的一实际节点到所考虑节点的最短路径。然后,该路径中的所有虚节点都识别为保留的,所处理的实际节点与已知层数据关联。然后这种处理对每个后续的层重复进行,直到所有实际节点都识别为具有已知的层。然后没有识别为保留的虚节点可以删除。
当解码栅格时,无论何时新节点要添加到嵌入表36中的嵌入数据,包含该新节点作为结束节点的链接都可以被识别,新节点与由从链接层数据确定的最大数识别的层关联。在这种实施方式中产生的结果结构将与以上实施方式中所述方式产生的结构完全相同。但是,由于多个虚节点已除去而没有编码,因此必需由压缩单元12压缩的数据量将比较小,因而可以实现更好的压缩。
尽管在上述实施方式中交叉链接描述为在确定链接编码之前除去,但在一种可选实施方式中交叉链接可以在链接编码产生时被识别和编码。在这种实施方式中,(C,起始节点,结束节点)形式的链接编码可以用于识别已编码的交叉链接。当解码链接编码时,交叉链接可以从识别两节点之间交叉链接已编码的这种数据再生。
尽管在上述实施方式中平面图描述为在作为形状编码进行编码之前通过除去线性和并行路径来产生并简化,但应当理解表示栅格部分的平面图的简化可以省略。
在这种实施方式中,在单条线性路径在两层之间扩展时,可以使用(偏移,链接数,0)形式的形状编码。在一对链接具有相同的起始节点和结束节点时,可以使用(偏移,1,1)形式的形状编码。
除编码(0,1,1)将不再指示从栅格末端扩展的单个链接,而是形状编码为0的最后一个数字将指示单条路径添加到栅格末端之外,结果形状编码的后续处理将基本上与前面所述相同。
在这种实施方式的情况下,图6E的栅格将以如下简单形状编码的形式编码,其中偏移值以前述相同的方式计算
在所述实施方式中,栅格从形状编码和链接编码的再生描述为通过同时处理形状编码和链接编码来建立。在其它实施方式中,初始栅格结构可以通过只处理形状编码来产生,其中链接编码数据与初始结构中的链接关联。在整个形状编码处理完以后,链接编码可以被处理,与初始栅格中节点关联的层数据可以利用链接编码及当处理该链接编码时添加的附加节点和链接来更新。
在上述实施方式中,与链接关联的数据描述为基于从形状编码和链接编码产生的嵌入中链接的排序来排序。但是也可以使用其它排序。更具体而言,与栅格中链接关联的数据可以那些链接从形状编码和链接编码产生的顺序排序。通过以这种方式对数据排序,栅格部分的完整表示可以在整个栅格结构确定之前再生。
在以上实施方式中,所有节点都处理了,以便向既不是至少一个链接起始节点也不是结束节点的节点添加虚链接。在一种可选实施方式中,不是添加虚链接,形状编码可以将节点识别为未连接的。例如,(偏移,0,1)形式的形状编码可以用于识别在一个方向上从由该偏移识别的节点到未连接节点的链接,而(偏移,0,0)形式的编码可以用于识别相反方向的链接。
识别未连接节点的可选方法可用于识别仅是多个链接结束节点或仅是起始节点的节点。
因而,例如,在对任何链接都不是起始节点的节点情况下,形状编码可用于识别该节点。例如,可以使用(偏移,-1,-1)形式的编码。当处理下一区域时,所识别的节点可以忽略,所识别的节点从边界列表中删除,而一个边界列表中最后一个节点添加到另一边界列表,因此围绕未连接节点的区域可以编码。
在节点不是任何链接结束节点的情况下,可以用形状编码识别不是任何链接结束节点的节点。然后,与所识别节点关联的层数据可以修改,因此所识别节点先于它连接的节点。于是与所识别节点相邻的区域可以正常方式处理。
尽管在以上实施方式中描述了使原始栅格结构再生的编码方法,但在有些实施方式中可以生成只部分对应于原始栅格的栅格。因而,例如,在确定原始栅格的嵌入后,多个链接可以除去,从而确定无交叉链接的平面图。只有对应于由该平面图所定义结构的语音栅格部分可以上述方式处理。
尽管只有部分原始栅格将由所产生的数据表示,但由于交叉链接数据不需要产生,因此改进压缩是可能的。在这种系统中,除去且不表示的链接可以选作与低概率关联的交叉链接,因此编码结构表示所接收信号表示的更可能假设。
可选地,不是除去交叉链接来产生平面图,可以使用其它方法。在一种例子中,虚节点可以在所有交叉点引入,交叉链接由经过所添加虚节点的链接代替。
可选地,在确定一部分栅格不能表示为没有任何交叉链接时,表示那部分的节点和链接的附加拷贝可以产生,交叉链接由到所添加部分的链接代替。尽管在这种实施方式中栅格的大小将增加,但因为对应区域的编码是相似的,所以为较大栅格产生的数据应当可压缩到与原始栅格编码相似的大小。
在上述实施方式中,描述了减少交叉链接数的节点的重新排序。以这种方式节点重新排序的复杂度依赖于要处理的节点和链接数。应当理解在可选实施方式中,要处理的栅格结构可以在执行重新排序步骤之前简化。
因而,例如,栅格部分的链接编码可以确定,因此,栅格结构中表示的节点和链接数可以减少。然后,简化的栅格可以重新排序,以最小化交叉链接。然后,任何剩余的交叉链接都可以除去,所处理栅格还可以除去可以由那个时候的链接编码数据所表示的任何更多部分。然后可以前述相同方式产生用于剩余栅格结构的形状编码。
尽管在上述实施方式中虚节点描述为用于使节点与正确的定时数据项关联,但其它方法也可以使用。在一种例子中,时间偏移列表可用于为节点列表中的每个节点识别该节点相对于列表中其紧接着前一个节点的相对层。
尽管在上述实施方式中已描述了以偏移和上下路径中多个链接的形式识别区域形状编码的数据,但其它方式也可以用于识别区域的形状。
因而,例如,可以使用识别定界一区域的链接数的数字及识别还构成编码区域一部分的编码区域边界的最后一个链接的数据。然后,在这种系统中产生的形状需要处理,以便将节点与定时数据关联。这可以通过明确地编码节点的定时来实现。
可选地,在所有虚节点都保留时,构成区域的上下路径有必要包含相同个数的节点和链接。因而,由于另一路径必需包含相同个数的节点,因此这种区域可以识别起始节点的数据和只识别一条路径中链接数的数据的形式编码。
尽管在以上实施方式中描述了语音栅格的处理,但应当理解本发明是更广泛可应用的。因而,例如,本发明可用于编码任何栅格结构,其中节点可以某种顺序放置,因此可以创建栅格的嵌入表示。
在没有定义的起始节点和结束节点及节点排序的栅格结构,如用于对象图形表示的栅格结构,要编码时,可以确定任意起始节点、结束节点和节点排序,因此栅格可以处理。
尽管在上述实施方式中描述了压缩编码数据的发送,但应当理解本发明同样适用于要存储的栅格结构数据的压缩。
尽管参考附图描述的本发明实施方式包括计算机装置和在计算机装置中执行的处理,但本发明还可以扩展到计算机程序,尤其是在载体上或载体中适于将本发明付诸实践的计算机程序。该程序可以是源或对象代码的形式,或者是适于实现根据本发明处理的任何其它形式。载体是能够携带该程序的任何实体或设备。
例如,载体可以包括存储介质,如ROM,例如CDROM或半导体ROM,或磁记录介质,例如软盘或硬盘。此外,载体可以是发送载体,如可以通过电或光缆或由无线电或其它装置传送的电或光信号。
当程序在可以由电缆或其它设备或装置直接传送的信号中体现时,载体可以由这种电缆或其它设备或装置构成。
可选地,载体可以是其中嵌入了程序的集成电路,该集成电路适于执行相关处理或用于相关处理的执行。
权利要求
1.一种产生识别数据的方法,包括接收定义包括多个由链接连接的节点的栅格结构的栅格数据,所述链接与识别单元的数据关联;为至少部分由所述栅格数据定义的栅格结构确定具有由至少部分所述栅格结构的节点和链接定义的边和顶点的多个区域;为所述区域产生识别定界每个区域的链接数的数据和识别所述区域在至少部分所述栅格结构中的位置的数据;及作为识别数据输出识别与链接关联的所述单元的数据和定义区域的所述数据。
2.一种产生定义语音栅格的数据的方法,包括接收定义包括多个由链接互连的节点的第一语音栅格的数据,所述链接与识别语音单元的数据关联;处理所述接收到的数据以确定包括具有多个由链接互连的节点的平面图的第二语音栅格,在平面图中没有链接交叉,所述链接与识别语音单元的数据关联,所述平面图的节点和链接在两维平面上定义区域的边和顶点;作为定义所述平面图的数据产生识别定界由所述平面图定义的每个所述区域的链接数和所述区域在所述平面图中的位置的识别数据;及作为定义所述第二语音栅格的数据输出所述识别数据和识别与由所述识别数据定义的平面图的链接关联的语音单元的数据。
3.如权利要求2所述的方法,其中所述处理包括在由所述接收数据定义的栅格结构的两维平面中确定嵌入;及处理所述确定的嵌入,从而产生所述第二语音栅格。
4.如权利要求3所述的方法,其中所述处理所述确定的嵌入包括识别所述确定的嵌入中所述嵌入识别交叉链接的部分;及删除一些所述识别出的交叉链接,从而产生所述第二语音栅格。
5.如权利要求4所述的方法,其中所述识别所述确定的嵌入中所述嵌入识别交叉链接的部分包括确定识别每个链接与多少链接交叉的交叉链接数据;及利用所述交叉链接数据选择一些所述识别出的交叉链接除去,以便从所述嵌入消除交叉链接。
6.如权利要求5所述的方法,其中所选链接包括与比未除去的识别出的交叉链接更多的链接交叉的链接。
7.如权利要求4所述的方法,其中所述一些删除的所述识别出的交叉链接包括根据与所述链接关联的概率数据除去的交叉链接。
8.如权利要求3所述的方法,其中所述栅格结构的嵌入的所述确定包括在两维平面中确定所述栅格结构的初始嵌入;及处理所述初始嵌入以确定所述栅格结构的另一嵌入,其中所述另一嵌入中交叉的链接数少于所述初始嵌入中交叉的链接数。
9.如权利要求2所述的方法,其中所述产生识别数据包括为每个所述区域产生识别构成所述区域顶点的一节点的数据;及识别在从所述第一节点到所选的定义所述区域另一顶点的第二节点的一对路径中链接数的第一和第二数字。
10.如权利要求9所述的方法,其中每个所述节点都与多个有序层中的一个关联,其中区域的所述第一节点包括定义一层中顶点的节点,而所述第二节点包括定义与进一步从与所述第一节点关联的所述层而不是与定义所述区域顶点的其它节点关联的层除去的层关联的顶点的节点。
11.如权利要求10所述的方法,其中所述栅格结构中的每个所述节点都与定时数据关联,与相同定时数据关联的节点与同一层关联。
12.如权利要求2所述的方法,其中所述产生识别数据包括为每个所述区域产生识别构成所述区域顶点的一节点的数据,识别定界所述区域的链接总数的数据;及识别所述区域与已为其产生数据的区域共享的链接数的数据。
13.如权利要求2所述的方法,其中所述产生识别数据包括产生识别第一选定区域的数据;及产生识别由所述平面图定义的剩余区域的数据,其中所述识别数据产生的顺序是使为之产生识别数据的区域对应于与前面已为之产生了识别数据的区域相邻的区域。
14.如权利要求13所述的方法,其中识别定义区域顶点的节点的所述数据包括识别所述节点相对于识别前面已为之产生了识别数据的区域顶点的节点位置的偏移值。
15.如权利要求14所述的方法,其中所述偏移值包括识别所述节点在节点列表中的相对位置的偏移值。
16.如权利要求15所述的方法,其中所述列表包括循环列表。
17.如权利要求16所述的方法,其中所述偏移值包括识别所述列表中不同方向偏移的正或负数。
18.如权利要求15所述的方法,其中所述列表包括识别已为之产生了识别数据的区域边界顶点的节点列表。
19.如权利要求2所述的方法,其中所述识别数据包括为由所述平面图定义的每个所述区域产生的所述识别数据的级联。
20.如权利要求19所述的方法,其中所述识别数据的所述级联包括以为所述区域产生识别数据的顺序进行排序的级联。
21.一种产生栅格的方法,包括接收定义两维平面中具有对应于平面图中节点和链接的顶点和边的多个区域的形状数据,其中所述链接都不交叉;接收将由该形状数据定义的平面图的链接与识别单元的数据关联的假设数据项;及通过以下产生包括多个由链接连接的节点的栅格确定由所述形状数据定义的平面图;及利用所述假设数据将所述确定的平面图的链接与单元关联。
22.如权利要求21所述的方法,其中所述形状数据对于每个所述区域包括识别构成所述区域顶点的一节点的数据;及识别在从所述第一节点到所选的定义所述区域另一顶点的第二节点的一对路径中链接数的第一和第二数字。
23.如权利要求22所述的方法,其中每个所述节点都与多个有序层中的一个关联,其中区域的所述第一节点包括定义一层中顶点的节点,而所述第二节点包括定义与进一步从与所述第一节点关联的所述层而不是与定义所述区域顶点的其它节点关联的层除去的层关联的顶点的节点。
24.如权利要求23所述的方法,其中所述栅格结构中的每个所述节点都与定时数据关联,与相同定时数据关联的节点与同一层关联。
25.如权利要求21所述的方法,其中所述形状数据对于每个所述区域包括识别构成所述区域顶点的一节点的数据,识别定界所述区域的链接总数的数据;及识别所述区域与已为其产生数据的区域共享的链接数的数据。
26.如权利要求22所述的方法,其中识别定义区域顶点的节点的所述数据包括识别所述节点相对于识别前面已为之产生了数据的区域顶点的节点位置的偏移值。
27.如权利要求26所述的方法,其中所述偏移值包括识别所述节点在节点列表中的相对位置的偏移值。
28.如权利要求27所述的方法,其中所述列表包括循环列表。
29.如权利要求28所述的方法,其中所述偏移值包括识别所述列表中不同方向偏移的正或负数。
30.如权利要求27所述的方法,其中所述列表包括识别已为之产生了数据的区域边界顶点的节点列表。
31.如权利要求27所述的方法,其中所述识别数据包括为由所述平面图定义的每个所述区域产生的所述数据的级联。
32.如权利要求31所述的方法,其中所述识别数据的所述级联包括以为所述区域产生识别数据的顺序进行排序的级联。
33.如权利要求1所述的产生识别数据的方法,还包括步骤确定识别所述至少部分所述栅格结构和由所述接收数据定义的栅格结构之间差异的差异数据;及作为识别数据输出识别与链接关联的所述单元的数据;定义区域的所述数据;及所述差异数据。
34.一种产生定义栅格结构的数据的方法,包括接收定义包括多个由链接互连的节点的栅格结构的数据;处理所接收的数据,以确定所述栅格结构在两维平面中的嵌入和包括多个由链接互连的节点的平面图之间的差异,其中平面图中链接都不交叉,所述平面图的节点和链接定义两维平面中区域的边和顶点;产生识别所述确定的差异的差异数据;为由所述平面图定义的所述两维平面的所述区域产生识别定界每个所述区域的链接数的识别数据和识别所述区域在所述平面图中位置的数据;及作为定义所述栅格结构的数据输出所述产生的识别数据和所述产生的差异数据。
35.如权利要求34所述的方法,其中所述处理包括确定所述栅格结构在两维平面中的嵌入;识别所述确定的嵌入中所述嵌入识别交叉链接的部分;及为所述确定的嵌入识别没有交叉链接的平面图,该平面图对应于缺少一些所述识别出的链接的所述嵌入,其中所述差异数据包括识别所述确定的嵌入和所述识别出的平面图之间的差异的数据。
36.如权利要求35所述的方法,其中所述处理包括确定所述栅格结构在两维平面中的嵌入;识别所述确定的嵌入中所述嵌入识别交叉链接的部分;及通过从所述确定的嵌入中除去识别一些所述交叉链接的数据来产生没有交叉链接的平面图,其中所述差异数据包括识别从所述栅格结构所述确定的嵌入中除去的链接的数据。
37.如权利要求35所述的方法,其中所述识别所述确定的嵌入中所述嵌入识别交叉链接的部分包括确定识别每个链接与多少链接交叉的交叉链接数据;及利用所述交叉链接数据选择一些所述识别出的交叉链接除去,以便从所述嵌入消除交叉链接。
38.如权利要求37所述的方法,其中所选链接包括与比未除去的识别出的交叉链接更多的链接交叉的链接。
39.如权利要求35所述的方法,其中所述栅格结构的嵌入的所述确定包括在两维平面中确定所述栅格结构的初始嵌入;及处理所述初始嵌入以确定所述栅格结构的另一嵌入,其中所述另一嵌入中交叉的链接数少于所述初始嵌入中交叉的链接数。
40.如权利要求35所述的方法,还包括接收将由所接收数据定义的所述栅格结构的每个所述节点与定时数据项关联的数据,所述定时数据项一起定义定时序列;识别与相同定时数据关联的节点;及通过以下来修改所述栅格结构的所述确定的嵌入确定所述第一定时是否与单个节点关联;及如果所述定时不与单个节点关联,则在所述序列中产生一较早定时,一虚节点与所述较早定时关联,并在所述产生的虚节点和与所述第一定时关联的节点之间产生链接,其中所述差异数据包括识别所述添加节点的数据。
41.如权利要求40所述的方法,其中所述修改所述栅格结构的所述确定的嵌入还包括确定所述最后一个定时是否与单个节点关联;及如果所述定时不与单个节点关联,则在所述序列中产生一较晚定时,一虚节点与所述较晚定时关联,并在所述产生的虚节点和与所述最后一个定时关联的节点之间产生链接,其中所述差异数据包括识别所述添加节点的数据。
42.如权利要求40所述的方法,其中所述修改所述栅格结构的所述确定的嵌入还包括用连接与由所述要除去链接识别的所述节点的所述定时之间所述序列中的每个所述定时的定时数据关联的虚节点的一系列链接代替与所述定时序列中不相邻定时关联的节点之间的链接;其中所述差异数据包括识别所述栅格结构的所述修改部分的数据。
43.如权利要求40所述的方法,其中所述修改所述栅格结构的所述确定的嵌入还包括为不与所述定时序列中最早和最晚定时关联的节点确定每个所述节点是否由不与其它链接交叉的链接识别为所述嵌入式栅格中链接的起始节点和结束节点;及如果节点没有识别为既是起始节点又是结束节点,则向所述嵌入添加另一链接,使所有所述节点都识别为既是链接的起始节点又是链接的结束节点,其中所述差异数据包括识别所述添加链接的数据。
44.如权利要求40所述的方法,其中所述修改所述栅格结构的所述确定的嵌入还包括确定经一条或多条不包括任何虚节点的路径链接到与所述定时序列中第一定时关联的节点的所述栅格结构的节点;及为与所述定时序列中连续定时关联的节点确定是否有任何节点不在所述确定的组中,并为所述节点识别包括将所述节点连接到所述确定的组中与较早定时关联的节点的虚节点的路径;及用所述节点之间的链接代替节点间经不包括在所述识别出的路径中的虚节点的路径,其中所述差异数据包括识别剩余虚节点的数据。
45.如权利要求35所述的方法,还包括通过识别所述嵌入定义节点对之间路径的部分来修改所述确定的嵌入,其中所述部分不链接到所述栅格结构的任何其它节点;用识别所述节点对之间单个链接的数据代替所述部分;及将所述节点对之间的所述链接与识别所述删除部分中节点和链接的数据关联;其中所述差异数据包括与链接关联的所述数据。
46.如权利要求45所述的方法,其中所述部分包括节点路径对之间经其它节点的路径,所述其它节点识别为单个链接的起始节点和单个链接的结束节点,其中所述与所产生链接关联的数据包括识别除去所述节点的数据和与以所述节点作为起始节点和结束节点的删除链接关联的数据。
47.如权利要求45所述的方法,其中所述部分包括节点对之间包括所述节点对之间一对链接的路径;其中与所述节点之间所产生链接关联的所述数据包括识别所述链接对的合并的数据及与删除链接关联的数据。
48.如权利要求47所述的方法,其中与代替一对合并链接的链接关联的所述数据包括识别链接对的合并及与所述合并链接关联的数据的级联的数据,所述数据以依赖于与每个所述链接关联的数据量的顺序级联。
49.如权利要求34所述的方法,其中所述产生识别数据包括识别构成所述区域顶点的一节点的数据;及识别在从所述第一节点到所选的定义所述区域另一顶点的第二节点的一对路径中链接数的第一和第二数字。
50.如权利要求49所述的方法,其中每个所述节点都与多个有序层中的一个关联,其中区域的所述第一节点包括定义一层中顶点的节点,而所述第二节点包括定义与进一步从与所述第一节点关联的所述层而不是与定义所述区域顶点的其它节点关联的层除去的层关联的顶点的节点。
51.如权利要求50所述的方法,其中所述栅格结构中的每个所述节点都与定时数据关联,与相同定时数据关联的节点与同一层关联。
52.如权利要求34所述的方法,其中所述产生识别数据包括识别构成所述区域顶点的一节点的数据,识别定界所述区域的链接总数的数据;及识别所述区域与已为其产生数据的区域共享的链接数的数据。
53.如权利要求34所述的方法,其中所述产生识别数据包括产生识别第一选定区域的数据;及产生识别由所述平面图定义的剩余区域的数据,其中所述识别数据产生的顺序是使为之产生识别数据的区域对应于与前面已为之产生了识别数据的区域相邻的区域。
54.如权利要求53所述的方法,其中识别定义区域顶点的节点的所述数据包括识别所述节点相对于识别前面已为之产生了识别数据的区域顶点的节点位置的偏移值。
55.如权利要求54所述的方法,其中所述偏移值包括识别所述节点在节点列表中的相对位置的偏移值。
56.如权利要求55所述的方法,其中所述列表包括循环列表。
57.如权利要求55所述的方法,其中所述偏移值包括识别所述列表中不同方向偏移的正或负数。
58.如权利要求55所述的方法,其中所述列表包括识别已为之产生了识别数据的区域边界顶点的节点列表。
59.如权利要求34所述的方法,其中所述识别数据包括为由所述平面图定义的每个所述区域产生的所述识别数据的级联。
60.如权利要求59所述的方法,其中所述识别数据的所述级联包括以识别数据为所述区域产生的顺序进行排序的级联。
61.如权利要求34所述的方法,其中所述差异数据包括与平面图链接关联的所述产生的数据的级联。
62.一种用于产生识别数据的装置,包括接收器,可操作为接收定义包括多个由链接连接的节点的栅格结构的栅格数据,所述链接与识别单元的数据关联;确定器,可操作为至少部分由所述接收器接收的栅格数据定义的栅格结构确定具有由至少部分所述栅格结构的节点和链接定义的边和顶点的多个区域;产生器,可操作为由所述确定器确定的所述区域产生识别定界每个区域的链接数的数据和识别所述区域在至少部分所述栅格结构中位置的数据;及输出单元,可操作为作为识别数据输出以下识别与链接关联的所述单元的数据和定义区域的所述数据。
63.一种用于产生定义语音栅格的数据的装置,包括接收器,可操作为接收定义包括多个由链接互连的节点的第一语音栅格的数据,所述链接与识别语音单元的数据关联;处理单元,可操作为处理由所述接收器接收的数据,以确定包括具有多个由链接互连的节点的平面图的第二语音栅格,平面图中没有链接交叉,所述链接与识别语音单元的数据关联,所述平面图的节点和链接在两维平面上定义区域的边和顶点;产生器,可操作为作为定义由所述处理单元确定的平面图的数据,产生识别定界由所述平面图定义的每个所述区域的链接数和所述区域在所述平面图中位置的识别数据;及输出单元,可操作为作为定义所述第二语音栅格的数据,输出由所述产生器产生的所述识别数据和识别与由所述接收器接收的所述识别数据定义的平面图的链接关联的语音单元的数据。
64.如权利要求63所述的装置,其中所述处理单元包括嵌入单元,可操作为在由所述接收器所接收数据定义的栅格结构的两维平面中确定嵌入;及嵌入处理器,可操作为处理所述确定的嵌入,从而产生所述第二语音栅格。
65.如权利要求64所述的装置,其中所述嵌入处理器可操作为识别所述确定的嵌入中所述嵌入识别交叉链接的部分;及删除一些所述识别出的交叉链接,从而产生所述第二语音栅格。
66.如权利要求65所述的装置,其中所述嵌入处理器可操作为通过以下处理来识别所述确定的嵌入中所述嵌入识别交叉链接的部分确定识别每个链接与多少链接交叉的交叉链接数据;及利用所述交叉链接数据选择一些所述识别出的交叉链接除去,以便从所述嵌入消除交叉链接。
67.如权利要求66所述的装置,其中所选链接包括与比未除去的识别出的交叉链接更多的链接交叉的链接。
68.如权利要求65所述的装置,其中所述接收器可操作为接收将概率与所述栅格中链接关联的概率数据;所述嵌入处理器可操作为根据与所述链接关联的概率数据删除链接。
69.如权利要求64所述的装置,其中所述嵌入单元可操作为在两维平面中确定所述栅格结构的初始嵌入;及处理所述初始嵌入以确定所述栅格结构的另一嵌入,其中所述另一嵌入中交叉的链接数少于所述初始嵌入中交叉的链接数。
70.如权利要求63所述的装置,其中所述产生器可操作为产生对于每个所述区域包括以下的识别数据识别构成所述区域顶点的一节点的数据;及识别在从所述第一节点到所选的定义所述区域另一顶点的第二节点的一对路径中链接数的第一和第二数字。
71.如权利要求70所述的装置,其中所述处理单元可操作为将每个所述节点与多个有序层中的一个关联,其中所述产生器可操作为产生识别数据,其中区域的所述第一节点包括定义一层中顶点的节点,而所述第二节点包括定义与进一步从与所述第一节点关联的所述层而不是与定义所述区域顶点的其它节点关联的层除去的层关联的顶点的节点。
72.如权利要求71所述的装置,其中所述接收器可操作为接收将所述栅格结构中每个所述节点与定时数据关联的数据,与相同定时数据关联的节点与同一层关联。
73.如权利要求63所述的装置,其中所述产生器可操作为为每个区域产生识别数据,该识别数据包括识别构成所述区域顶点的一节点的数据,识别定界所述区域的链接总数的数据;及识别所述区域与已为其产生数据的区域共享的链接数的数据。
74.如权利要求63所述的装置,其中所述产生器可操作为产生识别第一选定区域的数据;及产生识别由所述平面图定义的剩余区域的数据,其中所述识别数据产生的顺序是使为之产生识别数据的区域对应于与前面已为之产生了识别数据的区域相邻的区域。
75.如权利要求74所述的装置,其中所述产生器可操作为为每个区域产生识别定义所述区域顶点的节点的数据,该数据包括识别所述节点相对于识别前面已为之产生了识别数据的区域顶点的节点的位置的偏移值。
76.如权利要求75所述的装置,其中所述偏移值包括识别所述节点在节点列表中的相对位置的偏移值。
77.如权利要求76所述的装置,其中所述列表包括循环列表。
78.如权利要求77所述的装置,其中所述偏移值包括识别所述列表中不同方向偏移的正或负数。
79.如权利要求76所述的装置,其中所述列表包括识别已为之产生了识别数据的区域边界顶点的节点列表。
80.如权利要求63所述的装置,其中所述产生器可操作为产生识别数据,识别数据包括为由所述平面图定义的每个所述区域产生的所述识别数据的级联。
81.如权利要求80所述的装置,其中所述识别数据的所述级联包括以为所述区域产生识别数据的顺序进行排序的级联。
82.如权利要求63所述的装置,还包括压缩器,可操作为压缩由所述输出单元输出的、定义所述栅格结构的输出数据;及发送器,可操作为发送由所述压缩器产生的所述压缩数据。
83.如权利要求82所述的装置,还包括解压缩器,可操作为接收并解压缩由所述发送器发送的压缩数据;再生单元,可操作为通过所述解压缩器处理识别数据和所述差异数据,以确定所述定义的栅格结构。
84.如权利要求83所述的装置,其中所述再生单元可操作为利用所述识别数据产生平面图;及利用所述识别语音单元的数据将所述平面图的链接与识别语音单元的数据关联。
85.一种用于产生栅格的装置,包括接收器,可操作为接收定义两维平面中具有对应于平面图中节点和链接的顶点和边的多个区域的形状数据,平面图中所述链接都不交叉;及将由该形状数据定义的平面图的链接与识别单元的数据关联的假设数据项;产生器,可操作为通过以下产生包括多个由链接连接的节点的栅格确定由所述接收器接收的所述形状数据定义的平面图;及利用由所述接收器接收的所述假设数据将所述确定的平面图的链接与单元关联。
86.如权利要求85所述的装置,其中所述接收器配置成接收形状数据,形状数据对于每个所述区域包括识别构成所述区域顶点的一节点的数据;及识别在从所述第一节点到所选的定义所述区域另一顶点的第二节点的一对路径中链接数的第一和第二数字。
87.如权利要求86所述的装置,其中所述接收器可操作为接收将每个所述节点与多个有序层中的一个关联的数据,其中区域的所述第一节点包括定义一层中顶点的节点,而所述第二节点包括定义与进一步从与所述第一节点关联的所述层而不是与定义所述区域顶点的其它节点关联的层除去的层关联的顶点的节点。
88.如权利要求87所述的装置,其中所述接收器可操作为接收将所述栅格结构中每个所述节点与定时数据关联的数据,与相同定时数据关联的节点与同一层关联。
89.如权利要求85所述的装置,其中所述接收器配置成接收形状数据,形状数据对于每个所述区域包括识别构成所述区域顶点的一节点的数据,识别定界所述区域的链接总数的数据;及识别所述区域与已为其产生数据的区域共享的链接数的数据。
90.如权利要求86所述的装置,其中所述接收器可操作为接收识别定义区域顶点的节点的数据,该数据包括识别所述节点相对于识别前面已为之产生了数据的区域顶点的节点位置的偏移值。
91.如权利要求90所述的装置,其中所述偏移值包括识别所述节点在节点列表中的相对位置的偏移值。
92.如权利要求91所述的装置,其中所述列表包括循环列表。
93.如权利要求92所述的装置,其中所述偏移值包括识别所述列表中不同方向偏移的正或负数。
94.如权利要求91所述的装置,其中所述列表包括识别已为之产生了数据的区域边界顶点的节点列表。
95.如权利要求85所述的装置,其中所述接收器可操作为接收识别数据,该识别数据包括表示由所述平面图定义的每个所述区域的所述数据的级联。
96.如权利要求95所述的装置,其中所述识别数据的所述级联包括以为所述区域产生识别数据的顺序进行排序的级联。
97.如权利要求62所述用于产生识别数据的装置,还包括差异确定单元,可操作为确定识别所述至少部分所述栅格结构和由所述接收数据定义的栅格结构之间差异的差异数据;其中输出单元可操作为作为识别数据输出以下识别与链接关联的所述单元的数据;定义区域的所述数据;及所述差异数据。
98.一种用于产生定义栅格结构的数据的装置,包括接收器,可操作为接收定义包括多个由链接互连的节点的栅格结构的数据;处理单元,可操作为处理由所述接收器接收的数据,以确定两维平面中所述栅格结构的嵌入和包括多个由链接互连的节点且其中链接都不交叉的平面图之间的差异,所述平面图的节点和链接定义两维平面中区域的边和顶点;差异产生器,可操作为产生识别差异的差异数据;形状编码器,可操作为由平面图定义的所述两维平面的区域产生识别定界每个所述区域的链接数的识别数据和识别所述区域在所述平面图中位置的数据;及输出单元,可操作为作为定义所述栅格结构的数据输出由所述形状编码器产生的所述识别数据和由所述差异产生器产生的所述差异数据。
99.如权利要求98所述的装置,其中所述处理单元包括嵌入单元,可操作为确定由所述接收器接收的数据定义的栅格结构在两维平面中的嵌入;及平面图识别单元,可操作为识别所述确定的嵌入中所述嵌入识别交叉链接的部分;及为由所述嵌入单元确定的嵌入识别没有交叉链接的平面图,平面图对应于没有一些所述识别出的链接的所述嵌入,其中由所述差异产生器产生的所述差异数据包括识别所述嵌入和由所述平面图识别的所述平面图之间差异的数据。
100.如权利要求98所述的装置,其中所述处理单元包括嵌入单元,可操作为确定由所述接收器接收的数据定义的栅格结构在两维平面中的嵌入;及平面图识别单元,可操作为识别所述确定的嵌入中所述嵌入识别交叉链接的部分;及通过从所述确定的嵌入中除去识别一些所述交叉链接的数据来产生没有交叉链接的平面图,其中由所述差异产生器产生的所述差异数据包括识别由所述平面图识别单元从所述栅格结构的所述确定的嵌入中除去的链接的数据。
101.如权利要求99所述的装置,其中所述平面图识别单元包括交叉链接识别器,可操作为确定识别嵌入的每个链接与多少链接交叉的交叉链接数据;及链接选择单元,可操作为利用所述交叉链接数据选择一些交叉的所述识别出的链接除去,以便从所述嵌入消除交叉链接。
102.如权利要求101所述的装置,其中所述链接选择单元可操作为选择与比未除去的识别出的交叉链接更多的链接交叉的链接作为要除去的链接。
103.如权利要求99所述的装置,其中所述嵌入单元包括嵌入确定器,可操作为确定所述栅格结构在两维平面中的初始嵌入;及嵌入处理器,可操作为处理由所述嵌入确定器确定的初始嵌入,以确定所述栅格结构的另一嵌入,其中所述另一嵌入中交叉的链接数少于所述初始嵌入中交叉的链接数。
104.如权利要求99所述的装置,其中所述接收器可操作为接收将由所接收数据定义的所述栅格结构的每个所述节点与定时数据项关联的数据,所述定时数据项一起定义时间序列;所述装置还包括分层单元,可操作为识别与相同定时数据关联的节点;及修改单元,可操作为通过以下修改由所述嵌入单元确定的嵌入确定所述第一定时是否与单个节点关联;及如果所述定时不与单个节点关联,则在所述序列中产生一较早定时,一虚节点与所述较早定时关联,并在所述产生的虚节点和与所述第一定时关联的节点之间产生链接,其中所述差异产生器可操作为产生包括识别所述添加节点的数据的差异数据。
105.如权利要求104所述的装置,其中所述修改单元还可操作为通过以下修改由所述嵌入单元确定的嵌入确定所述最后一个定时是否与单个节点关联;及如果所述定时不与单个节点关联,则在所述序列中产生一较晚定时,一虚节点与所述较晚定时关联,并在所述产生的虚节点和与所述最后一个定时关联的节点之间产生链接,其中差异产生器可操作为产生包括识别所述添加节点的数据的所述差异数据。
106.如权利要求104所述的装置,其中所述修改单元可操作为通过以下修改由所述嵌入单元确定的嵌入用连接与由所述要除去链接识别的所述节点的所述定时之间所述序列中的每个所述定时的定时数据关联的虚节点的一系列链接代替与所述定时序列中不相邻定时关联的节点之间的链接;其中所述差异产生器可操作为产生包括识别所述栅格结构的所述修改部分的数据的所述差异数据。
107.如权利要求104所述的装置,其中所述修改单元可操作为通过以下修改由所述嵌入单元确定的嵌入为不与所述定时序列中最早和最晚定时关联的节点确定每个所述节点是否由不与其它链接交叉的链接识别为所述嵌入式栅格中链接的起始节点和结束节点;及如果节点没有识别为既是起始节点又是结束节点,则向所述嵌入添加另一链接,使所有所述节点都识别为既是链接的起始节点又是链接的结束节点,其中所述差异产生器可操作为产生包括识别所述添加链接的数据的所述差异数据。
108.如权利要求104所述的装置,其中所述修改单元可操作为通过以下修改由所述嵌入单元确定的嵌入确定经一条或多条不包括任何虚节点的路径链接到与所述定时序列中第一定时关联的节点的所述栅格结构的节点;及为与所述定时序列中连续定时关联的节点确定是否有任何节点不在所述确定的组中,并为所述节点识别包括将所述节点连接到所述确定的组中与较早定时关联的节点的虚节点的路径;及用所述节点之间的链接代替节点间经不包括在所述识别出的路径中的虚节点的路径,其中所述差异产生器可操作为产生包括识别剩余虚节点的数据的差异数据。
109.如权利要求99所述的装置,还包括链接编码器,可操作为通过识别所述嵌入定义节点对之间路径的部分来修改所述确定的嵌入,其中所述部分不链接到所述栅格结构的任何其它节点;用识别所述节点对之间单个链接的数据代替所述部分;及将所述节点对之间的所述链接与识别所述删除部分中节点和链接的数据关联;其中所述差异产生器可操作为产生包括与链接关联的所述数据的差异数据。
110.如权利要求109所述的装置,其中所述链接编码器可操作为识别包括节点对之间经其它节点的路径的部分,所述其它节点识别为单个链接的起始节点和单个链接的结束节点,其中所述与所产生链接关联的数据包括识别除去所述节点的数据和与以所述节点作为起始节点和结束节点的删除链接关联的数据。
111.如权利要求109所述的装置,其中所述链接编码器可操作为识别包括节点对之间的包括所述节点对之间一对链接的路径的部分;其中与所述节点之间所产生链接关联的所述数据包括识别所述链接对合并的数据及与删除链接关联的数据。
112.如权利要求111所述的装置,其中所述链接编码器可操作为与代替一对合并链接的链接关联,该一对合并链接包括识别一对链接合并及与所述合并链接关联的数据的级联的数据,所述数据以依赖于与每个所述链接关联的数据量的顺序级联。
113.如权利要求98所述的装置,其中所述形状编码器可操作为每个区域产生识别数据,包括识别构成所述区域顶点的一节点的数据;及识别在从所述第一节点到所选的定义所述区域另一顶点的第二节点的一对路径中链接数的第一和第二数字。
114.如权利要求113所述的装置,其中所述处理单元可操作为将每个所述节点与多个有序层中的一个关联,其中区域的所述第一节点包括定义一层中顶点的节点,而所述第二节点包括定义与进一步从与所述第一节点关联的所述层而不是与定义所述区域顶点的其它节点关联的层除去的层关联的顶点的节点。
115.如权利要求114所述的装置,其中所述接收器可操作为接收将所述栅格结构中每个所述节点与定时数据关联的数据,所述处理单元将与相同定时数据关联的节点与同一层关联。
116.如权利要求98所述的装置,其中所述形状编码器可操作为每个区域产生识别数据,识别数据包括识别构成所述区域顶点的一节点的数据,识别定界所述区域的链接总数的数据,及识别所述区域与已为其产生数据的区域共享的链接数的数据。
117.如权利要求98所述的装置,其中所述形状编码器可操作为产生识别第一选定区域的数据;及识别由所述平面图定义的剩余区域的数据,其中所述识别数据产生的顺序是使为之产生识别数据的区域对应于与前面已为之产生了识别数据的区域相邻的区域。
118.如权利要求117所述的装置,其中所述形状编码器可操作为每个区域产生识别定义所述区域顶点的节点的数据,该数据包括识别所述节点相对于识别前面已为之产生了识别数据的区域顶点的节点位置的偏移值。
119.如权利要求118所述的装置,其中所述偏移值包括识别所述节点在节点列表中的相对位置的偏移值。
120.如权利要求119所述的装置,其中所述列表包括循环列表。
121.如权利要求119所述的装置,其中所述偏移值包括识别所述列表中不同方向偏移的正或负数。
122.如权利要求119所述的装置,其中所述列表包括识别已为之产生了识别数据的区域边界顶点的节点列表。
123.如权利要求98所述的装置,其中所述形状编码器可操作为产生识别数据,识别数据包括为由所述平面图定义的每个所述区域产生的所述识别数据的级联。
124.如权利要求123所述的装置,其中所述形状编码器可操作为产生以为所述区域产生识别数据的顺序进行排序的所述识别数据的所述级联。
125.如权利要求98所述的装置,其中所述差异产生器可操作识别数据产生包括与平面图的链接关联的所述产生的数据的级联的数据。
126.一种记录介质,存储用于使可编程计算机执行如权利要求1所述方法的计算机可实现处理器步骤。
127.一种记录介质,存储用于使可编程计算机配置成如权利要求62所述装置的计算机可实现处理器步骤。
全文摘要
最初,嵌入模块(22)确定栅格在两维平面中的嵌入。然后,嵌入模块(22)处理初始嵌入,以便产生没有链接交叉的平面图。然后,该平面图由链接编码模块(24)简化,表示栅格结构的数据由形状编码模块(26)产生,其中简化的平面图由识别定界由平面图定义的区域的链接数的形状编码(42)和识别那些区域在平面图中位置的数据及识别由链接编码模块(24)对栅格结构所作修改的链接列表(43)表示。这些编码使栅格中相同的子结构利用相同的数据表示,从而适于利用传统技术进行压缩。
文档编号G10L15/08GK1705978SQ200380101380
公开日2005年12月7日 申请日期2003年10月10日 优先权日2002年10月15日
发明者尤威·H.·约斯特, 迈克尔·R.·阿特金森 申请人:佳能株式会社