数字墨水的压缩的制作方法

文档序号:6475299阅读:198来源:国知局
专利名称:数字墨水的压缩的制作方法
技术领域
本发明涉及到用于数字信息压缩的方法及装置,例如用于数字墨水及电子图像的压缩,更普遍地,涉及到压缩及重构的应用。
背景技术
近期,市场上对手持式、口袋式及可穿着的小型计算机装置的需求迅速增长。然而,向这些装置中输入文本信息是一个极大的难题。由于它们仅具有很小的尺寸,许多这样的装置中无法支持完整的键盘。为了向这么小的装置中输入信息,一个自然的方法就是使用电子数字转换装置(例如笔或触针)直接在计算机的显示屏上写入数据。通常把通过笔来解析手写输入的小型计算机称为“笔式”计算机。如

图1所示,笔式计算机10包括显示屏12以及书写装置,例如笔14或触针。用户可以通过直接在显示屏12上“书写”来输入信息。在典型的笔式计算机系统10中,用户把笔14接触到显示屏12上,就象在纸张上那样进行书写,用一系列笔划形成字母、文字、图形或其它形式。按照笔尖的移动路线,在显示屏12上显示形成的直线或曲线,于是,如同在笔记本的页面上呈现的书写墨水那样,用数字“墨水”在显示屏12上显示出笔划。因此,在使用书写装置向诸如笔式计算机的计算机装置中输入信息时,用户利用数字墨水形成了动态轨迹。笔式计算机系统10能够以一个或多个笔划的形式捕获数字墨水。笔划是在触针尖与书写表面开始接触的点到触针尖离开书写表面的点之间形成的直线或曲线。典型情况下,笔式计算机系统10将笔14或触针的位置视为时间的函数进行数字化,从而产生数字墨水向量。
典型情况下,笔式计算机系统10以预先确定的采样频率对每个手写笔划上的点进行采样。典型地,笔式计算机系统可以以高达每秒200个采样点的速率对手写数据进行采样。如果计算机采样速率是恒定的,笔划上的采样点个数与图形数据的书写速度的变化趋势相反手写速度越快,笔划上的采样点的数目越少;手写速度越慢,笔划上的采样点的数目越多。进一步,采样率越高,每个笔划上的采样点的数目越多;采样率越低,每个笔划上的采样点数目越少。例如,若采样率为每秒100点,对于图2中表示的笔划42,如果用户用一秒钟进行书写,则它包含1000个采样点。典型的数字墨水页面中可能包括上百个笔划以及上万个采样点。
笔式计算机系统10中包括中央处理器(CPU),将采样点作为数据流进行接收,并把采样点保存在内存中,例如存储在图3中示意的动态随机存取存储器(DRAM)。采样点还可以进一步用软件程序进行处理,程序存储在图3中示意的闪存中。此外,笔式计算机系统通常与主计算机系统进行无线连接,使得从笔式计算机10可以向远程计算机传送数字墨水。如果要传送的数字墨水由笔式计算机10产生,则需要传输大量的采样点。例如,在未压缩的方式下,每个点用4个字节表示,则图2中的笔划42内1000个采样点共包含4000个字节,这样大的数据流导致了一个特别的问题,即所要求的内存容量很大。如果能够对数字墨水进行压缩,则允许在笔式计算机系统中使用较少的内存。这又会促使笔式计算机可以被设计并制造得更小。因此,希望笔式计算机能够有效地存储数字墨水,由此可以不使用过多的内存。大数据流导致的另一个问题是向远程计算机进行传送所花费的时间更长,尤其是在使用低带宽通信信道如无线调制解调器时。通常,通过无线链路传输数字墨水或其它图形数据将花费大量时间,这就形成了影响系统性能的“瓶颈”或限制因素。在等待系统完整地移交并传输墨水的过程中,可能阻断或中断用户的工作流程或思路,或者可能使用户灰心或急躁。因此,希望笔式计算机系统能够有效地传送数字墨水,并可以因此工作得更快捷。
为了减小数据流的规模,笔式计算机可以对数据墨水的采样点进行压缩,以更紧凑地表示数据。正如在现有技术中为人熟知的,在笔式计算机系统中存储压缩软件,由CPU执行软件,执行对数据流的压缩。如果被显示屏捕获的数字墨水为笛卡尔坐标或向量坐标的形式,并占用了X个字节存储容量,则压缩将使X字节减少为C*X字节,其中C<1。C代表压缩比或压缩软件执行的压缩量。因此,如果C=0.5,则通过执行队捕获到的数据流进行压缩,捕获到的1000字节的数字墨水被减少至500字节。
最终,利用可能由远程计算机执行的解压缩软件,还要对压缩数据流进行解压缩。理想的情况下,经解压的数据流与捕获到的数据流相同。如果确实是相同的,把这样的压缩程序称为“无损压缩”,也就是说压缩没有造成信息的损失。然而,如果经解压的数据流与捕获到的数据流不同,即使是稍微有些不同,则把这样的压缩程序称为“有损压缩”。在压缩过程中“损失”了某些信息,所以无法精确地恢复所捕获到的数据流。
某些应用场合要求执行无损的压缩。例如,在商务交易中,用传送的签名进行信用卡支付,则笔式计算机可能需要对签名进行无损传送。可以理解,商家及顾客要求执行签名确认时最大程度地考虑到数据流的完整性,在压缩过程中不会发生信息的损失。与之相反,在传送动画卡通时,则可以以有损方式进行。即使原始数据流没有被忠实恢复或解压缩,笔式计算机的用户可能不会在意,并可以接受信息的损失。
授予Desai等人(PenWare公司)的美国专利No.6,011,873中介绍了一种用于对签名数据进行无损压缩的压缩算法。Desai算法通过计算数据流中相邻点之间的差分实现压缩。这个算法丢弃了重复的数据点,对于某些类型的数字墨水,在一定程度上获得了对所捕获的数据流的压缩。仅仅丢弃重复的数据点,以及仅仅考虑相邻点之间的差分,限制了能够实现的压缩量。如果数据流中相邻的点不是高度相关的(例如书写时抖动的线、计算机图形或动画图像),则使用Desai算法来执行压缩得到的压缩数据流并非为最佳的压缩,甚至可能比捕获到的数据流还要大。
因此,需要改进的压缩系统及方法,特别是对于那些对数字墨水执行压缩任务的小型手持装置尤为需要。因此,特别是对那些使用压缩方法的小型手持装置(例如笔式计算机系统)以及其它手持应用设备而言,需要一种对数字墨水进行压缩的高效的新型系统。
通过下述的附图及发明的详细说明,更详细地介绍了本发明的多个方面。
具体实施例方式
总之,本发明的目的是提出用于对数字墨水进行充分无损压缩的方法和装置。一方面,通过将数字墨水中的笔划细分为数组中各自分离的点来实现数字对墨水的充分无损压缩。利用数组中相邻的点计算二阶差分,将二阶差分应用到Huffman(赫夫曼)编码器中,实现对数字墨水流的压缩。此外,另一方面,对数据墨水的压缩还包括对压缩数据墨水的解压缩。可以用硬件或软件或二者来实现本发明的多个方面。
可以在多种计算机系统中使用和结合本发明提出的压缩方案,这样的系统如图4所示的销售商标为PALM VIITM的手持计算机16。PALM VIITM手持计算机16的作用是组织信息,允许从触摸屏液晶显示器(LCD)18输入手写信息。此外,PALM VIITM手持计算机16支持通过无线链路20与远程计算机进行通信。尽管参照PALM VIITM手持计算机16对压缩方案进行说明,例如蜂窝电话的其它无线装置也可能得益于本发明的实施例。此外,本发明提出的压缩方案也可以用带有阴极射线管(CRT)显示屏的桌面计算机或等价计算机以及相关的硬件实现。
参见图3,表示了PALM VIITM手持计算机16的简化结构。典型情况下,PALM VIITM手持计算机16中包括中央处理器(CPU)、主内存(例如动态随机存取存储器(DRAM))、闪存、电源、扬声器、显示屏18、键盘以及相关的控制电路。此外,PALM VIITM手持计算机16中包括笔或触针(未在图3中画出)。在此前已知的手持计算机中,书写装置一直都是触针或笔;然而,书写装置并不限于此,还可以是其它任何输入设备,例如鼠标、轨迹球、指针,甚至可以是用户的手指。另外,计算机系统接收手写数据的能力也不必限于接收用户人工产生的接收数据。例如,这样的系统中也可以输入并接收由机器产生的数据。
典型情况下,PALM VIITM中包括能够提供X-位分辨率的LCD显示屏,例如300x280像素。显示屏与笔相连,使用户可以向装置中输入数据,PALM VIITM以接近X像素/秒的采样率捕获用户输入。采样率在很大程度上取决于运行在PALM VIITM上的应用程序。例如,对于数字签名的应用程序,采样率可能为Y像素/秒,而对于日历应用程序,采样率则可能较小。
PALM VIITM手持计算机16中包括一个收发机,用于与远程计算机进行通信。CPU执行对来自LCD的数字墨水的压缩,并对来自远程计算机的数字墨水进行解压缩,以便在LCD上显示。收发机与CPU的接口向远程计算机发送并从其中接收数字墨水。总之,CPU读取从LCD捕获到的数据,并产生代表捕获到的数据的压缩比特流。CPU应用一系列压缩步骤,使表示捕获的数据的位数减少。然后将产生的压缩比特流输出给收发机,并可能传送至远程计算机,或者存储于内存中,用于稍后的传送。此外,本领域的技术人员应该理解,在可替换实施例中,捕获到的数据被离线存储,则压缩可能成为随后进行的非实时处理的一部分。
现在参见图5,表示由图3中的CPU执行的压缩与解压缩的简化功能图。如同在背景技术中提到的,压缩与解压缩通常由笔式计算机系统16中的CPU执行的软件实现。软件作为整体一般被称为“CODEC”,这是压缩器解压缩器的简称。在一个示意性实施例中,用LCD接口22、模数转换器(ADC)24、数字处理器26、差分分析器28、Huffman编码器30以及比特流处理器32执行对数字墨水的压缩。
LCD接口22的功能为,当用户用笔在触摸屏上书写时,捕获从显示屏18接收到的数据。随着用户的书写,显示屏18中的压力敏感传感器对随用户移动形成的笔的位置进行响应。显示屏18提供原始的12位像素分辨率,例如4096x4096像素。因此,捕获到的数据中,点的X轴与Y轴坐标值可以从0到4096之间变化。尽管用捕获到的数字墨水中的点的X轴与Y轴坐标值说明压缩方案,还可以用表示时间的附加坐标值说明数字墨水。例如,在另一个实施例中,用捕获到的数字墨水中的点的X轴、Y轴与T轴(其中T代表时间值)坐标值表示数字墨水。对于例如数字签名确认、动画卡通及动态图形的应用场合,附加的时间值坐标非常有用。此外,还可以用其它坐标系统表示数字墨水,例如经纬度子午线或半径向量与角度。
ADC 24的功能是将捕获到的数字墨水转换为数字形式。ADC 24将笔的模拟位置转换为显示屏的X轴及Y轴坐标。例如,捕获到的数字墨水中的第一点可以用坐标(Xi,Yi)表示。捕获到的数字墨水流中的下一个相邻点的坐标为(Xi+1,Yi+1)。由于这些点无需是重合的,则第二点可以用相对于第一点的差分距离表示,例如(Xi+1-Xi,Yi+1-Yi)。ADC可以是将连续的捕获信号进行数字化的任何合适的装置。
数字处理器16的功能是将点的X轴及Y轴坐标分别放入两个数组中。一个数组中包含全部X轴,另一个数组中包含全部Y轴坐标。例如,X-数组中包含点(Xi,Xi+1,Xi+2,...,Xi,其中j为从0到捕获到的数字墨水流中最后那个点之间的数字)。Y-数组中包含点(Yi,Yi+1,Yi+2,...,Yi,其中j为从0到捕获到的数字墨水流中最后那个点之间的数字)。此外,数字处理器(方块26)计算最大位数,这对于表示数组的前两个点是很有用的,其中max imum number of bits to store X1=ceiling(log2(X1))+sign(X1)max imum number of bits to store X2=ceiling(log2(X2))+sign(X2)对Y-数组中的前两个点执行相同的计算。差分分析器28对每个数组中后面的点进行计算。
差分分析器28的功能是计算相邻点之间的偏移。由于相邻点之间具有高度的相关性,对每个数组中的相邻点执行差分分析将实现压缩。每个笔划中的点在屏幕上不是随机分布的,而是具有严格的顺序。例如手写字体是由直线和光滑曲线构成的,这表明,相邻的点彼此相当接近。例如,对于一条直线,相邻的点的变化可以用因子一表示,因为每个点在x与y方向上相隔固定数目的像素。对于光滑曲线,相邻点的变化可以用因子三表示,因为在笔划中连续的点具有高度的相关性。因此,相邻点之间的差分的概率密度函数将分布在很小的值域内,例如在正负三之间。相邻点之间的差分被称为“一阶差分”,可以用下式计算XΔ=Xi+1-XiYΔ=Yi+1-Yi对数字墨水进行压缩搜索的执行过程表明,相邻的一阶差分之间的差分(二阶差分)比一阶差分具有更高的相关性。可以由下述公式得到二阶差分(X2Δ)XΔ1=Xi+1-XiXΔ2=Xi+2-Xi+1X2Δ=XΔ2-XΔ1=Xi+2-Xi+1-Xi+1+Xi=Xi+2-2Xi+1+Xi对Y-轴的点执行相同的计算过程,得到下式Y2Δ=Yi+2-2Yi+1+Yi计算了X-轴及Y-轴的点的二阶差分后,将结果输入至Huffman编码器30。Huffman编码器30的功能是,生成柱状图,表示X-轴及Y-轴的数据的二阶差分,并利用柱状图对二阶差分进行高效编码,从而用最小的位数代表二阶差分。Huffman编码器30的输出为经编码的比特流,表示经压缩的捕获到的数据墨水。本领域内的技术人员需要理解,在Huffman编码器30的位置上,可以使用任何适用的整熵编码器。例如,可以使用算术编码器,对于捕获到的比特流为现有技术中已知的流应用的场合,它比Huffman编码器更理想。
最后,比特流处理器32的功能是将压缩比特流封装入数据帧中,数据帧中包含压缩方案的版本号以及对于重构数字墨水有用的其它信息。在传送给远程计算机后,这些信息(例如执行的压缩类型)可能有助于重构数字墨水。本领域内的技术人员需要理解,可以用任何适用的装置发送经编码的数字墨水比特流,例如用电话线、RF天线、局域网或广域网。
现在将说明解压缩的操作。解压缩为压缩的逆过程。对数字墨水的解压缩包括比特流处理器38、Huffman解码器36、相加分析器34、数字处理器26、数模转换器(DAC)24,以及LCD接口22。
首先,收发机从远程计算机接收压缩比特流。比特流处理器38的功能是将从远程计算机中接收到的数据解释为包括压缩数据流与版本号的数据。用版本号确定使用哪种类型执行的压缩,因此必须用它进行解压缩。然后,将压缩比特流送入Huffman解码器36,将压缩比特流映射为解码的X与Y的二阶差分成分。此后,将经解码的X与Y的二阶差分成分与X-轴及Y-轴的点进行相加,在此,相加分析器34执行下述计算Xi+2=X2Δ+2Xi+1-XiYi+2=Y2Δ+2Yi+1-Yi数字处理器26的功能是提取X-轴及Y-轴数组中的点,并组成有序数据对(Xi,Yi)。DAC 24的功能是提取有序数据对(Xi,Yi),并将其转换为模拟的笔位置。LCD接口22的功能是将模拟的笔位置在用户的触摸显示屏上显示。
在示意实施例中,在一个系统内执行图4中的压缩与解压缩操作,也就是在图3中CPU上运行的codec。在本发明提出的可选实施例中,可以用两个不同的包含全部codec差分组件的系统对数字墨水进行压缩及解压缩。本领域内的技术人员应该理解,所有的系统都可以对数字墨水进行离线而不是实时地压缩及解压缩。
现在参见图6,所示为根据本发明的示意实施例的、用于压缩数字墨水的方法的框图。另外,由于捕获到的数字墨水流在没有损失信息的情况下被压缩,所介绍的压缩方法为无损压缩。无损压缩方法中计算了数字墨水笔划中相邻点的二阶差分,并利用Huffman分析对二阶差分进行压缩。特别地,无损压缩方法包括的步骤为(a)将数据墨水中的每个笔划划分为点(方框72),(b)将每个点分解到X-轴与Y-轴数组(方框74),(c)计算用来表示X-轴与Y-轴数组中前两个点的最大位数(方框76,78),(d)为X-轴与Y-轴数组中的余下的每个点计算二阶差分(方框80,82),和(e)对二阶差分执行Huffman编码分析(方框84)。
根据本发明,无损压缩方法可以用通用计算机系统执行,与/或用专用数字信号处理器(DSP)、(ASIC)或其它专用数字(或模拟)逻辑系统执行。在示意实施例中,无损压缩方法最好用图4中的codec实现。作为用可编程的通用计算机系统实现的实例,下述程序可以使用可编程的通用计算机系统,例如基于摩托罗拉M*CORETM微处理器的系统。关于这一点,下面的C程序产生了用于对数字墨水进行无损压缩的C代码输出。C程序为数字墨水(在程序中定义为“pBitStream”)分配内存,将笔划细分为点,将点分解到X-轴与Y-轴数组中,计算相邻点的二阶差分,对二阶差分进行编码,以及向比特流目标写入结果。C函数“LxS_Compress_HuffmanCompressTo BitStram”(代码未列出)执行对二阶差分数组“pData”进行编码的功能。
<pre listing-type="program-listing"><![CDATA[typedef signed long s32;typedef unsigned long u32;typedef signed short s16;typedef unsigned short u16;typedef signed char s8;typedef unsigned char u8;typedef struct{s16 x;s16 y;}LxS_InkPoint;tyPedef struct{LxS_InkPoint *mpPoints;/array of points*/u16 mNumPints;/*number of points*/u16 mColorTag;/*color of object*/}LxS_InkStroke;typedef struct{LxS_InkStroke **mppStrokes;u16 mNumStrokes;}LxS_InkPoint;{Write_Header();s16*pData=0;u32k=0;u32num_els=0;/*in this loop we find out the number of bits necessary to represent*//*the startx starty and num points per stroke */snum2=npInk->mNumStrokes;NumBitsForNSxSy=1;for(i=0;i<npInk->mNumStrokes;i++){snum=(npInk->mppStrokes[i]->mNumPoints);snum=LxS_Abs(snum);snum2=(snum>snum2)?snumsnum2;snum=(npInk->mppStrokes[i]->mpPoints
.x);snum=LxS_Abs(snum);snum2=(snum>snum2)?snumsnum2;snum=(npInk->mppStrokes[i]->mpPoints
.y);snum=LxS_Abs(snum);snum2=(snum>snum2)?snumsnum2;}NumBitsForNSxSy=MaxBitsToRepresent(snum2);/*this is the number of bits for sx,sy,n*/LxS_BitStream_PutNBitQty(pBitStream,NumBitsForNSxSy,5);unum=npInk->mNumStrokes;LxS_BitStram_PutNBitQty(pBitStream,unum,NumBitsForNSxSy);/*num stroks */for(i=0;i<npInk->mNumStrokes;i++){snum=(npInk->mppStrokes[i]->mNumPoints);LxS_BitStram_PutNBitQty(pBitStream,snum,NumBitsForNSxSy);snum=(npInk->mppStrokes[i]->mpPoints
.x);LxS_BitStream_PutNBitQty(pBitStream,snum,NumBitsForNSxSy);snum=(npInk->mppStrokes[i]->mpPoints
.y);LxS_BitStram_PutNBitQty(pBitStream,snum,NumBitsForNSxSy);}for(i=0;i<npInk->mNumStrokes;i++){if(npInk->mppStrokes[i]->mNumPoints>=2)num_els+=((npInk->mppStrokes[i]->mNumPoints-1)<<1);}if(num_els>0)pData=LxS_malloc(sizeof(s16)*num_els); if(pData) {for(i=0;i<npInk->mNumStrokes;i++){ if(npInk->mppStrokes[i]->mNumPoints>1)pData[k++]=npInk->mppStrokes[i]->mpPoints[1].x-npInk->mppStrokes[i]->mpPoints
.x; for(j=2;j<npInk->mppStrokes[i]->mNumPoints;j++)pData[k++]=npInk->mppStrokes[i]->mpPoints[j].x-((npInk->mppStrokes[i]->mpPoints[j-1].x)<<1)+npInk->mppStrokes[i]->mpPoints[j-2].x;}for(i=0;i<npInk->mNumStrokes;i++){ if(npInk->mppStrokes[i]->mNumPoints>1)pData[k++]=npInk->mppStrokes[i]->mpPoints[1].y-npInk->mppStrokes[i]->mpPoints
.y; for(j=2;j<npInk->mppStrokes[i]->mpPoints;j++)pData[k++]=npInk->mppStrokes[i]->mpPoints[j].y-((npInk->mppStrokes[i]->mpPoints[j-1].y)<<1)+npInk->mppStrokes[i]->mpPoints[j-2].y; }LxS_Compress_HuffmanCompressToBtiStream(pData,k,pBitStream);LxS_free(pData);}}/*LxS_CODEC_PURE_HUFFMAN_DIFF_2PASS*/]]></pre>每个笔划包括一个点向量。每个点是一个二维或三维数组。在示意实施例中,其中每个点为一个二位数组,点代表x与y坐标。如同前述,在另一个实施例中,点为三维数组,其中一个点代表X-轴、Y-轴及T-轴坐标值。本领域内的技术人员应该理解,本发明可以用不同类型的向量差分实现。
如同前述,在图3的CPU上实现的无损压缩方法中对数字墨水序列的二阶差分进行计算,从而产生压缩比特流。本领域内的技术人员应该理解,本发明可以用两个计算步骤实现,一个用来计算一阶差分,第二个用于计算二阶差分,如下式所示1.XΔ1=Xi+1-Xi,XΔ2=Xi+2-Xi+12.X2Δ=XΔ2-XΔ1还需要理解的是,使用了本发明的编码数字墨水序列可以包括从单个数字墨水笔划(甚至是单个笔划的一部分)到任意大数目个笔划中任意一种。此外,可以用本发明对单独数字墨水流中的许多数字墨水序列中的每一个进行压缩,其中每个数字墨水序列代表固定数目的笔划,或者其中每个数字墨水序列对应于包含类似数字墨水笔划的图形。本领域内的技术人员应该理解,本发明可以用在其它的应用处理中,其中利用信号的差分表示用手写标记代表或组成的信号。
表1中将使用本发明的压缩与摩托罗拉公司在笔式计算机系统中使用的现有压缩技术进行比较。在表1中,第一列中列出图名,第二列中列出第一列中的图形未经压缩的大小。第三列和第四列中列出第一列的图形中的笔划数和点数。第五和第六列表示使用了两种压缩方案后压缩文件的大小。第七列表示使用了本应用中介绍的无损压缩方案后压缩文件的大小。第五列中描述了Codec 1,它是通过计算一阶差分并对差分进行编码来执行压缩过程。对于图8,捕获到的数据流为2520字节,对一阶差分进行编码后,产生的压缩数据流为782字节。第六列中描述了Codec 2,它执行压缩的过程是计算一阶差分,将差分输入至Huffman编码器,并对Huffman编码器的输出进行编码。对于图9,捕获到的数据流为6112字节,利用Huffman编码器对一阶差分进行编码后,产生的压缩数据流为1125字节。第七列中描述了Codec 3,如同本发明的实施例,它执行压缩的过程是计算二阶差分,将二阶差分差分输入至Huffman编码器,并对Huffman编码器的输出进行编码。对于图10,捕获到的数据流为6548字节,利用Huffman编码器对二阶差分进行编码后,产生的压缩数据流为1088字节。与原始大小相比,Codec 3有效地将图10的大小减少了接近六倍。
表1

