详细描述
如此处所使用的“笔”指的是可包括或不包括储存墨水的能力的任何书写工具。在某些示例中,依照本发明的实施例,不储存墨水能力的触针可用做笔。
如此处所使用的“照相机”指的是可从纸张或任何其它媒质捕捉图像的图像捕捉系统。
通用计算机
图1是可用于实现本发明的各方面的常规通用数字计算环境的一个示例的功能框图。在图1中,计算机100包括处理单元110、系统存储器120和将包括系统存储器的各种系统组件耦合到处理单元110的系统总线130。系统总线130可以是若干类型总线结构的任一种,包括存储器总线和存储器控制器、外围总线以及使用各种总线体系结构的任一种的局部总线。系统存储器120包括只读存储器(ROM)140和随机存取存储器(RAM)150。
基本输入/输出系统160(BIOS)包含如在启动时帮助在计算机100中的元件之间传输信息的基本例程,储存在ROM 140中。计算机100也包括用于对硬盘(未示出)进行读写的硬盘驱动器170、用于对可移动磁盘190进行读写的磁盘驱动器180、以及用于对诸如CD ROM或其它光媒质等可移动光盘192进行读写的光盘驱动器191。硬盘驱动器170、磁盘驱动器180和光盘驱动器191分别由硬盘驱动器接口192、磁盘驱动器接口193和光盘驱动器接口194连接到系统总线130。驱动器及其关联的计算机可读媒质为个人计算机100提供了计算机可读指令、数据结构、程序模块和其它数据的非易失存储。本领域的技术人员可以理解,在示例操作环境中也可使用可储存可由计算机访问的数据的其它类型的计算机可读媒质,如磁带盒、闪存卡、数字视频盘、贝努利盒式磁带、随机存取存储器(RAM)、只读存储器(ROM)等等。
众多程序模块可储存在硬盘170、磁盘190、光盘192、ROM 140或RAM 150中,包括操作系统195、一个或多个应用程序196、其它程序模块197和程序数据198。用户可通过输入设备,如键盘101和定位设备102向计算机100输入命令和信息。其它输入设备(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合到系统总线的串行端口接口连接到处理单元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的服务器检索网页。可使用各种常规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可以足够大来捕捉位置212处的笔尖202的图像。仅供参考,位置212处的图像被称为虚拟笔尖。注意,由于笔尖、透镜208和图像传感器211之间的恒定关系,相对于图像传感器211的虚拟笔尖位置是固定的。
以下变换FS→P将由照相机捕捉的图像中的位置坐标转换成纸张上的真实图像的位置坐标:
L纸张=FS→P(L传感器)
在书写的过程中,笔尖和纸张在同一平面上。因此,从虚拟笔尖到真实笔尖的变换也是FS→P:
L笔尖=FS→P(L虚拟笔尖)
变换FS→P可被估算为逼近FS→P的仿射变换:
其中,θx,θy,sx和sy是在位置204处捕捉的图案的两个方向的旋转和比例。此外,可通过将已捕捉图像与纸张上对应的真实图像进行匹配来细化FS→P′。“细化”指通过被称为递归方法的一种类型的优化算法来获取变换FS→P的更精确的估算。该递归方法将矩阵FS→P′作为初始值来处理。经细化的估算更精确地描述了S和P之间的转换。
下一步,可通过校准来确定虚拟笔尖的位置。
将笔尖202置于纸张上的固定位置L笔尖上。接着摆动该笔,从而允许照相机203用不同的笔姿势来捕捉一系列图像。对于捕捉到的每一图像,可获得变换FS→P。从该变换,可获得虚拟笔尖的位置L虚拟笔尖:
L虚拟笔尖=FP→S(L笔尖)
其中,L笔尖被初始化为(0,0),并且
FP→S=(FS→P)-1
通过对从每一图像获得的L虚拟笔尖求平均值,可确定虚拟笔尖的位置L虚拟笔尖。采用L虚拟笔尖,可获得L笔尖的更准确的估算。在若干次迭代之后,可确定虚拟笔尖的准确位置L虚拟笔尖。
虚拟笔尖的位置L虚拟笔尖现在已知。也可从捕捉的图像获得变换FS→P。最后,可使用该信息来确定真实笔尖的位置L笔尖:
L笔尖=FS→P(L虚拟笔尖)
阵列的编码
可通过折叠一维序列来构造二维阵列。包含足够多数量比特的二维阵列的任何部分可用于确定其在整个二维阵列中的位置。然而,有必要从一个已捕捉的图像或几个已捕捉的图像确定位置。为将已捕捉的图像部分与二维阵列中的两个或多个位置相关联的概率最小化,可使用一非重复序列来创建该阵列。所创建的序列的一个属性是该序列不在一段长度(或窗)n上重复。下文描述了一维序列的创建,随后将序列折叠成阵列。
序列构造
数字序列可用做编码系统的起始点。例如,序列(也称为m序列)可被表示为域Fq中的q元素集。此处,q=pn,其中,n≥1,并且p是质数。序列或m序列可通过各种不同的技术来生成,包括但不限于,多项式除法。使用多项式除法,序列可被定义如下:
其中,Pn(x)是在域Fq[x](具有qn个元素)中n次的本原多项式。Rl(x)是域Fq[x]中l次(其中,l<n)的非零多项式。序列可使用一迭代过程来创建,它具有两个步骤:首先,将两个多项式相除(得到域Fq中的一个元素),其次,将余项乘以x。当输出开始重复时,停止计算。该过程可使用一线性反馈移位寄存器来实现,如Douglas W.Clark和Lih-Jvh Weng的文章“Maximal and Near-Maximal ShiftRegister Sequences:Efficient Event Counters and Easy Discrete Logarithms(最大和近最大移位寄存器序列:有效的事件寄存器和简单的离散对数)”中所描述的,该文发表在IEEE计算机学报43.5(IEEE Transactions on Computers 43.5)(1994年5月,560-568页)上。在这一实施例中,在序列的循环移位和多项式Rl(x)之间建立一种关系:改变Rl(x)仅对该序列循环移位,并且每次循环移位对应于一个多项式Rl(x)。所得的序列的一个性质是,该序列具有qn-1的周期,并且在一个周期内,在宽度(或长度)n上,任何部分在该序列中存在一次且仅一次。这被称为“窗特性”。周期qn-1也被称为序列的长度,n被称为序列的阶。在此处的实现中,q被选为2。
上述过程仅是可用于创建具有窗特性的序列的各种过程的其中一个。
阵列构造
可用于创建图像(其一部分可由照相机捕捉)的阵列(或m阵列)是一维序列或m序列的扩展。设A为周期(m1,m2)的阵列,即A(k+m1,l)=A(k,l+m2)=A(k,l)。当n1×n2的窗通过A的周期移位时,Fq上所有的非零n1×n2矩阵出现一次且仅一次。这一特性也被称为“窗特性”,因为每一窗是唯一的。窗然后可被表达为周期(m1,m2)和阶(n1,n2)的阵列(m1和m2是阵列中存在的水平和垂直比特数)
可通过折叠序列来构造二进制阵列(或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×m2:
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的示例编码的1或0的表示可以交换,而没有任何影响。图4C以隔行排列示出了占据两行或两列的比特表示。图4D以虚线形式示出了行和列中的像素的替换排列。最后,图4E以不规则间隔格式(例如,两个深色点之后为一个空白点)示出了列和行中的像素表示。
再次参考图4A,如果比特由3×3的矩阵表示,并且成象系统检测到3×3区域中的一个深色行和两个空白行,则检测到0(或1)。如果检测到图像具有一个深色列和两个空白列,则检测到1(或0)。
此处,使用了一个以上像素或点来表示一个比特。使用单个像素(或点)来表示一个比特是脆弱的。灰尘、纸张中的折痕、不平坦表面等等会造成读取数据单元的单个比特表示的困难。然而,可以理解,可使用不同的方法来图形地表示表面上的阵列。某些方法在图4C到4E中示出。可以理解,也可使用其它方法。一种方法在图11中仅使用间隔移位的点来描述。
使用比特流来创建图4B的图形图案403。图形图案403包括12行和18列。行和列由比特流形成,该比特流使用比特表示401和402被转化成图形表示。图4B可被视为具有以下比特表示:
解码
当一个人用图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的原始比特流相关。相关可以众多方式执行。例如,它可通过递归方式执行,其中,将恢复的比特流与原始比特流内的所有其它比特流片段进行比较。其次,可在恢复的比特流和原始比特流之间执行统计分析,例如使用两个比特流之间的汉明距离来执行。可以理解,可使用各种方法来确定恢复的比特流在原始比特流中的位置。
如将讨论的,EIC图案分析从图像603获得恢复的比特。一旦得到了恢复的比特,需要在原始阵列(例如,图4B所示的)中查找已捕捉图像。确定比特分段在整个阵列中的位置的这一过程可被若干项目变得更复杂。首先,可遮蔽要被捕捉的实际比特(例如,照相机可捕捉具有遮蔽原始代码的手写体的图像)。其次,灰尘、折痕、反射等等也可在已捕捉图像中引入误差。这些误差可令查找过程变得更困难。在这一点上,图像捕捉系统可能需要用从该图像提取的非顺序比特来运作。下文示出了用来自图像的非顺序比特来操作的方法。
设序列(或m序列)I对应于幂级数I(x)=1/Pn(x),其中,n是m序列的阶,并且已捕捉的图像包含Ib=(b0 b1 b2 … bK-1)t的K个比特,其中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=(r0 r1 r2 … rn-1)t,并且A=(IT(I)…Tn-1(I))t,它包括I从0移位到(n-1)移位的循环移位。现在在R中仅稀少的K个比特可用于解r。设R中bi和b0之间的下标差为ki,i=1,2,…,k-1,则R的第1个和(ki+1)个元素(i=1,2,…,k-1)正好是b0,b1,...,bk-1。通过选择A的第1列和第(ki+1)列,i=1,2,…,k-1,形成以下二元线性方程:
bt=rtM (3)
其中,M是A的n×K子矩阵。
如果b是无误差的,则r的解可被表示为:
其中,
是M的任何非退化n×n子矩阵,
是b的对应的子向量。
已知r,可使用Douglas W.Clark和Lih-Jyh Weng的“Maximal and Near-MaximalShift Register Sequences:Efficient Event Counters and Easy Discrete Logarithms(最大和近最大移位寄存器序列:有效的事件计数器和简单的离散对数)”,IEEE计算机学报43.5(IEEE Transactions on Computers 43.5)(1994年5月,560-568页)中描述的Pohlig-Hellman-Silver算法来找出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中的误差比特数n
e与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与最小误差比特数相关联,来确定是否成功地执行了纠错。如果有多个r,则在步骤809返回误差,指示解码过程失败。如果没有多个r,则在步骤807计算提取的比特在序列(或m序列)中的位置,例如,通过使用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)
使用局部约束确定X、Y位置(步骤1209)
·使用智能比特选择来解码。组成部分1253包括四部分。
智能比特选择:选择被提取比特的另一个子集(步骤1217)
调整步骤1217和步骤1219迭代的次数(循环次数)(步骤1221)
本发明的实施例利用了一种谨慎策略,依照局部约束来选择比特、调整循环次数和确定X、Y位置(位置坐标),所述局部约束被提供给过程1200。在组成部分1251和1253中,步骤1205和1219(“解码一次”)都使用方程(4)来计算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比特,并求出r
1。可使用方程(5)来计算被解码的比特。设
其中
是
的第k个比特,B
1={b
k|k∈I
1}且
即,B
1是解码结果与原始比特相同的比特,且
是解码结果与原始比特不同的比特,I
1和
是这些比特相应的下标。应该理解,当从B
1中选择任意n个独立的比特时,将获得相同的r
1。因此,如果不仔细选择接下来的n个比特,所选择的比特可能是B
1的子集,这会导致获得相同的r
1。
为了避免这样的情况,步骤1217依照以下的过程选择下n个比特:从
1303中选择至少一个比特,其余的比特随机地从B
1 1301和
1303中选出,如对应于比特排列1351的图13所示。接着过程1200通过计算
得出r
2,并找出B
2 1305、1309和
1307、1311。重复步骤1。当对每个
(i=1,2,3...,x-1,其中x是当前循环数目),选择下n个比特时,至少有一个比特是从
中选出的。当没有这样的比特子集可被选择或达到循环次数时,该迭代终止。
循环次数计算
使用纠错组成部分1253,在每次循环后调整所需迭代次数(循环次数)。由期望的误差率来确定循环次数。其中并非所有被选择的n比特都是正确的期望误差率pe是:
其中lt表示循环次数,它由一个常数初始化,K是从所捕捉阵列中提取的比特的数目,ne表示在过程1200的迭代期间出现的最小数目的误差比特,n是m-阵列的阶数,且CK n是组合的数目,其中n比特是从K比特中选取的。
在该实施例中,我们希望pe小于e-5=0.0067。与(6)结合,我们得到:
调整循环次数会显著地减少纠错所需的过程1253迭代的次数。
使用局部约束来确定X、Y位置
在步骤1209和1225中,被解码的位置应该在目的地区域内。所述目的地区域是算法的输入,且根据不同的应用,它可以是各种尺寸和位置,或简单地是整个m-阵列。一般地,它可以由应用预知。例如,如果已确定先前的位置,考虑到书写速度,当前笔尖的目的地区域应该接近先前的位置。然而,如果笔被提起,那么它的下一个位置可以是任何地方。因此,在这种情况下,目的地区域应该是整个m-阵列。由以下步骤确定正确的X、Y位置。
在步骤1224中,过程1200选择ri,其相应的误差比特的数目少于:
其中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=(I0 I1 … I6)t是阶数n=3的m-序列。那么
同样假设所提取比特b=(b0 b1b2 b3 b4)t,其中K=5,实际上是m-序列的第s、(s+1)、(s+3)、(s+4)和(s+6)比特(这些数目实际上是m-阵列长度L=2n-1=23-1=7的模数)。因此
它是由A的第0、1、3、4和6列组成。唯一地确定m-阵列中b0的X、Y位置的数字s可在解出r=(r0 r1 r2)t后计算出,所述r=(r0 r1 r2)t被期望实现bt=rtM。由于b中可能的误差比特,可能不能完全地实现bt=rtM。
过程1200利用以下的程序。从b中随机地选择n=3比特,为 求出r1:
其中
由M的第0、1和2列组成。(注意,
是n×n矩阵,且r
1 t是1×n向量,这样
是所选比特的1×n向量。)
接着,计算被解码的比特:
其中M是n×K矩阵,且r
1 t是1×n向量,使得
是1×K向量。如果
等于b,即,没有检测到误差,那么步骤1209确定X、Y位置,且步骤1211确定解码的位置是否在目的地区域内。如果是,解码是成功的,就执行步骤1213。否则,如图1215所示,解码失败。如果
不同于b,那么在b中检测到误差比特,就执行组成部分1253。步骤1217确定集合B
1,为{b
0 b
1 b
2 b
3},其中解码的比特与原始比特相同。因此,
(对应于图13中的比特排列1351)。循环次数(lt)被初始化为一常量,例如,100,根据应用,它是可变化的。注意,对应于r
1的误差比特数等于1。接着,步骤1221根据方程(7)来更新循环次数(lt),lt
1=min(lt,13)=13。
步骤1217接着从b选择另外的n=3比特。如果这些比特都属于B1,即{b0 b2 b3},那么步骤1219将再次确定r1。为了防止这样的重复,步骤1217会从选择(举例而言)一个比特{b4},并保留来自B1的两个比特{b0 b1}。
所选择的三个比特形成了 步骤1219求出r2:
步骤1219计算
找出这样的B
2,例如{b
0 b
1b
4},使得
和b是相同的。那么
(对应于图13中的比特排列1353)。步骤1221根据方程(7)更新循环次数(lt)。注意与r
2相关联的误差比特的数目等于2。代入(7),lt
2=min(lt
1,32)=13。
因为需要执行另一迭代,步骤1217从b中选择另外的n=3比特。所选择的比特应该不都属于B
1或B
2。因此,步骤1217,举例而言,可从
选择一个比特{b
4},从
选择一个比特{b
2}并保留一个比特{b
0}。
继续所述的对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所示的。
启用嵌入式交互代码的显示器
嵌入式交互代码(EIC)技术指的是一种允许将x-y位置数据和元数据两者嵌入到包括纸张、白板、显示屏等的各种表面的数据嵌入和编码技术。显示屏可以是液晶显示器(LCD)、有机发光装置(OLED)、等离子显示器、平板显示器等。
LCD是使用如液体那样流动并完全光的杆状分子(液晶)的显示技术。未能量化(unenergized)的晶体指引光穿过两个偏振滤光片,从而允许显示自然的背景色。当被能量化时,它们重新引导光在偏振片之一中吸收,使得显示交叉偏振片的暗外观。
OLED(也称为有机发光二极管)是一种通常由两个电触点(电极)之间的一系列有机层构成的薄膜发光器件。OLED可使用小分子量有机材料或基于聚合物的材料来制造。与LCD和由分层材料构造的场致发射显示器不同,OLED是单片器件,因为每一层被沉积在另一层上,从而形成单一的单元。
等离子显示器(也称为“气体放电显示器”)是一种使用沿充满了惰性电离气体(通常是氙和氖的混合)的荧光体排列的小单元的平板屏幕技术。三个单元构成一个像素(一个像素具有红色荧光体、一个绿色荧光体和一个蓝色荧光体)。单元被夹在x和y轴面板之间,并且单元通过对适当的x和y电极充电来选择。充电使得单元中的气体发出紫外光,并且红、绿和蓝的不同强度的组合产生所需的所有颜色。
平板显示器是在便携式计算机中使用的相对较薄的显示屏幕。几乎所有的现代平板显示器都使用了LCD技术。大多数LDC屏幕是背光的,以使其在明亮的环境中更容易阅读。
嵌入式交互代码(EIC)信息可被嵌入到显示表面内,使得诸如数字笔等基于照相机的设备的用户可与显示在显示表面上的文档交互。
可使用各种技术来将EIC图案嵌入到特定的显示表面中。在本发明的一个实现中,提出了几种相对低成本的将EIC图案嵌入到诸如相对较大的等离子显示器、LCD屏幕、白板、如CAD绘图等媒体(例如,EIC图案作为一不同的层插入到电子CAD绘图中)、屏幕保护膜以及加水印的屏幕图像等显示表面中的方法。单个配备了照相机的数字笔可同时在印刷文档和不同类型的显示表面上工作,而无需用户手动切换数字笔模式来考虑不同类型的显示表面(即,印刷文档还是各种类型的显示表面),由此提供了增强且更一致的用户体验。
EIC图案载体结构
图13示出了根据本发明的实施例的用于显示器1300的EIC图案载体的结构。如图13所示,该EIC图案载体包含外部透明层1308,带有位于外部透明层1308内侧的EIC点图案1306(由包括但不限于EIC图案点1306-1和1306-2的EIC图案点构成);红外反射层1302;以及内部透明层1304。外部透明层1308可以是膜、塑料、玻璃等。图案可以被打印或印刷到外部透明层1308的内侧。红外反射覆膜(即,覆盖表面)层1302在内部透明层1304的外侧。内部透明层1304也可以是膜、塑料、玻璃等。透明胶1310可用于外部透明层1308和红外反射层1302之间,且在内部透明层1304的内侧上,如图13所示。
红外反射层1304是可任选的。红外反射层1304可提高从显示表面捕捉的图像的质量。如图214所示,由红外反射层1304反射的光也会由EIC图案点1306反射,由此增加了来自红外发光二极管(“IR LED”)1402的穿过透镜1406被反射回到图像传感器1404的光量。
内部透明层1304是可任选的。出于类似于以上关于红外反射层1304所讨论的相同的原因,双透明层结构可以提高从显示表面捕捉的图像的质量。
显示器制造商可将EIC图案载体集成到各种类型的显示器中。例如,图15示出了根据本发明的实施例的用于表示平板显示器上的一个比特的EIC符号的比特表示。用于平板显示器的EIC符号大小是600DPI下的8点。
在本发明的一个实现中,EIC阵列地址空间是30位,其中的28位被分配用于标识特定的显示器,而2位被分配用于表面标识符,这将在以下更详细讨论。
根据本发明的一个实施例,EIC阵列可用相对较大的地址空间,诸如240位来实现,这允许显示器制造商用唯一表面标识符来发行每一新的显示器。如将清楚的,也可实现除以上讨论的之外的EIC阵列地址空间大小。
表面ID编码
图17示出了根据本发明的实施例的用于编码表面标识符的系统的流程图。如由m阵列1702所描绘的一个或多个m阵列和表面标识符1704被输入到表面ID编码模块1706中,后者输出具有已编码表面标识符1708的组合阵列。这一个或多个输入的m阵列可以是诸如位置m阵列1902和表面标识符m阵列1904等m阵列,这两者将在图19中描述。
显示表面的一特定区域中的表面标识符可使用与表示X,Y位置信息的m阵列相同的m阵列来编码。然而,表面ID m阵列可根据表面标识符的值而位移。
图19示出了根据本发明的实施例的表面ID编码示例。在图19的左侧示出了两个相同的m阵列,即位置m阵列1902和表面ID m阵列1904。这两个m阵列都是6阶m阵列。因此,每一m阵列的宽度是23+1,且每一m阵列的高度是23-1。
位置m阵列和表面ID m阵列可包含长度相同但具有彼此不同的比特序列的重复比特序列。换言之,可使用不同的n阶本原多项式来生成不同的m阵列,该m阵列因此将包含不同的重复比特序列。
根据本发明的各实施例,两个m阵列可被组合以在一个EIC符号中编码两个比特。EIC符号的一个示例在图20中描绘。图20中的EIC符号占据了图20所示的网格空间除了底部的行和最右边的列之外的所有行和列。该行和该列属于相邻的EIC符号。因此,尽管黑点2002-1和2002-4属于图20所示的EIC符号,但是黑点2002-2和2002-3不是该EIC符号的一部分。数据点2006-1到2006-16可以是用于表示信息比特的黑色或白色。方向点2004-1到2004-4总是为白色,以便于正确地定向照相机捕捉的EIC符号图像。
当组合位置m阵列1902和表面ID m阵列1404时,基于表面标识符的值(例如,11),表面ID m阵列1904的开头被移位到位置m阵列1902的位置(xd,yd),如在图19中的1930处所描述的。x,y坐标可如下计算:
其中n是m阵列的阶数,并且0≤表面ID≤2n-2。
在图19中,所编码的表面标识符1906的值为11,并且m阵列的阶数为6(即,n=6)。因此,
如部分组合的m阵列1908中所示,表面标识符m阵列1904从位置m阵列1902的位置(2,1)处开始。由于位置m阵列1902和表面标识符m阵列1904自身重复,因此可生成具有已编码表面标识符1910的组合的m阵列,这在图19的右下角示出。作为在(2,1)处开始表面ID m阵列1904的结果,在组合了位置m阵列1902和表面ID m阵列1904的重叠的行和列之后,留下了表面ID m阵列1904的部分1920、1914和1926。表面ID m阵列1904的部分1926和位置m阵列1902的部分1924在组合阵列1910中组合,如在1928处所描绘的。类似地,表面标识符m阵列1904的部分1914和位置m阵列1902的部分1912在组合阵列1910中组合,如在1916处所描绘的。并且表面ID m阵列1904的部分1920和位置m阵列1902的部分1918在组合阵列1910中组合,如在1922处所描绘的。
表面标识符的值是组合阵列中位置m阵列1902与表面ID m阵列1904之间的距离。该距离在组合阵列1910的每一对比特中保持相同。因此,如果获得其相应的m阵列中的每一比特的位置,可确定组合阵列1910中的该距离。
表面ID解码
图18示出了根据本发明的实施例的用于解码已编码表面标识符的系统的流程图。具有已编码标识符1708的组合阵列被输入到表面ID解码模块1802中,后者输出已解码表面标识符1804。
为解码已编码表面标识符,已被组合来形成组合阵列1708的m阵列被各自单独解码。例如,参考图19中所示的示例,单独解码位置m阵列1902和表面ID m阵列1904。然后,对于特定的点P1932,获得两个位置:该点在位置m阵列1902中的位置(xp,yp),以及该点在表面ID m阵列1904中的位置(xm,ym)。
表面标识符的值然后可如下计算:
其中n是组合m阵列1708的阶数。
在图19所示的示例中,P在第一m阵列中的位置是(4,3)。P在第二m阵列中的位置是(2,2)。因此,表面标识符的值是:
表面ID=mod(3-2,23-1)·(23+1)+mod(4-2,23+1)=11
对于真实的应用,可能存在多维表面标识符信息。例如,假定有1个位置维度和7个表面标识符维度。则总的表面标识符可如下计算。
在对每一维度解码之后,位置(xp,yp)是表示X,Y位置的维度的输出,而(xm i,ym i)是其余7个表面ID维度的输出,其中i=0,1,2,...,6。因此,可获得在每一维度中编码的表面标识符信息:
其中n是m阵列的阶数。
对于维度i,其中i=0,1,2,...,6,从对该维度成功解码的每一图像中获得表面ID部分i的值。对于所有图像,最经常出现的值可被认为是表面标识符的该部分的值。
现在获得了在表示表面标识符的7个维度的每一个中编码的表面标识符,则表面标识符可被计算为:
其中n是m阵列的阶数。如将清楚的,可使用任何适当数目的维度来嵌入表面ID信息。
在多个维度中嵌入表面ID信息允许编码非常大量的表面ID值。例如,假定有8个维度可用,一个维度用于X,Y位置数据,且7个维度用于表面ID信息。对于表面ID信息的7个维度,假定使用28阶m阵列(即,m阵列将具有214+1和214-1行)。因此,可在七个维度中编码的表面ID信息的可能值的个数是(228-2)7。
图16示出了四种不同颜色的EIC图案的一部分:青色、洋红、黄色和黑色。这些是打印和印刷行业中的主流颜色。然而如将清楚的,也可使用其它颜色。当在透明材料上打印或印刷青色、洋红或黄色EIC图案时,配备了照相机的计算设备通常捕捉比在EIC图案为黑色时更好的图像。对于人类用户,黄色EIC图案较青色或洋红EIC图案不可见(且因此较不会使人分心)。
EIC图案可被打印到EIC图案膜上以使用户能够经由配备了照相机的计算设备与由显示器显示的文档交互(包括用数字笔作出注解)。根据本发明的各实施例,EIC图案可由单色或彩色打印机打印到透明膜上。此外,打印机可以是激光打印机或喷墨打印机。研究结果表明,以下组合产生合适的结果,以性能的降序排列:黄色彩色激光打印机、洋红彩色激光打印机、青色彩色激光打印机、黄色彩色喷墨打印机、洋红彩色喷墨打印机、青色彩色喷墨打印机、单色激光打印机和单色喷墨打印机。
尽管以对结构特征和/或方法动作专用的语言描述了本主题,但是可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求书的示例形式来公开的。