m-数组解码和纠错的增强方法

文档序号:6511729阅读:273来源:国知局
专利名称:m-数组解码和纠错的增强方法
技术领域
本发明涉及使用数码笔与媒质交互,尤其涉及在与一个或多个表面交互期间确定数码笔的位置。
背景技术
计算机用户习惯于使用鼠标和键盘作为与个人计算机交互的方法。虽然个人计算机提供了优于书面文档的多种优点,但多数用户仍旧使用印刷纸来完成某些功能。这些功能中的一些包括阅读和注释书面文档。在注释的情况下,由于用户置于印刷文档上的注释,印刷文档表现出更大的重要性。然而,拥有具有注释的印刷文档的困难之一是以后需要将这些注释重新输入回文档的电子形式。这需要原用户或另一个用户辛苦地读完注释,并将它们输入到个人计算机中。在一些情况下,用户将扫描输入这些注释和原文本,由此建立新的文件。这些多个步骤使得印刷文档和电子版本的文档之间的交互难以用重复的方式来处理。此外,扫描输入的图像经常是不可修改的。没有将注释同原文本分开的方法。这使得使用注释变得困难。因此,需要一种处理注释的改进的方法。
捕捉手写信息的一种技术是使用笔,其位置会在书写期间被确定。提供这种性能的一种笔是Anoto公司的Anoto笔。该笔通过使用照相机捕捉用预定义图案编码的纸张的图像来起作用。该图像图案的例子在图11中示出。Anoto笔(Anoto公司)使用这种模式来确定一页纸张上该笔的位置。然而,不清楚Anoto笔所使用的系统对确定位置有多高的效率。为了提供对所捕捉图像位置的有效确定,需要一种提供所捕捉图像的有效解码的系统。

发明内容
本发明的各个方面提供了上述问题的至少其中之一的解决方案,由此使得可以在具有预定义图案的所察看的文档上定位所捕捉图像的一个或多个位置。所察看的文档可以在具有预定义图案的纸张、LCD屏幕或其它任何的媒质上。本发明的各方面包括准许对所捕捉的图像进行有效解码的解码过程,为图像位置的有效确定作准备。
依照本发明的一个方面,解码过程巧妙地从所捕捉图像提取的比特中选择比特子集。依照本发明的另一个方面,一种过程调节该解码过程重复执行的次数。依照本发明的另一个方面,一种过程确定所提取比特位置的X、Y坐标,由此使得X、Y坐标符合诸如目的区域等局部约束。通过以下附图和所关联的描述,本发明的这些和其它方面将变得显而易见。


