本发明的详细说明
示例性光学设备
本发明的实施例涉及与表面进行交互以便确定所述表面上编码信息的光学设备(例如,光学图像传感器或光学读取设备)。在本发明的一个实施例中,该光学设备可以被实现为多功能笔或触针。本发明的多个方面还包括以显示的形式放置符号图案。该符号图案可以表示编码数据,例如位置数据、多媒体(例如,音频、视频、图像等)、安全应用、生物统计、识别管理、其它大宗数据、或者到其它数据的链路。在一个实施例中,所述显示形式是打印纸(或其它物理介质)或者显示器,能投影或者包含与其它图像或图像集合相结合的符号的编码图案。例如,符号的被编码图案可以被表示为所述纸上的物理图像、覆盖在另一个被显示图像上的或位于另一个被显示图像下面的图像、或者与显示屏幕组合或者覆盖在显示屏幕上的被理编码的图案(例如,不可修改的图案)(由此被光学设备检测到的图像可以置于显示屏幕上)。
在本发明的一个实施例中,光学设备被实现为用于在纸上写的墨水笔。在本发明的另一个实施例中,光学设备被实现为用于在计算机显示器的表面上写的触针。通过对表面上的光学设备的位置反复地检测一段时间,系统可以跟踪与写相关的光学设备在表面上的移动和位置。由此,这种移动可以表示“数字墨水”。
图1A示出了按照本发明一个实施例的实现为具有相机104或其它检测器的笔102的示例性光学设备。笔102包括笔尖106,它可以包括也可以不包括墨水容器。相机104检测和捕获来自表面110的位置108的图像。笔102还可以包括如用虚线框112所表示的辅助传感器和/或处理器。这些传感器和/或处理器112具有(例如,通过蓝牙或其它无线协议)将与被检测图像有关的信息传输给另一个笔102和/或另一台设备的能力,所述另一台设备例如个人计算机、个人数字助理(PDA)、电话等。如果笔102不包括传感器和/或处理器112,它可以通过有线(即,不是无线发射器)将与被检测图像有关的信息传输给另一个笔102和/或个人计算机。
图1B说明了按照本发明的实施例的如用相机104所观察到的示例性图像的配置。在此示意性图像中,相机104的视域是32×32象素(其中N=32)。因此,图1B示出了32个象素长乘32个象素宽的视域。N的大小是基于所期望的图像分辨率的程度而被指定的。还有,虽然为了说明起见,相机104的视域在图1B中被显示为正方形,但是视域也可以包括其它形状。
从相机104到笔102的输入定义为图像帧序列{li},l=1,2,...,A,其中图像帧li在采样时间ti时由笔102检测。采样率可以是固定的或者可以基于许多因素变化,所述许多因素包括在表面上被编码的符号图案的大小。依赖于多种因素例如编码符号图案的大小和所期望的检测准确性,被检测的图像帧的大小可大可小。还有,基于待检测的编码符号图案的大小,可以确定相机图像的大小。
由相机104检测到的图像可以被处理系统直接使用或者可以进行预过滤处理。这种预过滤处理可以发生在笔102中或者可以发生在笔102之外(例如,在个人计算机中)。
图1B的图像大小是32×32象素。如果每个编码单元的大小是3×3象素,那么被检测的编码单元的数量就近似于100。如果编码单元的大小是5×5象素,那么被检测的编码单元的数量就近似于36。
图1A还示出了图像平面114,在图像平面114上,形成了来自位置108的所述符号图案的图像116。透镜118聚焦从表面110上的所述符号图案中接收到的光线。透镜118可以是单个透镜或者由多个部分组成的透镜系统,但是此处为简明起见,它被表示为单个透镜。图像捕获传感器122检测并捕获图像116。在本发明的一个实施例中,图像捕获传感器122大到足以检测图像116。可替换地,图像捕获传感器122大到足以捕获位置126上的笔尖106的图像124。作为参考,位置126上的图像124被称作虚拟笔尖。注意,由于笔尖106、透镜118以及图像捕获传感器122之间的恒定关系,固定相对于图像捕获传感器122的虚拟笔尖的位置是固定的。基于从虚拟笔尖的位置(用Lvirtual-pentip表示)到真实笔尖的位置(用Lpentip表示)的转换,可以确定与被检测图像116有关的真实笔尖的位置。
下面的转换FS→P将被相机检测到的图像转换为表面上的真实图像:
Lsurface=FS→P(Lsensor)
当在表面上写时,笔尖和表面位于相同的平面。因此,从虚拟笔尖到真实笔尖的转换也是FS→P:
Lpentip=FS→P(Lvirtual-pentip)
转换FS→P被称作透视变换(perspective transformation)。因此,按照下式估算FS→P:
在此等式中,θ是在位置108上检测的图案的旋转,而sx和sy是被检测图案的两个旋转方位的尺度。还有,通过将被检测图像与表面上的对应的背景图像相匹配,F’S→P被提炼为FS→P。即,通过一种被称作递归方法的优化算法,获得更精确的透视矩阵FS→P(8个参数)。所述递归方法将矩阵F’S→P看作初始值。FS→P比F’S→P更精确地描述S和P之间的转换。
为了通过校准确定虚拟笔尖的位置,用户将笔尖106放置在表面的已知位置Lpentip上。然后,用户使笔102倾斜,以允许相机104检测具有不同的笔的姿势的一系列图像。为每个被检测的图像,接收转换FS→P。根据此转换,可以获得虚拟笔尖106的位置(即,Lvirtual-pentip):
Lvirtual-pentip=FS→P(Lpentip)
以及
FS→P=[[FS→P]-1
通过对从所述图像中接收到的Lvirtual-pentip取平均值,可以确定虚拟笔尖106的准确位置(即,Lvirtual-pentip)。
由于现在知道了虚拟笔尖106的位置,所以可以从被检测的图像中获得转换FS→P。接着,这个信息被用于确定真实笔尖106的位置(即,Lpentip):
Lpentip=FS→P(Lvirtual-pentip)
图案编码
要被编码为表面上的符号图案的数据可以被表示为数字序列,例如二进制数字的序列{0,1}。不同类型的位流可以用作为这种数字序列。例如,可以使用数字的随机或伪随机序列。这种随机或伪随机序列具有一种属性,从而如果m宽度的窗口(例如,连续窗口)沿着序列Sm滑动,则2m-1个非零m元组的每一个只能被看到一次。换言之,数字序列具有一种特性,从而清楚地确定在预定长度的一部分序列的数字序列中的位置。在本发明的一个实施例中,以利用表面的几何形状的方式,编码为符号图案的数据被分布在表面上。例如,数字序列可以被配置为用于在矩形表面上编码的矩形矩阵或阵列。图2说明了按照本发明的实施例的数字的示例性矩形阵列/矩阵。
图2中所示的矩形阵列/矩阵可以以行、以列、对角地或者下面任何其它根据公式的排序来进行排列。例如,如果从左向右然后向下处理,则可以通过下面的位流形成图2的阵列/矩阵:
0100 0111 0111 0100 1000 1110 0111 0100 1100
如果由顶向底然后向右处理,则可以通过下面的位流形成图2的阵列/矩阵:
0101 1100 0111 0010 0110 1001 1001 1110 0010
在另一个例子中,如果位流被对角线地排序并且叠起,则可以通过下面的位流形成图2的阵列/矩阵:
0110 0000 0101 0101 1000 0011 1111 1010 1110
代替将数字序列配置到矩形阵列/矩阵中,所述序列还可以被配置为紧密压缩的圆形或者任何其它平面填充(plane-filling)函数。如果数字序列作为矩形阵列/矩阵被分布在所述表面上,则此序列可以被看作行和列的有序序列。本发明的一个实施例涉及对作为表面上的符号图案的数字的矩形阵列/矩阵进行编码和解码的方法。但是本发明的实施例可以应用于被配置为任何其它平面填充函数的数字。
按照本发明的一个实施例,如果n可以被k整除(即,n mod k=0),长度为n的数字的行可以划分为长度为k(基于图像捕获系统的大小和分辨率可以修改长度k)的m个非交叠连续窗口(Wseq)。因此,对于特定的矩形阵列/矩阵(或其它平面填充函数)的数字的示例性行:
100110001101111110100010000101100101
如果k=3并且m=12,那么非交叠连续窗口将是:
100|110|001|101|111|110|100|010|000|101|100|101
图3A中也进行了说明。
使X作为m个长度为k的非交叠连续窗口的集合。即,X=(x0,x1,...,xn-1)。因此,对于以上示出的数字的示例性行,形成了下面的集合X:
(100,110,001,101,111,110,100,010,000,101,100,101)
或者在另一个系统中例如以十进制的形式:
(4,6,1,5,7,6,4,2,0,5,4,5)
使Y作为m个值(y0,y1,...,yn-1)的集合,其中,yi=2xi,0≤i<m,并且xi是集合X的第i个元素。因此,为以上所示的集合X形成下面的集合Y:
(24,26,21,25,27,26,24,22,20,25,24,25)
或者在另一个数字系统中例如以二进制的形式:
(00010000,01000000,00000010,00100000,10000000,01000000,00010000,00000100,00000001,00100000,00010000,00100000)
在本发明的一个实施例中,Y集合(例如,按二进制形式)直观地被表示为表面上的一个或多个表面窗口(Wsurface)内的符号(或象素)的1×(2km)阵列/矩阵以形成一个图案。图3A中说明了对应于以上所示的示例性Y集合的符号的示例性阵列/矩阵。特别地,一个符号例如一个点被配置在贯穿所述表面的m个非交叠表面窗口中的每一个内。基于Y集合的每个元素内被选出的数字类型的位置,每个符号被置于所述表面上的其相关表面窗口内。因此,对于二进制形式的Y集合,基于Y集合的每个元素内的二进制数字“1”的位置,每个符号被置于其相关表面窗口内。例如,数字“1”被置于以上所示Y集合的元素00010000中从左边起的第四个位置。因此,配置所述符号,以便定位于所述表面上的相关表面窗口内从左边起的第四个位置上。注意,由此,此符号图案包括一个或多个“虚拟”窗口边界,以便建立非交叠的并且相等大小的表面窗口。而且,所述表面上其相关表面窗口内的符号的位置或定位(例如,两个相邻表面窗口内两个符号的位置)可以表示所述表面上的数据例如唯一的位置。因此,所述表面上的符号的整个图案对与所述表面有关的多个位置进行编码。还有,可以理解,可以使用任何色彩表示每个符号。还有,所述符号可以是任何类型的形状。在本发明的实施例中,符号的色彩和形状提供了将由图像捕获系统区分的与所述表面的背景的对比度。
图3B说明了由向量序列形成的符号的示例性图案,该示例性图案表示特定的矩形阵列/矩阵中行的初始序列。图3C进一步说明了由向量序列形成的符号的另一种示例性图案,该示例性图案具有比图3B中的更高的信息含量或平均信息量。图3C的方框302内的图案对应于图3B中所示的符号图案,但具有较低分辨率。如在图3C中可以看到的,如果被编码为符号图案的数据具有高的信息含量或平均信息量,那么所述表面上的符号图案就具有非显而易见的结构并且作为背景噪声呈现给人类观察者。如果相对于白色表面背景使用黑色符号(或象素),那么背景的平均色彩强度可以是12.5%,这对于观察者而言是相当地清晰的。在本发明的一个实施例中,通过增加表面上的符号的连续的行之间的空格,可以以与编码密度成比例的成本照亮表面背景。也可以以较少的稳固的图像处理费用减少符号的大小,以便降低相对于表面背景的图案对比度。
图案解码
虽然图3B和3C中所示的符号图案随机地呈现给人类观察者,但是解码系统可知,它并不是由随机处理产生的。如果采用以上具有k=3和m=6的处理编码符号图案,那么所述表面上的符号的每一行就可以被分割成大小为m个2k的非交叠表面窗口。例如,如果Y集合是二进制的形式,则m个非交叠表面窗口中的每一个都包括一个有色符号(或象素),因为形式2n的二进制数字具有一个数字,该数字具有一个值“1”,剩余数字具有一个值“1”。一种有所帮助的情况包括在所述表面上发现比相隔的2k个位置更近的两个有色符号。在这种情况下,共享表面窗口边界出现在所述表面上它们之间相对很少可能的位置中,如图4A中所示。但是即使两个符号彼此分离多于2k个位置,单独的表面窗口边界可以出现在两个有色符号之间。还有,所述表面上每个连续的可能的表面窗口边界旨在限定表面上其它可能的表面窗口边界的可能的范围或位置,如图4B中所示。在图4B中,括号<>内的空格表示可能的表面窗口边界的可能的范围,而标记|表示已建立的表面窗口边界。
因为检测表面上符号的连续行,所以表面上可能的表面窗口边界的可能的位置集中到了少数几种选择上。而且,给定表面上符号的足够的行,在所述表面上出现所述表面窗口边界的唯一选择,如图4C所示。
图4D示出了如果确定表面上至少一个唯一的表面窗口边界,那么由符号图案所表示的数据值就可以被解码。特别地,在已知相关表面窗口内至少一个符号的位置之后,就能够确定具有长度2k的数字系列(例如,二进制系列)。此数字系列具有位于对应于相关表面窗口内所述符号的位置的位置的一种选择的数字类型(例如,二进制数字“1”),具有另一种数字类型(例如,二进制数字“0”)的剩余数字。基于如此确定的数字系列,通过将以上所述的编码过程反向,可以确定被用于对所述表面上的符号图案进行编码的数字的初始有序序列的一部分序列。在一个例子中,对于确定的数字系列00000010,y值(在Y集合中)将是21。因此,如果X集合是以十进制的形式,则对应的x值将是1。将此x值转换成另一种数字系统例如以二进制的形式,可以确定一部分序列例如001。通过对表面上其它已建立的表面窗口重复此处理,则可以解码符号图案,以便确定数字的初始有序序列(例如,被配置为矩形阵列/矩阵)。
在某些情形中,表面窗口边界可以含糊地给出表面上采用符号图案被编码的区域。如果是这种情况,那么基于被编码为表面上符号图案的数据的已知意义,就能够消除表面窗口边界的歧义。例如,如果符号图案表示表面上的多个绝对位置,那么符号图案的相邻被解码值将表示表面上的相邻位置。如果被解码值不表示相邻位置,那么可能的表面窗口边界中的至少一个可能是不正确的,并且可以估计此可能的表面窗口边界的下一个可能的位置。可以重复此处理,直到找到可能的表面窗口边界的正确位置为止。可替换地,光学设备最近的轨迹的历史可以被存储在存储器区域中。尽管表面上符号图案允许直接且随机的解码,光学设备的许多应用,例如笔或触针,具有特性运动,该特性运动可以被用于:当给出在表面上该设备最近的位置的历史时,可预测光学设备可能的当前位置。
在其它情形中,光学设备可以不与表面的矩形轴对准(例如,当用户用该设备在表面上写注释时)。用户可以握住该光学设备,从而使该设备相对于表面的坐标轴旋转。通过将表面上的符号的连续行之间使用连续的空格用作为掩码函数(mask function),可以补偿这些情形。然后,可以使位于表面上给定位置的符号图案的采样图像绕被采样的图像中心旋转,直到空格掩码没有数据编码符号为止。此后,采样图像将以正确的角度对准,以用于对表面上的符号图案解码的解码处理。
图4E说明了按照本发明的一个实施例的被检测图像部分的旋转。可以分析由图像捕获系统所检测的图像402,以便确定其旋转方位,从而解码系统可以准确地解释由图像402所表示的数据。如图4E中可以看到的,图像402的一些掩码函数(例如,用虚线箭头所表示的)包括数据编码符号(例如,虚线箭头403交叠一些符号)。因此,分析图像402,以便确定旋转图像402的角度θ,从而掩码函数不包括数据编码符号。在图像402被旋转角度θ之后,创建图像404,它位于正确的角度方位并且与表面的轴对准。
按照本发明的一个实施例,在进行了此方位校准之后,图像404被输出并且与被用于创建符号图案的数字的初始序列相关联。可以以不同的方式实现该关联。例如,可以通过递归方法实现,在该递归方法中,将被恢复的部分序列与数字的初始序列内的其它部分序列进行比较。进一步,例如,通过使用两序列之间的加权平均距离,可以在被恢复的部分序列和数字的初始序列之间实现统计分析。可以理解,各种不同的方法都可以用于确定数字的初始序列内的被恢复的部分序列的位置。
位置确定
图5示出了按照本发明一个实施例的用于确定光学设备的位置的示例性处理。输入是由光学设备检测的图像,而输出可以是与整个图像相比被检测的图像的位置坐标。还有,输出可以包括检测图像的旋转角。
在502,检测并接收来自光学设备的传感器(例如,相机)的图像。然后,在504,接收到的图像可以被有选择地预处理,以便调整符号(或象素)与表面之间的对比度,力图确定检测图像的旋转角,等等。
在506,分析接收到的图像,以便确定由该图像所表示的数字的序列。特别地,基于表面上每个“虚拟”表面窗口的已知长度,可以确定位于两个符号之间的可能的表面窗口边界,所述两个符号被定位在离所述表面至多已知长度的位置上。基于这种可能的表面窗口边界,可以递增地确定在接收到的图像的第一方向上的其它可能的表面窗口边界。还有,可以递增地建立在接收到的图像的第二方向上的表面窗口边界。在建立了所述表面窗口边界之后,可以根据表面上已建立的表面窗口内的符号的位置确定数字系列。接着,此数字系列可以被解码,以便获得用于对表面上的符号图案进行编码的数字的初始有序序列的一部分序列。
在508,将所获得的部分序列与数字的初始序列进行比较,并且确定所获得部分序列在数字的初始序列内的位置。当该系统知道如何对数字的初始序列进行排序和编码以便创建表面上的符号图案(例如,如图3B中所示)时,可以进行这种比较。在508确定了被检测图像的位置之后,在510,可以确定光学设备的位置。
数据流编码
图6示出了用于对有序数字序列例如二进制有序数字序列进行编码的示例性处理。在602,数字有序序列是由处理器定义或接收的。在604,有序数字序列被编码为符号图案。尤其是,有序数字序列被划分为一个或多个连续窗口(例如,基于表面的几何形状),其中每个连续窗口包括有序数字序列的一部分序列。此部分序列被转换为另一种数字系统(例如,八进制、十进制、十六进制等)。例如,所述部分序列可以被表示为十进制数字。然后,该数学函数被应用于已转换的部分序列。在本发明的一个实施例中,如果该部分序列被表示为十进制数字,则该数学函数包括取预定数字(例如,2)的十进制数字的值的幂。然后,已经被应用于该数学函数的十进制数字被转换为另一种数字系统,例如预定长度的二进制表示。然后,基于二进制表示的长度内的被选出的数字类型(例如,二进制数字“1”)的位置,符号(例如,点或者象素)被配置在表面上的一个或多个表面窗口内。表面上的每个表面窗口对应于所述连续窗口中的一个。因此,表面上的对应的表面窗口内的符号的位置指示数据(例如,表面上的唯一位置)。
在606,处理器输出一个图像,它包括从有序数字序列中创建的符号图案。接着,在608该输出可以被有选择地打印在介质例如纸上或者在610被有选择地显示在显示器上。为了与在608要被打印的介质相关,该输出图像可以以图形的形式提交并且被发送给打印机(例如,激光打印机或喷墨打印机)作为将被打印的图像,位于另一个图像或文档内容下或者覆盖到另一个图像或文档内容上。类似地,可以将该输出图像与其它信息相结合并且被提交用于在610的显示。将输出图像的提交形式与其它内容相关联的处理一般可以被称作水印。例如,图像可以被显示为显示器上的水印,或者可以被嵌入到其显示中(例如,在显示的形成处理期间或者后来被用作对于人而言视觉上是透明的但是可以被光学设备检测(例如,通过红外线波长)的层)。在本发明的一个实施例中,打印机和显示器(或者用于提交输出图像的其它技术)组成用于将符号排列在表面上的表面窗口内的装置。
应用
可以以许多种方式来使用此处所述的符号图案。在本发明的一个实施例中,符号图案被结合到打印纸中作为与现有图像相组合的图像或作为该纸上已打印的图像。表示符号图案的图像可以被打印在一张空白纸上,或者可以被打印在已经包括其它信息(例如,电子数据表)的一张纸上。用于将该图像与已嵌入信息相加的处理包括水印一文档或页面。它还可以进一步包括将水印嵌入在图像上,打印具有已嵌入水印的纸,组合并打印具有另一图像的水印,及其不同的组合。例如,符号图案可以被打印在纸面文档的背景上,该纸面文档包括用于为人类阅读者解释的的文本和图形。然而,此符号图案并不会降低文档的可读性,并且利用少量的打印机墨水可以用打印机来产生。
在本发明的另一实施例中,表示符号图案的图像被结合到被覆盖在设备或系统的显示屏幕上的透明的纸张内,或者被结合在用于与显示器相组合的表面内,包括保护膜。在一个例子中,符号图案被嵌入到液晶显示器(LCD)中。LCD的每个象素间距具有它的帧,并且所有LCD象素的帧凑到一起以便形成一个栅格。本发明的实施例允许将符号图案添加到该栅格上。例如,包括符号图案的薄膜可以被应用于该栅格。此薄膜可以被调整,以便以可视亮度提供符号图案。可替换地,该薄膜可以有选择地吸收红外线(IR)的光或者可以在某种光线波长下发荧光。还有,可以控制LCD,以便发射或吸收光线,从而将符号图案投射给笔或相机。符号图案也可以被应用于LCD的防护玻璃罩或者覆盖材料。
在另一个例子中,具有被编码其上的符号图案的并且带有特定光谱例如800-900nm的IR反射膜被置于LCD的栅格上。当光学设备在LCD表面上移动时,带有IR发光二极管(IRLED)和相机(可以具有IR滤波器)的光学设备检测IR图像。在这个例子中,LCD栅格上的符号的被编码图案反射特定的IR光线,例如800-900nm。由此IR图像中的符号图案有别于该膜的其它区域。IR图像可以被处理和解码,以便确定光学设备的位置。IR膜允许被显示图像的无阻碍的传输。
按照透镜设计参数和分辨率要求,可以选择符号图案的大小。例如,为了达到相机的0.213mm×0.213mm象素间距和5mm×5mm透镜视觉范围,图案大小可以被设置为2×2象素。
符号图案也可以体现在膝上型电脑、基于写字板/触针的输入计算机、个人数字助理、电话或任何其它设备中的显示器。
符号图案的其它应用包括与文档有关的文档标识符。通常,用户可以在文档中打印文档标题或参考标号。在本发明的一个实施例中,在文档中被编码的符号图案可以表示文档的参考标号或者其它信息(一般被称作文档标识符)。然后,用户可以检测包括文档上的符号图案的图像,解码被检测图像以便获得由符号图案所表示的文档标识符,以及将写文档上的注释与所获得的文档标识符相关联。文档标识符还可以是到位于远程位置中的文档的链路或参考,它可以通过计算机网络来进行访问。
示例性操作环境
图7示出了以计算机130的形式的通用计算机设备的一个例子。在本发明的一个实施例中,计算机例如计算机130可以适用于用在光学设备例如笔102中或者此处所示并描述的其它图中。计算机130具有一个或多个处理器或处理单元132以及系统存储器134。在示意性实施例中,系统总线136将不同的系统组件包括系统存储器134耦接到处理器132上。总线136表示多种类型的总线结构中的任何的一个或多个,总线136包括存储器总线或存储器控制器、外围总线、加速图形端口、以及处理器或使用多种总线结构中的任何一个的本地总线。作为示例而非限定,此结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强的ISA(EISA)总线、视频电子标准协会(VESA)本地总线、以及外围设备交互(PCI)总线,还有已知的Mezzanine总线。
计算机130典型地具有至少某种形式的计算机可读介质。计算机可读介质,包括易失性和非易失性介质、可移动的和不可移动的介质,可以是可被计算机130访问的任何可用的介质。作为示例而非限定,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于信息存储的任何方法或技术来实现的易失性和非易失性、可移动的和不可移动的介质,该信息例如计算机可读指令、数据结构、程序模块或其它数据。例如,计算机存储介质包括RAM、ROM、EEPROM、闪速存储器或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光盘存储、盒式磁带、磁带、磁盘存储或其它磁存储设备、或者可以被用于存储所期望的信息并且可以被计算机130访问的任何其它介质。通信介质典型地以调制的数据信号的方式具体表达计算机可读指令、数据结构、程序模块或其它数据,该数据信号例如载波或其它传送机制,并且通信介质包括任何信息传递介质。本领域技术人员是熟悉调制数据信号,它具有一种或多种以一种在该信号中编码信息的方式被设置或改变的特性。有线介质例如有线网络或直接有线连接,以及无线介质例如声音、RF、红外线以及其它无线介质,都是通信介质的例子。以上介质的任意组合也都被包含在计算机可读介质的范围内。
系统存储器134包括以可移动的和/或不可移动的、易失性的和/或非易失性的存储器的形式的计算机存储介质。在示意性实施例中,系统存储器134包括只读存储器(ROM)138和随机存取存储器(RAM)140。基本输入/输出系统142(BIOS),包括例如在启动过程中,有助于在计算机130内的元件之间传送信息的基本线程,通常被保存在ROM 138中。RAM 140通常包括可以由处理单元132立即访问和/或目前正被处理单元132操作的数据和/或程序模块。以示例的方式而非限定的方式,图7说明了操作系统144、应用程序146、其它程序模块148以及程序数据150。
计算机130还可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,图7说明了硬盘驱动器154,它从不可移动的、非易失性磁性介质中读取或者向不可移动的、非易失性磁性介质写。图7还示出了磁盘驱动器156以及光盘驱动器160,磁盘驱动器156从可移动的、非易失性磁盘158中读取或者向可移动的、非易失性磁盘158写,光盘驱动器160从可移动的、非易失性磁盘162中读取或者向可移动的、非易失性磁盘162写,该可移动的、非易失性磁盘162例如CD-ROM或其它光学介质。
其它可以被用在示例性操作环境中的可移动/不可移动、易失性/非易失性计算机存储介质包括,但并不限于,磁带盒、闪速存储器卡、数字通用盘、数字视频带、固态RAM、固态ROM等。通过非易失性存储器接口例如接口166,硬盘驱动器154、磁盘驱动器156以及光盘驱动器160通常被连接到系统总线136。
以上讨论并在图7中示出的驱动器或其它大容量存储器设备及其相关计算机存储介质,为计算机130提供了计算机可读指令、数据结构、程序模块以及其它数据的存储。在图7中,例如,将硬盘驱动器154描述为用于储存操作系统170、应用程序172、其它程序模块174以及程序数据176。注意,这些组件可以与操作系统144、应用程序146、其它程序模块148和程序数据150相同,也可以不同。此处为操作系统170、应用程序172、其它程序模块174以及程序数据176给出不同的标号,以便最小限度地说明它们是不同的复制品。
通过输入设备或用户接口选择设备例如键盘180和指示设备182(例如,鼠标、跟踪球、笔或触摸板),用户可以将命令和信息输入到计算机130中。其它输入设备可以包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些或其它输入设备通过被耦接到系统总线136的用户输入接口184被连接到处理单元132,但也可以通过其它接口和总线结构例如并行端口、游戏端口或通用串行总线(USB)进行连接。监视器188或其它类型的显示设备也可以通过接口例如视频接口190被连接到系统总线136。除了监视器188之外,计算机常常包括其它外围输出设备(未示出),例如打印机和扬声器,它们可以通过输出外围接口(未示出)进行连接。
利用到一个或多个远程计算机例如远程计算机194的逻辑连接,计算机130可以在网络化环境中运行。远程计算机194可以是个人计算机、服务器、路由器、网络PC、对等设备或其它公共网络结点,并且通常包括以上所述与计算机130相关的元件中的许多或所有。图7中所描绘的逻辑连接包括局域网(LAN)196和广域网(WAN)198,但也可以包括其它网络。LAN 136和/或WAN 138可以是有线网络、无线网络、其组合,等等。这样的网络化环境在办公室、企业范围的计算机网络、企业内部互联网以及全球计算机网络(例如,因特网)中是很常见的。
当用在局域网环境中时,通过网络接口或适配器186,计算机130被连接到LAN 196。当被用在广域网环境中时,计算机130通常包括调制解调器178或其它用于在WAN 198例如因特网上建立通信的装置。调制解调器178,可以是内部的或外部的,通过用户输入接口184或其它适当的机制,被连接到系统总线136。在网络化环境中,与计算机130有关的所描绘的程序模块,或其部分,可以被存储在远程存储器存取设备(未示出)中。作为示例而非限定,图7说明了驻留在存储器设备上时的远程应用程序192。所示的网络连接是示例性的,并且可以使用其它在计算机之间建立通信链路的装置。
一般地,计算机130的数据处理器是由在不同时间被存储在计算机的不同计算机可读存储介质中的指令来编程的。程序和操作系统通常被分布在,例如,软盘或CD-ROM上。从那里,将它们安装或载入到计算机的次级存储器中。在执行时,将它们至少部分地载入到计算机的主电子存储器中。当此介质包括用于与微处理器或其它数据处理器一起执行以下所述步骤的指令或程序时,此处所述的本发明的实施例包括这些和其它各种类型的计算机可读存储介质。本发明的一个实施例还包括当按照此处所述的方法和技术被编程时的计算机本身。
为了说明起见,此处将程序或其它可执行程序组件例如操作系统作为离散框进行了说明。然而,将承认,这样的程序和组件是在不同的时间驻留在计算机的不同存储组件中的,并且由计算机的数据处理器(多个)来执行。
尽管有关示例性计算机环境,包括计算机130进行了描述,但是本发明的一个实施例可以采用许多其它通用或专用计算机系统环境或配置来操作。所述计算机系统环境并不旨在建议对本发明的实施例的使用或功能性的范围的任何限定。而且,所述计算机系统环境不应当被解释为具有与所述示例性操作环境中所示的组件的任何一个或组合有关的任何依赖性或要求。适用于本发明的实施例的公知的计算机系统、环境和/或配置的例子包括,但并不限于,个人计算机、服务器计算机、手持型或膝上型设备、笔、鼠标、键盘、电话、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、移动电话、网络PC、小型计算机、大型计算机、包括任何以上系统或设备的分布式计算环境,等等。
可以以一台或多台计算机或其它设备执行的计算机可执行指令例如程序模块的一般环境设置情况来描述本发明的实施例。一般地,程序模块包括,但并不限于,线程、程序、对象、组件、以及实现特定任务或实现特定抽象数据类型的数据结构。也可以在分布式计算环境中实施本发明的实施例,在该分布式计算环境中,由远程处理设备执行任务,该远程处理设备通过通信网络进行链接。在分布式计算环境中,程序模块可以被置于包括存储器存取设备的本地和远程计算机存储介质中。
在运行时,计算机130执行诸如此处所描述的计算机可执行指令用于以表面上的符号图案对数据进行编码。计算机可执行指令适于将可表示编码数据的有序数字序列划分为多个连续窗口。连续窗口中的每一个包括有序数字序列中的一部分序列。计算机可执行指令也适于将每个连续窗口中所包含的所述部分序列转换为一系列数字。计算机可执行指令还适于将符号配置在表面上的多个表面窗口中。每个表面窗口对应于所述连续窗口中的一个。每个表面窗口内的符号的位置是基于所转换的一系列数字中的一个。而且,所述表面窗口内的符号位置可以指示编码数据。
计算机130还执行例如此处所述的计算机可执行指令用于解码表面上的符号图案以便确定对应于所述图案的数据。所述图案被划分为表面上的多个窗口。计算机可执行指令适于检测表面上的符号,以便确定其图案。计算机可执行指令也适于确定被确定图案的窗口边界。所述窗口边界规定所述窗口中的至少一个。而且,每个所规定的窗口包括与其相关的被检测符号中的至少一个。计算机可执行指令还适于确定相关窗口内被检测符号的位置。相关窗口内被检测符号的所确定的位置指示对应于所述图案的数据。
除非有另外的规定,此处所示出并描述的方法的执行或实现的顺序并不是必要的。即,发明人期望,可以以任何顺序实现所述方法的元素,除非有另外的规定,并且所述方法可以包括比此处所公开的元素更多或更少的元素。
当引入了本发明或其实施例的元素时,冠词“一个”、“该”和“所述的”旨在意指一个或多个元素。术语“包括”、“包含”以及“具有”旨在包含并意指除了所列出的元素之外也可以是附加的元素。
鉴于以上所述,将看到,实现了本发明的多个目的,并且获得了其它的优点。
当在不脱离本发明的实施例的范围的情况下可以用以上的结构和方法进行不同的改变时,意味着,以上说明中所包含的并且在所附附图中所示出的所有内容将被解释为是示意性的而非限定性的理解。