2-d阵列中的译码和差错校正的制作方法

文档序号:6559584阅读:155来源:国知局
专利名称:2-d阵列中的译码和差错校正的制作方法
技术领域
本发明涉及使用数字笔和介质交互作用。本发明尤其涉及在和一个或多个表面交互作用时确定数字笔的位置。
背景计算机用户习惯于使用鼠标和键盘作为和个人计算机交互作用的方法。虽然个人计算机与书面文件相比提供了大量便利,但多数用户继续使用打印的纸从事某些活动。一些这种活动包括阅读和标注书面文件。在标注的情况下,由于是由用户将标注记录到文件上,所以打印的文件变得更加重要。但是,给打印的文件标注的一个困难在于,之后需要将标注再次输入回文件的电子形式中。这要求原始用户或另一个用户辛苦地读完标注并将它们输入个人计算机中。在某些情况下,用户扫描入标注和原文,从而产生新的文件。这些反复步骤使打印的文件和文件的电子版本之间的交互作用变得在重复的基础上很难处理。此外,扫描入的图像常常是不能修改的。并没有办法将标注从原文中分开。这使得使用标注变得很麻烦。因此,需要一种处理标注的改进方法。
获取手写信息的一种技术是通过使用在书写时可以确定位置的笔。提供这种功能的一种笔是Anoto公司的Anoto笔。这种笔通过使用照相机来获取纸上用预定图形编码的图像。图像图形的一个实例如

