U.S. patent application number 12/025768 was filed with the patent office on 2008-08-14 for method of imaging coding pattern using flags for determining tag data or block data.
This patent application is currently assigned to Silverbrook Research Pty Ltd. Invention is credited to Paul Lapstun, Kia Silverbrook.
Application Number | 20080191021 12/025768 |
Document ID | / |
Family ID | 39681171 |
Filed Date | 2008-08-14 |
United States Patent
Application |
20080191021 |
Kind Code |
A1 |
Lapstun; Paul ; et
al. |
August 14, 2008 |
Method of Imaging Coding Pattern using Flags for Determining Tag
Data or Block Data
Abstract
A method of imaging a coding pattern disposed on a surface of a
substrate. The method comprises the steps of: (a) operatively
positioning an optical reader relative to the surface and capturing
an image of a portion of the coding pattern; (b) sampling and
decoding flags in the coding pattern; (c) determining whether first
data symbols in the coding pattern define first data or a fragment
of second data embedded in a block of tags; (d) sampling the first
data symbols; and (e) (1) decoding the first data if it is
determined that the first data symbols define the first data; or
otherwise (2) storing the sampled first data symbols in a memory of
said reader and assembling stored first data symbols into the
second data when sufficient first data symbols have been sampled.
The imaged portion has a diameter of less than a block of tags, and
is typically less than two tag diameters.
Inventors: |
Lapstun; Paul; (Balmain,
AU) ; Silverbrook; Kia; (Balmain, AU) |
Correspondence
Address: |
SILVERBROOK RESEARCH PTY LTD
393 DARLING STREET
BALMAIN
2041
omitted
|
Assignee: |
Silverbrook Research Pty
Ltd
|
Family ID: |
39681171 |
Appl. No.: |
12/025768 |
Filed: |
February 5, 2008 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
60888775 |
Feb 8, 2007 |
|
|
|
Current U.S.
Class: |
235/454 |
Current CPC
Class: |
G06K 19/06 20130101;
G06F 2203/0337 20130101; G06K 7/10722 20130101; G06F 3/03545
20130101; G06T 7/32 20170101; G06F 2203/0384 20130101; G06F 3/0321
20130101 |
Class at
Publication: |
235/454 |
International
Class: |
G06K 7/10 20060101
G06K007/10 |
Claims
1. A method of imaging a coding pattern disposed on a surface of a
substrate, said method comprising the steps of: (a) operatively
positioning an optical reader relative to said surface and
capturing an image of a portion of said coding pattern, said coding
pattern comprising a plurality of contiguous tags, each tag
comprising: a plurality of data symbols, which comprises a
plurality of first data symbols; a plurality of data elements, each
of said data symbols being represented by a respective set of said
data elements; and one or more flags, said one or more flags
indicating either that: said first data symbols define a first data
contained in said tag; or said first data symbols define a fragment
of second data, said second data being embedded in a block of said
tags. (b) sampling and decoding said one or more flags; (c)
determining whether said first data symbols define said first data
or a fragment of said second data; (d) sampling said first data
symbols; and (e) (1) decoding said first data if it is determined
that said first data symbols define said first data; or otherwise
(2) storing said sampled first data symbols in a memory of said
reader and assembling stored first data symbols into said second
data when sufficient first data symbols have been sampled; wherein
said portion has a diameter of less than a block of tags.
2. The method of claim 1, wherein said first data encodes a
secret-key digital signature.
3. The method of claim 1, wherein said second data encodes a
public-key digital signature.
4. The method of claim 1, wherein said first data symbols are
arranged such that any tag-sized portion of said coding pattern is
guaranteed to contain said first data irrespective of whether a
whole tag is contained in said portion.
5. The substrate of claim 1, wherein said block has a width w of at
least 2 tags and a height h of at least 2 tags.
6. The method of claim 1, wherein said surface comprises a
plurality of blocks.
7. The method of claim 1, wherein said first data symbols define a
fragment of said second data, and said method comprises the step
of: reporting to the user that further data sampling is required to
acquire said second data.
8. The method of claim 1, wherein said first data symbols define a
fragment of said second data, and said method comprises the step
of: reporting to the user when sufficient fragments have been
retrieved.
9. The method of claim 1, wherein said one or more flags further
indicate whether said tag is contained in an active area of said
surface.
10. The method of claim 9, wherein said active area is selected
from the group comprising: a hyperlink area, a form field area and
a button area.
11. The method of claim 9 comprising the step of: reporting to the
user when said reader is positioned in an active area.
12. A system for imaging a coding pattern disposed on a surface of
a substrate, said system comprising: (A) said substrate, wherein
said coding pattern comprises a plurality of contiguous tags, each
tag comprising: a plurality of data symbols, which comprises a
plurality of first data symbols; a plurality of data elements, each
of said data symbols being represented by a respective set of said
data elements; and one or more flags, said one or more flags
indicating either that: said first data symbols define first data
contained in said tag; or said first data symbols define a fragment
of second data, said second data being embedded in a block of said
tags. (B) an optical reader comprising: an image sensor for
capturing an image of a portion of said coding pattern, said image
sensor having a field-of-view of less than a block of tags; and a
processor configured for performing the steps of: (i) sampling and
decoding said one or more flags; (ii) determining whether said
first data symbols define said first data or a fragment of said
second data; (iii) sampling said first data symbols; and (iv) (1)
decoding said first data if it is determined that said first data
symbols define said first data; or otherwise (2) storing said
sampled first data symbols in a memory of said reader and
assembling stored first data symbols into said second data when
sufficient first data symbols have been sampled.
13. The system of claim 12, wherein said first data encodes a
secret-key digital signature.
14. The system of claim 12, wherein said second data encodes a
public-key digital signature.
15. The system of claim 12, wherein said surface comprises a
plurality of blocks.
16. The system of claim 12, wherein said reader comprises at least
one of: means for reporting to a user that said coding pattern
contains said second data; means for reporting to a user that
further data sampling is required to acquire said second data; and
means for reporting to a user when sufficient fragments of said
second data have been retrieved.
17. The system of claim 12, wherein said one or more flags further
indicate whether said tag is contained in an active area of said
surface.
18. The system of claim 17, wherein said active area is selected
from the group comprising: a hyperlink area, a form field area and
a button area.
19. The system of claim 17, wherein said reader comprises means for
reporting to the user when said reader is positioned in an active
area.
20. The system of claim 12, wherein said reader is an optically
imaging pen having a nib.
Description
FIELD OF INVENTION
[0001] The present invention relates to a position-coding pattern
on a surface.
COPENDING APPLICATIONS
[0002] The following applications have been filed by the Applicant
simultaneously with the present application:
TABLE-US-00001 NPT065US NPT066US NPT067US NPT068US NPT069US
NPT070US NPT071US NPT072US NPT073US NPT074US NPT075US NPT076US
NPT077US NPT078US NPT079US NPT080US NPT081US
[0003] The disclosures of these co-pending applications are
incorporated herein by reference. The above applications have been
identified by their filing docket number, which will be substituted
with the corresponding application number, once assigned.
CROSS REFERENCES
[0004] The following patents or patent applications filed by the
applicant or assignee of the present invention are hereby
incorporated by cross-reference.
TABLE-US-00002 10/815621 10/815635 10/815647 11/488162 10/815636
11/041652 11/041609 11/041556 10/815609 7204941 7278727 10/913380
7122076 7156289 09/575197 6720985 7295839 09/722174 7068382 7094910
7062651 6644642 6549935 6987573 6727996 6760119 7064851 6290349
6428155 6785016 6831682 6741871 6965439 10/932044 6870966 6474888
6724374 6788982 7263270 6788293 6737591 09/693514 10/778056
10/778061 11/193482 7055739 6830196 7182247 7082562 10/409864
7108192 10/492169 10/492152 10/492168 10/492161 7308148 6957768
7170499 11856061 11/672522 11/672950 11754310 12015507 7148345
BACKGROUND
[0005] The Applicant has previously described a method of enabling
users to access information from a computer system via a printed
substrate e.g. paper. The substrate has a coding pattern printed
thereon, which is read by an optical sensing device when the user
interacts with with the substrate using the sensing device. A
computer receives interaction data from the sensing device and uses
this data to determine what action is being requested by the user.
For example, a user may make handwritten input onto a form or make
a selection gesture around a printed item. This input is
interpreted by the computer system with reference to a page
description corresponding to the printed substrate.
[0006] It would desirable to improve the coding pattern on the
substrate so as to maximize usage of images captured by the sensing
device.
SUMMARY OF INVENTION
[0007] In a first aspect the present invention provides a substrate
having a coding pattern disposed on a surface thereof, said coding
pattern comprising: [0008] a plurality of contiguous square tags of
length l, each tag comprising x-coordinate data and y-coordinate
data, wherein a y-axis is nominally defined as north-south and an
x-axis is nominally defined as east-west; and [0009] a plurality of
data elements contained in each tag, said x-coordinate data being
represented by a respective set of data elements and said
y-coordinate data being represented by a respective set of data
elements, wherein: [0010] said x-coordinate data comprises a
replicated part and a non-replicated part, said replicated part
having a first replication in a western half of said tag and a
second replication in an eastern half of said tag, and said
non-replicated part being represented in a central column of said
tag, said central column dividing said western half from said
eastern half; [0011] said y-coordinate data comprises a replicated
part and a non-replicated part, said replicated part having a first
replication in a northern half of said tag and a second replication
in a southern half of said tag, and said non-replicated part being
represented in a central row of said tag, said central row dividing
said northern half from said southern half; and [0012] said central
column and said central row each have a width q, such that any
square portion of said coding pattern having a length (I+q) is
guaranteed to contain said x-coordinate data and said y-coordinate
data for a tag irrespective of whether a whole tag is contained in
said portion.
[0013] Optionally, said coding pattern comprises: [0014] a
plurality of target elements defining a target grid, said target
grid comprising a plurality of cells, wherein neighboring cells
share target elements and wherein each tag is defined by a
plurality of contiguous cells.
[0015] Optionally, each tag comprises M.sup.2 contiguous square
cells, wherein M is an integer having a value of at least 1.
[0016] Optionally, said data elements are macrodots.
[0017] Optionally, q=2s, and s is defined as a spacing between
adjacent macrodots.
[0018] Optionally, a portion of data is represented by a macrodot
occupying one of a plurality of possible positions within a cell,
each position representing one of a plurality of possible data
values.
[0019] Optionally, a n-bit portion of data is represented by a
macrodot occupying one of 2.sup.n possible positions within a cell,
each position representing one of 2.sup.n possible data values,
wherein n is an integer.
[0020] Optionally, each cell defines a symbol group, each symbol
group comprising a plurality of Reed-Solomon symbols encoded by a
plurality of said data elements.
[0021] Optionally, said x-coordinate data is encoded as an
x-coordinate codeword comprised of a respective set of Reed-Solomon
symbols, and said y-coordinate data is encoded as a y-coordinate
codeword comprised of a respective set of Reed-Solomon symbols, and
wherein at least some x-coordinate symbols occupy said central
column and at least some y-coordinate symbols occupy said central
row.
[0022] Optionally, each symbol comprises two square halves of
length r, each square half comprising 2 bits of data represented by
a macrodot occupying one of 4 possible positions within said
half.
[0023] Optionally, r=2s and s is defined as a spacing between
adjacent macrodots.
[0024] Optionally, r=q.
[0025] Optionally, each tag comprises a plurality of common
codewords, each common codeword being comprised of a respective set
of said Reed-Solomon symbols, wherein said plurality of common
codewords are defined as codewords common to a plurality of
contiguous tags.
[0026] Optionally, each symbol group comprises a fragment of at
least one of said common codewords, and contiguous symbol groups
are arranged such that any tag-sized portion of said coding pattern
is guaranteed to contain said plurality of common codewords
irrespective of whether a whole tag is contained in said
portion.
[0027] Optionally, said one or more of said common codewords encode
region identity data uniquely identifying a region of said
surface.
[0028] Optionally, said region identity data uniquely identifies
said substrate.
[0029] Optionally, each cell comprises an orientation symbol
encoded by at least one data element, said orientation symbol
identifying an orientation of said coding pattern with respect to
said surface.
[0030] Optionally, each cell comprises one or more translation
symbols encoded by a respective set of said data elements, said
translation symbols identifying a translation of said cell relative
to a tag containing said cell.
[0031] Optionally, each cell comprises a pair of orthogonal
translation symbols, each orthogonal translation symbol identifying
a respective orthogonal translation of said cell relative to a tag
containing said cell.
[0032] Optionally, said target elements are target dots and said
data elements are macrodots, and each target dot has a diameter of
at least twice that of each macrodot.
[0033] In a second aspect the present invention provides a
substrate having a coding pattern disposed on a surface thereof,
said coding pattern comprising a plurality of contiguous tags, each
tag comprising: [0034] a plurality of data symbols, which comprises
a plurality of first data symbols; [0035] a plurality of data
elements, each of said data symbols being represented by a
respective set of said data elements; and [0036] one or more flags,
said one or more flags indicating either that: [0037] said first
data symbols define first data contained in said tag; or [0038]
said first data symbols define a fragment of second data, said
second data being embedded in a block of said tags.
[0039] Optionally, said first data encodes a secret-key digital
signature.
[0040] Optionally, said second data encodes a public-key digital
signature.
[0041] Optionally, said first data symbols are arranged such that
any tag-sized portion of said coding pattern is guaranteed to
contain said first data irrespective of whether a whole tag is
contained in said portion.
[0042] Optionally, said surface comprises a plurality of blocks,
such that said second data can be assembled from a random or
partial scan of said surface.
[0043] Optionally, said block has a width w of at least 2 tags and
a height h of at least 2 tags.
[0044] Optionally, said one or more flags further indicate whether
said tag is contained in an active area of said surface.
[0045] Optionally, said active area is selected from the group
comprising: a hyperlink area, a form field area and a button
area.
[0046] Optionally, said coding pattern comprises: [0047] a
plurality of target elements defining a target grid, said target
grid comprising a plurality of cells, wherein neighboring cells
share target elements and wherein each tag is defined by a
plurality of contiguous cells.
[0048] Optionally, each tag comprises M.sup.2 contiguous square
cells, wherein M is an integer having a value of at least 2.
[0049] Optionally, a portion of data is represented by a macrodot
occupying one of a plurality of possible positions within a cell,
each position representing one of a plurality of possible data
values.
[0050] Optionally, a n-bit portion of data is represented by a
macrodot occupying one of 2.sup.n possible positions within a cell,
each position representing one of 2.sup.n possible data values,
wherein n is an integer.
[0051] Optionally, each cell defines a symbol group, each symbol
group comprising a plurality of data symbols.
[0052] In a third aspect the present invention provides a method of
imaging a coding pattern disposed on a surface of a substrate, said
method comprising the steps of: [0053] (a) operatively positioning
an optical reader relative to said surface and capturing an image
of a portion of said coding pattern, said coding pattern
comprising: [0054] a plurality of contiguous square tags of length
l, each tag comprising x-coordinate data and y-coordinate data,
wherein a y-axis is nominally defined as north-south and an x-axis
is nominally defined as east-west; and [0055] a plurality of data
elements contained in each tag, said x-coordinate data being
represented by a respective set of data elements and said
y-coordinate data being represented by a respective set of data
elements, wherein: [0056] said x-coordinate data comprises a
replicated part and a non-replicated part, said replicated part
having a first replication in a western half of said tag and a
second replication in an eastern half of said tag, and said
non-replicated part being represented in a central column of said
tag, said central column dividing said western half from said
eastern half; [0057] said y-coordinate data comprises a replicated
part and a non-replicated part, said replicated part having a first
replication in a northern half of said tag and a second replication
in a southern half of said tag, and said non-replicated part being
represented in a central row of said tag, said central row dividing
said northern half from said southern half; and [0058] said central
column and said central row each have a width q; [0059] (b)
sampling and decoding x-coordinate data and y-coordinate data
within said imaged portion; and [0060] (c) determining a position
of said pen, wherein said portion has a diameter of at least (l+q)
2 and less than (2l) 2.
[0061] Optionally, said coding pattern comprises: [0062] a
plurality of target elements defining a target grid, said target
grid comprising a plurality of cells, wherein neighboring cells
share target elements and wherein each tag is defined by a
plurality of contiguous cells.
[0063] Optionally, each tag comprises M.sup.2 contiguous square
cells, wherein M is an integer having a value of at least 1.
[0064] Optionally, said data elements are macrodots.
[0065] Optionally, q=2s, and s is defined as a spacing between
adjacent macrodots.
[0066] Optionally, a portion of data is represented by a macrodot
occupying one of a plurality of possible positions within a cell,
each position representing one of a plurality of possible data
values.
[0067] Optionally, each cell defines a symbol group, each symbol
group comprising a plurality of Reed-Solomon symbols encoded by a
plurality of said data elements.
[0068] Optionally, said x-coordinate data is encoded as an
x-coordinate codeword comprised of a respective set of Reed-Solomon
symbols, and said y-coordinate data is encoded as a y-coordinate
codeword comprised of a respective set of Reed-Solomon symbols, and
wherein at least some x-coordinate symbols occupy said central
column and at least some y-coordinate symbols occupy said central
row.
[0069] Optionally, each symbol comprises two square halves of
length r, each square half comprising 2 bits of data represented by
a macrodot occupying one of 4 possible positions within said
half.
[0070] Optionally, q=r=2s and s is defined as a spacing between
adjacent macrodots.
[0071] In a further aspect there is provided a system for imaging a
coding pattern disposed on a surface of a substrate, said system
comprising:
(A) said substrate, wherein said coding pattern comprises: [0072] a
plurality of contiguous square tags of length l, each tag
comprising x-coordinate data and y-coordinate data, wherein a
y-axis is nominally defined as north-south and an x-axis is
nominally defined as east-west; and [0073] a plurality of data
elements contained in each tag, said x-coordinate data being
represented by a respective set of data elements and said
y-coordinate data being represented by a respective set of data
elements, wherein: [0074] said x-coordinate data comprises a
replicated part and a non-replicated part, said replicated part
having a first replication in a western half of said tag and a
second replication in an eastern half of said tag, and said
non-replicated part being represented in a central column of said
tag, said central column dividing said western half from said
eastern half; [0075] said y-coordinate data comprises a replicated
part and a non-replicated part, said replicated part having a first
replication in a northern half of said tag and a second replication
in a southern half of said tag, and said non-replicated part being
represented in a central row of said tag, said central row dividing
said northern half from said southern half; and [0076] said central
column and said central row each have a width q; and (B) an optical
reader comprising: [0077] an image sensor for capturing an image of
a portion of said coding pattern, said image sensor having a
field-of-view of at least (l+q) 2 and less than (2) 2; and [0078] a
processor configured for performing the steps of: [0079] (i)
sampling and decoding x-coordinate data and y-coordinate data
contained in an imaged portion; and [0080] (ii) determining a
position of said pen.
[0081] Optionally, said coding pattern comprises: [0082] a
plurality of target elements defining a target grid, said target
grid comprising a plurality of cells, wherein neighboring cells
share target elements and wherein each tag is defined by a
plurality of contiguous cells.
[0083] Optionally, each tag comprises M.sup.2 contiguous square
cells, wherein M is an integer having a value of at least 1.
[0084] Optionally, said data elements are macrodots, s is defined
as a spacing between adjacent macrodots, and q=2s.
[0085] Optionally, a portion of data is represented by a macrodot
occupying one of a plurality of possible positions within a cell,
each position representing one of a plurality of possible data
values.
[0086] Optionally, each cell defines a symbol group, each symbol
group comprising a plurality of Reed-Solomon symbols encoded by a
plurality of said data elements.
[0087] Optionally, said x-coordinate data is encoded as an
x-coordinate codeword comprised of a respective set of Reed-Solomon
symbols, and said y-coordinate data is encoded as a y-coordinate
codeword comprised of a respective set of Reed-Solomon symbols, and
wherein at least some x-coordinate symbols occupy said central
column and at least some y-coordinate symbols occupy said central
row.
[0088] Optionally, each symbol comprises two square halves of
length r, each square half comprising 2 bits of data represented by
a macrodot occupying one of 4 possible positions within said
half.
[0089] Optionally, q=r=2s and s is defined as a spacing between
adjacent macrodots.
[0090] Optionally, said reader is an optically imaging pen having a
nib.
[0091] Optionally, each data symbol comprises two halves, each half
comprising 2 bits of data represented by a macrodot occupying one
of 4 possible positions within said half.
[0092] Optionally, each tag comprises a plurality of second data
symbols defining at least one local codeword contained in said tag,
said at least one local codeword identifying a location of a
respective tag.
[0093] Optionally, each tag comprises a plurality of third data
symbols, said third data symbols defining one or more common
codewords contained in said tag, wherein said one or more common
codewords are defined as codewords common to a plurality of
contiguous tags.
[0094] Optionally, said third data symbols are arranged such that
any tag-sized portion of said coding pattern is guaranteed to
contain said one or more common codewords irrespective of whether a
whole tag is contained in said portion.
[0095] Optionally, said one or more common codewords encode region
identity data uniquely identifying a region of said surface.
[0096] Optionally, each cell comprises an orientation symbol
encoded by at least one data element, said orientation symbol
identifying an orientation of said coding pattern with respect to
said surface.
[0097] Optionally, each cell comprises one or more translation
symbols encoded by a respective set of said data elements, said
translation symbols identifying a translation of said cell relative
to a tag containing said cell.
[0098] In a fourth aspect the present invention provides a method
of imaging a coding pattern disposed on a surface of a substrate,
said method comprising the steps of: [0099] (a) operatively
positioning an optical reader relative to said surface and
capturing an image of a portion of said coding pattern, said coding
pattern comprising a plurality of contiguous tags, each tag
comprising: [0100] a plurality of data symbols, which comprises a
plurality of first data symbols; [0101] a plurality of data
elements, each of said data symbols being represented by a
respective set of said data elements; and [0102] one or more flags,
said one or more flags indicating either that: [0103] said first
data symbols define a first data contained in said tag; or [0104]
said first data symbols define a fragment of second data, said
second data being embedded in a block of said tags. [0105] (b)
sampling and decoding said one or more flags; [0106] (c)
determining whether said first data symbols define said first data
or a fragment of said second data; [0107] (d) sampling said first
data symbols; and [0108] (e) (1) decoding said first data if it is
determined that said first data symbols define said first data; or
otherwise [0109] (2) storing said sampled first data symbols in a
memory of said reader and assembling stored first data symbols into
said second data when sufficient first data symbols have been
sampled; wherein said portion has a diameter of less than a block
of tags.
[0110] Optionally, said first data encodes a secret-key digital
signature.
[0111] Optionally, said second data encodes a public-key digital
signature.
[0112] Optionally, said first data symbols are arranged such that
any tag-sized portion of said coding pattern is guaranteed to
contain said first data irrespective of whether a whole tag is
contained in said portion.
[0113] Optionally, said block has a width w of at least 2 tags and
a height h of at least 2 tags.
[0114] Optionally, said surface comprises a plurality of
blocks.
[0115] Optionally, said first data symbols define a fragment of
said second data, and said method comprises the step of: [0116]
reporting to the user that further data sampling is required to
acquire said second data.
[0117] Optionally, said first data symbols define a fragment of
said second data, and said method comprises the step of: [0118]
reporting to the user when sufficient fragments have been
retrieved.
[0119] Optionally, said one or more flags further indicate whether
said tag is contained in an active area of said surface.
[0120] Optionally, said active area is selected from the group
comprising: a hyperlink area, a form field area and a button
area.
[0121] Optionally, the method comprising the step of: [0122]
reporting to the user when said reader is positioned in an active
area.
[0123] In a further aspect there is provided a system for imaging a
coding pattern disposed on a surface of a substrate, said system
comprising:
(A) said substrate, wherein said coding pattern comprises a
plurality of contiguous tags, each tag comprising: [0124] a
plurality of data symbols, which comprises a plurality of first
data symbols; [0125] a plurality of data elements, each of said
data symbols being represented by a respective set of said data
elements; and [0126] one or more flags, said one or more flags
indicating either that: [0127] said first data symbols define first
data contained in said tag; or [0128] said first data symbols
define a fragment of second data, said second data being embedded
in a block of said tags. (B) an optical reader comprising: [0129]
an image sensor for capturing an image of a portion of said coding
pattern, said image sensor having a field-of-view of less than a
block of tags; and [0130] a processor configured for performing the
steps of: [0131] (i) sampling and decoding said one or more flags;
[0132] (ii) determining whether said first data symbols define said
first data or a fragment of said second data; [0133] (iii) sampling
said first data symbols; and [0134] (iv) (1) decoding said first
data if it is determined that said first data symbols define said
first data; or otherwise [0135] (2) storing said sampled first data
symbols in a memory of said reader and assembling stored first data
symbols into said second data when sufficient first data symbols
have been sampled.
[0136] Optionally, said first data encodes a secret-key digital
signature.
[0137] Optionally, said second data encodes a public-key digital
signature.
[0138] Optionally, said surface comprises a plurality of
blocks.
[0139] Optionally, said reader comprises at least one of: [0140]
means for reporting to a user that said coding pattern contains
said second data; [0141] means for reporting to a user that further
data sampling is required to acquire said second data; and [0142]
means for reporting to a user when sufficient fragments of said
second data have been retrieved.
[0143] Optionally, said one or more flags further indicate whether
said tag is contained in an active area of said surface.
[0144] Optionally, said active area is selected from the group
comprising: a hyperlink area, a form field area and a button
area.
[0145] Optionally, said reader comprises means for reporting to the
user when said reader is positioned in an active area.
[0146] Optionally, said reader is an optically imaging pen having a
nib.
[0147] In a sixth aspect the present invention provides a substrate
having a coding pattern disposed on a surface thereof, said coding
pattern comprising: [0148] a plurality of target elements defining
a target grid, said target grid comprising a plurality of cells,
wherein neighboring cells share target elements; [0149] a plurality
of data elements contained in each cell; and [0150] a plurality of
tags, each tag being defined by a plurality of contiguous cells,
each tag comprising respective local tag data encoded by a
respective set of said data elements, wherein said data elements
encode data values by pulse position modulation.
[0151] Optionally, said data elements are macrodots.
[0152] Optionally, a portion of data is represented by a macrodot
occupying one of a plurality of possible positions within a cell,
each position representing one of a plurality of possible data
values.
[0153] Optionally, a n-bit portion of data is represented by a
macrodot occupying one of 2.sup.n possible positions within a cell,
each position representing one of 2.sup.n possible data values,
wherein n is an integer.
[0154] Optionally, each cell defines a symbol group, each symbol
group comprising a plurality of Reed-Solomon symbols encoded by a
plurality of said data elements.
[0155] Optionally, each symbol comprises two halves, each half
comprising 2 bits of data represented by a macrodot occupying one
of 4 possible positions within said half.
[0156] Optionally, said local tag data is encoded as a local
codeword comprised of a set of said Reed-Solomon symbols.
[0157] Optionally, each tag comprises a plurality of replications
of said local codeword, such that any tag-sized portion of said
coding pattern is guaranteed to contain said local codeword
irrespective of whether a whole tag is contained in said
portion.
[0158] Optionally, each tag is square and comprises four
replications of said local codeword, each replication being
positioned within a respective quarter of said tag.
[0159] Optionally, each local codeword identifies a location of a
respective tag.
[0160] Optionally, each tag comprises one or more common codewords,
each common codeword being comprised of a set of said Reed-Solomon
symbols, wherein said one or more common codewords are defined as
codewords common to a plurality of contiguous tags.
[0161] Optionally, each symbol group comprises a fragment of at
least one of said one or more common codewords, and contiguous
symbol groups are arranged such that any tag-sized portion of said
coding pattern is guaranteed to contain said one or more common
codewords irrespective of whether a whole tag is contained in said
portion.
[0162] Optionally, said one or more common codewords encode region
identity data uniquely identifying a region of said surface.
[0163] Optionally, said one or more common codewords uniquely
identifies said substrate.
[0164] Optionally, each cell comprises an orientation symbol
encoded by at least one data element, said orientation symbol
identifying an orientation of said coding pattern with respect to
said surface.
[0165] Optionally, each cell comprises one or more translation
symbols encoded by a respective set of said data elements, said
translation symbols identifying a translation of said cell relative
to a tag containing said cell.
[0166] Optionally, each cell comprises a pair of orthogonal
translation symbols, each orthogonal translation symbol identifying
a respective orthogonal translation of said cell relative to a tag
containing said cell.
[0167] Optionally, each tag is square and comprises M.sup.2
contiguous square cells, wherein M is an integer having a value of
at least 2.
[0168] Optionally, said target elements are sufficiently large to
be distinguishable from said data elements by a low-pass
filter.
[0169] Optionally, said target elements are target dots and said
data elements are macrodots, and wherein each target dot has a
diameter of at least twice that of each macrodot.
[0170] In a fifth aspect the present invention provides a substrate
having a coding pattern disposed on a surface thereof, said coding
pattern comprising: [0171] a plurality of target elements defining
a target grid, said target grid comprising a plurality of cells,
wherein neighboring cells share target elements; [0172] a plurality
of data elements contained in each cell; and [0173] a plurality of
tags, each tag being defined by a plurality of contiguous cells,
each tag comprising respective local tag data encoded by a
respective set of said data elements, wherein each tag comprises at
least 9 target elements.
[0174] Optionally, each tag comprises at least 16 target
elements.
[0175] Optionally, each tag comprises at least 25 target
elements.
[0176] Optionally, each tag is square and comprises M.sup.2
contiguous square cells, wherein M is an integer having a value of
at least 2.
[0177] Optionally, said target elements are configured to
facilitate computation of a perspective distortion of said target
grid when a portion of said coding pattern is acquired by an
optical sensing device.
[0178] Optionally, said target elements are sufficiently large to
be distinguishable from said data elements by a low-pass
filter.
[0179] Optionally, said target elements are target dots and said
data elements are macrodots.
[0180] Optionally, each target dot has a diameter of at least twice
that of each macrodot.
[0181] Optionally, said macrodots encode data values by pulse
position modulation.
[0182] Optionally, a n-bit portion of data is represented by a
macrodot occupying one of 2.sup.n possible positions within a cell,
each position representing one of 2.sup.n possible data values,
wherein n is an integer.
[0183] Optionally, each tag comprises a plurality of replications
of said local tag data, such that any tag-sized portion of said
coding pattern is guaranteed to contain said local tag data
irrespective of whether a whole tag is contained in said
portion.
[0184] Optionally, each tag is square and comprises four
replications of said local tag data, each replication being
positioned within a respective quarter of said tag.
[0185] Optionally, said local tag data identifies a location of a
respective tag.
[0186] Optionally, each tag comprises common data encoded by a
respective set of said data elements, wherein said common data is
defined as data common to a plurality of contiguous tags.
[0187] Optionally, each cell comprises a fragment of said common
data, and contiguous cells are arranged such that any tag-sized
portion of said coding pattern is guaranteed to contain said common
data irrespective of whether a whole tag is contained in said
portion.
[0188] Optionally, said common data is region identity data
uniquely identifying a region of said surface.
[0189] Optionally, said common data uniquely identifies said
substrate.
[0190] Optionally, each cell comprises orientation data encoded by
a respective set of said data elements, said orientation data
identifying an orientation of said coding pattern with respect to
said surface.
[0191] Optionally, each cell comprises translation data encoded by
a respective set of said data elements, said translation data
identifying a translation of said cell relative to a tag containing
said cell.
[0192] Optionally, each cell defines a symbol group, each symbol
group comprising a plurality of Reed-Solomon symbols encoded by a
plurality of said data elements.
[0193] In a seventh aspect the present invention provides a
substrate having a coding pattern disposed on a surface thereof,
said coding pattern comprising: [0194] a plurality of target
elements defining a target grid, said target grid comprising a
plurality of cells, wherein neighboring cells share target
elements; [0195] a plurality of data elements contained in each
cell; and [0196] a plurality of tags, each tag being defined by a
plurality of contiguous cells, each tag comprising respective tag
data encoded by a respective set of said data elements, wherein
each cell comprises at least one orientation symbol encoded by at
least one data element, such that any tag-sized portion of said
coding pattern is guaranteed to contain a plurality of said
orientation symbols, each orientation symbol identifying an
orientation of a layout of said tag data with respect to said
target grid.
[0197] Optionally, each orientation symbol comprises a data element
positioned at one of four possible positions within each cell, each
position representing one of four possible orientations.
[0198] Optionally, each orientation symbol is readable by an
optical sensing device at any of said four orientations.
[0199] Optionally, each tag comprises N cells, and at least N
orientation symbols form an orientation code with minimum distance
N, wherein N is an integer having a value of at least 4.
[0200] Optionally, said cells are arranged such that any tag-sized
portion of said coding pattern is guaranteed to contain said
orientation code comprising at least N orientation symbols.
[0201] Optionally, said data elements are macrodots.
[0202] Optionally, a portion of data is represented by a macrodot
occupying one of a plurality of possible positions within a cell,
each position representing one of a plurality of possible data
values.
[0203] Optionally, a n-bit portion of data is represented by a
macrodot occupying one of 2.sup.n possible positions within a cell,
each position representing one of 2.sup.n possible data values,
wherein n is an integer.
[0204] Optionally, each cell defines a symbol group, each symbol
group comprising a plurality of Reed-Solomon symbols encoded by a
plurality of said data elements.
[0205] Optionally, each orientation symbol identifies an
orientation of a layout of said Reed-Solomon symbols with respect
to said target grid.
[0206] Optionally, said tag data is encoded as a local codeword
comprised of a set of said Reed-Solomon symbols.
[0207] Optionally, each tag comprises a plurality of replications
of said local codeword, such that any tag-sized portion of said
coding pattern is guaranteed to contain said local codeword
irrespective of whether a whole tag is contained in said
portion.
[0208] Optionally, each tag is square and comprises four
replications of said local codeword, each replication being
positioned within a respective quarter of said tag.
[0209] Optionally, each local codeword identifies a location of a
respective tag.
[0210] Optionally, each tag comprises one or more common codewords,
each common codeword being comprised of a set of said Reed-Solomon
symbols, wherein said one or more common codewords are defined as
codewords common to a plurality of contiguous tags.
[0211] Optionally, each symbol group comprises a fragment of at
least one of said one or more common codewords, and contiguous
symbol groups are arranged such that any tag-sized portion of said
coding pattern is guaranteed to contain said one or more common
codewords irrespective of whether a whole tag is contained in said
portion.
[0212] Optionally, said one or more common codewords encode region
identity data uniquely identifying a region of said surface.
[0213] Optionally, said one or more common codewords uniquely
identifies said substrate.
[0214] Optionally, each cell comprises one or more translation
symbols encoded by a respective set of said data elements, said
translation symbols identifying a translation of said cell relative
to a tag containing said cell.
[0215] Optionally, each cell comprises a pair of orthogonal
translation symbols, each orthogonal translation symbol identifying
a respective orthogonal translation of said cell relative to a tag
containing said cell.
[0216] In an eighth aspect the present invention provides a
substrate having a coding pattern disposed on a surface thereof,
said coding pattern comprising: [0217] a plurality of target
elements defining a target grid, said target grid comprising a
plurality of cells, wherein neighboring cells share target
elements; [0218] a plurality of data elements contained in each
cell; and [0219] a plurality of tags, each tag being defined by a
plurality of contiguous cells, each tag comprising respective local
tag data encoded by a respective set of said data elements, each
tag comprising common data encoded by a respective set of said data
elements, said common data being defined as data common to a
plurality of contiguous tags, wherein each cell comprises a
fragment of said common data, and contiguous cells are arranged
such that any tag-sized portion of said coding pattern is
guaranteed to contain said common data irrespective of whether a
whole tag is contained in said portion.
[0220] Optionally, said common data is region identity data
uniquely identifying a region of said surface.
[0221] Optionally, said common data uniquely identifies said
substrate.
[0222] Optionally, said data elements are macrodots.
[0223] Optionally, a portion of data is represented by a macrodot
occupying one of a plurality of possible positions within a cell,
each position representing one of a plurality of possible data
values.
[0224] Optionally, a n-bit portion of data is represented by a
macrodot occupying one of 2.sup.n possible positions within a cell,
each position representing one of 2.sup.n possible data values,
wherein n is an integer.
[0225] Optionally, each cell defines a symbol group, each symbol
group comprising a plurality of Reed-Solomon symbols encoded by a
plurality of said data elements.
[0226] Optionally, each symbol comprises two halves, each half
comprising 2 bits of data represented by a macrodot occupying one
of 4 possible positions within said half.
[0227] Optionally, said common data is encoded as one or more
common codewords, each common codeword being comprised of a set of
said Reed-Solomon symbols.
[0228] Optionally, each symbol group comprises a fragment of at
least one of said one or more common codewords, and contiguous
symbol groups are arranged such that any tag-sized portion of said
coding pattern is guaranteed to contain said one or more common
codewords irrespective of whether a whole tag is contained in said
portion.
[0229] Optionally, said local tag data is encoded as a local
codeword comprised of a set of said Reed-Solomon symbols.
[0230] Optionally, each tag comprises a plurality of replications
of said local codeword, such that any tag-sized portion of said
coding pattern is guaranteed to contain said local codeword
irrespective of whether a whole tag is contained in said
portion.
[0231] Optionally, each tag is square and comprises four
replications of said local codeword, each replication being
positioned within a respective quarter of said tag.
[0232] Optionally, said local tag data identifies a location of a
respective tag.
[0233] Optionally, each cell comprises an orientation symbol
encoded by at least one data element, said orientation symbol
identifying an orientation of said coding pattern with respect to
said surface.
[0234] Optionally, each cell comprises one or more translation
symbols encoded by a respective set of said data elements, said
translation symbols identifying a translation of said cell relative
to a tag containing said cell.
[0235] Optionally, each cell comprises a pair of orthogonal
translation symbols, each orthogonal translation symbol identifying
a respective orthogonal translation of said cell relative to a tag
containing said cell.
[0236] Optionally, each tag is square and comprises M.sup.2
contiguous square cells, wherein M is an integer having a value of
at least 2.
[0237] Optionally, said target elements are sufficiently large to
be distinguishable from said data elements by a low-pass
filter.
[0238] Optionally, said target elements are target dots and said
data elements are macrodots, and wherein each target dot has a
diameter of at least twice that of each macrodot.
[0239] In a ninth aspect the present invention provides substrate
having a coding pattern disposed on a surface thereof, said coding
pattern comprising: [0240] a plurality of target elements defining
a target grid, said target grid comprising a plurality of cells,
wherein neighboring cells share target elements; [0241] a plurality
of data elements contained in each cell; and [0242] a plurality of
tags, each tag being defined by a plurality of contiguous cells,
each tag comprising respective tag data encoded by a respective set
of said data elements, wherein each cell comprises one or more
translation symbols encoded by a respective set of said data
elements, said one or more translation symbols identifying a
translation of said cell relative to a tag containing said
cell.
[0243] Optionally, each cell comprises a pair of orthogonal
translation symbols, each orthogonal translation symbol identifying
a respective orthogonal translation of said cell relative to a tag
containing said cell.
[0244] Optionally, each tag is square and comprises M.sup.2
contiguous square cells, wherein M is an integer having a value of
at least 2.
[0245] Optionally, M translation symbols in a row of M cells define
a cyclic position code having minimum distance M, said code being
defined by a first codeword.
[0246] Optionally, M translation symbols in a column of M cells
define a cyclic position code having minimum distance M, said code
being defined by a second codeword.
[0247] Optionally, each tag comprises N cells, and at least N
translation symbols form a third codeword with minimum distance N,
wherein N is an integer having a value of at least 4.
[0248] Optionally, any tag-sized portion of said coding pattern is
guaranteed to contain at least N translation symbols, thereby
capturing said third codeword.
[0249] Optionally, each cell comprises at least one orientation
symbol encoded by at least one data element, such that any
tag-sized portion of said coding pattern is guaranteed to contain a
plurality of said orientation symbols, each orientation symbol
identifying an orientation of said coding pattern with respect to
said surface.
[0250] Optionally, said data elements are macrodots.
[0251] Optionally, a portion of data is represented by a macrodot
occupying one of a plurality of possible positions within a cell,
each position representing one of a plurality of possible data
values.
[0252] Optionally, a n-bit portion of data is represented by a
macrodot occupying one of 2.sup.n possible positions within a cell,
each position representing one of 2.sup.n possible data values,
wherein n is an integer.
[0253] Optionally, each cell defines a symbol group, each symbol
group comprising a plurality of Reed-Solomon symbols encoded by a
plurality of said data elements.
[0254] Optionally, each symbol comprises two halves, each half
comprising 2 bits of data represented by a macrodot occupying one
of 4 possible positions within said half.
[0255] Optionally, said tag data is encoded as a local codeword
comprised of a set of said Reed-Solomon symbols.
[0256] Optionally, each tag comprises a plurality of replications
of said local codeword, such that any tag-sized portion of said
coding pattern is guaranteed to contain said local codeword
irrespective of whether a whole tag is contained in said
portion.
[0257] Optionally, each tag is square and comprises four
replications of said local codeword, each replication being
positioned within a respective quarter of said tag.
[0258] Optionally, each local codeword identifies a location of a
respective tag.
[0259] Optionally, each tag comprises one or more common codewords,
each common codeword being comprised of a set of said Reed-Solomon
symbols, wherein said one or more common codewords are defined as
codewords common to a plurality of contiguous tags.
[0260] Optionally, each symbol group comprises a fragment of at
least one of said one or more common codewords, and contiguous
symbol groups are arranged such that any tag-sized portion of said
coding pattern is guaranteed to contain said one or more common
codewords irrespective of whether a whole tag is contained in said
portion.
[0261] Optionally, said one or more common codewords encode region
identity data uniquely identifying a region of said surface.
BRIEF DESCRIPTION OF DRAWINGS
[0262] Preferred and other embodiments of the invention will now be
described, by way of non-limiting example only, with reference to
the accompanying drawings, in which:
[0263] FIG. 1 is a schematic of a the relationship between a sample
printed netpage and its online page description;
[0264] FIG. 2 shows an embodiment of basic netpage architecture
with various alternatives for the relay device;
[0265] FIG. 3 shows the structure of a tag;
[0266] FIG. 4 shows a group of ten data symbols and four
targets;
[0267] FIG. 5 shows the layout of a square data half-symbol;
[0268] FIG. 6 shows the layout of rectangular data symbols;
[0269] FIG. 7 shows the spacing of macrodot positions;
[0270] FIG. 8 shows an orientation code symbol layout;
[0271] FIG. 9 shows a translation code symbol layout;
[0272] FIG. 10 shows the layout of a flag symbol;
[0273] FIG. 11 shows a replicated x-coordinate codeword X with the
first copy shown shaded;
[0274] FIG. 12 shows a replicated y-coordinate codeword Y with the
first copy shown shaded;
[0275] FIG. 13 shows common codewords B, C and D, with codeword B
shown shaded;
[0276] FIG. 14 shows the layout of a complete tag;
[0277] FIG. 15 shows the layout of a Reed-Solomon codeword;
[0278] FIG. 16 is a flowchart of image processing;
[0279] FIG. 17 shows a nib and elevation of the pen held by a
user;
[0280] FIG. 18 shows the pen held by a user at a typical incline to
a writing surface;
[0281] FIG. 19 is a lateral cross section through the pen;
[0282] FIG. 20A is a bottom and nib end partial perspective of the
pen;
[0283] FIG. 20B is a bottom and nib end partial perspective with
the fields of illumination and field of view of the sensor window
shown in dotted outline;
[0284] FIG. 21 is a longitudinal cross section of the pen;
[0285] FIG. 22A is a partial longitudinal cross section of the nib
and barrel molding;
[0286] FIG. 22B is a partial longitudinal cross section of the IR
LED's and the barrel molding;
[0287] FIG. 23 is a ray trace of the pen optics adjacent a sketch
of the ink cartridge;
[0288] FIG. 24 is a side elevation of the lens;
[0289] FIG. 25 is a side elevation of the nib and the field of view
of the optical sensor; and
[0290] FIG. 26 is a block diagram of the pen electronics.
DETAILED DESCRIPTION OF PREFERRED AND OTHER EMBODIMENTS
1.1 Netpage System Architecture
[0291] In a preferred embodiment, the invention is configured to
work with the netpage networked computer system, a detailed
overview of which follows. It will be appreciated that not every
implementation will necessarily embody all or even most of the
specific details and extensions discussed below in relation to the
basic system. However, the system is described in its most complete
form to reduce the need for external reference when attempting to
understand the context in which the preferred embodiments and
aspects of the present invention operate.
[0292] In brief summary, the preferred form of the netpage system
employs a computer interface in the form of a mapped surface, that
is, a physical surface which contains references to a map of the
surface maintained in a computer system. The map references can be
queried by an appropriate sensing device. Depending upon the
specific implementation, the map references may be encoded visibly
or invisibly, and defined in such a way that a local query on the
mapped surface yields an unambiguous map reference both within the
map and among different maps. The computer system can contain
information about features on the mapped surface, and such
information can be retrieved based on map references supplied by a
sensing device used with the mapped surface. The information thus
retrieved can take the form of actions which are initiated by the
computer system on behalf of the operator in response to the
operator's interaction with the surface features.
[0293] In its preferred form, the netpage system relies on the
production of, and human interaction with, netpages. These are
pages of text, graphics and images printed on ordinary paper, but
which work like interactive webpages. Information is encoded on
each page using ink which is substantially invisible to the unaided
human eye. The ink, however, and thereby the coded data, can be
sensed by an optically imaging sensing device and transmitted to
the netpage system. The sensing device may take the form of a
clicker (for clicking on a specific position on a surface), a
pointer having a stylus (for pointing or gesturing on a surface
using pointer strokes), or a pen having a marking nib (for marking
a surface with ink when pointing, gesturing or writing on the
surface). References herein to "pen" or "netpage pen" are provided
by way of example only. It will, of course, be appreciated that the
pen may take the form of any of the sensing devices described
above.
[0294] In one embodiment, active buttons and hyperlinks on each
page can be clicked with the sensing device to request information
from the network or to signal preferences to a network server. In
one embodiment, text written by hand on a netpage is automatically
recognized and converted to computer text in the netpage system,
allowing forms to be filled in. In other embodiments, signatures
recorded on a netpage are automatically verified, allowing
e-commerce transactions to be securely authorized. In other
embodiments, text on a netpage may be clicked or gestured to
initiate a search based on keywords indicated by the user.
[0295] As illustrated in FIG. 1, a printed netpage 1 can represent
a interactive form which can be filled in by the user both
physically, on the printed page, and "electronically", via
communication between the pen and the netpage system. The example
shows a "Request" form containing name and address fields and a
submit button. The netpage 1 consists of graphic data 2, printed
using visible ink, and a surface coding pattern 3 superimposed with
the graphic data. The surface coding pattern 3 comprises a
collection of tags 4. One such tag 4 is shown in the shaded region
of FIG. 1, although it will be appreciated that contiguous tags 4,
defined by the coding pattern 3, are densely tiled over the whole
netpage 1.
[0296] The corresponding page description 5, stored on the netpage
network, describes the individual elements of the netpage. In
particular it describes the type and spatial extent (zone) of each
interactive element (i.e. text field or button in the example), to
allow the netpage system to correctly interpret input via the
netpage. The submit button 6, for example, has a zone 7 which
corresponds to the spatial extent of the corresponding graphic
8.
[0297] As illustrated in FIG. 2, a netpage sensing device 400, such
as the pen described in Section 3, works in conjunction with a
netpage relay device 601, which is an Internet-connected device for
home, office or mobile use. The pen 400 is wireless and
communicates securely with the netpage relay device 601 via a
short-range radio link 9. In an alternative embodiment, the netpage
pen 400 utilises a wired connection, such as a USB or other serial
connection, to the relay device 601.
[0298] The relay device 601 performs the basic function of relaying
interaction data to a page server 10, which interprets the
interaction data. As shown in FIG. 2, the relay device 601 may, for
example, take the form of a personal computer 601a, a netpage
printer 601b or some other relay 601c (e.g. personal computer or
mobile phone incorporating a web browser).
[0299] The netpage printer 601b is able to deliver, periodically or
on demand, personalized newspapers, magazines, catalogs, brochures
and other publications, all printed at high quality as interactive
netpages. Unlike a personal computer, the netpage printer is an
appliance which can be, for example, wall-mounted adjacent to an
area where the morning news is first consumed, such as in a user's
kitchen, near a breakfast table, or near the household's point of
departure for the day. It also comes in tabletop, desktop, portable
and miniature versions. Netpages printed on-demand at their point
of consumption combine the ease-of-use of paper with the timeliness
and interactivity of an interactive medium.
[0300] Alternatively, the netpage relay device 601 may be a
portable device, such as a mobile phone or PDA, a laptop or desktop
computer, or an information appliance connected to a shared
display, such as a TV. If the relay device 601 is not a netpage
printer 601b which prints netpages digitally and on demand, the
netpages may be printed by traditional analog printing presses,
using such techniques as offset lithography, flexography, screen
printing, relief printing and rotogravure, as well as by digital
printing presses, using techniques such as drop-on-demand inkjet,
continuous inkjet, dye transfer, and laser printing.
[0301] As shown in FIG. 2, the netpage sensing device 400 interacts
with a portion of the tag pattern on a printed netpage 1, or other
printed substrate such as a label of a product item 251, and
communicates, via a short-range radio link 9, the interaction to
the relay device 601. The relay 601 sends corresponding interaction
data to the relevant netpage page server 10 for interpretation. Raw
data received from the sensing device 400 may be relayed directly
to the page server 10 as interaction data. Alternatively, the
interaction data may be encoded in the form of an interaction URI
and transmitted to the page server 10 via a user's web browser
601c. The web browser 601c may then receive a URI from the page
server 10 and access a webpage via a webserver 201. In some
circumstances, the page server 10 may access application computer
software running on a netpage application server 13.
[0302] The netpage relay device 601 can be configured to support
any number of sensing devices, and a sensing device can work with
any number of netpage relays. In the preferred implementation, each
netpage sensing device 400 has a unique identifier. This allows
each user to maintain a distinct profile with respect to a netpage
page server 10 or application server 13.
[0303] Digital, on-demand delivery of netpages 1 may be performed
by the netpage printer 601b, which exploits the growing
availability of broadband Internet access. Netpage publication
servers 14 on the netpage network are configured to deliver
print-quality publications to netpage printers. Periodical
publications are delivered automatically to subscribing netpage
printers via pointcasting and multicasting Internet protocols.
Personalized publications are filtered and formatted according to
individual user profiles.
[0304] A netpage pen may be registered with a netpage registration
server 11 and linked to one or more payment card accounts. This
allows e-commerce payments to be securely authorized using the
netpage pen. The netpage registration server compares the signature
captured by the netpage pen with a previously registered signature,
allowing it to authenticate the user's identity to an e-commerce
server. Other biometrics can also be used to verify identity. One
version of the netpage pen includes fingerprint scanning, verified
in a similar way by the netpage registration server.
1.2 Netpages
[0305] Netpages are the foundation on which a netpage network is
built. They provide a paper-based user interface to published
information and interactive services.
[0306] As shown in FIG. 1, a netpage consists of a printed page (or
other surface region) invisibly tagged with references to an online
description 5 of the page. The online page description 5 is
maintained persistently by the netpage page server 10. The page
description describes the visible layout and content of the page,
including text, graphics and images. It also describes the input
elements on the page, including buttons, hyperlinks, and input
fields. A netpage allows markings made with a netpage pen on its
surface to be simultaneously captured and processed by the netpage
system.
[0307] Multiple netpages (for example, those printed by analog
printing presses) can share the same page description. However, to
allow input through otherwise identical pages to be distinguished,
each netpage may be assigned a unique page identifier. This page ID
has sufficient precision to distinguish between a very large number
of netpages.
[0308] Each reference to the page description 5 is repeatedly
encoded in the netpage pattern. Each tag (and/or a collection of
contiguous tags) identifies the unique page on which it appears,
and thereby indirectly identifies the page description 5. Each tag
also identifies its own position on the page. Characteristics of
the tags are described in more detail below.
[0309] Tags are typically printed in infrared-absorptive ink on any
substrate which is infrared-reflective, such as ordinary paper, or
in infrared fluorescing ink. Near-infrared wavelengths are
invisible to the human eye but are easily sensed by a solid-state
image sensor with an appropriate filter.
[0310] A tag is sensed by a 2D area image sensor in the netpage
sensing device, and the tag data is transmitted to the netpage
system via the nearest netpage relay device 601. The pen 400 is
wireless and communicates with the netpage relay device 601 via a
short-range radio link. It is important that the pen recognize the
page ID and position on every interaction with the page, since the
interaction is stateless. Tags are error-correctably encoded to
make them partially tolerant to surface damage.
[0311] The netpage page server 10 maintains a unique page instance
for each unique printed netpage, allowing it to maintain a distinct
set of user-supplied values for input fields in the page
description 5 for each printed netpage 1.
2 Netpage Tags
2.1 Tag Data Content
[0312] Each tag 4 identifies an absolute location of that tag
within a region of a substrate.
[0313] Each interaction with a netpage should also provide a region
identity together with the tag location. In a preferred embodiment,
the region to which a tag refers coincides with an entire page, and
the region ID is therefore synonymous with the page ID of the page
on which the tag appears. In other embodiments, the region to which
a tag refers can be an arbitrary subregion of a page or other
surface. For example, it can coincide with the zone of an
interactive element, in which case the region ID can directly
identify the interactive element.
[0314] As described in the Applicant's previous applications (e.g.
U.S. Pat. No. 6,832,717), the region identity may be encoded
discretely in each tag 4. As will be described in more detail
below, the region identity may be encoded by a plurality of
contiguous tags in such a way that every interaction with the
substrate still identifies the region identity, even if a whole tag
is not in the field of view of the sensing device.
[0315] Each tag 4 should preferably identify an orientation of the
tag relative to the substrate on which the tag is printed.
Orientation data read from a tag enables the rotation (yaw) of the
pen 101 relative to the substrate to be determined
[0316] A tag 4 may also encode one or more flags which relate to
the region as a whole or to an individual tag. One or more flag
bits may, for example, signal a sensing device to provide feedback
indicative of a function associated with the immediate area of the
tag, without the sensing device having to refer to a description of
the region. A netpage pen may, for example, illuminate an "active
area" LED when in the zone of a hyperlink.
[0317] A tag 4 may also encode a digital signature or a fragment
thereof. Tags encoding (partial) digital signatures are useful in
applications where it is required to verify a product's
authenticity. Such applications are described in, for example, US
Publication No. 2007/0108285, the contents of which is herein
incorporated by reference. The digital signature may be encoded in
such a way that it can be retrieved from every interaction with the
substrate. Alternatively, the digital signature may be encoded in
such a way that it can be assembled from a random or partial scan
of the substrate.
[0318] It will, of course, be appreciated that other types of
information (e.g. tag size etc) may also be encoded into each tag
or a plurality of tags, as will be explained in more detail
below.
2.2 General Tag Structure
[0319] As described above in connection with FIG. 1, the netpage
surface coding generally consists of a dense planar tiling of tags.
In the present invention, each tag 4 is represented by a coding
pattern which contains two kinds of elements. Referring to FIGS. 3
and 4, the first kind of element is a target element. Target
elements in the form of target dots 301 allow a tag 4 to be located
in an image of a coded surface, and allow the perspective
distortion of the tag to be inferred. The second kind of element is
a data element in the form of a macrodot 302 (see FIG. 7). Each
macrodot 302 encodes a data value. As described in the Applicant's
earlier disclosures (e.g. U.S. Pat. No. 6,832,717), the presence or
absence of a macrodot was be used to represent a binary bit.
However, the tag structure of the present invention encodes a data
value using pulse position modulation, which is described in more
detail in Section 2.3.
[0320] The coding pattern 3 is represented on the surface in such a
way as to allow it to be acquired by an optical imaging system, and
in particular by an optical system with a narrowband response in
the near-infrared. The pattern 3 is typically printed onto the
surface using a narrowband near-infrared ink.
[0321] FIG. 3 shows the structure of a complete tag 4 with target
elements 301 shown. The tag 4 is square and contains sixteen target
elements. Those target elements 301 located at the edges and
corners of the tag (twelve in total) are shared by adjacent tags
and define the perimeter of the tag. In contrast with the
Applicant's previous tag designs, the high number of target
elements 301 advantageously facilitates accurate determination of a
perspective distortion of the tag 4 when it is imaged by the
sensing device 101. This improves the accuracy of tag sensing and,
ultimately, position determination.
[0322] The tag 4 consists of a square array of nine symbol groups
303. Symbol groups 303 are demarcated by the target elements 301 so
that each symbol group is contained within a square defined by four
target elements. Adjacent symbol groups 303 are contiguous and
share targets.
[0323] Since the target elements 301 are all identical, they do not
demarcate one tag from its adjacent tags. Viewed purely at the
level of target elements, only symbol groups 303, which define
cells of a target grid, can be distinguished--the tags 4 themselves
are indistinguishable by viewing only the target elements. Hence,
tags 4 must be aligned with the target grid as part of tag
decoding.
[0324] The tag 4 is designed to allow all tag data, with the
exception of an embedded data object (see Section 2.8.3), to be
recovered from an imaging field of view no larger than the size of
the tag (plus one macrodot unit). This implies that any data unique
to the tag 4 must appear four times within the tag--i.e. once in
each quadrant or quarter; any data unique to a column or row of
tags must appear twice within the tag--i.e. once in each horizontal
half or vertical half of the tag respectively; and any data common
to a set of tags needs to appear once within the tag.
2.3 Symbol Groups
[0325] As shown in FIG. 4, each of the nine symbol groups 303
comprises ten data symbols 304, each data symbol being part of a
codeword. In addition, each symbol group 303 comprises an
orientation code (`OR`) and one symbol from each of two orthogonal
translation codes (`HT` and `VT`). The orientation code allows the
orientation of the tag in the field of view to be determined. The
two orthogonal translation codes allow the translation of tag(s)
relative to the symbol groups 303 in the field of view to be
determined. In other words, the translation codes enable alignment
of the `invisible` tags with the target grid.
[0326] Each symbol group 304 contains two symbols from a flag code
(F). The flag code encodes the active area flag.
[0327] Each symbol 304 contains four bits of data. Generally, each
symbol 304 is divided into two halves, and each of these two halves
{h.sub.0,h.sub.1} is encoded using two-bit pulse position
modulation, i.e. using a single macrodot 302 in one of four
positions {p.sub.00,p.sub.01,p.sub.10,p.sub.11} in the half. The
half h.sub.0 encodes the least-significant bits of the symbol; the
half h.sub.1 encodes the most-significant bits.
[0328] The two halves of one data symbol 304 need not necessarily
be contiguous within the symbol group. FIG. 3 shows four half data
symbols centered around the orientation symbol `OR`. Half-symbols
304A and 304B form the two halves of one whole data symbol.
[0329] FIG. 5 shows the layout of a square data half-symbol. FIG. 6
shows the layout of two rectangular data symbols (a vertical
rectangle symbol and a horizontal rectangle symbol), each of which
comprises two half-symbols.
2.4 Targets and Macrodots
[0330] The spacing of macrodots 302 in both dimensions, as shown in
FIG. 7, is specified by the parameter s. It has a nominal value of
95 .mu.m, based on 6 dots printed at a pitch of 1600 dots per
inch.
[0331] Only macrodots 302 are part of the representation of a
symbol 304 in the pattern. The outline of a symbol 304 is shown in,
for example, FIGS. 3 and 4 merely to elucidate more clearly the
structure of a tag.
[0332] A macrodot 302 is nominally circular with a nominal diameter
of (4/6)s. However, it is allowed to vary in size by .+-.15%
according to the capabilities of the device used to produce the
pattern.
[0333] A target 301 is nominally circular with a nominal diameter
of (12/6)s. However, it is allowed to vary in size by .+-.15%
according to the capabilities of the device used to produce the
pattern.
[0334] Each tag 4 has a width of 40s and a length of 40s.
[0335] The macrodot spacing, and therefore the overall scale of the
tag pattern, is allowed to vary by .+-.11% according to the
capabilities of the device used to produce the pattern. Any
deviation from the nominal scale is recorded in each tag (in a tag
size ID field) to allow accurate generation of position
samples.
[0336] These tolerances are independent of one another. They may be
refined with reference to particular printer characteristics.
2.5 Field of View
[0337] As mentioned above, the tag 4 is designed to allow all tag
data to be recovered from an imaging field of view roughly the size
of the tag. Any data common to a set of contiguous tags only needs
to appear once within each tag, since fragments of the common data
can be recovered from adjacent tags. Any data common only to a
column or row of tags must appear twice within the tag--i.e. once
in each horizontal half or vertical half of the tag respectively.
And any data unique to the tag must appear four times within the
tag--i.e. once in each quadrant.
[0338] Although data which is common to a set of tags, in one or
both spatial dimensions, may be decoded from fragments from
adjacent tags, pulse-position modulated values are best decoded
from spatially-coherent samples, since this allows raw sample
values to be compared without first being normalised. This implies
that the field of view must be large enough to contain two complete
copies of each such pulse-position modulated value. The tag is
designed so that the maximum extent of a pulse-position modulated
value is two macrodots. Making the field of view at least as large
as the tag plus two macrodot units guarantees that pulse-position
modulated values can be coherently sampled.
[0339] The only exceptions are the translation codes described in
the next section, which are three macrodot units long. However,
these are highly redundant and the loss of up to four symbols at
the edge of the field of view is not a problem.
2.6 Encoded Codes and Codewords
[0340] In the following section, each symbol in FIGS. 11 to 14 is
shown with a unique label. The label consists of an alphabetic
prefix which identifies which codeword the symbol is part of, and a
numeric suffix which indicates the index of the symbol within the
codeword. For simplicity only data symbols 304 are shown, not
orientation and translation code symbols.
[0341] Although some symbol labels are shown rotated to indicate
the symmetry of the layout of certain codewords, the layout of each
symbol is determined by its position within a symbol group and not
by the rotation of the symbol label (as described in, for example,
the Applicant's US Publication No. 2006/146069).
2.6.1 Orientation Code
[0342] The orientation code consists of a single symbol which
contains two bits of data, and is encoded using pulse position
modulation. FIG. 8 shows the layout of the orientation code
symbol.
[0343] As shown in FIG. 4, the orientation code symbol layout
appears once within each symbol group to indicate the orientation
of the tag (via the OR symbol).
[0344] Each symbol group encodes a one-symbol 4-ary orientation
code. The code is defined by the set of codewords {{0}, {1},
{2},{3}}. These codewords correspond to clockwise tag rotations of
0, 90, 180 and 270 degrees respectively. Each codeword corresponds
to its predecessor read at an orientation of 90 degrees, hence a
single codeword gives rise to the entire code when rotated. The
code has a minimum distance of 1. The codes of an entire tag form a
code with a minimum distance of 9, allowing 4 symbol errors to be
corrected. If additional symbols are visible within the field of
view then they can be used for additional redundancy and even more
robust decoding. A minimum of three orientation codes, with a
combined minimum distance of 3, must be decoded to allow a single
symbol error to be corrected.
2.6.2 Translation Code
[0345] Each translation code symbol encodes one of three values {0,
1, 2}, and is encoded using pulse position modulation i.e. using a
single macrodot in one of three positions
{p.sub.0,p.sub.1,p.sub.2}. FIG. 8 shows the layout of the
translation code symbol.
[0346] As shown in FIG. 4, the translation code symbol layout
appears twice at two orientations within a symbol group to indicate
the horizontal and vertical translation of the tag (via the HT and
VT symbols respectively).
[0347] Each row of symbol groups and each column of symbol groups
encodes a three-symbol 3-ary cyclic position code (The Applicant's
cyclic position codes are described in U.S. Pat. No. 7,082,562, the
contents of which is herein incorporated by reference). The code is
defined by the codeword {0, 1, 2}. It has a minimum distance of 3,
allowing a single symbol error to be corrected. The codes of an
entire tag form a code with a minimum distance of 9, allowing 4
symbol errors to be corrected. If additional symbols are visible
within the field of view then they can be used for additional
redundancy and even more robust decoding.
[0348] The top left corner of an un-rotated tag is identified by a
symbol group which encodes the first symbol in two orthogonal
cyclic position codewords.
2.6.3 Flag Code
[0349] The flag symbol consists of one bit of data, and is encoded
using 1-bit pulse-position modulation, i.e. using a single macrodot
in one of two positions {p.sub.0,p.sub.1}. FIG. 10 shows the layout
of the flag symbol.
[0350] The flag symbol is unique to a tag 4 and is therefore coded
redundantly in each quadrant of the tag. As FIG. 10 shows, the flag
symbol is replicated twice but is defined in four ways within each
symbol group 303. This guarantees that at least four distinct
copies of the flag symbol can be recovered from a quadrant of the
tag. Four symbols form a code with a minimum distance of 3,
allowing a single error to be corrected. If additional symbols are
visible within the field of view then they can be used for
additional redundancy.
2.6.4 Coordinate Data
[0351] The tag contains an x-coordinate codeword and a y-coordinate
codeword used to encode the x and y coordinates of the tag
respectively. The codewords are of a punctured 2.sup.4-ary (9,4)
Reed-Solomon code. The tag therefore encodes up to 20 bits of
information for each coordinate.
[0352] Each x coordinate codeword is replicated twice within the
tag--in each horizontal half ("north" and "south"), and is constant
within the column of tags containing the tag. Likewise, each y
coordinate codeword is replicated twice within the tag--in each
vertical half ("east" and "west"), and is constant within the row
of tags containing the tag. This guarantees that an image of the
tag pattern large enough to contain a complete tag is guaranteed to
contain a complete instance of each coordinate codeword,
irrespective of the alignment of the image with the tag pattern.
The instance of either coordinate codeword may consist of fragments
from different tags.
[0353] It should be noted that, in the present invention, some
coordinate symbols are not replicated and are placed on the
dividing line between the two halves of the tag. This arrangement
saves tag space since there are not two complete replications of
each x-coordinate codeword and each y-coordinate codeword contained
in a tag. Since the field of view is at least two macrodot units
larger than the tag (as discussed in Section 2.5), the coordinate
symbols placed on the dividing line (having a width 2 macrodot
units) are still captured when the surface is imaged. Hence, each
interaction with the coded surface still provides the tag
location.
[0354] The layout of the x-coordinate codeword is shown in FIG. 11.
The layout of the y-coordinate codeword is shown in FIG. 12. It can
be seen that x-coordinate symbols X6, X7 and X8 are placed in a
central column 310 of the tag 4, which divides the eastern half of
the tag from the western half. Likewise, the y-coordinate symbols
Y6, Y7 and Y8 are placed in a central row 312 of the tag 4, which
divides the northern half of the tag from the southern half.
[0355] The central column 310 and central row 312 each have a width
q, which corresponds to the width of one half-symbol i.e. 2s, where
s is the macrodot spacing.
[0356] Note that a and b suffixes on symbol names indicate
low-order and high-order symbol halves (h.sub.0 and h.sub.1)
respectively.
2.6.5 Common Data
[0357] The tag 4 contains three codewords B, C and D which encode
information common to a set of contiguous tags in a surface region.
Each codeword is of a 2.sup.4-ary (15,11) Reed-Solomon code. The
tag therefore encodes up to 132 bits of information common to a set
of contiguous tags.
[0358] The common codewords are replicated throughout a tagged
region. This guarantees that an image of the tag pattern large
enough to contain a complete tag is guaranteed to contain a
complete instance of each common codeword, irrespective of the
alignment of the image with the tag pattern. The instance of each
common codeword may consist of fragments from different tags.
[0359] The layout of the common codewords is shown in FIG. 13. The
codewords have the same layout, rotated 90 degrees relative to each
other.
[0360] The tag optionally contains a fourth codeword E with the
same (rotated) layout as the common codewords. This codeword is
used to encode a secret-key signature or a fragment of an embedded
data object. These are discussed further in Sections 2.6.6 and
Section 2.8.3.
2.6.6 Secret-Key Signature
[0361] The tag optionally contains an entire secret-key digital
signature common to a set of contiguous tags in a surface region.
The signature consists of fifteen 2.sup.4-ary symbols. The tag
therefore optionally encodes up to 60 bits of secret-key signature
data.
[0362] The signature is replicated throughout a tagged region. This
guarantees that an image of the tag pattern large enough to contain
a complete tag is guaranteed to contain a complete instance of the
signature, irrespective of the alignment of the image with the tag
pattern. The instance of the signature may consist of fragments
from different tags.
[0363] The signature, if present, is encoded in the E codeword
described in Section 2.6.5.
[0364] Digital signatures are discussed further in Section
2.8.4.
2.6.7 Complete Tag
[0365] FIG. 14 shows the layout of the data of a complete tag, with
each symbol group comprising ten data symbols. The orientation and
translation codes are not shown in FIG. 14.
2.7 Reed-Solomon Encoding
2.7.1 Reed-Solomon Codes
[0366] All data is encoded using a Reed-Solomon code defined over
GF(16). The code has a natural length n of 15. It is punctured as
appropriate to obtain a chosen length. The dimension k of the code
is chosen to balance the error correcting capacity and data
capacity of the code, which are (n-k)/2 and k symbols
respectively.
[0367] The code has the following primitive polynominal:
p(x)=x.sup.4+x+1
[0368] The code has the following generator polynominal:
g ( x ) = i = 1 n - k ( x + .alpha. t ) ##EQU00001##
[0369] For a detailed description of Reed-Solomon codes, refer to
Wicker, S. B. and V. K. Bhargava, eds., Reed-Solomon Codes and
Their Applications, IEEE Press, 1994.
2.7.2 Codeword Organization
[0370] As shown in FIG. 15, redundancy coordinates r.sub.i and data
coordinates di of the code are indexed from left to right according
to the power of their corresponding polynomial terms. The symbols
X.sub.i of a complete codeword are indexed from right to left to
match the bit order of the data. The bit order within each symbol
is the same as the overall bit order.
2.6.3 Code Instances
[0371] Table 1 defines the parameters of the different codes used
in the tag.
TABLE-US-00003 TABLE 1 Codeword instances error- di- correcting
data length mension capacity capacity name description (n) (k)
(symbols) (bits) X, Y coordinate 9 4 2 20 codewords (see Section
2.6.4) B, C, D, E common 15 11 2 44 codewords (see Section
2.6.5)
2.7 Tag Coordinate Space
[0372] The tag coordinate space has two orthogonal axes labelled x
and y respectively. When the positive x axis points to the right
then the positive y axis points down.
[0373] The surface coding does not specify the location of the tag
coordinate space origin on a particular tagged surface, nor the
orientation of the tag coordinate space with respect to the
surface. This information is application-specific. For example, if
the tagged surface is a sheet of paper, then the application which
prints the tags onto the paper may record the actual offset and
orientation, and these can be used to normalise any digital ink
subsequently captured in conjunction with the surface.
[0374] The position encoded in a tag is defined in units of tags.
By convention, the tag position is taken to be the position of the
top left target in each tag.
2.8 Tag Information Content
2.8.1 Field Definitions
[0375] Table 2 defines the information fields embedded in the
surface coding.
TABLE-US-00004 TABLE 2 Field Definitions width field (bits)
description unique to tag active area flag 1 A flag indicating
whether the area.sup.a immediately surrounding a tag intersects an
active area. b'1' indicates intersection. x coordinate 20 The
unsigned x coordinate of the tag.sup.b. y coordinate 20 The
unsigned y coordinate of the tag.sup.b. common to tagged region
encoding format 4 The format of the encoding. 0: the present
encoding. Other values are reserved region flags 10 Flags
controlling the interpretation of region data (see Table 3).
coordinate precision 2 A value (p) indicating the precision of x
and y coordinates according to the formula 8 + 4p. macrodot size ID
4 The ID of the macrodot size. 0: the nominal macrodot size.sup.c.
region ID 96 The ID of the region containing the tags. secret-key
signature 60 A secret-key signature of the region. CRC (Cyclic
Redundancy 16 A CRC.sup.d of common tag data. Check) .sup.athe
diameter of the area, centered on the tag, is nominally 2.5 times
the diagonal size of the tag; this is to accommodate the worst-case
distance between the nib position and the imaged tag .sup.ballows a
maximum coordinate value of 3.3 km for the nominal tag size of 3.14
mm (based on nominal macrodot size and 33 macrodots per tag)
.sup.c95 microns (based on 1600 dpi and 6 dots per macrodot)
.sup.dCCITT CRC-16 [see ITU, Interface between Data Terminal
Equipment (DTE) and Data Circuit-terminating Equipment (DCE) for
terminals operating in the packet mode and connected to public data
networks by dedicated circuit, ITU-T X.25 (10/96)], computed in bit
order on raw codeword data (see Table 4).
[0376] An active area is an area within which any captured input
should be immediately forwarded to the corresponding Netpage server
10 for interpretation. This also allows the Netpage server 10 to
signal to the user that the input has had an immediate effect.
Since the server has access to precise region definitions, any
active area indication in the surface coding can be imprecise so
long as it is inclusive.
TABLE-US-00005 TABLE 3 Region flags bit meaning 0 Region ID is an
EPC. Used for Hyperlabel (see, for example, U.S. Pat. No.
7,225,979). Otherwise the region ID is a Netpage region ID. 1
Region ID has a secret-key signature (see Section 2.8.4). 2 Region
has embedded data (see Section 2.8.3). Otherwise the region
contains no embedded data. 3 Embedded data is a public-key
signature (see Section 2.8.4). Otherwise the data type is specified
in the embedded data block. 4 Embedded public-key signature is
short (see Section 2.8.4). 5 EPC contains a layout number. Used for
non-serialized Hyperlabel applications, where the serial number is
replaced by a layout number (see US2007/0108285). Otherwise the EPC
contains a serial number. 6 Region is non-interactive i.e. x and y
coordinates are zero. Otherwise x and y coordinates are present. 7
Region is active i.e. the entire region is an active area and the
active area flag is not present. Otherwise the active area is
indicated by individual tags' active area flags. other Reserved for
future use. Must be zero.
2.8.2 Mapping of Fields to Codewords
[0377] Table 4 defines how the information fields map to
codewords.
TABLE-US-00006 TABLE 3 Mapping of fields to codewords codeword
codeword bits field width field bits X all x coordinate.sup.a 20
all Y all y coordinate.sup.a 20 all F all active area flag 1 all B
27:0 region ID 28 27:0 43:28 CRC.sup.b 16 all C 3:0 encoding format
4 all 13:4 region flags 10 all 15:14 coordinate precision 2 all
19:16 macrodot size ID 4 all 43:20 region ID 24 51:28 D all region
ID 44 95:52 E all data fragment 44 all E All.sup.c secret-key
signature 60 all .sup.aencoded with leading zeros if coordinate
precision is less than maximum .sup.bthe CRC is computed in bit
order on the data portions of the B, C and D codewords, in that
order, excluding the CRC field itself .sup.centire codeword is used
for data i.e. there is no redundancy
[0378] As shown in Table 4, codeword E either contains a data
fragment or a secret-key signature. These are described in Section
2.8.3 and Section 2.6.6 respectively. The secret-key signature is
present in a particular tag if the "region has secret-key
signature" flag in the region flags is set, and the tag's active
area flag is set. The data fragment is present if the "region
contains embedded data" flag in the region flags is set and the
tag's active area flag is not set.
[0379] When the region flags indicate that a particular codeword is
absent then the codeword is not coded in the tag pattern, i.e.
there are no macrodots representing the codeword. This applies to
the X, Y, F and E codewords.
2.8.3 Embedded Data Object
[0380] If the "region contains embedded data" flag in the region
flags is set then the surface coding contains embedded data. The
embedded data is encoded in multiple contiguous tags' data
fragments, and is replicated in the surface coding as many times as
it will fit.
[0381] The embedded data is encoded in such a way that a random and
partial scan of the surface coding containing the embedded data can
be sufficient to retrieve the entire data. The scanning system
reassembles the data from retrieved fragments, and reports to the
user when sufficient fragments have been retrieved without
error.
[0382] As shown in Table 5, each block has a data capacity of
176-bits. The block data is encoded in the data fragments of a
contiguous group of four tags arranged in a 2.times.2 square. A tag
belongs to a block whose integer coordinate is the tag's coordinate
divided by 2. Within each block the data is arranged into tags with
increasing x coordinate within increasing y coordinate.
[0383] The block parameters are as defined in Table 5. The E
codeword of each tag may encode a fragment of the embedded
data.
TABLE-US-00007 TABLE 5 Block parameters parameter value description
w 2 The width of the block, in tags h 2 The height of the block, in
tags. b 176 The data capacity of the block, in bits
[0384] If the E codeword of a particular tag does not contain a
fragment of the embedded data, then the pen 101 can discover this
implicitly by the failure of the codeword to decode, or explicitly
from the tag's active area flag.
[0385] Data of arbitrary size may be encoded into a superblock
consisting of a contiguous set of blocks arranged in a rectangle.
The size of the superblock may be encoded in each block. A block
belongs to a superblock whose integer coordinate is the block's
coordinate divided by the superblock size. Within each superblock
the data is arranged into blocks with increasing x coordinate
within increasing y coordinate.
[0386] The superblock is replicated in the surface coding as many
times as it will fit, including partially along the edges of the
surface coding.
[0387] The data encoded in the superblock may include more precise
type information, more precise size information, and more extensive
error detection and/or correction data.
2.8.4 Digital Signatures
[0388] As described in Section 2.8.1, a region may contain a
secret-key digital signature. In an online environment the
secret-key signature can be verified, in conjunction with the
region ID, by querying a server with knowledge of the secret-key
signature or the corresponding secret key.
[0389] If the region contains embedded data and the "embedded data
is a public-key signature" flag in the region flag is set then the
surface coding contains an embedded public-key digital signature of
the region ID.
[0390] If the "embedded public-key signature is short" flag is set,
then the embedded public-key signature is a 160-bit signature
encoded in a single block consisting of just the signature and a
16-bit CRC, i.e. with the superblock parameters omitted.
[0391] In an online environment any number of signature fragments
can be used, in conjunction with the region ID and optionally the
secret-key signature, to validate the public-key signature by
querying a server with knowledge of the full public-key signature
or the corresponding private key.
[0392] In an offline (or online) environment the entire public-key
signature can be recovered by reading multiple tags, and can then
be verified using the corresponding public signature key. The
actual length and type of the signature are determined from the
region ID during signature validation.
[0393] Digital signature verification is discussed in the
Applicant's US Publication No. 2007/0108285, the contents of which
are herein incorporated by reference.
2.9 Tag Imaging and Decoding
[0394] The minimum imaging field of view required to guarantee
acquisition of data from an entire tag has a diameter of 49.5s
(i.e. ((3.times.11)+2) 2s), allowing for arbitrary rotation and
translation of the surface coding in the field of view. Notably,
the imaging field of view does not have to be large enough to
guarantee capture of an entire tag--the arrangement of the data
symbols within each tag ensures that a any square portion of length
(l+2s) captures the requisite information in full, irrespective of
whether a whole tag is actually visible in the field-of-view. As
used herein, l is defined as the length of a tag.
[0395] In terms of imaging the coding pattern, the imaging
field-of-view is typically a circle. Accordingly, the imaging
field-of-view should preferably have diameter of at least (l+2s) 2
and less than two tag diameters. Importantly, the field-of-view is
not required to be at least two tag diameters, in contrast with
prior art tag designs, because it is not essential in the present
invention to capture an entire tag in the field of view.
[0396] The extra two macrodot units ensure that pulse-position
modulated values can be decoded from spatially coherent samples.
Furthermore, the extra two macrodot units ensure that coordinate
symbols from a central column or row of a tag (see Section 2.6.4)
are readable from every interaction with the surface.
[0397] In the present context, a "tag diameter" is given to mean
the length of a tag diagonal.
[0398] Given a maximum macrodot spacing of 106 microns (e.g. for
1200 dpi), this gives a required field of view of 5.24 mm.
[0399] Table 6 gives pitch ranges achievable for the present
surface coding for different sampling rates and hence image sensor
array sizes.
TABLE-US-00008 TABLE 6 Pitch ranges achievable for present surface
coding for different image sensor sizes; dot pitch = 600 dpi,
macrodot pitch = 2 dots, field of view = 4.19 mm, viewing distance
= 30 mm, nib-to-FOV separation = 1 mm pitch range roll range
sampling image sensor scaled.sup.a image (degrees) (degrees) rate
size sensor size -30 to +38 -34 to +34 2 130 163 2.5 163 204 -35 to
+44 -39 to +39 2 140 175 2.5 175 219 -40 to +48 -44 to +44 2 153
291 2.5 191 239 -45 to +53 -48 to +48 2 168 210 2.5 210 263
.sup.ascaled by 1.25 (i.e. 106 microns/85 microns) to accommodate
maximum macrodot spacing
[0400] FIG. 16 shows a tag image processing and decoding process
flow up to the stage of sampling and decoding the data codewords.
Firstly, a raw image 802 of the tag pattern is acquired (at 800),
for example via an image sensor such as a CCD image sensor, CMOS
image sensor, or a scanning laser and photodiode image sensor. The
raw image 802 is then typically enhanced (at 804) to produce an
enhanced image 806 with improved contrast and more uniform pixel
intensities. Image enhancement may include global or local range
expansion, equalisation, and the like. The enhanced image 806 is
then typically filtered (at 808) to produce a filtered image 810.
Image filtering may consist of low-pass filtering, with the
low-pass filter kernel size tuned to obscure macrodots 302 but to
preserve targets 301. The filtering step 808 may include additional
filtering (such as edge detection) to enhance target features 301.
Encoding of data codewords 304 using pulse position modulation
(PPM) provides a more uniform coding pattern 3 than simple binary
dot encoding (as described in, for example, U.S. Pat. No.
6,832,717). Advantageously, this helps separate targets 301 from
data areas, thereby allowing more effective low-pass filtering of
the PPM-encoded data compared to binary-coded data.
[0401] Following low-pass filtering, the filtered image 810 is then
processed (at 812) to locate the targets 301. This may consist of a
search for target features whose spatial inter-relationship is
consistent with the known geometry of the tag pattern. Candidate
targets may be identified directly from maxima in the filtered
image 810, or may be the subject of further characterization and
matching, such as via their (binary or grayscale) shape moments
(typically computed from pixels in the enhanced image 806 based on
local maxima in the filtered image 810), as described in U.S. Pat.
No. 7,055,739, the contents of which is herein incorporated by
reference.
[0402] The identified targets 301 are then assigned to a target
grid 816. Each cell of the grid 816 contains a symbol group 303,
and several symbol groups will of course be visible in the image.
At this stage, individual tags 4 will not be identifiable in the
target grid 816, since the targets 301 do not demarcate one tag
from another.
[0403] To allow macrodot values to be sampled accurately, the
perspective transform of the captured image must be inferred. Four
of the targets 301 are taken to be the perspective-distorted
corners of a square of known size in tag space, and the
eight-degree-of-freedom perspective transform 822 is inferred (at
820), based on solving the well-understood equations relating the
four tag-space and image-space point pairs. Calculation of the 2D
perspective transform is described in detail in, for example,
Applicant's U.S. Pat. No. 6,832,717, the contents of which is
herein incorporated by reference.
[0404] Since each image will contain at least 9, at least 16 or at
least 25 targets arranged in a square grid, the accuracy of
calculating the 2D perspective transform is improved compared to
the Applicant's previous tag designs described in, for example,
U.S. Pat. No. 6,832,717. Hence, more accurate position calculation
can be achieved with the tag design of the present invention.
[0405] The inferred tag-space to image-space perspective transform
822 is used to project each known macrodot position in tag space
into image space. Since all bits in the tags are represented by
PPM-encoding, the presence or absence of each macrodot 302 can be
determined using a local intensity reference, rather than a
separate intensity reference. Thus, PPM-encoding provides improved
data sampling compared with pure binary encoding.
[0406] The next stage determines the orientation of the tag(s), or
portions thereof, in the field of view. At least 3 orientation
codewords are sampled and decoded (at 824) to provide the
orientation 826. Robust orientation determination is provided since
many symbol groups 303 are contained in the image, with each symbol
group containing an orientation symbol, as described above.
Moreover, and as described in Section 2.5.1, since N orientation
symbols in a tag form a code with minimum distance N, the code is
capable of correcting (N-1)/2 errors. Hence, orientation
determination is very robust and capable of correcting errors,
depending on the number of orientation symbols sampled.
[0407] After determination of the orientation 826, the next stage
samples and decodes two or more orthogonal translation codewords
(at 828) to determine the relative translation 830 of tags(s) in
the field of view relative to the target grid. This enables
alignment of the tags 4 with the target grid 818, thereby allowing
individual tag(s), or portions thereof, to be distinguished in the
coding pattern 3 in the field of view. Since each symbol group 303
contains a translation code, multiple translation codes can be
sampled to provide robust translation determination. As described
in Section 2.5.2, the translation code is a cyclic position code.
Since each row and each column of a tag contains M symbol groups,
the code has minimum distance M.times.M. This allows very robust
determination of the alignment of tags 4 with the target grid 818.
The alignment needs to be both robust and accurate since there are
many possible alignments when each tag 4 contains multiple symbol
groups 303.
[0408] Once initial imaging and decoding has yielded the 2D
perspective transform, the orientation, and the translation of
tag(s) relative to the target grid, the data codewords 304 can then
be sampled and decoded 836 to yield the requisite decoded codewords
838.
[0409] Decoding of the data codewords 304 typically proceeds as
follows: [0410] sample common Reed-Solomon codewords [0411] decode
common Reed-Solomon codewords [0412] verify tag data CRC [0413] on
decode error flag bad region ID sample [0414] determine encoding
type, and reject unknown encoding [0415] determine region flags
[0416] determine region ID [0417] sample and decode x and y
coordinate Reed-Solomon codewords [0418] determine tag x-y location
from codewords [0419] determine nib x-y location from tag x-y
location and perspective transform [0420] sample and decode four or
more flag symbols to determine active area flag [0421] determine
active area status of nib location with reference to active area
flag [0422] encode region ID, nib x-y location, and nib active area
status in digital ink ("interaction data") [0423] route digital ink
based on region flags
[0424] The skilled person will appreciate that the decoding
sequence described above represents one embodiment of the present
invention. It will, of course, be appreciated that the interaction
data sent from the pen 101 to the netpage system may include other
data e.g. digital signature (see Section 2.8.4), pen mode (see US
2007/125860), orientation data, pen ID, nib ID etc.
[0425] An example of interpreting interaction data, received by the
netpage system from the netpage pen 101, is discussed briefly
above. A more detailed discussion of how the netpage system may
interpret interaction data can be found in the Applicant's
previously-filed applications (see, for example, US 2007/130117 and
US 2007/108285, the contents of which are herein incorporated by
reference).
3. Netpage Pen
3.1 Functional Overview
[0426] The active sensing device of the netpage system may take the
form of a clicker (for clicking on a specific position on a
surface), a pointer having a stylus (for pointing or gesturing on a
surface using pointer strokes), or a pen having a marking nib (for
marking a surface with ink when pointing, gesturing or writing on
the surface). For a description of various netpage sensing devices,
reference is made to U.S. Pat. No. 7,105,753; U.S. Pat. No.
7,015,901; U.S. Pat. No. 7,091,960; and US Publication No.
2006/0028459, the contents of each of which are herein incorporated
by reference.
[0427] It will be appreciated that the present invention may
utilize any suitable optical reader. However, the Netpage pen 400
will be described herein as one such example.
[0428] The Netpage pen 400 is a motion-sensing writing instrument
which works in conjunction with a tagged Netpage surface (see
Section 2). The pen incorporates a conventional ballpoint pen
cartridge for marking the surface, an image sensor and processor
for simultaneously capturing the absolute path of the pen on the
surface and identifying the surface, a force sensor for
simultaneously measuring the force exerted on the nib, and a
real-time clock for simultaneously measuring the passage of
time.
[0429] While in contact with a tagged surface, as indicated by the
force sensor, the pen continuously images the surface region
adjacent to the nib, and decodes the nearest tag in its field of
view to determine both the identity of the surface, its own
instantaneous position on the surface and the pose of the pen. The
pen thus generates a stream of timestamped position samples
relative to a particular surface, and transmits this stream to the
Netpage server 10. The sample stream describes a series of strokes,
and is conventionally referred to as digital ink (DInk). Each
stroke is delimited by a pen down and a pen up event, as detected
by the force sensor. More generally, any data resulting from an
interaction with a Netpage, and transmitted to the Netpage server
10, is referred to herein as "interaction data".
[0430] The pen samples its position at a sufficiently high rate
(nominally 100 Hz) to allow a Netpage server to accurately
reproduce hand-drawn strokes, recognise handwritten text, and
verify hand-written signatures.
[0431] The Netpage pen also supports hover mode in interactive
applications. In hover mode the pen is not in contact with the
paper and may be some small distance above the surface of the paper
(or other substrate). This allows the position of the pen,
including its height and pose to be reported. In the case of an
interactive application the hover mode behaviour can be used to
move a cursor without marking the paper, or the distance of the nib
from the coded surface could be used for tool behaviour control,
for example an air brush function.
[0432] The pen includes a Bluetooth radio transceiver for
transmitting digital ink via a relay device to a Netpage server.
When operating offline from a Netpage server the pen buffers
captured digital ink in non-volatile memory. When operating online
to a Netpage server the pen transmits digital ink in real time.
[0433] The pen is supplied with a docking cradle or "pod". The pod
contains a Bluetooth to USB relay. The pod is connected via a USB
cable to a computer which provides communications support for local
applications and access to Netpage services.
[0434] The pen is powered by a rechargeable battery. The battery is
not accessible to or replaceable by the user. Power to charge the
pen can be taken from the USB connection or from an external power
adapter through the pod. The pen also has a power and
USB-compatible data socket to allow it to be externally connected
and powered while in use.
[0435] The pen cap serves the dual purpose of protecting the nib
and the imaging optics when the cap is fitted and signalling the
pen to leave a power-preserving state when uncapped.
3.2 Ergonomics and Layout
[0436] FIG. 17 shows a rounded triangular profile gives the pen 400
an ergonomically comfortable shape to grip and use the pen in the
correct functional orientation. It is also a practical shape for
accommodating the internal components. A normal pen-like grip
naturally conforms to a triangular shape between thumb 402, index
finger 404 and middle finger 406.
[0437] As shown in FIG. 18, a typical user writes with the pen 400
at a nominal pitch of about 30 degrees from the normal toward the
hand 408 when held (positive angle) but seldom operates a pen at
more than about 10 degrees of negative pitch (away from the hand).
The range of pitch angles over which the pen 400 is able to image
the pattern on the paper has been optimised for this asymmetric
usage. The shape of the pen 400 helps to orient the pen correctly
in the user's hand 408 and to discourage the user from using the
pen "upside-down". The pen functions "upside-down" but the
allowable tilt angle range is reduced.
[0438] The cap 410 is designed to fit over the top end of the pen
400, allowing it to be securely stowed while the pen is in use.
Multi colour LEDs illuminate a status window 412 in the top edge
(as in the apex of the rounded triangular cross section) of the pen
400 near its top end. The status window 412 remains un-obscured
when the cap is stowed. A vibration motor is also included in the
pen as a haptic feedback system (described in detail below).
[0439] As shown in FIG. 19, the grip portion of the pen has a
hollow chassis molding 416 enclosed by a base molding 528 to house
the other components. The ink cartridge 414 for the ball point nib
(not shown) fits naturally into the apex 420 of the triangular
cross section, placing it consistently with the user's grip. This
in turn provides space for the main PCB 422 in the centre of the
pen and for the battery 424 in the base of the pen. By referring to
FIG. 20A, it can be seen that this also naturally places the
tag-sensing optics 426 unobtrusively below the nib 418 (with
respect to nominal pitch). The nib molding 428 of the pen 400 is
swept back below the ink cartridge 414 to prevent contact between
the nib molding 428 and the paper surface when the pen is operated
at maximum pitch.
[0440] As best shown in FIG. 20B, the imaging field of view 430
emerges through a centrally positioned IR filter/window 432 below
the nib 418, and two near-infrared illumination LEDs 434, 436
emerge from the two bottom corners of the nib molding 428. Each LED
434, 436 has a corresponding illumination field 438, 440.
[0441] As the pen is hand-held, it may be held at an angle that
causes reflections from one of the LED's that are detrimental to
the image sensor. By providing more than one LED, the LED causing
the offending reflections can be extinguished.
[0442] Specific details of the pen mechanical design can be found
in US Publication No. 2006/0028459, the contents of which are
herein incorporated by reference.
3.3 Pen Feedback Indications
[0443] FIG. 21 is a longitudinal cross section through the
centre-line if the pen 400 (with the cap 410 stowed on the end of
the pen). The pen incorporates red and green LEDs 444 to indicate
several states, using colours and intensity modulation. A light
pipe 448 on the LEDs 444 transmit the signal to the status
indicator window 412 in the tube molding 416. These signal status
information to the user including power-on, battery level,
untransmitted digital ink, network connection on-line, fault or
error with an action, detection of an "active area" flag, detection
of an "embedded data" flag, further data sampling to required to
acquire embedded data, acquisition of embedded data completed
etc.
[0444] A vibration motor 446 is used to haptically convey
information to the user for important verification functions during
transactions. This system is used for important interactive
indications that might be missed due to inattention to the LED
indicators 444 or high levels of ambient light. The haptic system
indicates to the user when: [0445] The pen wakes from standby mode
[0446] There is an error with an action [0447] To acknowledge a
transaction
3.4 Pen Optics
[0448] The pen incorporates a fixed-focus narrowband infrared
imaging system. It utilizes a camera with a short exposure time,
small aperture, and bright synchronised illumination to capture
sharp images unaffected by defocus blur or motion blur.
TABLE-US-00009 TABLE 6 Optical Specifications Magnification
.sup.~0.225 Focal length of 6.0 mm lens Viewing distance 30.5 mm
Total track length 41.0 mm Aperture diameter 0.8 mm Depth of field
.sub...sup.~/ 6.5 mm Exposure time 200 us Wavelength 810 nm Image
sensor size 140 .times. 140 pixels Pixel size 10 um Pitch range
.sup.~15 to.sub.. 45 deg Roll range .sup.~30 to.sub.. 30 deg Yaw
range 0 to 360 deg Minimum sampling 2.25 pixels per rate macrodot
Maximum pen 0.5 m/s velocity .sup.1Allowing 70 micron blur radius
.sup.2Illumination and filter .sup.3Pitch, roll and yaw are
relative to the axis of the pen
[0449] Cross sections showing the pen optics are provided in FIGS.
22A and 22B. An image of the Netpage tags printed on a surface 548
adjacent to the nib 418 is focused by a lens 488 onto the active
region of an image sensor 490. A small aperture 494 ensures the
available depth of field accommodates the required pitch and roll
ranges of the pen 400.
[0450] First and second LEDs 434 and 436 brightly illuminate the
surface 549 within the field of view 430. The spectral emission
peak of the LEDs is matched to the spectral absorption peak of the
infrared ink used to print Netpage tags to maximise contrast in
captured images of tags. The brightness of the LEDs is matched to
the small aperture size and short exposure time required to
minimise defocus and motion blur.
[0451] A longpass IR filter 432 suppresses the response of the
image sensor 490 to any coloured graphics or text spatially
coincident with imaged tags and any ambient illumination below the
cut-off wavelength of the filter 432. The transmission of the
filter 432 is matched to the spectral absorption peak of the
infrared ink to maximise contrast in captured images of tags. The
filter also acts as a robust physical window, preventing
contaminants from entering the optical assembly 470.
3.5 Pen Imaging System
[0452] A ray trace of the optic path is shown in FIG. 23. The image
sensor 490 is a CMOS image sensor with an active region of 140
pixels squared. Each pixel is 10 .mu.m squared, with a fill factor
of 93%. Turning to FIG. 24, the lens 488 is shown in detail. The
dimensions are: [0453] D=3 mm [0454] R1=3.593 mm [0455] R2=15.0 mm
[0456] X=0.8246 mm [0457] Y=1.0 mm [0458] Z=0.25 mm
[0459] This gives a focal length of 6.15 mm and transfers the image
from the object plane (tagged surface 548) to the image plane
(image sensor 490) with the correct sampling frequency to
successfully decode all images over the specified pitch, roll and
yaw ranges. The lens 488 is biconvex, with the most curved surface
facing the image sensor. The minimum imaging field of view 430
required to guarantee acquisition of sufficient tag data with each
interaction is dependent on the specific coding pattern. The
required field of view for the coding pattern of the present
invention is described in Section 2.9.
[0460] The required paraxial magnification of the optical system is
defined by the minimum spatial sampling frequency of 2.25 pixels
per macrodot for the fully specified tilt range of the pen 400, for
the image sensor 490 of 10 .mu.m pixels. Typically, the imaging
system employs a paraxial magnification of 0.225, the ratio of the
diameter of the inverted image at the image sensor to the diameter
of the field of view at the object plane, on an image sensor 490 of
minimum 128.times.128 pixels. The image sensor 490 however is
140.times.140 pixels, in order to accommodate manufacturing
tolerances. This allows up to +/-120 .mu.m (12 pixels in each
direction in the plane of the image sensor) of misalignment between
the optical axis and the image sensor axis without losing any of
the information in the field of view.
[0461] The lens 488 is made from Poly-methyl-methacrylate (PMMA),
typically used for injection moulded optical components. PMMA is
scratch resistant, and has a refractive index of 1.49, with 90%
transmission at 810 nm. The lens is biconvex to assist moulding
precision and features a mounting surface to precisely mate the
lens with the optical barrel molding 492.
[0462] A 0.8 mm diameter aperture 494 is used to provide the depth
of field requirements of the design.
[0463] The specified tilt range of the pen is 15.0 to 45.0 degree
pitch, with a roll range of 30.0 to 30.0 degrees. Tilting the pen
through its specified range moves the tilted object plane up to 6.3
mm away from the focal plane. The specified aperture thus provides
a corresponding depth of field of/6.5 mm, with an acceptable blur
radius at the image sensor of 16 .mu.m.
[0464] Due to the geometry of the pen design, the pen operates
correctly over a pitch range of 33.0 to 45.0 degrees.
[0465] Referring to FIG. 25, the optical axis 550 is pitched 0.8
degrees away from the nib axis 552. The optical axis and the nib
axis converge toward the paper surface 548. With the nib axis 552
perpendicular to the paper, the distance A between the edge of the
field of view 430 closest to the nib axis and the nib axis itself
is 1.2 mm.
[0466] The longpass IR filter 432 is made of CR-39, a lightweight
thermoset plastic heavily resistant to abrasion and chemicals such
as acetone. Because of these properties, the filter also serves as
a window. The filter is 1.5 mm thick, with a refractive index of
1.50. Each filter may be easily cut from a large sheet using a
CO.sub.2 laser cutter.
3.6 Electronics Design
TABLE-US-00010 [0467] TABLE 3 Electrical Specifications Processor
ARM7 (Atmel AT91FR40162) running at 80 MHz with 256 kB SRAM and 2
MB flash memory Digital ink storage 5 hours of writing capacity
Bluetooth 1.2 Compliance USB Compliance 1.1 Battery standby 12
hours (cap off), >4 weeks (cap on) time Battery writing 4 hours
of cursive writing (81% pen down, time assuming easy offload of
digital ink) Battery charging 2 hours time Battery Life Typically
300 charging cycles or 2 years (whichever occurs first) to 80% of
initial capacity. Battery ~340 mAh at 3.7 V, Lithium-ion Polymer
Capacity/Type (LiPo)
[0468] FIG. 26 is a block diagram of the pen electronics. The
electronics design for the pen is based around five main sections.
These are: [0469] the main ARM7 microprocessor 574, [0470] the
image sensor and image processor 576, [0471] the Bluetooth
communications module 578, [0472] the power management unit IC
(PMU) 580 and [0473] the force sensor microprocessor 582.
3.6.1 Microprocessor
[0474] The pen uses an Atmel AT91FR40162 microprocessor (see Atmel,
AT91 ARM Thumb Microcontrollers--AT91FR40162 Preliminary,
http://www.keil.com/dd/docs/datashts/atmel/at91fr40162.pdf) running
at 80 MHz. The AT91FR40162 incorporates an ARM7 microprocessor, 256
kBytes of on-chip single wait state
[0475] SRAM and 2 MBytes of external flash memory in a stack chip
package.
[0476] This microprocessor 574 forms the core of the pen 400. Its
duties include: [0477] setting up the Jupiter image sensor 584,
[0478] decoding images of Netpage coding pattern (see Section 2.9),
with assistance from the image processing features of the image
sensor 584, for inclusion in the digital ink stream along with
force sensor data received from the force sensor microprocessor
582, [0479] setting up the power management IC (PMU) 580, [0480]
compressing and sending digital ink via the Bluetooth
communications module 578, and [0481] programming the force sensor
microprocessor 582.
[0482] The ARM7 microprocessor 574 runs from an 80 MHz oscillator.
It communicates with the Jupiter image sensor 576 using a Universal
Synchronous Receiver Transmitter (USRT) 586 with a 40 MHz clock.
The ARM7 574 communicates with the Bluetooth module 578 using a
Universal Asynchronous Receiver Transmitter (UART) 588 running at
115.2 kbaud. Communications to the PMU 580 and the Force Sensor
microprocessor (FSP) 582 are performed using a Low Speed Serial bus
(LSS) 590. The LSS is implemented in software and uses two of the
microprocessor's general purpose IOs.
[0483] The ARM7 microprocessor 574 is programmed via its JTAG
port.
3.6.2 Image Sensor
[0484] The `Jupiter` Image Sensor 584 (see US Publication No.
2005/0024510, the contents of which are incorporated herein by
reference) contains a monochrome sensor array, an analogue to
digital converter (ADC), a frame store buffer, a simple image
processor and a phase lock loop (PLL). In the pen, Jupiter uses the
USRT's clock line and its internal PLL to generate all its clocking
requirements. Images captured by the sensor array are stored in the
frame store buffer. These images are decoded by the ARM7
microprocessor 574 with help from the `Callisto` image processor
contained in Jupiter. The Callisto image processor performs, inter
alia, low-pass filtering of captured images (see Section 2.9 and US
Publication No. 2005/0024510) before macrodot sampling and decoding
by the microprocessor 574.
[0485] Jupiter controls the strobing of two infrared LEDs 434 and
436 at the same time as its image array is exposed. One or other of
these two infrared LEDs may be turned off while the image array is
exposed to prevent specular reflection off the paper that can occur
at certain angles.
3.6.3 Bluetooth Communications Module
[0486] The pen uses a CSR BlueCore4-External device (see CSR,
BlueCore4-External Data Sheet rev c, 6 Sep. 2004) as the Bluetooth
controller 578. It requires an external 8 Mbit flash memory device
594 to hold its program code. The BlueCore4 meets the Bluetooth
v1.2 specification and is compliant to v0.9 of the Enhanced Data
Rate (FDR) specification which allows communication at up to 3
Mbps.
[0487] A 2.45 GHz chip antenna 486 is used on the pen for the
Bluetooth communications.
[0488] The BlueCore4 is capable of forming a UART to USB bridge.
This is used to allow USB communications via data/power socket 458
at the top of the pen 456.
[0489] Alternatives to Bluetooth include wireless LAN and PAN
standards such as IEEE 802% 11 (Wi-Fi) (see IEEE, 802.11 Wireless
Local Area Networks,
http://grouper.ieee.org/groups/802/11/index.html), IEEE 802.15 (see
IEEE, 802.15 Working Group for WPAN,
http://grouper.ieee.org/groups/802/15/index.html), ZigBee (see
ZigBee Alliance, http://www.zigbee.org), and WirelessUSB Cypress
(see WirelessUSB LB 2.4-GHz DSSS Radio SoC,
http://www.cypress.com/cfuploads/img/products/cywusb6935.pdf), as
well as mobile standards such as GSM (see GSM Association,
http://www.gsmworld.com/index.shtml), GPRS/EDGE, GPRS Platform,
http://www.gsmworld.com/technology/gprs/index.shtml), CDMA (see
CDMA Development Group, http:/www.cdg.org/, and Qualcomm,
http://www.qualcomm.com), and UMTS (see 3rd Generation Partnership
Project (3GPP), http://www.3gpp.org).
3.6.4 Power Management Chip
[0490] The pen uses an Austria Microsystems AS3603 PMU 580 (see
Austria Microsystems, AS3603 Multi-Standard Power Management Unit
Data Sheet v2.0). The PMU is used for battery management, voltage
generation, power up reset generation and driving indicator LEDs
and the vibrator motor.
[0491] The PMU 580 communicates with the ARM7 microprocessor 574
via the LSS bus 590.
3.6.5 Force Sensor Subsystem
[0492] The force sensor subsystem comprises a custom Hokuriku force
sensor 500 (based on Hokuriku, HFD-500 Force Sensor,
http://www.hdk.cojp/pdf/eng/e1381AA.pdf), an amplifier and low pass
filter 600 implemented using op-amps and a force sensor
microprocessor 582.
[0493] The pen uses a Silicon Laboratories C8051F330 as the force
sensor microprocessor 582 (see Silicon Laboratories, C8051F330/1
MCU Data Sheet, rev 1.1). The C8051F330 is an 8051 microprocessor
with on chip flash memory, 10 bit ADC and 10 bit DAC. It contains
an internal 24.5 MHz oscillator and also uses an external 32.768
kHz tuning fork.
[0494] The Hokuriku force sensor 500 is a silicon piezoresistive
bridge sensor. An op-amp stage 600 amplifies and low pass
(anti-alias) filters the force sensor output. This signal is then
sampled by the force sensor microprocessor 582 at 5 kHz.
[0495] Alternatives to piezoresistive force sensing include
capacitive and inductive force sensing (see Wacom, "Variable
capacity condenser and pointer", US Patent Application 20010038384,
filed 8 Nov. 2001, and Wacom, Technology,
http://www.wacom-components.com/english/tech.asp).
[0496] The force sensor microprocessor 582 performs further
(digital) filtering of the force signal and produces the force
sensor values for the digital ink stream. A frame sync signal from
the Jupiter image sensor 576 is used to trigger the generation of
each force sample for the digital ink stream. The temperature is
measured via the force sensor microprocessor's 582 on chip
temperature sensor and this is used to compensate for the
temperature dependence of the force sensor and amplifier. The
offset of the force signal is dynamically controlled by input of
the microprocessor's DAC output into the amplifier stage 600.
[0497] The force sensor microprocessor 582 communicates with the
ARM7 microprocessor 574 via the LSS bus 590. There are two separate
interrupt lines from the force sensor microprocessor 582 to the
ARM7 microprocessor 574. One is used to indicate that a force
sensor sample is ready for reading and the other to indicate that a
pen down/up event has occurred.
[0498] The force sensor microprocessor flash memory is programmed
in-circuit by the ARM7 microprocessor 574.
[0499] The force sensor microprocessor 582 also provides the real
time clock functionality for the pen 400. The RTC function is
performed in one of the microprocessor's counter timers and runs
from the external 32.768 kHz tuning fork. As a result, the force
sensor microprocessor needs to remain on when the cap 472 is on and
the ARM7 574 is powered down. Hence the force sensor microprocessor
582 uses a low power LDO separate from the PMU 580 as its power
source. The real time clock functionality includes an interrupt
which can be programmed to power up the ARM7 574.
[0500] The cap switch 602 is monitored by the force sensor
microprocessor 582. When the cap assembly 472 is taken off (or
there is a real time clock interrupt), the force sensor
microprocessor 582 starts up the ARM7 572 by initiating a power on
and reset cycle in the PMU 580.
3.7 Pen Software
[0501] The Netpage pen software comprises that software running on
microprocessors in the Netpage pen 400 and Netpage pod.
[0502] The pen contains a number of microprocessors, as detailed in
Section 3.6. The Netpage pen software includes software running on
the Atmel ARM7 CPU 574 (hereafter CPU), the Force Sensor
microprocessor 582, and also software running in the VM on the CSR
BlueCore Bluetooth module 578 (hereafter pen BlueCore). Each of
these processors has an associated flash memory which stores the
processor specific software, together with settings and other
persistent data. The pen BlueCore 578 also runs firmware supplied
by the module manufacturer, and this firmware is not considered a
part of the Netpage pen software.
[0503] The pod contains a CSR BlueCore Bluetooth module (hereafter
pod BlueCore). The Netpage pen software also includes software
running in the VM on the pod BlueCore.
[0504] As the Netpage pen 400 traverses a Netpage tagged surface
548, a stream of correlated position and force samples are
produced. This stream is referred to as DInk. Note that DInk may
include samples with zero force (so called "Hover DInk") produced
when the Netpage pen is in proximity to, but not marking, a Netpage
tagged surface.
[0505] The CPU component of the Netpage pen software is responsible
for DInk capture, tag image processing and decoding (in conjunction
with the Jupiter image sensor 576), storage and offload management,
host communications, user feedback and software upgrade. It
includes an operating system (RTOS) and relevant hardware drivers.
In addition, it provides a manufacturing and maintenance mode for
calibration, configuration or detailed (non-field) fault diagnosis.
The Force Sensor microprocessor 582 component of the Netpage pen
software is responsible for filtering and preparing force samples
for the main CPU. The pen BlueCore VM software is responsible for
bridging the CPU UART 588 interface to USB when the pen is
operating in tethered mode. The pen BlueCore VM software is not
used when the pen is operating in Bluetooth mode.
[0506] The pod BlueCore VM software is responsible for sensing when
the pod is charging a pen 400, controlling the pod LEDs
appropriately, and communicating with the host PC via USB.
[0507] For a detailed description of the software modules,
reference is made to US Publication No. 2006/0028459, the contents
of which are herein incorporated by reference.
[0508] The present invention has been described with reference to a
preferred embodiment and number of specific alternative
embodiments. However, it will be appreciated by those skilled in
the relevant fields that a number of other embodiments, differing
from those specifically described, will also fall within the spirit
and scope of the present invention. Accordingly, it will be
understood that the invention is not intended to be limited to the
specific embodiments described in the present specification,
including documents incorporated by cross-reference as appropriate.
The scope of the invention is only limited by the attached
claims.
* * * * *
References