结合附图阅读上述本发明的发明内容和以下详细描述的优选实施例,可以更好地理解它们,这些优选实施例对于本发明而言是作为示例而非局限包括于此。
图1示出了可以结合本发明的实施例使用的计算机的总体描述。
图2A和2B示出了依照本发明的实施例的图像捕捉系统和相应的所捕捉图像。
图3A到3F示出了依照本发明的实施例的各个序列和折叠技术。
图4A到4E示出了依照本发明的实施例的各个编码系统。
图5A到5D示出了与依照图4A和4B的解码系统相关联的四种可能的结果拐角。
图6示出了依照本发明的实施例的所捕捉图像部分的旋转。
图7示出了结合图4A到4E的编码系统使用的旋转的各个角度。
图8示出了依照本发明的实施例用于确定所捕捉数组位置的过程。
图9示出了依照本发明的实施例用于确定所捕捉图像位置的方法。
图10示出了依照本发明的实施例用于确定所捕捉图像位置的另一个方法。
图11示出了依照现有技术在文档中编码空格的表示。
图12示出了依照本发明的实施例用于解码从所捕捉的图像中提取的比特的流程图。
图13示出了依照本发明的实施例对从所捕捉的图像中提取的比特进行比特选择。
图14示出了依照本发明的实施例用于解码从所捕捉的图像中提取的比特的一种装置。
具体实施例方式
本发明的各方面涉及确定所捕捉图像相对于较大图像的位置。此处所描述的位置确定方法和系统可与多功能笔结合使用。
为了方便读者,用小标题将下列描述分开。所述小标题包括术语、通用计算机、图像捕捉笔、数组编码、解码、纠错和位置确定。
术语笔—一种书写工具,可具有或不具有存储墨水的能力。在某些例子中,不具有墨水存储能力的触针可被用作依照本发明实施例的笔。
照相机—一种图像捕捉系统,可从纸张或其它媒质捕捉图像。
通用计算机图1是可用于实现本发明各个方面的常规通用数字计算环境的例子的功能性框图。在图1中,计算机100包括处理单元110、系统存储器120以及把包括系统存储器在内的各种系统组件耦合至处理单元110的系统总线130。系统总线130可能是若干总线结构类型中的任一种,包括存储器总线或存储器控制器、外围总线、以及使用多种总线体系结构的局部总线的任一种。系统存储器120包括只读存储器(ROM)140和随机存取存储器(RAM)150。
基本输入/输出系统160(BIOS)存储在ROM 140内,它包括如启动时帮助在计算机100内的元件间传输信息的基本例程。计算机100也包括用于从硬盘(未示出)读取或向其中写入的硬盘驱动器170、从可移动磁盘190读取或向其中写入的磁盘驱动器180、以及用于向诸如CD ROM或其它光学媒质这样的可移动光盘192读写的光盘驱动器191。硬盘驱动器170、磁盘驱动器180和光盘驱动器191分别通过硬盘驱动器接口192、磁盘驱动器接口193和光盘驱动器接口194连接到系统总线130。这些盘驱动器及其相关的计算机可读媒质为个人计算机100提供了对计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。本领域的技术人员可以理解,用于存储计算机可访问数据的其它类型的计算机可读媒质也可在示例性操作环境中使用,这些其它计算机可读媒质诸如磁带盒、闪存卡、数字视频盘、Bernoulli盒式磁带、随机存取存储器(RAM)、只读存储器(ROM)等等。
许多程序模块可以存储在硬盘驱动器170、磁盘190、光盘192、ROM 140或RAM 150上,包括操作系统195、一个或多个应用程序196、其它程序模块197和程序数据198。用户可以通过输入设备输入命令和信息到计算机100中,输入设备诸如键盘101和定位设备102。其它输入设备(未示出)可以包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备一般通过耦合到系统总线的串行端口接口106连接到处理单元110,但也可由其它接口连接,诸如并行端口、游戏端口或通用串行总线(USB)。此外,这些设备可以通过适当的接口(未示出)直接耦合到系统总线130。监视器107或其它类型的显示设备也可以通过诸如视频适配器108这样的接口连接到系统总线130。除监视器外,个人计算机一般包括诸如扬声器和打印机等其它外围输出设备(未示出)。在优选实施例中,为了数字地捕捉手画线输入,提供了笔数字化仪165和伴随的笔或触针166。虽然示出了笔数字化仪165和串行端口间的直接连接,然而实际上,笔数字化仪165可通过并行端口或本领域已知的其它接口和系统总线130而直接耦合到处理单元110。而且,虽然所示的数字化仪165离监视器107较远,但数字化仪165的可用输入区最好与监视器107的显示区域有共同的范围。此外,数字化仪165可被集成到监视器107内,或可作为叠加或附着于监视器107上的独立设备而存在。
计算机100可工作在使用到一个或多个诸如远程计算机109这样的远程计算机的逻辑连接的网络化环境内。远程计算机109可以是服务器、路由器、网络PC、对等设备或其它公共网络节点,并且一般包括与计算机100相关的许多或所有上述元件,然而图1中仅示出了存储器存储设备111。图1所述的逻辑连接包括局域网(LAN)112以及广域网(WAN)113。这种网络环境常见于办公室、企业范围的计算机网络、内联网以及因特网。
当用于LAN网络环境时,计算机100通过网络接口或适配器114连接到局域网112。当用于WAN网络环境时,个人计算机100一般包括调制解调器115或其它装置,用于在诸如因特网等广域网113上建立通信。调制解调器115可以是内置或外置的,它通过串行口接口106连接到系统总线130。在网络化环境中,所述与个人计算机100相关的程序模块或其中的一部分可存储在远程存储设备内。
可以理解,所示网络连接是说明性的,并且可以使用其它用于在计算机间建立通信链路的技术。假设存在诸如TCP/IP、以太网、FTP、HTTP、蓝牙、IEEE 802.11X等各种已知协议,系统可以工作在客户机—服务器配置中,以允许用户从基于web的服务器中检索网页。可以用各种常规网页浏览器的任一种来显示和操纵网页上的数据。
图像捕捉笔本发明的各方面包括将经编码的数据流置于表现该经编码的数据流的显示形式中。(例如,如将与图4B一起论述的,该经编码的数据流被用于创建图形图案。)所述显示形式可以是印刷纸张(或其它物理媒质),或可以是结合另一图像或另一组图像投影该经编码的数据流的显示器。例如,该经编码的数据流可以被表现为纸张上的物理图形图像或叠加在显示图像上的图形图像(例如,表示文件的文本),或可以是显示屏上的物理(不可修改)图形图像(这样,任何由笔捕捉的图像部分在显示屏上是可定位的)。
对所捕捉图像位置的确定可以被用于确定用户与纸张、媒质或显示屏交互的位置。在本发明的某些方面中,笔可以是在纸上书写的墨水笔。在其它的方面,笔可以是用户在计算机显示器表面书写的触针。在知道文档上经编码的图像或支持在计算机屏幕上显示的文档的情况下,任何交互可被提供回系统中。当笔或触针在文档上来回移动时,系统可以通过用笔或触针中的照相机反复地捕捉图像来跟踪由用户控制的触针的移动。该显示或印刷图像可以是与空白或内容丰富的纸张相关联的水印,或可以是与叠加在屏幕上或内建到屏幕中的显示图像或固定编码相关联的水印。
图2A和2B示出了具有照相机203的笔201的说明性例子。笔201包括可包括或不包括墨水贮液器的笔尖202。照相机203从表面207捕捉图像204。笔201还可包括如显示在虚线框206中的附加传感器和/或处理器。这些传感器和/或处理器206也可包含将信息发送到另一支笔201和/或个人计算机的能力(例如,通过蓝牙或其它无线协议)。
图2B示出了由照相机203所观看到的图像。在一个说明性例子中,照相机203的视图区(即,照相机图像传感器的分辨率)是32×32像素(其中N=32)。在该实施例中,所捕捉的图像(32像素×32像素)对应于由照相机203捕捉的表面平面图的大约5mm×5mm的区域。因此,图2B示出了32像素长×32像素宽的视图区。N的大小是可调整的,使得较大的N对应于较高的图像分辨率。同样地,虽然照相机203的视图区在这里为了说明性的目的而被显示为正方形,然而视图区可以包括其它本领域公知的形状。
由照相机203捕捉的图像可以被定义为图像帧序列{Ii},其中,Ii是由笔201在采样时间ti捕捉的。根据系统配置和性能要求,采样率可大可小。根据系统配置和性能要求,所捕捉图像帧的尺寸可大可小。
由照相机203捕捉的图像可以直接由处理系统使用,或可经过预过滤。所述预过滤可以发生在笔201内部,或发生在笔201外部(例如,在个人计算机中)。
图2B的图像尺寸是32×32像素。如果每个编码单元尺寸是3×3像素,那么所捕捉的经编码单元的数目将大约为100单元。如果编码单元尺寸是5×5像素,那么所捕捉的经编码单元的数目大约为36。
图2A也示出了图像平面209,来自位置204的图案的图像210在其上形成。接收自对象平面207上的图案的光由透镜208聚焦。透镜208可以是单透镜或由多部分组成的透镜系统,但为了简化起见在这里被显示为单透镜。图像捕捉传感器211捕捉图像210。
图像传感器211可以大到足以捕捉图像210。或者,图像传感器211可以大到足以捕捉笔尖202在位置212处的图像。作为参考,在位置212处的图像被称为可视笔尖。需要注意,由于笔尖、透镜208和图像传感器211的固定关系,对于图像传感器211的虚拟笔尖位置是固定的。
以下的转换FS→P将由照相机捕捉的图像的位置坐标转换为在纸上的实际图像中的位置坐标Lpaper=FS→P(LSensor)在书写过程中,笔尖和纸在同一平面上。因此,从虚拟笔尖到实际笔尖的转换也是FS→PLpentip=FS→P(Lvirtual-pentip)转换FS→P可以被估算为仿射变换。这简化为FS→P′=sxsinθycosθxsinθy-cosθysinθx,sxcosθycosθxsinθy-cosθysinθx,0sysinθxcosθxsinθy-cosθysinθx,sycosθxcosθxsinθy-cosθysinθx,00,0,1]]>作为FS→P的估算,其中θx、θy、sx和sy是在位置204处捕捉的图案的两个方位的旋转和比例。此外,我们可以通过将所捕捉的图像与纸上相应的真实图像进行匹配来精确化F′S→P。“精确化”意指通过一种被称为递归法的最优化算法,取得对转换F′S→P更为精确的估算。递归法将矩阵F′S-P作为初始值来处理。精确化的估算可以更精确地描述S和P之间的转换。
接着,我们可以通过校准来确定虚拟笔尖的位置。
我们将笔尖202放在纸上固定位置Lpentip。接着,我们倾斜该笔,使照相机203可以就不同的笔的姿势来捕捉一系列图像。对于每个捕捉的图像,我们可以获取转换FS→P。我们可以从这种转换获取虚拟笔尖Lvirtual-pentip的位置
Lvirtual-pentip=FP→S(Lpentip)其中,Lpentip被初始化为(0,0),并且FP→S=(FS→P)-1通过对从每个图像获取的Lvirtual-pentip求平均值,可以确定虚拟笔尖Lvirtual-pentip的位置。有了Lvirtual-pentip,我们可以取得对Lpentip更为准确的估算。在几次反复之后,可以确定虚拟笔尖Lvirtual-pentip的准确位置。
现在知道了虚拟笔尖Lvirtual-pentip的位置。我们也可以从所捕捉的图像中获取转换FS→P。最后,我们可以使用该信息来确定实际笔尖Lpentip的位置Lpentip=FS→P(Lvirtual-pentip)数组编码二维的数组可以通过折叠一维序列来构造。包含足够大量的比特的二维数组的任一部分可用于确定它在完整的二维数组中的位置。然而,会需要从一个捕捉的图像或一些捕捉的图像中确定位置。为了使所捕捉的图像与该二维数组中两个或多个位置相关联的可能性最小,可使用无重复序列来创建数组。所创建序列的一个特性是该序列不在长度(或窗口)n上重复。以下描述创建一维序列,接着将该序列折叠成数组。
序列的构造一数字序列可被用作编码系统的开始点。例如,一序列(也被称为m-序列)可被表示为在Fq域中的q-元素集。这里,q=pn,其中n≥1且p是质数。该序列或m-序列可以由多种不同的技术生成,这些技术包含但不限于多项式除法。使用多项式除法,序列可以被定义如下Rl(x)Pn(x)]]>其中Pn(x)是域Fq[x]中次数为n的本原多项式(具有qn个元素)。Rl(x)是域Fq[x]中次数为1的非零多项式(其中l<n)。该序列可以使用反复的过程用两步创建第一,将这两个多项式相除(得出域Fq里的一元素),第二,将余数乘以x。当输出开始重复时,计算停止。该过程可以使用线性反馈移位寄存器来实现,如关于计算机的IEEE学报43.5(IEEE Transactions on Computers 43.5)(1994年5月,第560-568页)中Douglas W.Clark和Lih-Jyh Weng的论文“Maximal andNear-Maximal Shift Register SequencesEfficient Event Counters and Easy DiscreteLogarithms”所提出的。在这个环境中,在序列的循环移位和多项式Rl(x)之间建立起一种关系改变Rl(x)只循环地移位该序列且每个循环移位对应于一多项式Rl(x)。所得序列的特性之一是,该序列具有qn-1的周期,且在一个周期内,宽度(或长度)n上,任一部分在序列中出现一次且只有一次。这被称作为“窗特性”。周期qn-1也被称为序列的长度,且n被称为序列的次数。
上述的过程只是可用于建立具有窗特性的序列的多种过程之一。
数组的构建可用于创建图像(其一部分可用照相机捕捉)的数组(或m-数组)是一维序列或m-序列的扩展。设A为周期(m1,m2)的一数组,即A(k+m1,l)=A(k,l+m2)=A(k,l)。当n1×n2窗口通过A的周期位移时,Fq上的所有非零n1×n2矩阵都出现一次且只有一次。该特性也被称为“窗特性”,因为每个窗口是唯一的。接着,窗口可被表示成周期为(m1,m2)数组(m1和m2为出现在数组中比特的水平和垂直数目)、阶数为(n1,n2)的数组。
可以通过折叠序列来构建二元数组(或m-数组)。一种方法是获取一序列,接着将它折叠成m1×m2的尺寸,其中数组的长度是L=m1×m2=2n-1。或者,我们可以从我们希望覆盖的预定尺寸的空间开始(例如,一页纸,30页纸或计算机监视器的尺寸),确定区域(m1×m2),接着使用该尺寸使得L≥m1×m2,其中L=2n-1。
可使用多种不同的折叠技术。例如图3A到3C示出了三种不同的序列。这些序列的每一种可被折叠成图3D所示的数组。这三种不同的折叠方法被显示为图3D中的重叠,以及图3E和3F中的光栅路径。我们在此采用图3D中所示的折叠方法。
为了创建如图3D所示的折叠方法,我们创建一长度为L,阶数为n的序列{ai}。接着,通过使该数组的每个比特如方程1所示地计算,从序列{ai}创建尺寸为m1×m2的数组{bkl},其中,gcd(m1,m2)=1,且L=m1×m2bkl=ai,其中,k=i mod(m1),l=i mod(m2),i=0,…,L-1(1)这种折叠方法或者可表示为将序列置于数组的对角线上,接着当达到边缘时,从对侧的边缘继续。
图4A示出了可被用于编码图3D的数组的示例编码技术。应该理解,可以使用其它的编码技术。例如,图11示出了一种可供选择的编码技术。
参见图4A,第一个比特401(例如,“1”)可由一列黑墨水表示。第二个比特402(例如,“0”)可由一行黑墨水表示。应该理解,任何颜色的墨水可被用于表示各种比特。对墨水颜色唯一的要求是它要提供与媒质背景的显著对比,使得图像捕捉系统可以辨认。图4A的比特可用单元的3×3矩阵表示。基于图像捕捉系统的尺寸和分辨率,矩阵的尺寸可以被更改为任何尺寸。图4C-4E中示出了比特0和1的交替表示。应该理解,图4A-4E的示例编码对1和0的表示可以不受影响地交换。图4C示出了以隔行排列的占据2行或列的比特表示。图4D示出了在行和列中以虚线的形式对像素的可选排列。最后,图4E示出了在行和列中以不规则间隔格式的像素表示(例如,两个黑点后接着一个白点)。
再参见图4A,如果一个比特由3×3的矩阵表示,且成像系统在3×3的区域中检测到一个黑的行和两个白的行,那么就检测到一个0(或是1)。如果检测到图像具有一个黑的列和两个白的列,那么就检测到一个1(或是0)。
这里使用一个以上像素或点来表示一个比特。使用单个的像素(或比特)来表示一个比特是易受到破坏的。灰尘、纸上的折痕、不平的表面等等造成了读出数据单元的单个比特表示的困难。但是,应该理解,可以使用不同的方法来图形地表示平面上的数组。图4C到4E中示出了一些方法。应该理解,也可以使用其它的方法。在图11中提出了一种方法仅使用空间—位移(space-shifted)的点。
比特流被用于创建图4B的图形图案403。图形图案403包括12行和18列。该行和列由被使用比特表示401和402转换为图形表示的比特流形成。图4B可被看作具有以下比特表示010101110110110010001010011101101100]]>解码当人们使用图2A的笔书写或将笔移动到接近已编码图案之处,照相机就捕捉图像。例如,当笔201压住纸张并且笔201在纸张上的文档上来回移动时,笔201会利用压力传感器。接着,处理图像以确定所捕捉图像对于经编码图像的完整表示的方向,并提取组成所捕捉图像的比特。
为了确定所捕捉图像对于整个编码区域的方向,我们会注意到并非图5A-5D显示的所有四个能想象得到的拐角会出现在图形图案403中。实际上,就正确的定位,图5A所示的拐角类型不会存在于图形图案403中。因此,缺少图5A所示的拐角类型的方向是正确的方向。
继续到图6,可分析由照相机601所捕捉的图像,并确定其方向,以使其可按照由图像601实际表示的位置来解释。首先,考察图像601以确定旋转图像所需要的角度θ,使得像素是水平和垂直对齐的。应该注意,可选的栅格对齐是可能的,包括将底层的栅格到非水平和垂直排列的旋转(例如,45度)。使用非水平和垂直对齐会提供从用户消除视觉上分心的可能的好处,因为用户往往在注意到其它图案之前注意到水平和垂直图案。为了简化起见,栅格的方向(水平的和垂直的,和对底层栅格的任何其它的旋转)被总称为预定义的栅格方向。
接着,分析图601,以确定缺少了哪个拐角。将图像601旋转至为解码做好准备的图像603所需的旋转量o被显示为o=(θ加旋转量{由缺少的拐角定义})。该旋转量由图7中的方程示出。再参见图6,角度θ最初由使像素达到像素的水平或垂直(或其它预定义的栅格方向)排列的布局来确定,且图像如602中所示的那样旋转。接着,执行分析以确定缺少的拐角,并将图像602旋转至图像603,以建立用于解码的图像。这里,图像被逆时针旋转了90度,使得图像603就具有了正确的方向并且可被用于解码。
应该理解,旋转角度θ可以在旋转图像601之前或之后应用,来解决缺少的拐角。也应该理解,考虑到所捕捉图像中的噪声,可能会存在所有的四个拐角。我们可以计算每种类型的拐角的数目,并选择数目最少的那种类型作为缺少的拐角类型。
最后,图像603中的代码被读出并与用于创建图像403的原始比特流进行相关。这种相关可以用多种方法实现。例如,可以使用递归法来执行,其中,恢复的比特流与原始比特流中的所有其它比特流片断作比较。第二,可在恢复的比特流和原始比特流之间执行统计分析,例如,通过使用两种比特流之间的汉明距离。应该理解,可以使用多种方法来确定原始比特流中恢复的比特流的位置。
一旦我们得到了恢复的比特,我们需要在原始数组中定位所捕捉的图像(例如,图4B中所显示的那个)。由于许多项目使得在整个数组中确定比特片段位置的过程复杂化。第一,实际要捕捉的比特可能是模糊的(例如,照相机可能捕捉手写的图像,这使得原始代码变得模糊)。第二,灰尘、折痕、反射等等也会在所捕捉的图像中引起误差。这些误差使得定位程序更加困难。在这点上,图像捕捉系统会需要用从图像中提取的非连续比特来运作。以下显示了用来自图像的非连续比特来运作的方法。
设序列(或m-序列)I对应于幂级数I(x)=1/Pn(x),其中n是m-序列的阶数,且所捕捉的图像包含K比特的Ib=(b0b1b2…bK-1)t,其中K≥n,且上标t表示矩阵或向量的转置。K比特的位置s正好是I的循环位移的次数,使得b0被位移至序列的开始处。那么该位移序列R对应于幂级数变量xs/Pn(x),或R=Ts(I),其中T是循环位移算子。我们间接地得出该s。多项式模数Pn(x)形成一个域。确保xs≡r0+r1x+…rn-1xn-1mod(Pn(x))。因此,我们可得出(r0,r1,…,rn-1),接着求出s。
关系xs≡r0+r1x+…rn-1xn-1mod(Pn(x))意味着R=r0+r1T(I)+…+rn-1Tn-1(I)。写成二元线性方程,就成为R=rtA(2)其中r=(r0r1r2…rn-1)t,且A=(I T(I)…Tn-1(I))t,它由I从0-位移到(n-1)-位移的循环位移组成。现在,在R中只有稀疏的K比特可用来解出r。设R中bi和b0之间的下标差为ki,i=1,2,…,k-1,那么R的第一和第(ki+1)个元素(i=1,2,…,k-1)正好是b0,b1,…,bk-1。通过选择A的第一和第(ki+1)列(i=1,2,…,k-1),形成了以下的二元线性方程bt=rtM (3)其中,M是A的n×K子矩阵。
如果b是无误差的,则r的解可被表示为rt=b~tM~-1---(4)]]>其中 是M的非退化n×n子矩阵,且 是b的相应的子向量。
已知r的情况下,我们可使用Pohlig-Hellman-Silver算法,如关于计算机的IEEE学报43.5(IEEE Transactions on Computers 43.5)(1994年5月,第560-568页)中Douglas W.Clark和Lih-Jyh Weng的论文“Maximal and Near-Maximal ShiftRegister SequencesEfficient Event Counters and Easy Discrete Logarithms”所提及的,来解出s,使得xs≡r0+r1x+…rn-1xn-1mod(Pn(x))。
因为矩阵A(其尺寸为n×L,其中L=2n-1)可能会非常大,我们应避免存储整个矩阵A。实际上,如我们在上述过程中所见的,给定下标差为ki的提取的比特,只有A的第一和第(ki+1)列是和计算相关的。给定所捕捉图像的尺寸,对ki的这种选择是相当有限的。因此,只需要保存那些在计算中涉及的列。这种列的总数远小于L(其中L=2n-1是m-序列的长度)。
纠错如果在b中存在误差,那么r的解法变得更为复杂。因为与所捕捉的比特相关联的矩阵M会在各个捕捉的图像之间变化,因此不能轻易地应用传统的带有纠错的解码方法。
我们采用一种随机的方法。假设b中误差比特的数目ne与K相比是相对小的,那么从b的K比特中选择出正确的n比特,且M的相应子矩阵 为非退化的可能性是高的。
当所选择的这n比特都正确时,bt和rtM之间的汉明距离,或与r相关联的误差比特的数目,应该是最小的,其中r通过方程(4)来计算。重复几次该过程,可能可以标识出可推出最小误差比特的正确的r。
如果只有一个r与最小误差比特数相关联,那么就将它作为正确的解。否则,如果有一个以上r与最小误差比特数相关联,则ne超过由M生成的代码的纠错能力的可能性是高的,且解码过程失败。接着,系统会移到下一个捕捉的图像。在另一个实现中,会考虑关于该笔的前一位置的信息。即,对于每个所捕捉的图像,可标识下一次会期望该笔的目的区域。例如,如果用户在照相机的两次图像捕捉之间没有提起笔,那么由第二图像捕捉确定的笔的位置不应该离第一位置太远。接着可以检查与最小误差比特数目相关联的每一r,来看由r计算所得的位置s是否满足局部约束,即,该位置是否在规定的目的区域之内。
如果位置s满足局部约束,就返回数组中所提取比特的X、Y位置。如果不满足,解码过程就失败。
图8描述了可被用于确定所捕捉的图像在序列(或m-序列)中的位置的过程。第一,在步骤801中,接收到涉及所捕捉图像的数据流。在步骤802中,从A提取相应的列,并构建矩阵M。
在步骤803中,随机地从矩阵M中选择n个独立列向量,并且通过解方程(4)来确定向量r。在步骤804中执行该过程Q次(例如,100次)。对循环次数的确定在循环次数计算一节中讨论。
在步骤805中,r根据其相关联的误差比特数目来排序。可以使用本领域公知的多种排序算法来完成这个排序。例如,可使用一选择排序算法。当数目Q不大时,选择排序算法是有利的。然而,如果Q变大,可使用可更有效地处理较大项目数目的其它排序算法(例如,合并分类)。
接着,系统在步骤806中通过检查是否有多个r与最小误差比特数相关联,来确定是否成功地执行了纠错。如果是,在步骤809中返回误差,指示该解码过程失败。如果不是,在步骤807中计算序列(或m-序列)中被提取的比特的位置s,例如,通过使用Pohig-Hellman-Silver算法。
接着,计算数组中(X,Y)位置x=s mod m1且y=s mod m2,并在步骤808中返回结果。
位置确定图9示出了用于确定笔尖位置的过程。输入是由照相机捕捉的图像,且输出可以是笔尖的位置坐标。同样地,输出可以包括(或不包括)其它信息,诸如所捕捉图像的旋转角度。
在步骤901中,从照相机接收到图像。接着,可在步骤902中可任选地预处理接收到的图像(如步骤902的虚线框中所示),以调整浅色和深色像素之间的对比度等等。
接着,在步骤903中,分析该图像以确定其中的比特流。
接着,在步骤904中,多次从所述比特流中随机地选择n比特,并且确定接收到的比特流在原始序列(或m-序列)中的位置。
最后,一旦在步骤904中确定了所捕捉图像的位置,可在步骤905中确定笔尖的位置。
图10给出了关于步骤903和904更多的细节,并且示出了在捕捉的图像中提取比特流的方法。第一,在步骤1001中从照相机接收到图像。接着,该图像在步骤1002中可任选地经历图像预处理(如步骤1002的虚线框所示)。在步骤1003中提取该图案。这里,可提取不同行上的像素以找出该图案的方向和角度θ。
接着,在步骤1004中分析接收到的图像,以确定底层的网格线。如果在步骤1005中找到了网格线,那么就在步骤1006中从该图案中提取代码。接着在步骤1007中解码该代码,并且在步骤1008中确定笔尖的位置。如果在步骤1005中未找到网格线,那么在步骤1009中返回出错。
增强的解码和纠错算法概述采用如图12所示的本发明的实施例,给定从所捕捉的图像中提取的比特1201(对应于所捕捉的数组)和目的区域,m-数组解码和纠错过程的变体解码X、Y位置。图12示出了该增强方法的过程1200的流程图。过程1200包括两个组成部分1251和1253。
·解码一次。组成部分1251包括三部分。
随机比特选择随机地选择被提取比特1201的子集(步骤1203) 解码该子集(步骤1205) 使用局部约束确定X、Y位置(步骤1209)·使用智能比特选择来解码。组成部分1253包括四部分。
智能比特选择选择被提取比特的另一个子集(步骤1217) 解码该子集(步骤1219) 调整步骤1217和步骤1219反复的次数(循环次数)(步骤1221) 使用局部约束确定X、Y位置(步骤1225)本发明的实施例利用了一种谨慎策略,依照局部约束来选择比特、调整循环次数和确定X、Y位置(位置坐标),所述局部约束被提供给过程1200。在组成部分1251和1253中,步骤1205和1219(“解码一次”)都使用方程(4)来计算r。
设为被解码的比特,即t=rtM (5)b和之间的差别是与r相关联的误差比特。
图12示出了依照本发明的实施例,用于解码从所捕捉的图像中提取的比特1201的过程1200的流程图。程序1200包含组成部分1251和1253。组成部分1251取得与所捕捉的图像(对应于所捕捉的数组)相关联的提取比特1201(包含K比特)。在步骤1203中,从提取比特1201中随机地选择n比特(其中n是m-数组的阶数)。在步骤1205中,过程1200解码一次并计算r。在步骤1207中,过程1200确定对b是否检测到误差比特。如果步骤1207确定没有误差比特,则在步骤1209中确定所捕捉数组位置的X、Y坐标。对于步骤1211,如果X、Y坐标满足局部约束,即,坐标在目的区域内,则过程1200在步骤1213中提供X、Y位置(诸如给另一个过程或用户接口)。否则,步骤1215提供失败指示。
如果步骤1207检测到b中的误差比特,为了在误差比特存在的情况下解码,就执行组成部分1253。步骤1217从所提取的比特1201中选择另一组n比特(它与步骤1203中选择的n比特至少相差一个比特)。步骤1221和1223确定为了解码所提取的比特所需要反复的次数(循环次数)。步骤1225通过测试在步骤1219中获取的哪些候选者满足局部约束来确定所捕捉数组的位置。将更详细地讨论步骤1217-1225。
智能比特选择步骤1203从所提取比特1201(具有K个比特)中随机地选择n比特,并求出r1。可使用方程(5)来计算被解码的比特。设I1={k∈{1,2,…,K}|bk=k},I1={k∈{1,2,…,K}|bk≠k},其中k是的第k个比特,B1={bk|k∈I1}且B1={bk|k∈I1},即,B1是解码结果与原始比特相同的比特,且B1是解码结果与原始比特不同的比特,I1和I1是这些比特相应的下标。应该理解,当从B1中选择任意n比特时,将获得相同的r1。因此,如果不仔细选择下n个比特,所选择的比特可能是B1的子集,这会导致获得相同的r1。
为了防止这样的情况,步骤1217依照以下的过程选择下n个比特1.从B11303中选择至少一个比特,其余的比特随机地从B11301和B11303中选出,如对应于比特排列1351的图13所示。接着过程1200通过计算b^2t=r2tM2]]>得出r2,并找出B21305、1309和B21307、1311。
2.重复步骤1。当对每个Bi(i=1,2,3…,x-1,其中x是当前循环数目),选择下n个比特时,至少有一个比特是从Bi中选出的。当没有这样的比特子集可被选择或达到循环次数时,该反复终止。
循环次数计算使用纠错组成部分1253,在每次循环后调整所需反复次数(循环次数)。由期望的误差率来确定循环次数。其中并非所有被选择的n比特都是正确的期望误差率pe是pe=(1-CK-nenCKn)lt≈-e-lt(K-nK)ne---(6)]]>其中lt表示循环次数,它由一个常数初始化,K是从所捕捉数组中提取的比特的数目,ne表示在过程1200的反复期间出现的最小数目的误差比特,n是m-数组的阶数,且CKn是组合的数目,其中n比特是从K比特中选取的。
在该实施例中,我们希望pe小于e-5=0.0067。与(6)结合,我们得到lti=min(lti-1,5(K-nK)ne+1)---(7)]]>调整循环次数会显著地减少纠错所需的过程1253反复的次数。
使用局部约束来确定X、Y位置在步骤1209和1225中,被解码的位置应该在目的区域内。所述目的区域是算法的输入,且根据不同的应用,它可以是各种尺寸和位置,或简单地是整个m-数组。一般地,它可以由应用预知。例如,如果已确定先前的位置,考虑到书写速度,当前笔尖的目的区域应该接近先前的位置。然而,如果笔被提起,那么它的下一个位置可以是任何地方。因此,在这种情况下,目的区域应该是整个m-数组。由以下步骤确定正确的X、Y位置。
在步骤1224中,过程1200选择ri,其相应的误差比特的数目少于Ne=log10(3lt)log10(K-nK)×log10(10lr)---(8)]]>其中lt是实际的循环次数,且lr表示局部约束率,由以下计算 其中L是m-数组的长度。
步骤1224以误差比特数目升序来对ri排序。接着,步骤1225、1211和1212找出第一ri,在该ri中相应的X、Y位置在目的区域内。最后,步骤1225、1211和1212返回X、Y位置作为结果(经由步骤1213),或返回解码程序失败的指示(经由步骤1215)。
增强的解码和纠错程序的说明性例子一说明性例子说明了如由组成部分1251和1253所执行的过程1200。假设n=3,K=5,I=(I0I1…I6)t是阶数n=3的m-序列。那么A=I0I1I2I3I4I5I6I6I0I1I2I3I4I5I5I6I0I1I2I3I4---(10)]]>同样假设所提取比特b=(b0b1b2b3b4)t,其中K=5,实际上是m-序列的第s、(s+1)、(s+3)、(s+4)和(s+6)比特(这些数目实际上是m-数组长度L=2n-1=23-1=7的模数)。因此M=I0I1I3I4I6I6I0I2I3I5I5I6I1I2I4---(11)]]>它是由A的第0、1、3、4和6列组成。唯一地确定m-数组中b0的X、Y位置的数字s可在解出r=(r0r1r2)t后计算出,所述r=(r0r1r2)t被期望实现bt=rtM。由于b中可能的误差比特,可能不能完全地实现bt=rtM。
过程1200利用以下的程序。从b中随机地选择n=3比特,为b~1t=b0b1b2.]]>求出r1b~1t=r1tM~1---(12)]]>其中 由M的第0、1和2列组成。(注意, 是n×n矩阵,且r1t是1×n向量,这样 是所选比特的1×n向量。)接着,计算被解码的比特1t=r1tM (13)其中M是n×K矩阵,且r1t是1×n向量,使得1t是1×K向量。如果1等于b,即,没有检测到误差,那么步骤1209确定X、Y位置,且步骤1211确定解码的位置是否在目的区域内。如果是,解码是成功的,就执行步骤1213。否则,如图1215所示,解码失败。如果1不同于b,那么在b中检测到误差比特,就执行组成部分1253。步骤1217确定集合B1,为{b0b1b2b3},其中解码的比特与原始比特相同。因此,B1={b4}(对应于图13中的比特排列1351)。循环次数(lt)被初始化为一常量,例如,100,根据应用,它是可变化的。注意,对应于r1的误差比特数等于1。接着,步骤1221根据方程(7)来更新循环次数(lt),lt1=min(lt,13)=13。
步骤1217接着从b选择另外的n=3比特。如果这些比特都属于B1,即{b0b2b3},那么步骤1219将再次确定r1。为了防止这样的重复,步骤1217会从B1选择(举例而言)一个比特{b4},并保留来自B1的两个比特{b0b1}。
所选择的三个比特形成了b~2t=b0b1b4.]]>步骤1219求出r2b~2t=r2tM~2---(14)]]>其中 由M的第0、1和4列组成。
步骤1219计算b~2t=r2tM.]]>找出这样的B2,例如{b0b1b4},使得2和b是相同的。那么B2={b2b3}(对应于图13中的比特排列1353)。步骤1221根据方程(7)更新循环次数(lt)。注意与r2相关联的误差比特的数目等于2。代入(7),lt2=min(lt1,32)=13。
因为需要执行另一反复,步骤1217从b中选择另外的n=3比特。所选择的比特应该不都属于B1或B2。因此,步骤1217,举例而言,可从B1选择一个比特{b4},从B2选择一个比特{b2}并保留一个比特{b0}。
继续所述的对r求解、比特选择和循环次数调整,直至我们不能选出任何新的n=3比特,它们不完全属于任何先前的Bi,或达到了最高循环次数lt。
假设过程1200计算5个ri(i=1,2,3,4,5),其误差比特的数目分别对应于1、2、4、3、2。(实际上,对于这个例子,误差比特数目不能超过2,但说明性例子示出了更大数目的误差比特以说明该算法)。举例而言,步骤1224选择ri的例如r1,r2,r4,r5,其对应的误差比特数低于(8)中所示的Ne。
步骤1224以所选择向量r1,r2,r4,r5误差比特数的升序来对它们排序r1,r2,r5,r4。步骤1225、1211和1212从已排序的候选列表中找出第一向量r,例如r5,其对应的位置在目的区域以内。接着,步骤1213输出对应的位置。如果没有一个位置是在目的区域以内的,解码程序失败,如步骤1215所示的。
装置图14示出了依照本发明的实施例对从所捕捉的数组提取的比特1201进行解码的装置1400。装置1400包含比特选择模块1401、解码模块1403、位置确定模块1405、输入接口1407和输出接口1409。在这个实施例中,接口1407会从不同的来源接收提取的比特1201,所述的来源包括支持照相机203的模块(如图2A中所示)。比特选择模块1401依照步骤1203和1217从提取的比特中选择n比特。解码模块1403依照步骤1204和1219解码所选择的比特(如由比特选择模块1401选择的,从K个提取比特中选取的n比特),以确定检测到的比特误差和相应的向量ri。解码模块1403将确定的向量ri提交给位置确定模块1405。位置确定模块1405依照步骤1209和1225确定所捕捉数组的X、Y坐标。位置确定模块1405将结果提交给输出接口1409,如果成功,所述的结果包括X、Y坐标,如果不成功,所述的结果为一失败指示。输出接口1409会将结果提交给另一模块,所述另一模块可执行进一步的处理或可显示该结果。
装置1400可以设想不同形式的实现,包括利用计算机可读媒质的模块和利用诸如专用集成电路(ASIC)等专门硬件的模块。
本领域的技术人员会理解,可以利用带有包含用于控制计算机系统的指令的相关联的计算机可读媒质的计算机系统来实现这里所揭示的示例性实施例。所述计算机系统会包括至少一台计算机,诸如微处理器、数字信号处理器和相关联的外围电子线路。
虽然使用所附的权利要求来定义本发明,但这些权利要求是说明性的,本发明意在包含这里所描述的元素和步骤的任何组合或子组合。因此,有许多可替换组合可用于定义本发明,它们包含来自本说明书的一个或多个元素的各种组合和子组合,包括描述、权利要求和附图。按照本发明,本发明各方面的可替换组合,无论是单独或与这里所定义的一个或多个元素或步骤相组合,可被用作本发明的修改和替换,或作为本发明的一部分,这对于相关领域的技术人员是显而易见的。这里所包含的对本发明的书面描述意在包括所有这样的修改和替换。
权利要求
1.一种用于确定所捕捉数组位置的方法,其特征在于,所述的方法包括(A)获取与所捕捉数组相关联的所提取的比特;(B)如果不存在误差比特,则确定位置坐标;以及(C)如果存在误差比特,则通过非重复比特选择,从所提取的比特的一部分确定所述位置坐标,其中,所述的位置坐标符合一局部约束。
2.如权利要求1所述的方法,其特征在于,所述(B)包含(i)从所提取的比特中选择第一子集;(ii)解码所述第一子集;以及(iii)响应于(ii),如果没有检测到误差比特,确定所捕捉数组的位置坐标。
3.如权利要求2所述的方法,其特征在于,所述(ii)利用第一矩阵方程b~t=rtM~,]]>其中 是M的子矩阵,来确定向量r。
4.如权利要求3所述的方法,其特征在于,所述(ii)还利用第二矩阵方程t=rtM来确定经解码的比特。
5.如权利要求2所述的方法,其特征在于,所述(iii)包含(1)将经解码的比特与所提取的比特作比较。
6.如权利要求1所述的方法,其特征在于,所述(C)包含(i)如果检测到误差比特,则从所提取的比特中选一择不同的子集,其中,所述不同子集中至少一个比特是来自先前的误差比特集;(ii)解码所述不同子集的相应比特;(iii)响应于(ii),确定是否应执行另一解码反复;(iv)如果应执行另一解码反复,则从所提取的比特中选择另一子集并重复(ii);以及(v)如果不应执行另一解码反复,则确定所捕捉数组的位置坐标。
7.如权利要求6所述的方法,其特征在于,由t=rtM计算所得的比特和所提取的比特是不同的。
8.如权利要求2所述的方法,其特征在于,所述(B)还包含(iv)验证所述位置坐标在一目的区域内。9.如权利要求6所述的方法,其特征在于,所述(C)还包含(vi)验证所述位置坐标在一目的区域内。
10.如权利要求2所述的方法,其特征在于,所述(i)包含(1)随机地从所提取的比特中选择所述第一子集的组成比特。
11.如权利要求6所述的方法,其特征在于,所述(i)包含(1)以根据经解码的比特是否在所述方法的前一次反复中满足矩阵方程bt=rtM的方式,从所提取的比特中选择所述不同子集的相应比特;以及(2)计算从t=rtM计算出的比特和所提取的比特之间有多少不同比特。
12.如权利要求6所述的方法,其特征在于,所述(v)包含(1)如果确定的向量对应于低于一阀值的误差比特数,则选择所确定的向量ri;以及(2)响应于(1),根据相应的误差比特数的升序对多个所确定的向量排序。
13.如权利要求12所述的方法,其特征在于,所述(v)还包含(3)响应于(2),找出对应于一目的区域内所述位置坐标的第一解。
14.如权利要求13所述的方法,其特征在于,所述(v)还包含(4)如果没有位于所述目的区域内的解,则指示解码失败。
15.如权利要求6所述的方法,其特征在于,所述(iii)包含(1)根据误差比特的期望误差率,调整所述方法所需的反复次数。
16.如权利要求6所述的方法,其特征在于,所述(ii)包含(1)通过利用第一矩阵方程b~t=rtM~,]]>确定向量r;(2)通过利用第二矩阵方程t=rtM,计算经编码的比特,其中,所述向量由(1)确定;以及(3)将经解码的比特和所提取的比特作比较,以找出若干误差比特。
17.一种具有用于执行权利要求1所述的方法的计算机可执行指令的计算机可读媒质。
18.一种具有用于执行权利要求2所述的方法的计算机可执行指令的计算机可读媒质。
19.一种具有用于执行权利要求6所述的方法的计算机可执行指令的计算机可读媒质。
20.一种确定所捕捉数组的位置坐标的装置,其特征在于,它包含(a)一比特选择模块,它应用一智能策略来选择比特的子集,所述比特子集含有来自先前误差比特集的至少一个比特,所述子集从对应于所捕捉数组的所提取比特中选择;(b)一解码模块,它处理所述比特的子集,以确定关于所提取比特的误差信息,并且从所述误差信息确定是否需要另一解码的反复;以及(c)一位置确定模块,它处理所述误差信息,以确定所捕捉数组的位置坐标,其中,所述位置坐标在一目的区域内。
21.如权利要求20所述的装置,其特征在于,它还包含一输入接口,它接收所提取的比特,并将所提取的比特提交给所述比特选择模块用于处理。
22.如权利要求20所述的装置,其特征在于,所述的解码模块为第i次反复计算位置矩阵ri,并通过将根据t=rtM所确定的经解码比特与所提取比特作比较来确定误差比特。
23.如权利要求20所述的装置,其特征在于,它还包含一输出接口,它提供所捕捉数组的位置坐标,其中,所述位置坐标由所述位置确定模块确定。
24.一种用于确定所捕捉数组的位置坐标的方法,其特征在于,所述方法包含(A)接收与所捕捉数组相关联的所提取的比特;(B)从所提取的比特中选择第一比特子集;(C)解码所述第一比特子集;(D)如果没有检测到误差比特,确定所捕捉数组的位置坐标,所述位置坐标在一目的区域内;(E)从所提取的比特中选择一不同的子集,其中,所述不同子集的至少一个比特不满足矩阵方程t=rtM;(F)解码所述不同子集的所选择的比特;(G)调整执行(F)的反复次数,所述次数按照(F)的结果来调整;(H)如果应当执行另一解码反复,重复(E)-(G);以及(I)如果不应执行另一解码反复,确定所捕捉数组的位置坐标,其中,所述位置坐标在所述目的区域内。
全文摘要
描述了一种用于从较大的图像中确定所捕捉数组位置的过程和装置。一非重复序列可以被折叠成一非重复数组,其中,所述数组对于给定尺寸的每个邻近窗口都是唯一的。会捕捉到邻近窗口数组的一部分,并解码对应于所捕捉数组的所提取比特的子集来标识误差比特。通过进一步处理所述经解码的比特,以在非重复数组中确定所捕捉数组的位置。
文档编号G06T7/40GK1744104SQ200510004179
公开日2006年3月8日 申请日期2005年1月6日 优先权日2004年1月6日
发明者王坚, 王强, 马晓旭, 李越, 林宙辰 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1