图11所示。Anoto笔(Anoto公司生产)用该图形来确定纸上笔的位置。但是,不清楚利用Anoto笔所采用的系统能使位置的确定多么有效。为了有效地确定获取的图像位置,需要一种提供所获取的图像的有效译码的系统。
发明概述本发明的方面提供了至少一个上述问题的解决方法,从而能将所观察的图像上的一个或多个位置定位。该所观察的图像可以是在打印的图像上或可以是显示的计算机图像上的图示。本发明的方面中包括允许有效的译码所捕获的图像的译码处理过程,它被用来有效地确定图像的位置。通过附图和相关描述可以理解本发明的这些或其它方面。
附图概述结合附图可以更好地理解本发明的上述概述,以及以下较佳实施例的详细描述,这些附图作为实例,但不作为本发明的限制。
图1示出可以结合本发明的实施例使用的计算机的一般描述。
图2A和2B示出根据本发明的实施例的图像获取系统和相应的所获取图像。
图3A至3F示出根据本发明的实施例的各种序列和折叠技术。
图4A至4E示出根据本发明的实施例的各种编码系统。
图5A至5D示出和根据图4A和4B的编码系统相关的4种可能的合成边角(resultant corner)。
图6示出根据本发明的实施例的所获取的图像部分的旋转。
图7示出结合图4A至4E的编码系统使用的各种旋转角度。
图8示出根据本发明的实施例的用于确定所获取阵列的位置的处理过程。
图9示出根据本发明的实施例的用于确定所获取图像的位置的方法。
图10示出根据本发明的实施例的用于确定所获取图像的位置的另一个方法。
图11示出文件中的编码空间的常规表示。
详细描述本发明的方面涉及确定相对更大的图像的所获取图像位置。这里描述的位置确定方法和系统可以结合多功能笔使用。
为便于读者阅读,用副标题隔开以下的描述。这些副标题包括术语、常规用途的计算机、图像获取笔、阵列的编码、译码、差错校正和位置确定。
术语笔-可以或不可以包括储存墨水的任何书写工具。在某些实例中,不含墨水的触笔可以用作根据本发明实施例的笔。
照相机-可以从纸或任何其它的介质获取图像的图像获取系统。
常规用途的计算机图1是可以用来实现本发明的各方面的常规用途数字计算机环境实例的原理框图。图1中,计算机100包括处理单元110、系统存储器120和将包括系统存储器120的各种系统部件连接到处理单元110的系统总线130。系统总线130可能是多种类型总线结构的任一种,包括存储器总线或存储器控制器、外围设备总线、及使用各种总线结构的任一种的局部总线。系统存储器120包括只读存储器(ROM)140和随机存取存储器(RAM)150。
基本输入/输出系统160(BIOS),包括在ROM140中存储的有助于在诸如在启动期间,计算机100内的元件之间传送信息的基本程序(routine)。计算机100还包括用于写入硬盘或从中读出(未示出)的硬盘驱动器170、用于写入可移动磁盘190或从中读出的磁盘驱动器180,和用于写入诸如CD ROM或其它光学介质的可移动光盘192或从中读出的光盘驱动器191。硬盘驱动器170、磁盘驱动器180和光盘驱动器191通过硬盘驱动器接口192、磁盘驱动器接口193和光盘驱动器接口194分别连接到系统总线130。这些驱动器和其相关的计算机可读介质提供了用于个人计算机100的计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。本技术领域内的熟练的技术人员将理解,可以存储由计算机访问的数据的其它类型计算机可读介质,诸如磁带盒、闪存卡、数字视频磁盘、伯努力盒式磁带、随机存取存储器(RAM)、只读存储器(ROM)等等,还可以用于实例操作环境中。
大量的程序模块可以存储在硬盘驱动器170、磁盘190、光盘192、ROM140或RAM150上,这些程序模块包括操作系统195、一个或多个应用程序196、其它的程序模块197和程序数据198。用户可以通过诸如键盘101和定位设备102将命令和信息输入计算机100。其它的输入设备(未示出)可以包括麦克风、操纵杆、游戏垫、卫星碟(satellite dish)、扫描仪等等。这些和其它输入设备常常通过和系统总线连接的串行口接口106连接到处理单元110,但也可以由其它接口连接,诸如并行口、游戏口或通用串行总线(USB)。此外,这些装置可以通过适当的接口(未示出)直接连接到系统总线。监视器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等等,则系统可以以客户机-服务器结构工作来允许用户从基于网络的服务器检索网页。可以使用任何常规的网络浏览器来显示和处理网页上的数据。
图像获取笔本发明的方面包括以显示的格式放置编码的数据流。该显示的格式可以是打印的纸(或其它物理介质)或可以是放映结合了其它图像或图像组的编码数据流的显示器。例如,编码数据流可以表现为纸上的物理的图形图像或显示器屏幕上的覆盖所显示的图像的图形图像,或可以是显示器屏幕上的物理的(不能修改)图像图像(因此由笔获取的任何图像部分在显示器屏幕上是可以定位的)。
所获取的图像位置的确定可以用于确定用户和纸、介质或显示器屏幕交互作用的位置。在本发明的某些方面中,笔可以是在纸上书写的墨水笔。在其它方面,笔可以是用户用来在计算机显示器表面上书写的触笔。在已知文件上的编码图像或支持计算机屏幕上显示器的文件时,任何的交互作用可以提供回系统。通过重复地获取照相机的位置,系统可以追踪由用户控制的触笔的移动。显示的或打印的图像可以是和空白的或内容丰富的纸相关的水印或可以是和显示的图像或覆盖屏幕或构建于屏幕内的固定编码相关的水印。
图2A和2B示出具有照相机203的笔201的说明性实例。笔201包括可以包含或不包含墨水容器的笔尖202。照相机203从表面207获取图像204。笔201还可以包括另外的传感器和/或处理器,如虚线框206所表示的。这些传感器和/或处理器206也可以包含将信息(例如,通过蓝牙或其它无线协议)传送到其它笔201和/或个人计算机的能力。
图2B表示由照相机203所观察的图像。在一个说明性的实例中,照相机203的视场为32×32像素(其中N=32)。因此,图2B示出的32像素长、32像素宽的视场。N的大小可以根据所需的图像分辨率程度来调整的。虽然为了便于说明将此处的照相机203的视场示为正方形,但该视场还包含本技术领域中已知的其它形状。
从照相机203到笔201的输入可以定义为一组图像帧{Ii},i=1,2…,A,其中Ii由笔201在采样时间ti时获取。采样率可以是固定的或可以根据文件的大小变化的。所捕获的图像帧的大小可大可小,这取决于文件的大小和所需的精确度。同样,照相机图像大小可以根据所查找的文件的大小确定。
由照相机203获取的图像可以直接由处理系统使用或可以进行预过滤。该预过滤可以在笔201内进行或可以在笔201之外进行(例如,在个人计算机内)。
图2B的图像大小为32×32像素。如果每个编码单元的大小为3×3像素,则所获取的编码单元数约为100个单元。如果编码单元的大小为5×5,则所获取的编码单元数约为36个。
图2A还示出了图像平面209,在平面209上形成来自位置204的图形的图像210。从目标平面207上的图形接收到的光由透镜208聚焦。透镜208可以是单个透镜或多部分的透镜系统,但这里为了简单只表示为单个透镜。图像获取传感器211获取图像210。
图像传感器211可以大到足以获取图像210。可供选择地,图像传感器211可以大到足以在位置212获取笔尖202的图像。作为参考,在位置212的图像被称作虚拟笔尖(virtual pen tip)。注意到相对图像传感器211的虚拟笔尖位置是固定的,因为笔尖、透镜208和图像传感器211之间的关系是恒定的。因为变换是从虚拟笔尖212的位置(由Lvirtual-pentip表示)到实际笔尖202的位置(由Lpentip表示),所以可以确定相对所获取的图像210的实际笔尖的位置。
以下的变换FS→P将由照相机获取的图像变换到纸上的实际图像Lpaper=FS→P(Lsensor)在书写期间,笔尖和纸在同一平面上。因此,从虚拟笔尖到实际笔尖的变换也是FS→PLpentip=FS→P(Lvirtual-pentip)变换FS→P可以被称作透视变换。这简化为F′S→P=sxcosθ,sysinθ,0-sxsinθ,sycosθ,00,0,1]]>来作为FS→P的估计,其中θ、sx和sy是在位置204获取的图形的旋转和两个方向上的伸缩比例。此外,可以通过将获取的图像和纸上相应的背景图像相匹配来将F’S→P的提炼为FS→P。“提炼”意味着通过一种称为递归法的优化算法得到更精确的透视矩阵FS→P(8个参数)。该递归法将矩阵F’S→P作为初始值。FS→P比F’S→P更精确地描述S和P之间的变换。
接着,可以通过校准确定虚拟笔尖的位置。
将笔尖202放置在纸上的已知位置Lpentip。接着,使笔倾斜,使照相机203能获取不同的笔姿态的一组图像。对于所获取的每个图像。可以得到变换FS→P。从该变换,可以得到笔尖的虚拟图像的位置Lvirtual-pentipLvirtual-pentip=FP→S(Lpentip)以及,FP→S=1/FS→P通过对从每个图像得到的Lvirtual-pentip取平均,可以确定虚拟笔尖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)---(1)]]>其中Pn(x)是域Fq[x](具有q个元素)中n次的本原多项式(primitivepolynomial)。Rl(x)是域Fq[x]中的l次(其中l<n)的非零多项式。序列可以用迭代过程产生,它使用两个步骤第一,将两个多项式相除(得到域Fq的一个元素),第二,将余项乘以x。当输出开始重复时,该计算停止。可以使用线形反馈移位寄存器来实现该过程,如Douglas W.Clark和Lih-Jyh Weng的文章″Maximal andNear-Maximal Shift Register SequencesEfficient Event Counters and EasyDiscrete Logarithms,″IEEE计算机学报43.5(1994年5月,pp560-568)中所述。在该环境中,在序列的循环移位和多项式Rl(x)之间建立一种关系改变Rl(x)仅仅使序列循环地移位而每个循环移位对应一个多项式Rl(x)。所造成的序列的一个属性在于,遍及宽度(或长度)n,任何部分在该序列中只存在一次。
以上所描述的处理过程仅是用来产生非重复序列的各种处理过程中的一个。
阵列构建可以用于创建图像(该图像的一部分由照相机获取)的阵列(或m阵列)是一维序列(或m序列)的延伸。使A为(m1,m2)周期的阵列,即A(k+m1,l)=A(k,l+m2)=A(k,l)。当n1xn2窗口移位通过一个A周期,则遍及Fq所有非零n1xn2矩阵出现一次且只有一次。该属性可以称作“窗口属性”,其中每个窗口都是唯一的。随后,A可以表示成周期为(m1,m2)阶次为(n1,n2)的阵列(m1和m2是阵列中水平方向和垂直方向的比特数)。
二进制阵列(或m阵列)可以通过折叠序列来构建。一种方法是得到一个序列,然后将它折叠成大小m1xm2,其中阵列的长度是L=m1xm2=2n-1。可供选择地,可以用打算覆盖的空间的预定大小来开始(例如,一张纸,30张纸或计算机监视器的大小),确定面积(m1xm2),随后使用该大小且使L≥m1m2,其中L=2n-1。
可以使用各种不同的折叠技术。例如,图3A到3C示出3种不同的序列。它们每一个都可以折叠成图3D所示的阵列。这3种不同的折叠方法示为图3D中的覆盖,并示为图3E和3F中的光栅路径(raster path)。图3D所示的折叠方法可以表示成当gcd(m1,m2)=1,而L=2n-1。
为了创建如图3D所示的折叠方法,先创建长度为L且阶次为n的序列{ai}。接着,从序列{ai}通过使该阵列的每一比特通过方程式1计算来创建大小为m1xm2的阵列{bkl}bkl=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的单元格矩阵表示。可以根据图像获取系统的大小和分辨率将该矩阵的大小更改为任意大小。可供选择的比特0和1的表示如图4C-4E所示。可以理解,用于图4A-4E的实例编码的零或一的表示可以切换而没有影响。图4C示出在占据交叉排列的两行或列的比特表示。图4D示出可供选择的在行和列中以虚线形式的像素排列。最后,图4E示出不规则间隔形式的行和列的像素表示(例如,两个暗框接着一个亮框)。
参考图4A,如果比特由3乘3的矩阵表示,而图像系统在该3×3区域中探测到一个暗行和两个白行,则表示0(或1)。如果图像被探测到具有一个暗列和两个白列,则表示1(或0)。
这里,使用超过一个块或像素或点来表示一个比特。使用单个像素(或块或比特)来表示一个比特是很脆弱的。灰尘、纸上的折痕、不平整的表面等为读取数据单元的单个比特表示增添了困难。但是,可以理解,可以将不同的方法用于图形化地表示表面上的阵列。图4C到4E示出了一些方法。可以理解,还可以使用其它的方法。图10中阐述了只使用空间移位点(space-shifted dot)的一种方法。
比特流被用来产生图4B的图形403。图形403包括12行和18列。这些行和列由转换为使用比特表示401和402的图形化表示的比特流形成。图4B可以视为具有以下的比特表示010101110110110010001010011101101100]]>译码当人们用图2A所示的笔靠近编码的图形书写或移动时,照相机获取图像。随后,处理该图像来确定和编码图像的全部表示相关的所获取图像的方向,并提取构成编码图像的比特。
图4B包括来自图像403的像素块的表示。所显示图像404-411示出5×5的像素块。像素块404示出在白行之间的一暗行。像素块405示出在白列之间的一暗列。像素块406示出左下边角。像素块407示出右上边角。像素块408示出在左侧具有半个暗行的暗列。像素块409示出一暗行,该暗行上具有半个暗列。像素块410示出半个暗行。像素块411示出半个暗列。分析像素块的组合,可以理解,所有的像素组合可以通过像素块404-411中找到的图像部分来形成。
此外,可以尝试用更小的像素块集来表示所有可能的像素组合。不用更多的,可以预料图5A-5D所示的4个块中的每一个都可以在图像403中找到。但是,在8个像素块404-411中只存在3种边角。在该实例中,没有图5A所表示的像素块。通过一事实,即可以选择图像部分401和402来减少边角的类型,出现了根据所缺少边角的类型来确定所获取图像的方向的可能。
继续到图6,可以分析由照相机601获取的图像并确定其方向,从而可以说明图像601实际表示的位置。首先,检查图像601来确定需要旋转该图像的角度θ以便将像素水平方向和垂直方向对准。注意到,可供选择的格子对准可能包括将底线格子旋转到非水平和垂直排列(例如,45度)。使用非水平和垂直排列可以提供降低来自用户的视觉迷惑(distraction)的可能的好处。简单起见,格子的方向(水平的和垂直的和将底线格子倾斜到其它方向)共同被称作预定格子方向。
接着,分析图像601来确定所缺少的边角。将图像601旋转到准备用来译码603的图像所需的旋转量o示为o=(θ加上旋转量{由所缺少的边角确定})。该旋转量由图7中的方程式示出。再参考图6,角度θ首先由像素的布局(layout)确定以便到达像素水平的和垂直的(或其它预定格子方向)排列,而图像如602所示来旋转。随后,进行分析来确定所缺少的边角,并将图像602旋转成603所示的图像,从而形成用于译码的图像。这里,图像被逆时针旋转了90度,从而图像603的位置可以恢复。
可以理解,可以在图像601旋转之前或之后应用旋转角度θ来考虑所缺少的边角。
最后,图像603中的代码被读出并和用来创建图像403的初始数据流相关联。这种关联可以以多种方法进行。例如,可以通过递归方法进行,在递归方法中,恢复的比特流和初始比特流中所有其它的比特流片段比较。其次,可以在恢复的比特流和初始比特流之间,例如,通过使用这两个比特流之间的汉明间距进行统计分析。可以理解,可以使用各种方法来确定在初始比特流中所恢复的比特流的位置。
一旦具有所恢复的比特,就需要将所获取的图像在初始阵列中(例如,图4B中所示的)定位。由于具有大量的操作,因此在整个阵列中确定比特部分的位置的过程是很复杂的。首先,可以从照相机的理想获取来使实际获取的比特模糊(例如,照相机可以获取具有使原始代码模糊的笔迹的图像)。其次,灰尘、折痕、反射等也可以产生获取的图像上的错误。这些错误使定位过程变得更加困难。在这方面,图像获取系统需要使用从图像中提取的非顺序比特来运作。以下示出了用于使用来自图像的非顺序比特运作的方法。
首先,只看序列,使该序列(或m序列)I对应幂级数I(x)=1/Pn(x)。同样,R(x)=r0+r1x+r2x2+…+rn-1xn-1是任何非零多项式,其次数小于n.序列R对应R(x)/Pn(x).如上所述,R是I的移位型式(shifted version).距离D定义为I和R之间的距离。如果R是I的第s个移位,则这可以表示为D(R)=s。距离D可以使用各种不同的技术计算。一项技术是通过确定两者之间的汉明间距。另一个方法是通过使用由Douglas W.Clark和Lih-Jyh Weng的文章″Maximal and Near-MaximalShift Register SequencesEfficient Event Counters and Easy DiscreteLogarithms,″IEEE计算机学报43.5(1994年5月,pp560-568)中介绍的Pohilig-Hellman-Silver算法。还可以使用本技术领域中已知的其它的距离确定技术。使用Pohilig-Hellman-Silver算法时,R(x)≡xsmod(Pn(x))。
但是,尝试使用折叠的序列计算距离是更加复杂的,因为所提取的代码可以是非连续的并还可能包括错误。用以上的阵列分析开始,可以从图像确定位置。可以用以下的关系开始R=rtA(2)其中,r=(r0r1r2…rn-1)t,而A=(IT(I)…Tn-1(I))t由I的循环移位构成。因此,任何I的循环移位都是rt和A的乘积。如果笔读取k个比特(I的b=(b0b1b2…bk-1)t其中(k≥n)),则R(x)可以用于将b0循环移位到序列(或m序列)的起始部分。随后,该移位调整A的列来产生A的n×k的子矩阵M。因此,rTM=bT(3)其中T表示矩阵或矢量的变换。
如果M的所有行都是独立的,则可以确定r而D(R)通过调整方程式(1)的一维位置造成I中b0的绝对位置。这意味着可以确定b0比特的二维位置。该位置信息允许确定笔尖的位置。
接着,可以确定和检查所有A的调整。
可供选择的,因为矩阵A很大,所以不是所有A的调整都需要保留。事实上,在某些执行过程中,只有列之间的相对位置是相关的。因此,可以保存的列(在将b0移位到序列(或m序列)的起始部分后)是那些当笔(也就是,照相机)旋转时其对应的二维位置在照相机的接收域内的列。这些列可以存储于具有二维位置信息的阵列(例如,矩阵)中。一个实例包括“元件-类型CoreVector(核心矢量)[行大小][列大小]”这种列的总数远小于L(其中L=2n-1)。如果b是无错误的,则r的解可以表示为rt=b~tM~-1--(4)]]>其中 是M的非简并(non-degenerate)的n×n子矩阵而 是相应的b的子矢量。
错误校正如果在b中存在错误,则r的解将变得更加复杂。如果b中的错误数(表示为ne)小于d/2,其中d是由M所产生代码的最小汉明距离,则b可以被校正。不幸的是,由于矩阵M对应不同的笔姿变化,且矩阵M的结构是不规则的,则不便应用具有错误校正的常规译码方法。在某些情况下,当出现错误时,认为不能精确地确定d。参见Ilya Dumer,Daniele Micciancio和Madhu Sudan,″Hardness ofApproximating the Minimal Distance of a Linear Code″,IEEE计算机科学基础的论文集1999,pp.475-485。
但是,使用随机方法实现了积极的结果。假定ne相比k相对较小,则当随机选择了n个比特而它在M中所对应的列是独立的时,则从b的k比特选择正确的n个比特的概率很大。
系统可以在图像中重复选择随机比特。如果系统重复该选择和分析很多次,则它一般能分离出序列中的合适距离。换句话说,当选择了正确的比特时,bt和rtM之间的汉明距离将最小,其中r是通过方程式(4)计算的。重复几次,正确的r将比其它的距离出现更多次,并因此很容易识别。其结果可以单独使用或可以结合之前的位置信息使用。例如,如果照相机获取可以位于该页顶部的线上的一串图像,且从照相机的当前图像提供,例如,从之前的串有一个很近、一个很远的两个距离,则更加可能的是,在很短的时间内用户只将笔移动较小的量而不是移动较大的量。可以使用之前的图像获取和当前的图像获取之间的其它类型的分析。
如果存在不同的r以使bt和rtM之间的汉明距离都最小,则ne超过由M所产生代码的错误校正能力的概率很大,且译码过程失败。随后,系统可以移到来自照相机的下一个所获取的图像。
最后,可以确定正确的b,而在序列(m序列)I中的r的位置可以通过各种技术(包括,但不限于Pohilig-Hellman-Silver算法)来计算。随后可以定位笔尖。
图8示出了可以用于在所获取的图像的序列(或m序列)中确定位置的过程。首先,在步骤801中,接收到和所获取的图像相关的数据流。在步骤802中,从所获取的图像和由所获取的图像中的信息构建的矩阵提取列。在步骤803中,根据距离将代码排序。可以使用各种本技术领域内已知的排序算法来将代码排序。例如,可以使用选择排序算法。选择排序算法是有利的,其中m不是很大。但是,如果m变得很大,则可以使用其它更有效地处理更多项的排序算法(例如,合并排序)。
在步骤804中,从步骤802中构建的矩阵中选择M行矢量,而从802的矩阵到阵列(或m阵列)的起始部分来确定距离矢量r。
所获取的图像可以包括比确定矩阵M的位置所需的更多的信息。例如,如果每个比特由9个像素表示而照相机图像系统包括32×32比特的矩阵,则可以得到约100个比特(10×10)。这些图像比特中,n被用于确定位置。所以,例如,如果阵列m1,m2的大小是255×255(65025),则将所获取的图像定位所需的比特数将为n,其中m1xm2≤L=2n-1。这里,n=16。因此,所获取的图像所需要用来产生能够定位图像的比特数为n。为了提供各种不同的选择来考虑错误,需要从图像中提取超过n个比特。例如,如果所需的n的数量为16,则照相机将需要产生18或者更多的比特。
该分析在步骤805中进行K次(例如,10到100到500次)。该方法尝试确定具有最多重复结果的位置,且其错误比特的数量小于一个值(例如,3)。随后,系统确定在步骤806中错误校正是否进行得顺利。如果否,则将错误返回到步骤809。如果是,则在步骤807的序列(或m序列)中计算提取的代码的位置(例如,通过Pohilig-Hellman-Silver算法)。该步骤还可以包括计算yi=yn/m1并在组列表中查找系数(factor)以便得到Ri的剩余值的子步骤。这可以表示为L=Σ(nmi·Ri·Vi)modn---(5)]]>L表示序列的长度。接着,阵列中的(X,Y)位置表示为x=Lmodn1和y=Lmodn2且结果返回到步骤808。
位置确定图9示出用于确定笔尖位置的过程。输入是由照相机获取的图像,而输出可以是该图像相比总图像的位置坐标。而且,输出可以包括(或不包括)所获取的图像的旋转角度。
在步骤901中,从照相机接收图像。接着,所接收的图像可以选择性地在步骤902中预处理(如步骤902中由虚线标出的)来调整亮和暗像素之间的对比度,旨在确定所获取的图像的旋转角度等等。
接着,在步骤903中,分析图像来确定其中的比特流。
接着,在步骤904中,比特流和初始比特流比较并确定在初始比特流中所接收的比特流的位置。当系统意识到初始比特流如何卷绕来创建图像403时,可以进行该比较。最后,一旦在步骤904中确定了所获取的图像的位置,则在步骤905中可以确定笔尖的位置。
图10示出用来确定笔尖位置的可供选择的方法。首先,在步骤1001中从照相机接收图像。随后,该图像可以选择性地进行步骤1002中的预处理(如步骤1002中的虚线所示)。在步骤1003中提取图形。这里,可以提取各种线上的像素来找到图形的方向并确定角度θ。
接着,在步骤1004中分析所接收的图像来确定像素和网格线基础分布。如果在步骤1005中找到网格线,则在步骤1006中从图形提取代码。随后,在步骤1007中将该代码译码并在步骤1008中确定笔尖的位置。如果在步骤1005中没有找到网格线,则在步骤1009返回错误信号。
虽然用所附权利要求定义了本发明,但这些权利要求是说明性的,其中,本发明旨在包括此处说明的组合或子组合中的单元和步骤。因此,存在任何数量的可供选择的组合来定义本发明,它们结合一个或多个说明书中的单元,包括描述、权利要求和附图,在各种组合或子组合中。对于相关技术领域中的熟练的技术人员来说明显的是,根据本说明书,本发明的各方面的可供选择的组合,无论是单独或者结合一个或多个此处定义的单元或步骤,可以用作本发明或本发明的一部分的修改或变化。包含在这里的本发明的书面描述旨在覆盖所有这样的修改和变化。
权利要求
1.用于将所获取的图像信息译码的方法,其特征在于,包括以下步骤获取图像信息;将所述图像信息译码;对所述图像信息进行错误校正;以及确定和所述所获取的图像信息相关的位置。
2.如权利要求1所述的方法,其特征在于,在和获取所述图像信息的照相机局部关联的处理装置中进行所述译码步骤。
3.如权利要求1所述的方法,其特征在于,在远离获取所述图像信息的照相机处进行所述译码步骤。
4.如权利要求1所述的方法,其特征在于,在和获取所述图像信息的照相机局部关联的处理装置中进行所述错误校正。
5.如权利要求1所述的方法,其特征在于,在远离获取所述图像信息的照相机处进行所述错误校正步骤。
全文摘要
描述了用于从更大的图像中确定所获取图像的位置的系统和处理过程。可以将非重复序列折叠成非重复阵列,其中该阵列对于给定大小的每个子窗口是唯一的。子窗口的图像可以被获取且在非重复阵列内确定其位置。
文档编号G06T5/50GK1866184SQ20061009248
公开日2006年11月22日 申请日期2003年9月29日 优先权日2002年10月31日
发明者王建, 林舟晨, 李越 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1