现在参见图7,表示根据本发明另一个示意实施例的另一种对数字墨水进行无损压缩的方法的框图。无损压缩方法对由图3中的PALMVIITM手持计算机16捕获的数字墨水进行压缩。无损压缩方法实现了多阶差分数字墨水压缩方案。也就是说,本方法计算了多重差分,例如捕获到的数字墨水中相邻点之间的差分(被称为“一阶差分”),差分的差分(被称为“二阶差分”),以此类推。对于每阶差分,此方法产生的数据被用于后续的一个或多个差分计算中。特别地,此方法最好计算捕获到的数字墨水的二阶差分。
根据本发明,对用于压缩数字墨水的方法进行了说明,方法包括的步骤为(a)将数据墨水的笔划划分为点(方框62),(b)将点分解为坐标成分(方框64),(c)计算每个坐标成分中相邻点的差分(方框76),(d)传送表示压缩数字墨水的差分(方框84)。
计算差分函数以发现数字墨水笔划中高度相关的点,从而对相邻点之间的差分进行编码,这个步骤比发送捕获到的数字墨水的步骤效率更高。此外,计算差分的步骤可以反复执行。在示意实施例中,计算差分的步骤包括以下两个步骤(a)为每个坐标成分中的相邻点计算一阶差分,以及(b)利用每个坐标成分的一阶差分,至少再计算一次差分。如同前述,通过搜索相邻点之间的二阶差分实现对采样数据的压缩;然而,如果捕获的数据流具有更高的相关性,则计算三阶差分可能会产生更高压缩程度的数字墨水流。在这种情况下,为了重构原始数字墨水流,前三个点是有用的,并需要被传送。
对于不具有高度相关性的数字墨水,上述的无损压缩方案可能不会对捕获的数据流进行压缩。对于这种情况,可以使用如图11所示的压缩方案。充分无损压缩的方法包括的步骤为(a)为用基本(alphabet)形状表示的片段的数字墨水中的点进行定位(方框90),(b)将点表示为形状片段(方框92),和(c)传送代表数字墨水中的点的表示形状(方框94)。在图11的压缩方案中,对充分无损进行定义,使得在压缩过程中产生的信息损失小于采样误差或者接近于采样误差的幅值量级。例如,如果采样率为X,对于图11的方法,若在压缩过程中损失的信息量接近于X,则方法为充分无损的。为实现本发明,充分无损意味着,在压缩及解压缩过程中,PALM VIITM的采样误差在装置的采样率之内。此外,对于不同类型的片段,可能由不同类型的误差。
为可能用基本形状表示的片段的数字墨水中的点进行定位的步骤中,需要对点流进行测试,来确定包含那些点的片段是否可以用预先确定的形状表示。形状包括多种对象,例如多边形、椭圆、矩形和Bezier曲线。下面的将点表示为形状片段的步骤中,需要用代表的形状来代替点流。例如,在图12中表示的数字墨水笔划可以用Bezier曲线表示,该曲线用下面的公式进行定义B3(t)=(1-t)3P0+3t(1-t)2P1+3t2(1-t)P2+t3P3因此,图12中示意的表示数字墨水的步骤需要替换掉用P0、P1、P2和P3连接起来的点流,以及对上述方程定义的Bezier曲线进行替换。用四个点P0、P1、P2和P3以及识别Bezier曲线形成的笔划的符号(notation)取代用P0、P1、P2和P3连接起来的点流,从而实现压缩。最后将点P0、P1、P2和P3以及符号传送给远程计算机。利用这种类型的压缩,原始数字墨水和损失信息一起被发送,因此压缩被称为“充分无损”。充分无损压缩适用于诸如动画卡通或动态图像的应用场合,其中可能不需要对原始数字墨水进行精确复现。此外,这样的应用场合中可能需要对数字墨水进行快速传输,因此形成了这样的压缩方案。
在另一个示意实施例中,利用对数字墨水的重新采样、发送重采的数字墨水及采样率,实现对数字墨水的压缩。通过降低原始的数字墨水流实现压缩。例如,以50%的速率进行重采,则1000字节的数字墨水流被减少为500字节。将数字墨水流进行隔点传送,从而使效率更高。
在另一个示意实施例中,可以用上述方案的任意组合执行对数字墨水的压缩。也就是说,可以通过搜索相邻点之间的差分、用基本形状代表片段及重新采样或者上述技术的任意组合实现压缩。
可以用计算机执行的过程及处理这些过程的装置的形式来实现本发明。本发明还可以用计算机程序代码的形式来实施,程序可以包含在实际介质中,例如软盘、CD-ROM、硬驱动或其它任何计算机可读的存储介质,其中,当计算机程序代码被计算机载入并被执行时,计算机成为实践本发明的装置。本发明还可以用计算机程序代码的形式来实施,(例如)无论它是否存储于存储介质中、被计算机载入与/或执行、或通过某些传输介质进行传送(例如通过电线或电缆、通过光纤或者通过电磁辐射),其中,当计算机程序代码被计算机载入并执行时,计算机成为实践本发明的装置。在用通用微处理器来实现时,计算机程序代码段对微处理器进行配置,从而形成专用的逻辑电路。
尽管用多个具体的实施例和实例介绍了本发明,需要理解的是,可以对本发明进行多种方式的修改、调整和衍生,它们均落在由权利要求书限定的本发明的精神和范围及其等价范围内。
权利要求
1.一种用于对数字墨水进行无损压缩的方法,该方法包括步骤(a)将包含多个数字墨水笔划的数字墨水细分为包含坐标的数字墨水点;(b)将包含坐标的数字墨水点分解至包含数组元素的单独的坐标数组中;(c)计算每个坐标数组中相邻的数组元素之间的二阶差分;和(d)将二阶差分加到Huffman编码器中,产生压缩比特流。
2.根据权利要求1所述的方法,其中,所述坐标为代表显示屏坐标的X-轴与Y-轴的值。
3.根据权利要求2所述的方法,其中,所述坐标进一步包括表示将点输入在显示屏上的时刻的时间值。
4.根据权利要求1所述的方法,其中分解步骤进一步包括步骤提取每个数字墨水点的X-轴坐标,并将X-轴坐标存储于X-轴坐标数组中;和提取每个数字墨水点的Y-轴坐标,并将Y-轴坐标存储于Y-轴坐标数组中。
5.根据权利要求4所述的方法,其中进一步包括步骤提取每个数字墨水点的T-轴坐标,并将T-轴坐标存储于T-轴坐标数组中。
6.根据权利要求1所述的方法,其中计算二阶差分的步骤进一步包括步骤(a)对每个坐标数组中相邻的元素进行减法运算,从而计算一阶差分;(b)将每个一阶差分存储于包含数组元素的一阶差分数组中;(c)对一阶差分数组中相邻的元素进行减法运算,从而计算二阶差分。
7.根据权利要求6所述的方法,其中所述坐标数组包括X-轴、T-轴与Y-轴元素。
8.根据权利要求1所述的方法,其中计算二阶差分的步骤进一步包括步骤(a)计算用来存储每个坐标数组中前两个元素的最大位数;(b)从每个坐标数组中提取三个相邻的元素,定义为A、B和C;(c)在三个相邻元素中,利用方程C-2B+A计算二阶差分;和(d)提取用来存储前两个元素及二阶差分的最大位数。
9.根据权利要求8所述的方法,其中,所述坐标包括X-轴、T-轴与Y-轴元素。
10.根据权利要求1所述的方法,其中,所述细分的步骤进一步包括步骤(a)为可以用基本形状表示的片段的数字墨水中的点进行定位;(b)将点表示为形状片段;和(c)传送用于表示数字墨水中的点的代表形状。
11.一种用于对数字墨水进行无损解压缩的方法,该方法包括步骤(a)将压缩比特流加到Huffman解码器中,从而产生二阶差分;(b)从二阶差分中计算相邻的数组元素;(c)组合数组元素,形成数字墨水点;和(d)将数字墨水点进行结合,从而形成包含多个数字墨水笔划的数字墨水。
12.根据权利要求11所述的方法,其中,用代表显示屏坐标的X-轴与Y-轴的坐标表示数字墨水点。
13.根据权利要求12所述的方法,其中数字墨水点进一步包括表示将点输入在显示屏上的时刻的时间坐标。
14.根据权利要求11所述的方法,其中计算相邻数组元素的步骤进一步包括步骤(d)对相邻的二阶差分进行加法运算,从而计算一阶差分;和(e)对相邻的一阶差分进行加法运算,从而计算相邻的数组元素。
15.根据权利要求11所述的方法,其中,所述组合步骤进一步包括步骤从X-轴坐标数组中提取数组元素,以及从Y-轴坐标数组中提取数组元素,从而形成包含坐标的数字墨水点。
16.根据权利要求15所述的方法,进一步包括步骤从T-轴坐标数组中提取数组元素,从而形成包含时间值的数字墨水点。
17.一种用于对数字墨水进行无损压缩的方法,该方法包括步骤(a)将数字墨水中的每个笔划分解为数字墨水点;(b)将每个数字墨水点分解为X-轴和Y-轴元素;(c)将每个X-轴元素整理入X-轴数中,将每个Y-轴元素整理入Y-轴数中;(d)分别计算用来表示在X-轴和Y-轴数组中前两个元素的最大位数;(e)分别为X-轴和Y-轴数组中余下的每个元素计算二阶差分;和(f)将二阶差分加到Huffman编码器中,产生压缩比特流。
18.一种用于对数字墨水进行无损解压缩的方法,该方法包括步骤(a)将压缩比特流加到Huffman解码器中,从而产生二阶差分;(b)分别为X-轴和Y-轴数组计算X-轴和Y-轴的数组元素;(c)分别将X-轴和Y-轴的元素分解至X-轴和Y-轴数组中;(d)将X-轴和Y-轴的元素组合成数字墨水点;和(e)将数字墨水点组合成数字墨水笔划。
19.一种用于对数字墨水进行无损压缩的方法,该方法包括步骤(a)将数字墨水的笔划分解为点;(b)将点变换为坐标成分;(c)为每个坐标成分中的相邻点计算差分;和(d)传送代表压缩数据墨水的差分。
20.一种用于对数字墨水进行无损解压缩的方法,该方法包括步骤(a)接收压缩数据墨水的差分;(b)从代表压缩数字墨水的差分中计算坐标成分;(c)将坐标成分变换为相邻点;(d)将点组合成数字墨水笔划。
21.一种用于对数字墨水进行充分无损压缩的方法,该方法包括步骤(a)为可以用基本形状表示的片段的数字墨水中的点进行定位;(b)将点表示为形状片段;和(c)传送用于表示数字墨水中的点的代表形状。
22.根据权利要求21所述的方法,其中基本形状包括多边形、椭圆、矩形和Bezier曲线。
23.根据权利要求21所述的方法,其中所述对点进行定位的步骤进一步包括步骤(a)将数字墨水中的点流与基本形状进行比较;(b)决定是否用一个基本形状替代点流,基本形状定义了信息量充分相同的数字墨水。
24.根据权利要求21所述的方法,其中所述对点进行表示的步骤进一步包括步骤记录被用形状取代的点数,并用形状取代点。
25.一种用于对数字墨水进行充分无损解压缩的方法,该方法包括步骤(a)接收数字墨水中点的代表形状;和(b)将代表形状变换成数字墨水点。
26.根据权利要求25所述的方法,其中形状包括多边形、椭圆、矩形和Bezier曲线。
27.一种用于对数字墨水进行压缩的装置,其包括(a)显示屏接口,包含用于获得数字墨水的捕获装置;(b)模数转换器,将捕获的数字墨水变换成包含坐标的数字墨水点;(c)数字处理器,将坐标分解为坐标数组;(d)差分分析器,计算每个坐标数组中的坐标之间的偏移,从而形成二阶差分;和(e)Huffman编码器,产生发生二阶差分的柱状图,从而形成经编码的比特流。
28.根据权利要求27所述的装置,其中,所述坐标为代表显示屏坐标的X-轴与Y-轴的值。
29.根据权利要求27所述的装置,其中所述坐标进一步包括表示将点输入在显示屏上的时刻的时间值。
30.根据权利要求27所述的装置,进一步包括比特流处理器,其将经编码的比特流封装入数据包中,用于向远程计算机传送。
31.一种用于对数字墨水进行解压缩的装置,其包括(a)Huffman解码器,提取经编码的比特流,从而形成表示发生二阶差分的柱状图;(b)相加分析器,从二阶差分中计算坐标;(c)数字处理器,形成包括坐标的数字墨水;(d)数模转换器,将包含坐标的数字墨水变换成数字墨水点;和(e)显示屏接口,包含用于在显示屏上表示数字墨水点的装置。
32.根据权利要求31所述的装置,其中,所述坐标为代表显示屏坐标的X-轴与Y-轴的值。
33.根据权利要求31所述的装置,其中,所述坐标进一步包括表示将点输入在显示屏上的时刻的时间值。
34.根据权利要求31所述的装置,进一步包括比特流处理器,其从远程计算机获取带有压缩数字墨水的经编码的比特流。
全文摘要
通过计算数字墨水中相邻点间的二阶差分(80,82),以及将差分加到Huffman编码器(30),形成压缩的比特流(84),实现了对数字墨水的压缩。对于不具有高度相关性的数字墨水,压缩可以通过用诸如Bezier曲线及直角元素的数学形状(92)表示数字墨水片段,以及用这个形状取代数字墨水(94)进行传送实现。
文档编号G06K9/22GK1476584SQ01819444
公开日2004年2月18日 申请日期2001年12月19日 优先权日2000年12月20日
发明者曼吉尔那斯·查特吉, 曼吉尔那斯 查特吉 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1