具体实施方式
本发明的各方面涉及确定已捕捉的图像相对于较大图像的位置。本发明描述的位置确定方法和系统可结合多功能笔使用。
为方便读者,以下内容由小标题分割。小标题包括:术语、通用计算机、图像捕捉笔、数组的编码、解码、纠错、位置确定、以及照相机捕捉的图像的分析和加标签。
I.术语
笔-可包括或不包括储存墨水的能力的任何书写工具。在某些示例中,依照本发明的实施例,不储存墨水能力的触针可用做笔。
照相机-可从纸张或任何其它媒质捕捉图像的图像捕捉系统。
II.通用计算机
图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浏览器的任一种来显示并操作网页上的数据。
III.图像捕捉笔
本发明的各方面包括将已编码的数据流置于表示该已编码的数据流的显示形式(例如,如后文参考图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处捕捉的图案的两个方向的旋转和比例。此外,可通过将已捕捉图像与纸张上对应的真实图像进行匹配来细化F′S→P。“细化”指通过被称为递归方法的一种类型的优化算法来获取变换FS→P的更精确的估算。该递归方法将矩阵F′S→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虚拟笔尖)
IV.数组的编码
可通过折叠一维序列来构造二维数组。包含足够多数量比特的二维数组的任何部分可用于确定其在整个二维数组中的位置。然而,有必要从一个已捕捉的图像或几个已捕捉的图像确定位置。为将已捕捉的图像部分与二维数组中的两个或多个位置相关联的概率最小化,可使用一非重复序列来创建该数组。所创建的序列的一个属性是该序列不在一段长度(或窗)n上重复。下文描述了一维序列的创建,随后将序列折叠成数组。
IV.A.序列构造
数字序列可用做编码系统的起始点。例如,序列(也称为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被称为序列的阶。
上述过程仅是可用于创建具有窗特性的序列的各种过程的其中一个。
IV.B.数组构造
可用于创建图像(其一部分可由照相机捕捉)的数组(或m数组)是一维序列或m序列的扩展。设A为周期(m1,m2)的数组,即A(k+m1,l)=A(k,l+m2)=(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可被视为具有以下比特表示:
V.解码
当一个人用图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序列的阶,并且已捕捉的图像包含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)正好是bo,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-Maximal ShiftRegister 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序列的长度)。
VI.纠错
如果在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返回结果。
VII.位置确定
图9示出了用于确定笔尖的位置的过程。输入是由照相机捕捉的图像,输出可以是笔尖的位置坐标。而且,输出可包括(或不包括)其它信息,如已捕捉图像的旋转角度。
在步骤901,从照相机接收图像。下一步,在步骤902可任选地预处理所接收的图像(如由步骤902的虚线框所示),以调整亮和暗像素之间的对比度等等。
下一步,在步骤903,分析该图像以确定其中的比特流。
下一步,在步骤904,多次从比特流中随机地选择n个比特,并确定接收的比特流在原始序列(或m序列)中的位置。
最后,一旦在步骤904确定了已捕捉图像的位置,可在步骤905确定笔尖的位置。
图10给出了关于903和904的更多细节,并示出了提取已捕捉图像内的比特流的方法。首先,在步骤1001从照相机接收图像。然后在步骤1002,该图像可任选地经历图像预处理(如由步骤1002的虚线所示的)。在步骤1003提取图案。此处,可提取各线上的像素以找出图案的方向和角度θ。
下一步,在步骤1004分析接收的图像,以确定底层的网格线。如果在步骤1005找到网格线,则在步骤1006从图案中提取代码。然后在步骤1007对该代码进行解码,并在步骤1008确定笔尖位置。如果在步骤1005没有找到网格线,则在步骤1009返回错误。
VIII.加水印的文档图像:生成、分析和加标签
本发明的实施例涉及分析包含诸如迷宫图案等位置编码的信息的文档图像,并对图像加标签。这类文档分析的结果可用于有效地确定由照相机捕捉的图像在位置编码的文档内的位置。
参考图11,依照本发明的各种实施例,系统1100包括图像生成和捕捉模块1102以及分析和加标签模块1106。捕捉图像用于后续分析和加标签的合适的技术在上文名为“图像捕捉笔”的III节中,以及在本节的以下内容和名为“生成加水印的灰度级文档图像”的VIII.A节中有揭示。该分析和加标签模块1106接收由图像生成和捕捉模块1102输出的图像数据1104以及离线训练数据1110作为输入;执行分析和加标签过程,如下文更详细讨论的;并输出图像标签信息1108。
依照本发明的各个实施例,照相机203捕捉的图像的大小为32×32像素。嵌入的m数组的阶为36,即m数组的大小为(218+1)×(218-1),它用于对表面207上的位置进行位置编码。因此,为从子块m数组中解码唯一的x-y位置,用于确定表面207上的位置的子块的比特数应当至少为36。
依照本发明的各个实施例,用迷宫图案对印刷文档加水印。这类迷宫图案可被诸如文本等文档的内容遮蔽。根据这类遮蔽的程度,可能无法从由照相机捕捉的图像中提取足够的m数组比特来确定该由照相机捕捉的图像在文档内的位置。
依照本发明的各个实施例,加水印的文档图像被分析并加标签。分析和加标签涉及基于文档内特定位置上的迷宫图案单元的可见程度来确定加水印的文档中的x-y位置的能力。
VIII.A.生成加水印的灰度级文档图像
图12描述了依照本发明的各个实施例用于生成加水印的灰度级文档图像的步骤,该文档可被分析和加标签。通过如由1200所示的将电子文档描绘成对应于印刷文档的位图,或通过如1202和1206所示的扫描纸件文档,来获取文档图像。然后对位图进行重采样到适当的分辨率,如1208所示。分辨率的确定基于以下考虑:(1)文档图像的分辨率不应当小于已捕捉图像的分辨率,因为当已捕捉图像的位置无法通过m数组解码来确定时,已捕捉图像将与加水印的灰度级文档图像进行匹配,以确定位置;(2)一个印刷的迷宫图案单元应当被映射到整数个文档图像像素,使得匹配算法可以有效地起作用。例如,如果照相机的分辨率是0.15mm/像素,即,物理世界的0.15mm被映射到一个照相机像素,则印刷迷宫图案单元大小为0.45mm×0.45mm,即,一个印刷迷宫图案单元被映射到照相机传感器上的3×3像素,文档图像的分辨率应当也被设置为0.15mm/像素,使得印刷迷宫图案单元将被映射到文档图像中的3×3像素区域。
然后对获取的图像加水印。图13描述了文档内容1300的一部分的图像1300、经位置编码的迷宫图案的一部分1302、组合的内容和迷宫图案1304、以及内容和迷宫图案的一部分的经放大的视图1306,它示出了:(1)迷宫图案单元由于被叠加的文本遮蔽而不可见的位置1308、以及(2)迷宫图案单元未被文档内容遮蔽并因此可见的位置1310。
VIII.B.文档图像的分析和加标签
依照本发明的各种实施例,文档图像通过以下步骤来加以分析:将图像划分成具有实际上与迷宫图案单元相同大小的相对较小的块;确定这些小块是否被诸如文档文本等文档内容遮蔽;对每一像素,对以该像素为中心的邻域窗中的完全可见的块的数量进行计数;以及基于该数量对像素加标签。邻域窗可具有实际上与照相机203捕捉的图像相同的大小,即,32×32像素。
注意,上述过程不要求对灰度级文档图像加水印,即,内容与迷宫图案相组合。只要文档图像被划分成具有实际上与迷宫图案单元相同大小的相对较小的块,则分析被文档内容遮蔽的迷宫图案单元就等效于分析被文档内容遮蔽的块。
图14示出了这一32×32像素邻域窗1400以及其中心像素1402。依照本发明的各个实施例,文档图像的像素可被加标签为以下四种类型之一:
类型I:32×32像素邻域窗(以所考虑的像素为中心)基本上仅包含经位置编码的迷宫图案单元。
类型II:32×32像素邻域窗包含60个或更多可见迷宫图案单元。
类型III:32×32像素领域窗包含36到60个可见迷宫图案单元。
类型IV:32×32像素邻域窗包含35个或更少的可见迷宫图案单元。
依照本发明的各个实施例,当已捕捉图像的中心位于类型I或类型II区域中时,图像在文档内的位置可唯一地通过m数组解码来确定。
图15示出了示例文档的文档分析结果,其中,文档的区域被不同地加上颜色(或阴影),以表示基于每一像素的32×32邻域窗内的可见迷宫图案单元的数量,已对文档的该部分加上了哪一类型(即,类型I、II、III或IV)的标签。
注意,在对可见迷宫图案单元的数量进行计数时,32×32像素邻域窗应当被旋转360度,以考虑照相机可能在任一角度捕捉文档图像的事实。然而,为易于实现,仅分析非倾斜视图,并且由倾斜角引起的误差在确定像素类型的阈值中考虑。例如,图16描述了已捕捉的图像被旋转45度的情况。这是最坏的情况,其中,丢失了可见迷宫图案单元的最大值的17.2%。即使如此,类型II像素仍具有至少49(=60×(1-17.2%))个可见迷宫图案单元,这允许通过m数组解码来确定的唯一的x-y位置。换言之,如果像素被加标签为类型I或II,则无论照相机已什么角度来捕捉图像,仍具有足够数量的可见迷宫图案单元来用m数组解码确定x-y位置。因此,如果已捕捉图像无法被解码,则很可能它位于类型III或IV区域。
如果由于没有足够的迷宫图案单元可见而无法从笔画图像的序列中解码x-y位置,则可使用一搜索算法来确定文档中诸如在类型III和IV像素区域中的图像的位置。仅在类型III和IV区域上使用这一搜索算法相对于对实际上文档的所有部分使用该搜索算法,可降低用于确定图像位置的计算成本。例如,在图15的示例文档中,仅13.7%的区域被加标签为类型III(11.1%)或类型IV(2.6%)。与搜索整个文档相关联的计算成本远高于仅搜索类型III和IV区域的计算成本。在一个实现中,可花费10秒以上来搜索整个文档,而只需不到1秒来仅搜索类型III和IV区域。文档图像分析很大程度上降低了计算成本。
IX.由照相机捕捉的图像的加标签
由照相机捕捉的图像也可用上文在名为“文档图像分析和加标签”的VIII.B节中讨论的四种类型来加标签。可确定由照相机捕捉的图像基本上是否仅包含经位置编码的迷宫图案。换言之,可确定该图像是否为类型I图像。这一初始确定将在下文更详细讨论。
如果由照相机捕捉的图像不是类型I图像,则可分析由照相机捕捉的图像的经位置编码的迷宫图案,来确定可从该图像中提取的若干位置编码比特数。首先计算迷宫图案网格线的参数(沿每一维度的比例和旋转,即仿射变换),然后确定其中嵌入了迷宫图案的原始方向(或象限)。因此,m数组比特信息是基于网格线和条形方向(bar direction)来确定的。如果提取的比特数大于约60,则将该图像加标签为类型II;如果在提取的比特数在约36和60之间,则该图像被加标签为类型III;如果少于约36个比特被提取,则该图像被加标签为类型IV。为以这一方式对由照相机捕捉的图像进行分类,可使用下文名为“阈值算法”的IX.B节中讨论的阈值算法,以将迷宫图案从文本区域中分离。然后,可基于所提取的比特数对图像加标签。从类型I、II和III中提取的比特可用于确定由照相机捕捉的图像在较大的文档中的x-y位置。这一类型的位置确定过程对类型IV图像可省略,因为它们不包含用于x-y位置解码的足够的比特。
与同时包含文档内容和迷宫图案相反,为确定图像基本上是否仅包含经位置编码的迷宫图案,依照本发明的各个实施例,可使用一种被称为梯度图像直方图的支持间隔(SIGIH)的特征。SIGIH是基于以下知识来使用的:纯迷宫图案图像通常不包含边,而具有诸如文本等文档内容的图像通常包含边,因为文档内容通常比迷宫图案单元或空白区域更深。
IX.A.特征提取
依照本发明的各个实施例,特征提取的第一个步骤是梯度算子,如Sobel边算子或另一算子,可用于获取梯度图像。参考图17,两个卷积核1700和1702形成了Sobel边算子。为使用Sobel边算子,图像中的每一像素与这两个卷积核1700和1702进行卷积。一个核最大地对应于一般性的垂直边,而另一个核最大地对应于水平边。两个卷积的“向量和”值可被用做特定像素的输出值。该结果是梯度图像。
可计算由梯度算子产生的梯度图像的直方图。然后可从梯度图像的直方图中获取梯度图像直方图的支持间隔(SIGIH)。例如,图18示出了仅包含迷宫图案的已捕捉图像的梯度图像的直方图。对图18的直方图,SIGIH特征为17,它是具有非零值的沿x轴的最大数。
图19示出了包含诸如文本和/或一个或多个图等文档内容的已捕捉图像的梯度图像的直方图。对图19的直方图,SIGIH特征为44。
IX.B.阈值算法
依照本发明的各个实施例,用于确定图像是否为类型I的阈值算法可被划分成两个时期:(1)离线训练、以及(2)在线加标签。
IX.B.1.离线训练
在离线训练时期,可对具有已知标签(即,类型I、II、III或IV)的相对大量的图像计算SIGIH特征。纯迷宫图案图像的SIGIN通常低于其它类型的图像的SIGIH。可基于处理训练数据的结果选择最优阈值η。对于训练组中的基本上所有的纯迷宫图案图像,其SIGIH小于η,而对于基本上所有的非纯迷宫图案图像,其SIGIH大于η。图20示出了离线训练的一个示例结果,其中,最优阈值2004-η被选择为32。还示出对应于纯迷宫图案图像的直方图条2002,以及对应于非纯迷宫图案图像(即,包括文档内容的图像)的直方图条2006。
IX.B.2.在线加标签
在在线加标签期间,计算每一已捕捉图像的SIGIH。如果SIGIH小于η,则将该图像加标签为类型I图像。否则,如果SIGIH大于η,则将该图像加标签为除类型I之外的类型(即,类型II、III和IV)。
上述涉及文档分析和加标签的讨论假定已捕捉图像的对比度保持相对一致。换言之,假定图像传感器的放大器和/或照相机的光照条件保持相对一致。如果这些条件明显地改变,则可执行新的训练来更新特征参数。
X.总结性评论
上文描述的仅是本发明的原理的说明性应用。本领域的计数人员可在不脱离本发明的精神和范围的情况下实现其它方案和方法。本发明的任何方法可以可储存在计算机的盘或其它计算机可读媒质上的软件来实现。