US20100086209A1 - Method of imaging position-coding pattern having tag coordinates encoded by bit-shifted subsequences of cyclic position code - Google Patents
Method of imaging position-coding pattern having tag coordinates encoded by bit-shifted subsequences of cyclic position code Download PDFInfo
- Publication number
- US20100086209A1 US20100086209A1 US12/539,589 US53958909A US2010086209A1 US 20100086209 A1 US20100086209 A1 US 20100086209A1 US 53958909 A US53958909 A US 53958909A US 2010086209 A1 US2010086209 A1 US 2010086209A1
- Authority
- US
- United States
- Prior art keywords
- tag
- subsequence
- coordinate
- bit
- symbol
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
- G06K19/06009—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
- G06K19/06037—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking multi-dimensional coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/10544—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
- G06K7/10712—Fixed beam scanning
- G06K7/10762—Relative movement
- G06K7/10772—Moved readers, e.g. pen, wand
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
- G06K7/1417—2D bar codes
Definitions
- the present invention relates to a position-coding pattern on a surface.
- 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 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.
- a substrate having a position-coding pattern disposed on a surface thereof, the position-coding pattern comprising:
- each tag encoding a w-bit subsequence of a cyclic code sequence, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag,
- adjacent tags contain w-bit subsequences shifted by one bit relative to each other in the cyclic code sequence.
- An advantage of this position-pattern described in the first aspect is that it allows coordinate data to be captured by an optical reader whilst minimizing the required field of view.
- the w-bit subsequence is represented by a set of coordinate data symbols in the tag, each of the coordinate data symbols containing at least one bit of the w-bit subsequence, each coordinate data symbol being represented by one or more data elements disposed on the surface.
- the cyclic code sequence is an m-sequence or a simplex code.
- the cyclic code sequence has a length n and a dimension k, and wherein: n>w>k.
- n>w>k ensures that the code enables error-detection and error-correction.
- a given tag contains a w-bit subsequence corresponding to offset i in the cyclic code sequence, and adjacent tags on either side of the given tag contain w-bit subsequences corresponding to offsets (i+1) and (i ⁇ 1) in the cyclic code sequence.
- the position-coding pattern comprises a plurality of target elements defining a target grid, the target grid comprising a plurality of cells, each cell defining a symbol group, wherein neighboring symbol groups share target elements.
- each tag is square and contains a plurality of symbol groups.
- each coordinate data symbol is a 1-bit symbol such that w coordinate data symbols represent the w-bit subsequence.
- the set of coordinate data symbols is arranged in each tag such that at any square portion of the position-coding pattern of length (l+q) is guaranteed to contain at least (w ⁇ 1) bits of the w-bit subsequence, wherein l is a length of the tag and q is a length or a width of a coordinate data symbol.
- each tag contains an x-coordinate codeword mapped from a first cyclic code sequence and a y-coordinate codeword mapped from a second cyclic code sequence, the x-coordinate codeword being defined by a first set of x-coordinate data symbols, and the y-coordinate codeword being defined by a second set of y-coordinate data symbols.
- the first set is arranged in subsets of x-coordinate data symbols and the second set is arranged in subsets of y-coordinate data symbols.
- each subset of x-coordinate data symbols is configured as a column containing a plurality of the x-coordinate data symbols
- each subset of y-coordinate data symbols is configured as a row containing a plurality of the y-coordinate data symbols, wherein each of the rows and columns has a maximal width v.
- the columns of x-coordinate symbols and the rows of y-coordinate symbols are arranged such that any square portion of the position-coding pattern of length (l+v) is guaranteed to contain at least (w ⁇ 1) bits of a w-bit subsequence in the first cyclic code sequence and at least (w ⁇ 1) bits of a w-bit subsequence in the second cyclic code sequence, wherein l is a length of each tag.
- one or more of the coordinate data symbols is a merged data symbol, each merged data symbol being represented by the one or more data elements, and wherein each merged data symbol encodes at least two of:
- the at least one further data symbol is a Reed-Solomon symbol defining a fragment of a common codeword, the common codeword being encoded by a set of Reed-Solomon symbols contained in the tag, the common codeword identifying an identity common to a plurality of contiguous tags,
- each merged data symbol is represented by the one or more data elements using pulse position modulation.
- the data elements are macrodots (e.g. optically readable marks in the form of dots), and wherein each merged data symbol is represented by m macrodots, each of the macrodots occupying a respective position from a plurality of predetermined possible positions p within the merged data symbol, the respective positions of the macrodots representing one of a plurality of possible data values, wherein m is an integer value of 1 or more, and p>m.
- m may be 1, 2, 3, 4, 5, 6 or 7 and p may be 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 or 16.
- PPM encoding by multi-PPM ensures uniform coverage of the substrate with macrodots, which helps to reduce visibility.
- PPM encoding provides an internal luminescence reference for reading macrodots. For example, the darkest m macrodots in the p positions are taken to be the PPM data, without the need to refer to any external luminescence threshold value.
- each merged data symbol encodes the x-coordinate data symbol and the y-coordinate data symbol.
- the x-coordinate data symbols and the y-coordinate data symbols are contained in different merged symbols.
- one or more of the coordinate data symbols is a merged data symbol, each merged data symbol being represented by the one or more data elements, and wherein each merged data symbol encodes at least one of the coordinate data symbols and at least one further data symbol which is different from the coordinate data symbol.
- a method of decoding a position-coding pattern disposed on a surface of a substrate comprising the steps of:
- each tag encoding a w-bit subsequence of a cyclic code sequence, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag, wherein adjacent tags contain w-bit subsequences shifted by one bit relative to each other in the cyclic code sequence;
- the windowed subsequence contains a first subsequence from at least one first tag and a second subsequence from at least one second tag, the first and second tags being adjacent to each other, and wherein the method comprises the step of:
- the first and second subsequences are usually derived from 2 or more adjacent tags (e.g. 4 tags arranged in a square comprising two first tags and two second tags). Since coordinate codeword (and the coordinate) is derivable from portions of tags, the length n of the underlying code can be made relatively short and the field of view of the optical reader can be minimized.
- the method comprises the step of:
- the imaged portion has a diameter of at least (l+q) ⁇ 2 and spans across parts of at least first and second adjacent tags, a set of coordinate data symbols being arranged in each tag such that the windowed subsequence contained in the imaged portion is guaranteed to contain at least (w ⁇ 1) bits of a w-bit subsequence, the method further comprising the step of:
- l is a length of the tag and q is a length or a width of a coordinate data symbol.
- the windowed subsequence contains only (w ⁇ 1) bits of the w-bit subsequence, and the method further comprises the step of:
- the imaged portion has a diameter of at least (l+v) ⁇ 2 and spans across parts of a plurality of adjacent tags, the columns of x-coordinate symbols and the rows of y-coordinate symbols being arranged such the windowed subsequence contained in the imaged portion is guaranteed to contain at least (w ⁇ 1) bits of a w-bit subsequence in the first cyclic code sequence and at least (w ⁇ 1) bits of a w-bit subsequence in the second cyclic code sequence, the method further comprising at least one step selected from the steps of:
- an optical reader configured for decoding a position-coding pattern disposed on a surface of a substrate, the coding pattern comprising:
- each tag encoding a w-bit subsequence of a cyclic code sequence, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag, wherein adjacent tags contain a w-bit subsequence shifted by one bit relative to each other in the cyclic code sequence;
- optical reader comprising:
- an image sensor for capturing an image of a portion of the position-coding pattern, the image sensor having a field-of-view of more than one tag diameter and less than two tag diameters;
- a processor configured for performing the steps of:
- a system for decoding a position-coding pattern disposed on a surface of a substrate comprising:
- each tag encoding a w-bit subsequence of a cyclic code sequence, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag, wherein adjacent tags contain a w-bit subsequence shifted by one bit relative to each other in the cyclic code sequence;
- an image sensor for capturing an image of a portion of the position-coding pattern, the image sensor having a field-of-view of more than one tag diameter and less than two tag diameters;
- a processor configured for performing the steps of:
- optional embodiments of the first aspect may also be optional embodiments of the second, third and/or fourth aspects.
- a substrate having a position-coding pattern disposed on a surface thereof, the position-coding pattern comprising:
- each tag encoding a w-bit subsequence of a cyclic code sequence having a length n and a dimension k, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag,
- adjacent tags contain successive w-bit subsequences in the cyclic code sequence, and wherein n>w>k.
- the w-bit subsequence is represented by a set of coordinate data symbols in the tag, each of the coordinate data symbols containing at least one bit of the w-bit subsequence, each coordinate data symbol being represented by one or more data elements disposed on the surface.
- the cyclic code sequence is an m-sequence or a simplex code.
- a given tag contains a w-bit subsequence corresponding to offset i in the cyclic code sequence, and adjacent tags on either side of the given tag contain w-bit subsequences corresponding to offsets (i+w) and (i ⁇ w) in the cyclic code sequence.
- the set of coordinate data symbols is arranged in each tag such that at any square portion of the position-coding pattern of length (l+q) is guaranteed to contain a w-bit subsequence of the cyclic code sequence, the w-bit subsequence mapping to a coordinate codeword, wherein l is a length of the tag and q is a length or a width of a coordinate data symbol.
- columns of x-coordinate symbols and rows of y-coordinate symbols are arranged such that any square portion of the position-coding pattern of length (l+v) is guaranteed to contain a w-bit subsequence of the first cyclic code sequence and a w-bit subsequence of the second cyclic code sequence, each w-bit subsequence corresponding to an offset in its respective first or second cyclic code sequence, each w-bit subsequence mapping to at least one of:
- one or more of the coordinate data symbols is a merged data symbol, each merged data symbol being represented by the one or more data elements, and wherein each merged data symbol encodes at least two of:
- a method of decoding a position-coding pattern disposed on a surface of a substrate comprising the steps of:
- each tag encoding a w-bit subsequence of a cyclic code sequence having a length n and a dimension k, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag,
- adjacent tags contain successive w-bit subsequences in the cyclic code sequence
- the imaged portion has a diameter of more than one tag diameter and less than two tag diameters, and wherein n>w>k.
- the windowed subsequence contains a first subsequence from at least one first tag and a second subsequence from at least one second tag, the first and second tags being adjacent to each other, and wherein the method comprises the step of:
- the method comprise the step of:
- the imaged portion has a diameter of at least (l+q) ⁇ 2 and spans across parts of at least first and second adjacent tags, a set of coordinate data symbols being arranged in each tag such that the windowed subsequence contained in the imaged portion is guaranteed to contain a w-bit subsequence of the cyclic code sequence, the method further comprising the step of:
- l is a length of the tag and q is a length or a width of a coordinate data symbol.
- the method further comprises the step of: mapping the w-bit subsequence to a coordinate.
- each tag contains an x-coordinate codeword mapped from a first cyclic code sequence and a y-coordinate codeword mapped from a second cyclic code sequence, the x-coordinate codeword being defined by a first set of x-coordinate data symbols, and the y-coordinate codeword being defined by a second set of y-coordinate data symbols.
- the first set is arranged in subsets of x-coordinate data symbols and the second set is arranged in subsets of y-coordinate data symbols.
- each subset of x-coordinate data symbols is configured as a column containing a plurality of the x-coordinate data symbols
- each subset of y-coordinate data symbols is configured as a row containing a plurality of the y-coordinate data symbols, wherein each of the rows and columns has a maximal width v.
- the imaged portion has a diameter of at least (l+v) ⁇ 2 and spans across parts of a plurality of adjacent tags, the columns of x-coordinate symbols and the rows of y-coordinate symbols being arranged such the windowed subsequence contained in the imaged portion is guaranteed to a w-bit subsequence in the first cyclic code sequence and a w-bit subsequence in the second cyclic code sequence, the method further comprising at least one step selected from the steps of:
- an optical reader configured for decoding a position-coding pattern disposed on a surface of a substrate, the coding pattern comprising:
- each tag encoding a w-bit subsequence of a cyclic code sequence, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag, wherein adjacent tags contain successive w-bit subsequences in the cyclic code sequence;
- the optical reader comprising:
- an image sensor for capturing an image of a portion of the position-coding pattern, the image sensor having a field-of-view of more than one tag diameter and less than two tag diameters;
- a processor configured for performing the steps of:
- the imaged portion spans across parts of at least first and second adjacent tags such that the windowed subsequence contains a first subsequence from at least one first tag and a second subsequence from at least one second tag, wherein the processor is further configured for:
- a system for decoding a position-coding pattern disposed on a surface of a substrate comprising:
- each tag encoding a w-bit subsequence of a cyclic code sequence, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag,
- an image sensor for capturing an image of a portion of the position-coding pattern, the image sensor having a field-of-view of more than one tag diameter and less than two tag diameters;
- a processor configured for performing the steps of:
- optional embodiments of the fifth aspect may also be optional embodiments of the sixth, seventh and/or eighth aspects.
- Equally, some generic features of the first aspect may be used in combination with the fifth, sixth, seventh and/or eighth aspects.
- a substrate having a coding pattern disposed on a surface thereof, the coding pattern comprising a plurality of merged data symbols, each merged data symbol being represented by a plurality of data elements disposed on the surface, wherein each merged data symbol encodes at least a first individual data symbol and a second individual data symbol.
- An advantage of the ninth aspect is that the merged data symbols occupy a minimal area of the surface and minimize visible coloration of the surface compared with separately disposed first and second individual data symbols.
- the first and second individual data symbols are different from each other.
- each merged data symbol encodes a first data symbol from a first codeword and a second data symbol from a second codeword.
- each merged data symbol encodes a coordinate data symbol from a coordinate codeword and a common data symbol from a common codeword.
- each merged data symbol encodes an x-coordinate data symbol from an x-coordinate codeword, a y-coordinate data symbol from a y-coordinate codeword and a common data symbol from a common codeword.
- the common codeword encodes information common to an extended region of the surface, wherein the information is selected from the group consisting of: a region identity, an encoding format, a region flag, a pattern scale identifier and a CRC.
- the first and second individual data symbols are symbols from different error-correcting codes.
- the different error-correcting codes are selected from the group consisting of: Reed-Solomon codes, binary codes, simplex codes and cyclic position codes.
- the cyclic position codes use a cyclic code sequence, and wherein a w-bit subsequence of the cyclic code sequence defines a codeword.
- the cyclic code sequence is an m-sequence or a simplex code.
- the cyclic code sequence has a length n and a dimension k, and wherein: n>w>k.
- the w-bit subsequence of the cyclic code sequence defines a coordinate codeword.
- each merged data symbol in a set of the merged data symbols encodes a coordinate data symbol from the coordinate codeword, each coordinate data symbol encoding one bit of the w-bit subsequence.
- the merged data symbol further encodes a multi-bit Reed-Solomon symbol from a Reed-Solomon common codeword.
- each merged data symbol is represented by the data elements using pulse position modulation (PPM).
- PPM pulse position modulation
- the data elements are macrodots, and wherein each merged data symbol is represented by m macrodots, each of the macrodots occupying a respective position from a plurality of predetermined possible positions p within the merged data symbol, the respective positions of the macrodots representing one of a plurality of possible data values, wherein m is an integer value of 1 or more, and p>m.
- m may be 1, 2, 3, 4, 5, 6 or 7 and p may be 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 or 16.
- the coding pattern comprises a plurality of target elements defining a target grid, the target grid comprising a plurality of cells, each cell defining a symbol group containing one or more of the merged data symbols, wherein neighboring symbol groups share target elements.
- the coding pattern comprises a plurality of tags, each tag being square and comprising M 2 symbol groups, each symbol group containing R symbols.
- a tag encoding strategy for each tag is in accordance with a tag encoding strategy (1) to (4) described in Table A:
- a codeword configuration for each of the tag encoding strategies (1) to (4) is in accordance with one of the codeword configurations described in Table B:
- a method of decoding a coding pattern disposed on a surface of a substrate comprising the steps of:
- each merged data symbol being represented by a plurality of data elements disposed on the surface, wherein each merged data symbol encodes a first individual data symbol from a first codeword and a second individual data symbol from a second codeword;
- the method further comprises the step of:
- the method further comprises the step of:
- decoding of the first individual data symbols may assist in detecting errors in the second individual data symbols co-encoded with the first individual data symbols, and vice versa.
- the first codeword is a common codeword identifying information common to an extended region of the surface.
- the second codeword is a coordinate codeword.
- each merged data symbol encodes a third individual data symbol
- the method further comprises the step of:
- an optical reader configured for decoding a coding pattern disposed on a surface of a substrate, the coding pattern comprising:
- each merged data symbol being represented by a plurality of data elements disposed on the surface, wherein each merged data symbol encodes a first individual data symbol from a first codeword and a second individual data symbol from a second codeword;
- optical reader comprising:
- an image sensor for capturing an image of a portion of the coding pattern
- a processor configured for performing the steps of:
- the processor is further configured for:
- the processor is further configured for:
- a system for decoding a coding pattern disposed on a surface of a substrate comprising:
- each merged data symbol being represented by a plurality of data elements disposed on the surface, wherein each merged data symbol encodes a first individual data symbol from a first codeword and a second individual data symbol from a second codeword;
- an image sensor for capturing an image of a portion of the coding pattern
- a processor configured for performing the steps of:
- a method of encoding a coding pattern for disposition on a surface of a substrate comprising the step of:
- merged data symbol is represented on the surface by a plurality of data elements disposed thereon.
- the method of thirteenth aspect may advantageously minimize a number of the data elements disposed on the surface.
- the method of thirteenth aspect may advantageously minimize visible coloration of the surface.
- the merged data symbol is represented by the data elements using pulse position modulation (PPM) as described above.
- PPM pulse position modulation
- the coding pattern comprises a plurality of the merged data symbols.
- the method further comprises the step of printing the merged data symbol onto the surface.
- each merged data symbol encodes a coordinate data symbol from a coordinate codeword and a common data symbol from a common codeword.
- each merged data symbol encodes an x-coordinate data symbol from an x-coordinate codeword, a y-coordinate data symbol from a y-coordinate codeword and a common data symbol from a common codeword.
- the first and second individual data symbols are symbols from different error-correcting codes.
- optional embodiments of the ninth aspect may also be optional embodiments of the tenth, eleventh, twelfth and thirteenth aspects.
- FIG. 1 is a schematic of a relationship between a sample printed netpage and its online page description
- FIG. 2 shows an embodiment of basic netpage architecture with various alternatives for the relay device
- FIG. 3 shows a tag structure with 3 ⁇ 3 symbol groups
- FIG. 4 shows a tag structure with 2 ⁇ 2 symbol groups
- FIG. 5 shows a symbol group
- FIG. 6 shows the layout of a 9 PPM data symbol
- FIG. 7 shows the spacing of macrodot positions
- FIG. 8 shows the layout of a registration symbol
- FIG. 9 shows the layout of a 32-bit x-coordinated codeword
- FIG. 10 shows the layout of a 32-bit y-coordinated codeword
- FIG. 11 shows the layout of a common codeword A
- FIG. 12 shows the layout of a common codeword B
- FIG. 13 shows the layout of a 16-bit x-coordinated codeword
- FIG. 14 shows the layout of a 16-bit y-coordinated codeword
- FIG. 15 shows the layout of a Reed-Solomon codeword
- FIG. 16 is a flowchart of initial image processing by the Netpage pen
- FIG. 17 is a flowchart of codeword decoding subsequent to the initial image processing
- FIG. 18 shows a nib and elevation of the Netpage pen held by a user
- FIG. 19 shows the pen held by a user at a typical incline to a writing surface
- FIG. 20 is a lateral cross section through the pen
- FIG. 21A is a bottom and nib end partial perspective of the pen
- FIG. 21B 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;
- FIG. 22 is a longitudinal cross section of the pen
- FIG. 23A is a partial longitudinal cross section of the nib and barrel molding
- FIG. 23B is a partial longitudinal cross section of the IR LED's and the barrel molding
- FIG. 24 is a ray trace of the pen optics adjacent a sketch of the ink cartridge
- FIG. 25 is a side elevation of the lens
- FIG. 26 is a side elevation of the nib and the field of view of the optical sensor.
- FIG. 27 is a block diagram of the pen electronics.
- the invention is configured to work with the netpage networked computer system, an overview of which follows.
- 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.
- 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.
- 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 can be sensed by an optically imaging sensing device (or reader) 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).
- 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 or readers described herein.
- 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.
- 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.
- signatures recorded on a netpage are automatically verified, allowing e-commerce transactions to be securely authorized.
- text on a netpage may be clicked or gestured to initiate a search based on keywords indicated by the user.
- 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 .
- a typical 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 .
- 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 .
- 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 .
- the netpage pen 400 utilises a wired connection, such as a USB or other serial connection, to the relay device 601 .
- the relay device 601 performs the basic function of relaying interaction data to a page server 10 , which interprets the interaction data.
- the relay device 601 may, for example, take the form of a personal computer 601 a , a netpage printer 601 b or some other relay 601 c (e.g. personal computer or mobile phone incorporating a web browser).
- the netpage printer 601 b is able to deliver, periodically or on demand, personalized newspapers, magazines, catalogs, brochures and other publications, all printed at high quality as interactive netpages.
- 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.
- 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 601 b 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.
- 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.
- 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.
- 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 601 c .
- the web browser 601 c may then receive a URI from the page server 10 and access a webpage via a webserver 201 .
- the page server 10 may access application computer software running on a netpage application server 13 .
- 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.
- 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 .
- 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.
- 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.
- Netpages are the foundation on which a netpage network is built. They provide a paper-based user interface to published information and interactive services.
- 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.
- each netpage may be assigned a unique page identifier.
- This page ID (or, more generally, region ID) has sufficient precision to distinguish between a very large number of netpages.
- 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.
- 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.
- 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.
- 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 .
- Each tag 4 identifies an absolute location of that tag within a region of a substrate.
- each interaction with a netpage should also provide a region identity together with the tag location.
- 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.
- 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.
- the region identity may be encoded discretely in each tag 4 .
- 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.
- 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 400 relative to the substrate to be determined.
- 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.
- an active area flag may indicate to the pen 400 to forward captured input immediately to the Netpage server 10 .
- 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.
- the digital signature may be encoded in such a way that it can be assembled from a random or partial scan of the substrate.
- tag size may also be encoded into each tag or a plurality of tags, as will be explained in more detail below.
- the netpage surface coding generally consists of a dense planar tiling of tags.
- each tag 4 is represented by a coding pattern which contains two kinds of elements.
- 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. 6 ).
- the macrodots 302 encode data values. 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.
- the tag structure of the present invention encodes a data value using multi-pulse position modulation, which is described in more detail in Section 2.3.
- 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.
- FIG. 3 shows the structure of a complete tag 4 A with target elements 301 shown.
- the tag 4 A 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.
- the high number of target elements 301 advantageously facilitates accurate determination of a perspective distortion of the tag 4 A when it is imaged by the Netpage pen 400 . This improves the accuracy of tag sensing and, ultimately, position determination.
- the tag 4 A 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.
- tags 4 A themselves are indistinguishable by viewing only the target elements. Hence, tags 4 A must be aligned with the target grid as part of tag decoding.
- FIG. 4 shows the structure of an alternative tag 4 B with target elements 301 shown.
- the tag 4 B is square, but differs from the tag 4 A in that it contains nine target elements. Those target elements 301 located at the edges and corners of the tag (eight in total) are shared by adjacent tags and define the perimeter of the tag.
- the tag 4 B consists of a square array of four symbol groups 303 .
- An individual symbol group 303 used in either tag 4 A or 4 B, is described in Section 2.3
- each of the symbol groups 303 comprises eight data symbols 304 .
- each symbol group 303 comprises a pair of registration symbols—a vertical registration symbol (‘VRS’) and a horizontal registration symbol (‘HRS’). These allow the orientation and translation of the tag in the field of view to be determined. Translation refers to the translation of tag(s) relative to the symbol groups 303 in the field of view. In other words, the registration symbols enable alignment of the ‘invisible’ tags with the target grid.
- VRS vertical registration symbol
- HRS horizontal registration symbol
- Each data symbol 304 is a multi-pulse position modulated (PPM) data symbol.
- PPM data symbol 304 encodes either 5-bits or 6-bits using 2-9 PPM or 3-9 PPM encoding, respectively. i.e. 2 macrodots in any of 9 positions ⁇ p 0 , p 1 , p 2 , p 3 , p 4 , p 5 , p 6 , p 7 , p 8 ⁇ or 3 macrodots in any of the 9 positions ⁇ p 0 , p 1 , p 2 , p 3 , p 4 , p 5 , p 6 , p 7 , p 8 ⁇ .
- FIG. 6 shows the layout for a 2-9 PPM or 3-9 PPM data symbol 304 .
- Table 1 defines the mapping from 2-9 PPM symbol values to data symbol values. Unused symbol values can be treated as erasures.
- mapping from 3-9 PPM symbol values to data symbol values follows a similar scheme to the mapping scheme described in Table 1.
- a 3-9 PPM data symbol maps to 84 data symbol values in total. However, only the first 64 of these 3-9 PPM data symbol values are used to map to successive 6-bit data symbol values. Unused symbols are again treated as erasures.
- 3-9 PPM data symbols have the advantage of allowing more data to be encoded in each symbol.
- 2-9 PPM data symbols have the advantage of using less ink and, therefore, have less visible coloration of the substrate, particularly if the ink used to print the coding pattern 3 is not perfectly invisible.
- each symbol group also contains a 2-6 PPM vertical registration symbol (VRS) and a 2-6 PPM horizontal registration symbol (HRS), which will be described in more detail in Section 2.6.
- VRS vertical registration symbol
- HRS 2-6 PPM horizontal registration symbol
- 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 127 ⁇ m, based on 8 dots printed at a pitch of 1600 dots per inch.
- FIGS. 3 to 5 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 to 5 merely to elucidate more clearly the structure of a tag 4 .
- a macrodot 302 is nominally square with a nominal size of 0.5 s. However, it is allowed to vary in size by ⁇ 10% according to the capabilities of the device used to produce the pattern.
- a target 301 is nominally circular with a nominal diameter of 1.5 s. However, it is allowed to vary in size by ⁇ 10% according to the capabilities of the device used to produce the pattern.
- Each symbol group 303 has a width of 10 s. Therefore, each tag 4 A (having a 3 ⁇ 3 tag structure) has a width of 30 s and a length of 30 s. Similarly, each tag 4 B (having a 2 ⁇ 2 tag structure) has a width of 20 s and a length of 20 s.
- the tags 4 A and 4 B are configured so that some data symbols extend beyond the perimeter edge of the tag by one macrodot unit (is), and interlock with complementary symbol groups from adjacent tags. This arrangement provides a tessellated pattern of data symbols 304 within the target grid.
- the macrodot spacing, and therefore the overall scale of the tag pattern is allowed to vary by 170 ⁇ m and 120 ⁇ m according to the capabilities of the device used to produce the pattern. Any deviation from the nominal scale is recorded in each tag (via the macrodot size ID field) to allow accurate generation of position samples.
- the tag is limited to four symbol groups as described in Section 2.2.2.
- the tags 4 A and 4 B are designed to allow all tag data to be recovered from an imaging field of view roughly the size of the tag.
- pulse-position modulated values are best decoded from spatially-coherent samples (i.e. from a whole symbol as opposed to partial symbols at opposite sides of the field of view), 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 four macrodots. Making the field of view at least as large as the tag plus four macrodot units guarantees that pulse-position modulated values can be coherently sampled.
- Each registration symbol is encoded using 2-6 PPM.
- FIG. 8 shows the layout of the registration symbol.
- the horizontal and vertical registration symbols each appear once within a symbol group 303 .
- the registration symbols of an entire tag typically indicate the vertical and horizontal translation of the tag by coding two orthogonal translation codes, and the orientation of the tag by coding two orthogonal direction codes.
- Each registration symbol may also encode a one-bit symbol of a flag code.
- Table 2 defines the mapping from 2-6 PPM registration symbol values to flag code, direction code and translation code symbol values.
- Tags 4 A (having a 3 ⁇ 3 tag structure) use the first eight registration symbol values in Table 2 i.e. those registration symbol values mapping to a translation code symbol value of 0, 1 or 2. In other words, if the registration symbol value maps to a translation code symbol value of 0, 1 or 2, then the position-coding pattern is identified as containing tags 4 A having nine symbol groups 303 contained in one tag 4 A.
- the additional translation code symbol values (i.e. 3 and 4) shown in Table 2 are reserved for tags 4 B (having a 2 ⁇ 2 tag structure).
- tags 4 B having a 2 ⁇ 2 tag structure.
- the registration symbol value maps to a translation code symbol value of 3 or 4
- the position-coding pattern is identified as containing tags 4 B having four symbol groups 303 contained in one tag 4 B.
- the registration symbol provides a means of distinguishing position-coding patterns containing tags 4 A or tags 4 B, as described herein.
- Subsequent decoding of PPM data symbols proceeds in accordance with the position-coding pattern identified from decoding the registration symbol(s).
- each row of symbol groups and each column of symbol groups encodes a three-symbol 3-ary cyclic position code.
- the code consists of the codeword (0, 1, 2) and its cyclic shifts.
- the code has a minimum distance of 3, allowing a single symbol error to be corrected.
- the three translation 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.
- the translation code symbol in the middle of the codeword (i.e. 1) is mapped to a set of 2-6 PPM symbol values that are each other's reverse, while the two translation code symbols at the ends of the codeword (i.e. 0 and 2) are each mapped to a set of 2-6 PPM symbol values that are the reverses of the 2-6 PPM symbol values in the other set.
- a 0 read upside-down i.e. rotated 180 degrees
- a 1 read upside-down remains a 1. This allows translation to be determined independently of rotation.
- each 2-6 PPM symbol value and its reverse map to opposite direction code symbol values (Table 2).
- Table 2 The vertical registration symbols of an entire tag encode 9 symbols of a vertical direction code. This has a minimum distance of 9, allowing 4 symbol errors to be corrected.
- the horizontal registration symbols of an entire tag encode 9 symbols of a horizontal direction code This has 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. Any erasures detected during decoding of a translation code can also be used during decoding of a direction code, and vice versa. Together the orthogonal direction codes allow the orientation of the tag to be determined.
- the top left corner of an un-rotated tag is identified by a symbol group whose translation symbols are both zero and whose direction symbols are both zero.
- the active flag symbol consists of one bit of data, and is encoded in each vertical and horizontal registration symbol, as shown in Table 2.
- the active flag symbol allows the Netpage pen 400 to provide immediate feedback to a user without reference to the corresponding page description 5 .
- the pen 400 upon detection of an active flag, may indicate to a user (e.g. via an LED) that it is positioned within the zone of a hyperlink.
- An active flag symbol is unique to a tag and is therefore coded redundantly in each quadrant of the tag. Since the active flag symbol is encoded in each registration symbol, it appears eight times within each quadrant. Eight symbols form a code with a minimum distance of 8, allowing 3 errors to be corrected. If additional symbols are visible within the field of view then they can be used for additional redundancy. Any erasures detected during decoding of translation and/or direction codes can also be used during decoding of the flag code, and vice versa.
- Each registration symbol contained in the tags 4 B is positioned and configured in the same way as the registration symbols contained in tags 4 A.
- the tags 4 B utilize only those registration symbol values mapping to the translation code symbol values (3, 4). This enables the registration symbol to identify the tags 4 B containing four symbols groups, and distinguish them from the tags 4 A containing nine symbol groups.
- each row of symbol groups and each column of symbol groups encodes a two-symbol 2-ary cyclic position code.
- the code consists of the codeword (3, 4) and its cyclic shifts.
- the two translation codes of an entire tag form a code with a minimum distance of 4, allowing 1 symbol error to be corrected. If additional symbols are visible within the field of view then they can be used for additional redundancy.
- the two translation code symbols (3 and 4) are each mapped to a set of 2-6 PPM symbol values that are the reverses of the 2-6 PPM symbol values in the other set.
- a 3 read upside-down i.e. rotated 180 degrees
- a 4 read upside-down becomes a 4, and vice versa. This allows translation to be determined independently of rotation.
- each 2-6 PPM symbol value and its reverse map to opposite direction code symbol values (Table 2).
- the vertical registration symbols of an entire tag encode 4 symbols of a vertical direction code This has a minimum distance of 4, allowing 1 symbol error to be corrected.
- the horizontal registration symbols of an entire tag encode 4 symbols of a horizontal direction code This has a minimum distance of 4, allowing 1 symbol error to be corrected. If additional symbols are visible within the field of view then they can be used for additional redundancy. Any erasures detected during decoding of a translation code can also be used during decoding of a direction code, and vice versa. Together the orthogonal direction codes allow the orientation of the tag to be determined.
- the top left corner of an un-rotated tag is identified by a symbol group whose translation symbols are both zero and whose direction symbols are both zero.
- the 2-6 PPM registration symbol does not allow flag codes for the tags 4 B
- a 3-6 PPM registration symbol mapping to 20 available symbol values would allow the tags 4 B to contain flag codes, if desired.
- 12 registration symbol values (3 ⁇ 2 ⁇ 2) would be used for the tags 4 A
- 8 registration symbols value (2 ⁇ 2 ⁇ 2) would be used for the tags 4 B.
- an x-coordinate Reed-Solomon codeword may be encoded by a distinct set of X data symbols (e.g. X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10) and a y-coordinate Reed-Solomon codeword may be encoded by a distinct set of Y data symbols (e.g. Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7, Y8, Y9, Y10).
- the Applicant has described various arrangements of X and Y data symbols within each tag, which make use of the fact that the x-coordinate does not vary within a column of tags, and the y-coordinate does not vary within a row of tags.
- This enables space to be saved in the tag, whilst still allowing each complete coordinate codeword to be read from a substantially tag-sized field of view.
- at least some of the X data symbols may be placed in a column of the tag to avoid replicating the X data symbols in each east-west half of the tag.
- at least some of the Y data symbols may be placed in a row of the tag to avoid replicating the Y data symbols in each north-south half of the tag.
- information common to a set of contiguous tags in a surface region may be encoded by one or more common Reed-Solomon codewords e.g. A, B, C and D codewords.
- each such Reed-Solomon codeword is encoded by a distinct set of PPM data symbols.
- Common codewords typically encode a region ID, but may also encode other information, such as an encoding format, a region flag, a pattern scale identifier (e.g. tag size ID or macrodot size ID) and a CRC.
- a secret-key signature or a fragment of an embedded data object may be encoded by an optional Reed-Solomon codeword e.g. E codeword.
- this optional Reed-Solomon codeword is encoded by a distinct set of PPM data symbols.
- the provision of a distinct set of PPM data symbols for each codeword necessarily uses up valuable space in each tag.
- individual symbols from two (or more) codewords can be merged into a single PPM symbol.
- Merged PPM data symbols not only save space in each tag, but may also assist in detecting errors during decoding. For example, if a symbol from one codeword is found to be in error during ECC decoding, then any symbol (or symbols) located in the same PPM symbol can be flagged as an erasure.
- the symbols from two (or more) codewords in a merged PPM data symbol may use the same error-correcting code (ECC) or they may use different error-correcting codes.
- ECC error-correcting code
- each symbol of the x-coordinate and y-coordinate codewords can be combined with a symbol of the common codeword(s) in a single PPM symbol.
- the coordinate codewords may be encoded using a code with a smaller symbol size than the common codeword(s), such as a binary code.
- Tables 3 and 4 give examples of some possible code configurations using merged 2-9 PPM and 3-9 PPM data symbols.
- ECC error-correcting code
- a Reed-Solomon code is typically used.
- a cyclic code as described in Section 2.8, is typically used.
- a maximum-length LFSR linear feedback shift register
- Position decoding via a k-symbol window onto a recurring m-sequence of length 2 k ⁇ 1 does not allow error detection or correction.
- position decoding via an n-symbol window onto a recurring cyclic codeword of length n does allow error detection and correction.
- cyclic position code Any codeword of a cyclic position code defines the code.
- a cyclic position code is not a linear code, since it does not contain the zero vector. However, it is useful to use the terminology of linear codes in the following discussion. Many good cyclic position codes are linear codes with the zero vector removed.
- m-sequences define a subset of the set of simplex codes.
- the codewords of a simplex code define the equidistant vertices of an n-simplex. The minimum and maximum distances of a simplex code are therefore the same.
- n prime the Paley construction can be used to construct a cyclic simplex code using quadratic residues [MacWilliams, F. J. and N. J. A. Sloane, The Theory of Error - Correcting Codes , North-Holland, 1977; Wicker, S. B., Error Control Systems for Digital Communication and Storage , Prentice Hall, 1995].
- a w-bit window onto a cyclic simplex code also defines a cyclic position code.
- the average distance within the window is:
- the minimum distance within the window converges with the average distance within the window (and ultimately the minimum distance of the code) as the window size approaches the code length:
- n For the same window size w, a larger code size n implies a smaller minimum distance d min (w) within the window.
- a coordinate codeword size of w bits corresponds to a w-bit window onto an underlying cyclic code of length n.
- adjacent tags can either encode successive w-bit segments of the underlying code, or adjacent tags can encode w-bit segments of the underlying code shifted one bit relative to each other.
- This approach has the advantage that the dimension of the code, which determines its spatial extent, is minimized. Furthermore, as noted above, the minimum distance of a windowed cyclic position code increases with decreasing code dimension, so it is advantageous to minimize the code dimension. This approach nominally has the disadvantage that it sometimes only allows w ⁇ 1 bits of the cyclic position code to be recovered from the window. However, as illustrated in Table 5, this does not necessarily imply a reduction in the minimum distance within the window.
- the ith tag in the x direction (counting from the left) and jth tag in the y direction (counting from the top) encodes the following w-bit subsequences:
- symbol Y0 encodes bit y j
- symbol Y31 encodes bit y j+31 .
- the codeword layout in FIGS. 7 and 8 guarantees that a square 24-macrodot window onto the coding pattern will always acquire contiguous 31-bit or 32-bit subsequences from the two cyclic position codes used to encode the x and y coordinates.
- a 24-macrodot window corresponds to 20 macrodot units (the length l of the tag) plus four macrodot units (the length q of a symbol).
- the 24-macrodot window guarantees that pulse-position modulated values are decoded from spatially-coherent samples (i.e. from a whole symbol as opposed to partial symbols at opposite sides of the field of view).
- a 1 st column contains symbols X0 and X1; a 2 nd column contains symbols X2 and X3; a 3 rd column contains X4, X5, X6 and X7; a 4 th column contains symbols X8, X9, X10 and X11; a 5 th column contains symbols X12 and X13 etc.
- the width v of each column corresponds to the length or width of each symbol, depending on the orientation of symbols within the column. Hence, the maximum width v of each column is 4 macrodots, corresponding to the length of one symbol.
- FIG. 10 the symbols in FIG. 10 are arranged in rows, which may overlap partially with each other.
- a 1 st row contains symbols Y0 and Y1;
- a 2 nd row contains symbols Y2 and Y3;
- a 3 rd row contains Y4, Y5, Y6 and Y7;
- a 4 th row contains symbols Y8, Y9, Y10 and Y11;
- a 5 th row contains symbols Y12 and Y13 etc.
- the width v of each column corresponds to the length or width of each symbol, depending on the orientation of symbols within the column.
- the maximum width v of each row is 4 macrodots, corresponding to the length of one symbol.
- a 31-bit subsequence will be acquired from the imaging window rather than the full 32-bit subsequence.
- a 24-macrodot imaging window beginning 1 macrodot from the left-hand edge of the tag in FIG. 9 i.e. a window beginning in the middle of the 1 st column containing X0 and X1
- symbols X4 to X31 from that tag (a first imaged tag)
- symbols X0 to X3 from an adjacent tag to the right (a second imaged tag).
- the second imaged tag contains a 32-bit subsequence shifted by one bit relative to the first imaged tag
- symbol X1 in the second imaged tag corresponds to X0 in the first imaged tag
- symbol X2 in the second imaged tag corresponds to X1 in the first imaged tag
- symbol X3 in the second imaged tag corresponds to X2 in the first imaged tag.
- a contiguous 31-bit subsequence may be assembled, which consists of X0-X2 and X4-X31 in the first imaged tag.
- one bit (X3) is missing from this acquired subsequence, there is still sufficient data to determine a maximally likelihood offset in the cyclic code and, hence, the x-coordinate codeword of the first imaged tag.
- any 24-macrodot square window is sufficient to acquire at least a 31-bit subsequence of each off the two underlying code used to encode the x- and y-coordinated.
- an x-coordinate codeword and y-coordinate codeword may be determined from each 24-macrodot imaging window.
- FIG. 11 and FIG. 12 show possible layouts of corresponding common A and B Reed-Solomon codewords defined over GF(2 4 ) (assuming a 3-9 PPM encoding).
- each PPM data symbol in the tag is a merged symbol, as described in Section 2.7, encoding a 1-bit X data symbol from the x-coordinate codeword, a 1-bit Y data symbol from the y-coordinate codeword and either a multi-bit A symbol from a common A Reed-Solomon codeword or a multi-bit B symbol from a common B Reed-Solomon codeword.
- any Reed-Solomon symbols corrected in the A and B codewords can be used to flag erasures in corresponding X and Y symbols during decoding.
- the codeword layout in FIGS. 11 and 12 guarantees that a 24-macrodot window onto the tag pattern will always acquire contiguous 15-bit or 16-bit subsequences from the two cyclic position codes used to encode the x and y coordinates.
- FIG. 11 and FIG. 12 show possible layouts of corresponding common A and B codewords defined over GF(2 4 ) (assuming a 2-9 PPM encoding), or over GF(2 5 ) (assuming a 3-9 PPM encoding).
- each PPM data symbol in the tag is a merged symbol, as described in Section 2.7.
- Some merged PPM data symbols encode a 1-bit X data symbol from the x-coordinate codeword and multi-bit A symbol from a common A Reed-Solomon codeword.
- Some merged PPM data symbols encode a 1-bit Y data symbol from the y-coordinate codeword a multi-bit B symbol from a common B Reed-Solomon codeword.
- any given tag contains a w-bit subsequence corresponding to offset i in the cyclic code sequence.
- Adjacent tags on either side of the given tag contain w-bit subsequences corresponding to offsets (i+w) and (i ⁇ w) in the cyclic code sequence.
- adjacent tags contain successive w-bit subsequences of the underlying code sequence, rather than 1-bit shift subsequences as described in Section 2.8.3.
- this approach has the advantage that it always allows w bits of the cyclic position code to be recovered from the window—there is no potential loss of 1 bit from any w-bit subsequence acquired from the 24-macrobit imaging window described in Section 2.8.3.
- determination of fractional tag coordinates is possible, since an offset in the underlying code may correspond to a column or row within a tag, rather than just a particular tag.
- the determination of fractional tag coordinates may only have limited usefulness, because similar information could potentially be derived from the translation codewords.
- the layout of coordinate codeword symbols and common codeword symbols in tag 4 B may be the same as those used in FIGS. 9 to 14 , as described in Section 2.8.3.
- each PPM data symbol in tags using the successive subsequence approach may be a merged symbol, as described in Section 2.7.
- a merged symbol may encode at least one of: a 1-bit X data symbol from an x-coordinate codeword, a 1-bit Y data symbol from a y-coordinate codeword and a multi-bit symbol from a common Reed-Solomon codeword.
- any Reed-Solomon symbols corrected in the common codeword(s) can be used to flag erasures in corresponding X and Y symbols during decoding.
- Table 5 defines some optimal simplex codes for cyclic position coding. These are optimal in the sense that the minimum distance for both window sizes is maximized.
- the primitive polynomial refers to the polynomial used to generate the code in an LFSR, since it is impractical to reproduce the entire code in table format.
- the primitive polynomial used to generate simplex code sequences will be readily understood by the person skilled in the art.
- Data encoded by common codeword(s) is encoded using a Reed-Solomon code defined over GF(2 4 ), GF(2 5 ) or GF(2 6 ).
- the code has a natural length n of 15, 31 or 63, respectively.
- 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.
- the code may be punctured, by removing high-order redundancy symbols, to obtain a code with reduced length and reduced error correcting capacity.
- the code may also be shortened, by replacing high-order data symbols with zeros, to obtain a code with reduced length and reduced data capacity. Both puncturing and shortening can be used to obtain a code with particular parameters. Shortening is preferred, where possible, since this avoids the need for erasure decoding. For example, some of the Reed-Solomon codes described in Table 4 are shortened and/or punctured codes.
- the code has one of the following primitive polynomials, respectively:
- the code has the following generator polynominal:
- Reed-Solomon codes 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.
- redundancy coordinates r i and data coordinates d i of the code are indexed from left to right according to the power of their corresponding polynomial terms.
- the symbols X 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.
- the region ID is protected by a 16-bit cyclic redundancy check (CRC).
- CRC cyclic redundancy check
- the CRC has the following generator polynomial:
- the CRC is initialised to 0xFFFF.
- the most significant bit of the region ID is treated as the most significant coefficient of the data polynomial.
- 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.
- 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.
- the position encoded in a tag is defined in units of tags and is defined to be the centre of the top left target.
- the origin of a particular tag pattern is therefore the centre of the top left target of the tag that encodes coordinate pair (0, 0).
- the surface coding is optionally displaced from its nominal position relative to the surface by an amount derived from the region ID. This ensures that the utilisation of a pagewidth digital printhead used to print the surface coding is uniform.
- the displacement of the surface coding is negative, hence the displacement of the region described by the surface coding is positive relative to the surface coding.
- the magnitude of the displacement is the region ID modulo the width of the tag in 1600 dpi dots (i.e. 240 ). To accommodate non-1600 dpi printers the actual magnitude of the displacement may vary from its nominal value by up to half the dot pitch of the printer.
- Table 6 defines the information fields embedded in the surface coding.
- 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.
- Codeword E (when present) either contains a data fragment or a secret-key signature. These are described in Section 2.12 and Section 2.13 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 in a particular tag if the ⁇ region contains embedded data> flag in the region flags is set and the tag does not already contain a secret-key signature.
- the codeword is not coded in the tag pattern, i.e. there are no macrodots representing the codeword.
- the E codeword is present if a secret-key signature or data fragment is present.
- 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.
- 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.
- each block may have a data capacity of 176-bits.
- the block data is encoded in the data fragments of a contiguous group of six tags arranged in a 3 ⁇ 2 rectangle.
- the block parameters are as defined in Table 8.
- the E codeword of each tag may encode a fragment of the embedded data.
- Block parameters parameter value description w 3 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
- the pen 400 can discover this implicitly by the failure of the codeword to decode, or explicitly from the tag's active area flag.
- Data of arbitrary size may be encoded into a superblock consisting of a contiguous set of blocks, typically arranged in a rectangle.
- the size of the superblock may be encoded in each block.
- the superblock is replicated in the surface coding as many times as it will fit, including partially along the edges of the surface coding.
- the data encoded in the superblock may include, for example, more precise type information, more precise size information, and more extensive error detection and/or correction data.
- the region has a secret-key digital signature.
- 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.
- the surface coding contains an embedded public-key digital signature of the region ID.
- 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.
- the actual length and type of the signature are determined from the region ID during signature verification i.e. typically from a previously-retrieved digital signature associated with a sequence of region IDs.
- the minimum imaging field of view required to guarantee acquisition of data from an entire tag 4 B has a diameter of 33.9 s (i.e. ((2 ⁇ 10)+4) ⁇ 2s), allowing for arbitrary rotation and translation of the surface coding in the field of view.
- 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+4s) captures the requisite information in full from spatially coherent samples, irrespective of whether a whole tag is actually visible in the field-of-view.
- l is defined as the length of a tag.
- the imaging field-of-view is typically a circle. Accordingly, the imaging field-of-view should preferably have diameter of at least (l+4s) ⁇ 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.
- the extra four macrodot units ensure that pulse-position modulated values can be decoded from spatially coherent samples i.e. from whole symbols rather than partial symbols at opposite sides of the imaging field of view.
- the minimum imaging field of view required to guarantee acquisition of data from an entire tag 4 A has a diameter of 48. Is (i.e. ((3 ⁇ 10)+4) ⁇ 2s).
- a “tag diameter” is given to mean the length of a tag diagonal.
- FIG. 16 shows a tag image processing and decoding process flow up to the stage of sampling registration symbols and decoding the translation codewords.
- 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, equalization, 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 symbols 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).
- PPM pulse position modulation
- 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 (i.e. targets positioned at the corners of square cells).
- 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.
- the identified targets 301 are then assigned (at 816 ) to a target grid 818 .
- Each cell of the grid 818 contains a symbol group 303 , and several symbol groups will of course be visible in the image.
- individual tags 4 will not be identifiable in the target grid 818 , since the targets 301 do not themselves demarcate one tag from another.
- 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.
- each image will typically contain at least 9 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.
- 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.
- the next stage determines a type of position-coding pattern being imaged by the pen 400 from a translation codeword. In other words, this stage distinguishes a first position-coding pattern containing tags 4 A (3 ⁇ 3) from a second position-coding pattern containing tags 4 B (2 ⁇ 2) for subsequent sampling and decoding.
- Two or more orthogonal registration symbols (‘VRS’ and ‘HRS’) are sampled (at 824 ), to allow decoding of the orthogonal translation codewords and the orthogonal direction codewords.
- a flag symbol value may also be decoded subsequently from the decoded registration symbols.
- Decoding of the orthogonal translation codewords yields either a (0, 1, 2) translation codeword or a (3, 4) translation codeword (at 830 ).
- the (0, 1, 2) translation codeword indicates nine symbol groups per tag, thereby identifying (at 832 A) the imaged position-coding pattern as containing tags 4 A.
- the (3, 4) translation codeword indicates four symbol groups per tag, thereby identifying (at 832 B) the imaged position-coding pattern as containing tags 4 B.
- the decoded orthogonal translation codewords are used to determine the translation of tags(s) in the field of view relative to the target grid 818 .
- This enables alignment of the tags 4 A or 4 B 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.
- the tags 4 A each containing nine symbol groups
- the tags 4 B are aligned (at 834 B) with the target grid 818 .
- 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 ⁇ M. This allows robust determination of the alignment of tags 4 A or 4 B with the target grid 818 . The alignment needs to be both robust and accurate since there are many possible alignments when each tag contains multiple symbol groups 303 .
- At 836 A or 836 B At least two orthogonal direction codes are decoded (at 836 A or 836 B) to provide the orientation 838 A or 838 B.
- N vertical registration symbols in a tag form a vertical direction code with minimum distance N
- the vertical direction code is capable of correcting (N ⁇ 1)/2 errors.
- the horizontal direction code is similarly capable of correcting (N ⁇ 1)/2 errors using N horizontal registration symbols.
- orientation determination is very robust and capable of correcting errors, depending on the number of registration symbols sampled.
- the data codewords can then be sampled and decoded (at 840 A or 840 B) to yield the requisite decoded codewords 842 A or 842 B.
- decoding of data codewords from a tag 4 B may proceed as follows:
- Region ID decoding need not occur at the same rate as position decoding.
- the decoding sequence described above represents one embodiment of the present invention, based on a simple coding pattern containing only one common codeword (A) encoding the region ID.
- the interaction data sent from the pen 400 to the netpage system may include other data e.g. digital signature (see Section 2.13), pen mode (see US 2007/125860 incorporated herein by reference), orientation data, force data, pen ID, nib ID etc.
- 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).
- 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
- a pen having a marking nib for marking a surface with ink when pointing, gesturing or writing on the surface.
- the present invention may utilize any suitable optical reader.
- the Netpage pen 400 will be described herein as one such example.
- 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.
- the pen 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”.
- 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.
- a sufficiently high rate nominally 100 Hz
- the Netpage pen also supports hover mode in interactive applications.
- 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.
- 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.
- the pen includes a Bluetooth radio transceiver for transmitting digital ink via a relay device to a Netpage server.
- a Bluetooth radio transceiver for transmitting digital ink via a relay device to a Netpage server.
- the pen buffers captured digital ink in non-volatile memory.
- the pen transmits digital ink in real time.
- 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.
- 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.
- 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.
- FIG. 18 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 .
- 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.
- 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).
- 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 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.
- FIG. 21A 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.
- 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 .
- the pen 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.
- FIG. 22 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.
- 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:
- 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.
- FIGS. 23A and 23B Cross sections showing the pen optics are provided in FIGS. 23A and 23B .
- 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 .
- 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.
- 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 .
- the image sensor 490 is a CMOS image sensor with an active region of 140 pixels squared. Each pixel is 10 ⁇ m squared, with a fill factor of 93%.
- FIG. 25 the lens 488 is shown in detail. The dimensions are:
- 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.10.
- 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 ⁇ m pixels.
- 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 ⁇ 128 pixels.
- the image sensor 490 however is 140 ⁇ 140 pixels, in order to accommodate manufacturing tolerances. This allows up to +/ ⁇ 120 ⁇ 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.
- 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 .
- a 0.8 mm diameter aperture 494 is used to provide the depth of field requirements of the design.
- 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 ⁇ m.
- the pen operates correctly over a pitch range of 33.0 to 45.0 degrees.
- 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 .
- 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.
- 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 2 laser cutter.
- FIG. 27 is a block diagram of the pen electronics.
- the electronics design for the pen is based around five main sections. These are:
- 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 SRAM and 2 MBytes of external flash memory in a stack chip package.
- This microprocessor 574 forms the core of the pen 400 . Its duties include:
- 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.
- the ARM7 microprocessor 574 is programmed via its JTAG port.
- the ‘Jupiter’ Image Sensor 584 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).
- ADC analogue to digital converter
- PLL phase lock loop
- 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.14 and US Publication No. 2005/0024510) before macrodot sampling and decoding by the microprocessor 574 .
- 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.
- 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 (EDR) specification which allows communication at up to 3 Mbps.
- EDR Enhanced Data Rate
- a 2.45 GHz chip antenna 486 is used on the pen for the Bluetooth communications.
- 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 .
- Bluetooth includes 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 LR2.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.cd
- 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.
- the PMU 580 communicates with the ARM7 microprocessor 574 via the LSS bus 590 .
- the force sensor subsystem comprises a custom Hokuriku force sensor 500 (based on Hokuriku, HFD-500 Force Sensor, http://www.hdk.co.jp/pdf/eng/e1381AA.pdf), an amplifier and low pass filter 600 implemented using op-amps and a force sensor microprocessor 582 .
- a custom Hokuriku force sensor 500 based on Hokuriku, HFD-500 Force Sensor, http://www.hdk.co.jp/pdf/eng/e1381AA.pdf
- an amplifier and low pass filter 600 implemented using op-amps
- a force sensor microprocessor 582 implemented using op-amps
- 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.
- 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.
- 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).
- 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 .
- 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.
- the force sensor microprocessor flash memory is programmed in-circuit by the ARM7 microprocessor 574 .
- 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.
- the force sensor microprocessor needs to remain on when the cap 472 is on and the ARM7 574 is powered down.
- 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 .
- the cap switch 602 is monitored by the force sensor microprocessor 582 .
- the force sensor microprocessor 582 starts up the ARM7 572 by initiating a power on and reset cycle in the PMU 580 .
- the Netpage pen software comprises that software running on microprocessors in the Netpage pen 400 and Netpage pod.
- 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.
- 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.
- 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.
- 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.
- 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.
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Electromagnetism (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Editing Of Facsimile Originals (AREA)
- Image Processing (AREA)
- Credit Cards Or The Like (AREA)
- Position Input By Displaying (AREA)
- Character Input (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
A method of decoding a position-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 a windowed subsequence of a cyclic code sequence; (c) identifying a coordinate codeword using the windowed subsequence; and (d) determining a position of the optical reader from the coordinate codeword. The imaged portion has a diameter of more than one tag diameter and less than two tag diameters.
Description
- The present invention relates to a position-coding pattern on a surface.
- The following applications have been filed by the Applicant simultaneously with the present application:
- NPT104US NPT106US NPT107US NPT108US NPT109US NPT110US
- 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.
- The following patents or patent applications filed by the applicant or assignee of the present invention are hereby incorporated by cross-reference.
-
10/815,621 10/815,635 10/815,647 11/488,162 10/815,636 11/041,652 11/041,609 11/041,556 10/815,609 7,204,941 7,278,727 10/913,380 7,122,076 7,156,289 09/575,197 6,720,985 7,295,839 09/722,174 7,068,382 7,094,910 7,062,651 6,644,642 6,549,935 6,987,573 6,727,996 6,760,119 7,064,851 6,290,349 6,428,155 6,785,016 6,831,682 6,741,871 6,965,439 10/932,044 6,870,966 6,474,888 6,724,374 6,788,982 7,263,270 6,788,293 6,737,591 09/693,514 10/778,056 10/778,061 11/193,482 7,055,739 6,830,196 7,182,247 7,082,562 10/409,864 7,108,192 10/492,169 10/492,152 10/492,168 10/492,161 7,308,148 6,957,768 7,170,499 11/856,061 11/672,522 11/672,950 11/754,310 12/015,507 7,148,345 12/025,746 12/025,762 12/025,765 10/407,212 6,902,255 6,755,509 12/178,611 12/178,619 - 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 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.
- It would desirable to improve the coding pattern printed on the substrate so as to maximize usage of images captured by the sensing device, whilst still providing a robust error-correcting code. It would be further desirable to minimize visible coloration of the substrate by the coding pattern.
- In a first aspect, there is provided a substrate having a position-coding pattern disposed on a surface thereof, the position-coding pattern comprising:
- a plurality of tags, each tag encoding a w-bit subsequence of a cyclic code sequence, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag,
- wherein adjacent tags contain w-bit subsequences shifted by one bit relative to each other in the cyclic code sequence.
- An advantage of this position-pattern described in the first aspect is that it allows coordinate data to be captured by an optical reader whilst minimizing the required field of view.
- Optionally, the w-bit subsequence is represented by a set of coordinate data symbols in the tag, each of the coordinate data symbols containing at least one bit of the w-bit subsequence, each coordinate data symbol being represented by one or more data elements disposed on the surface.
- Optionally, the cyclic code sequence is an m-sequence or a simplex code.
- Optionally, the cyclic code sequence has a length n and a dimension k, and wherein: n>w>k. The provision of n>w>k ensures that the code enables error-detection and error-correction.
- Optionally, a given tag contains a w-bit subsequence corresponding to offset i in the cyclic code sequence, and adjacent tags on either side of the given tag contain w-bit subsequences corresponding to offsets (i+1) and (i−1) in the cyclic code sequence.
- Optionally, the position-coding pattern comprises a plurality of target elements defining a target grid, the target grid comprising a plurality of cells, each cell defining a symbol group, wherein neighboring symbol groups share target elements.
- Optionally, each tag is square and contains a plurality of symbol groups.
- Optionally, each coordinate data symbol is a 1-bit symbol such that w coordinate data symbols represent the w-bit subsequence.
- Optionally, the set of coordinate data symbols is arranged in each tag such that at any square portion of the position-coding pattern of length (l+q) is guaranteed to contain at least (w−1) bits of the w-bit subsequence, wherein l is a length of the tag and q is a length or a width of a coordinate data symbol.
- Optionally, each tag contains an x-coordinate codeword mapped from a first cyclic code sequence and a y-coordinate codeword mapped from a second cyclic code sequence, the x-coordinate codeword being defined by a first set of x-coordinate data symbols, and the y-coordinate codeword being defined by a second set of y-coordinate data symbols.
- Optionally, the first set is arranged in subsets of x-coordinate data symbols and the second set is arranged in subsets of y-coordinate data symbols.
- Optionally, each subset of x-coordinate data symbols is configured as a column containing a plurality of the x-coordinate data symbols, and each subset of y-coordinate data symbols is configured as a row containing a plurality of the y-coordinate data symbols, wherein each of the rows and columns has a maximal width v.
- Optionally, the columns of x-coordinate symbols and the rows of y-coordinate symbols are arranged such that any square portion of the position-coding pattern of length (l+v) is guaranteed to contain at least (w−1) bits of a w-bit subsequence in the first cyclic code sequence and at least (w−1) bits of a w-bit subsequence in the second cyclic code sequence, wherein l is a length of each tag.
- Optionally, one or more of the coordinate data symbols is a merged data symbol, each merged data symbol being represented by the one or more data elements, and wherein each merged data symbol encodes at least two of:
- an x-coordinate data symbol from the first set;
- a y-coordinate data symbol from the second set; and
- at least one further data symbol which is different from the x- and y-coordinate data symbols.
- Optionally, the at least one further data symbol is a Reed-Solomon symbol defining a fragment of a common codeword, the common codeword being encoded by a set of Reed-Solomon symbols contained in the tag, the common codeword identifying an identity common to a plurality of contiguous tags,
- Optionally, each merged data symbol is represented by the one or more data elements using pulse position modulation.
- Optionally, the data elements are macrodots (e.g. optically readable marks in the form of dots), and wherein each merged data symbol is represented by m macrodots, each of the macrodots occupying a respective position from a plurality of predetermined possible positions p within the merged data symbol, the respective positions of the macrodots representing one of a plurality of possible data values, wherein m is an integer value of 1 or more, and p>m. For example, m may be 1, 2, 3, 4, 5, 6 or 7 and p may be 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 or 16.
- Encoding by multi-PPM in this way ensures uniform coverage of the substrate with macrodots, which helps to reduce visibility. Moreover, PPM encoding provides an internal luminescence reference for reading macrodots. For example, the darkest m macrodots in the p positions are taken to be the PPM data, without the need to refer to any external luminescence threshold value.
- Optionally, each merged data symbol encodes the x-coordinate data symbol and the y-coordinate data symbol.
- Optionally, the x-coordinate data symbols and the y-coordinate data symbols are contained in different merged symbols.
- Optionally, one or more of the coordinate data symbols is a merged data symbol, each merged data symbol being represented by the one or more data elements, and wherein each merged data symbol encodes at least one of the coordinate data symbols and at least one further data symbol which is different from the coordinate data symbol.
- In a second aspect, there is provided a method of decoding a position-coding pattern disposed on a surface of a substrate, the method comprising the steps of:
- (a) operatively positioning an optical reader relative to the surface and capturing an image of a portion of the coding pattern, the coding pattern comprising:
- a plurality of tags, each tag encoding a w-bit subsequence of a cyclic code sequence, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag, wherein adjacent tags contain w-bit subsequences shifted by one bit relative to each other in the cyclic code sequence;
- (b) sampling a windowed subsequence contained in the imaged portion;
- (c) identifying a coordinate codeword using the windowed subsequence; and
- (d) determining a position of the optical reader from the coordinate codeword wherein the imaged portion has a diameter of more than one tag diameter and less than two tag diameters.
- Optionally, the windowed subsequence contains a first subsequence from at least one first tag and a second subsequence from at least one second tag, the first and second tags being adjacent to each other, and wherein the method comprises the step of:
- combining the first and second subsequences; and
- using the combined first and second subsequences to identify the coordinate codeword.
- Thus, the first and second subsequences are usually derived from 2 or more adjacent tags (e.g. 4 tags arranged in a square comprising two first tags and two second tags). Since coordinate codeword (and the coordinate) is derivable from portions of tags, the length n of the underlying code can be made relatively short and the field of view of the optical reader can be minimized.
- Optionally, if the combined first and second subsequences does not map to a valid coordinate codeword, the method comprises the step of:
- determining a corresponding maximally likely coordinate from the combined first and second subsequences.
- Optionally, the imaged portion has a diameter of at least (l+q)√2 and spans across parts of at least first and second adjacent tags, a set of coordinate data symbols being arranged in each tag such that the windowed subsequence contained in the imaged portion is guaranteed to contain at least (w−1) bits of a w-bit subsequence, the method further comprising the step of:
- combining a first subsequence from at least one first tag with a second subsequence from at least one second tag to retrieve at least (w−1) bits of the w-bit subsequence,
- wherein l is a length of the tag and q is a length or a width of a coordinate data symbol.
- Optionally, the windowed subsequence contains only (w−1) bits of the w-bit subsequence, and the method further comprises the step of:
- determining a maximally likely coordinate corresponding to the windowed subsequence.
- Optionally, the imaged portion has a diameter of at least (l+v)√2 and spans across parts of a plurality of adjacent tags, the columns of x-coordinate symbols and the rows of y-coordinate symbols being arranged such the windowed subsequence contained in the imaged portion is guaranteed to contain at least (w−1) bits of a w-bit subsequence in the first cyclic code sequence and at least (w−1) bits of a w-bit subsequence in the second cyclic code sequence, the method further comprising at least one step selected from the steps of:
- combining subsequences from adjacent tags in at least one row of tags to retrieve at least (w−1) bits of the w-bit subsequence in the first cyclic code sequence; and
- combining subsequences from adjacent tags in at least one column of tags to retrieve at least (w−1) bits of the w-bit subsequence in the second cyclic code sequence,
- wherein l is a length of each tag.
- In a third aspect, there is provided an optical reader configured for decoding a position-coding pattern disposed on a surface of a substrate, the coding pattern comprising:
- a plurality of tags, each tag encoding a w-bit subsequence of a cyclic code sequence, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag, wherein adjacent tags contain a w-bit subsequence shifted by one bit relative to each other in the cyclic code sequence;
- the optical reader comprising:
- means for accessing the cyclic code sequence;
- an image sensor for capturing an image of a portion of the position-coding pattern, the image sensor having a field-of-view of more than one tag diameter and less than two tag diameters; and
- a processor configured for performing the steps of:
-
- (i) sampling a windowed subsequence contained in the imaged portion;
- (ii) accessing the cyclic code sequence and comparing the windowed subsequence with the accessed cyclic code sequence;
- (iii) identifying a coordinate codeword using the windowed subsequence; and
- (iv) determining a position of the optical reader from the coordinate codeword.
- In a fourth aspect, there is provided a system for decoding a position-coding pattern disposed on a surface of a substrate, the system comprising:
- (A) the substrate, wherein the position-coding pattern comprises:
- a plurality of tags, each tag encoding a w-bit subsequence of a cyclic code sequence, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag, wherein adjacent tags contain a w-bit subsequence shifted by one bit relative to each other in the cyclic code sequence; and
- (B) an optical reader comprising:
- means for accessing the cyclic code sequence;
- an image sensor for capturing an image of a portion of the position-coding pattern, the image sensor having a field-of-view of more than one tag diameter and less than two tag diameters; and
- a processor configured for performing the steps of:
-
- (i) sampling a windowed subsequence contained in the imaged portion;
- (ii) accessing the cyclic code sequence and comparing the windowed subsequence with the accessed cyclic code sequence;
- (iii) identifying a coordinate codeword using the windowed subsequence; and
- (iv) determining a position of the optical reader from the coordinate codeword.
- It will be understood that, where applicable, optional embodiments of the first aspect may also be optional embodiments of the second, third and/or fourth aspects.
- In a fifth aspect, there is provided a substrate having a position-coding pattern disposed on a surface thereof, the position-coding pattern comprising:
- a plurality of tags, each tag encoding a w-bit subsequence of a cyclic code sequence having a length n and a dimension k, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag,
- wherein adjacent tags contain successive w-bit subsequences in the cyclic code sequence, and wherein n>w>k.
- Optionally, the w-bit subsequence is represented by a set of coordinate data symbols in the tag, each of the coordinate data symbols containing at least one bit of the w-bit subsequence, each coordinate data symbol being represented by one or more data elements disposed on the surface.
- Optionally, the cyclic code sequence is an m-sequence or a simplex code.
- Optionally, the length n of the cyclic code sequence is defined as: n=2k−1.
- Optionally, a given tag contains a w-bit subsequence corresponding to offset i in the cyclic code sequence, and adjacent tags on either side of the given tag contain w-bit subsequences corresponding to offsets (i+w) and (i−w) in the cyclic code sequence.
- Optionally, the set of coordinate data symbols is arranged in each tag such that at any square portion of the position-coding pattern of length (l+q) is guaranteed to contain a w-bit subsequence of the cyclic code sequence, the w-bit subsequence mapping to a coordinate codeword, wherein l is a length of the tag and q is a length or a width of a coordinate data symbol.
- Optionally, columns of x-coordinate symbols and rows of y-coordinate symbols are arranged such that any square portion of the position-coding pattern of length (l+v) is guaranteed to contain a w-bit subsequence of the first cyclic code sequence and a w-bit subsequence of the second cyclic code sequence, each w-bit subsequence corresponding to an offset in its respective first or second cyclic code sequence, each w-bit subsequence mapping to at least one of:
- a coordinate codeword for a tag; and
- a coordinate codeword for a row or column within the tag,
- wherein l is a length of the tag.
- Optionally, one or more of the coordinate data symbols is a merged data symbol, each merged data symbol being represented by the one or more data elements, and wherein each merged data symbol encodes at least two of:
- an x-coordinate data symbol from the first set;
- a y-coordinate data symbol from the second set; and
- at least one further data symbol which is different from the x- and y-coordinate data symbols.
- In a sixth aspect, there is provided a method of decoding a position-coding pattern disposed on a surface of a substrate, the method comprising the steps of:
- (a) operatively positioning an optical reader relative to the surface and capturing an image of a portion of the coding pattern, the coding pattern comprising:
- a plurality of tags, each tag encoding a w-bit subsequence of a cyclic code sequence having a length n and a dimension k, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag,
- wherein adjacent tags contain successive w-bit subsequences in the cyclic code sequence;
- (b) sampling a windowed subsequence contained in the imaged portion; and
- (c) identifying a coordinate codeword corresponding to the windowed subsequence; and
- (d) determining a position of the optical reader from the coordinate codeword,
- wherein the imaged portion has a diameter of more than one tag diameter and less than two tag diameters, and wherein n>w>k.
- Optionally, the windowed subsequence contains a first subsequence from at least one first tag and a second subsequence from at least one second tag, the first and second tags being adjacent to each other, and wherein the method comprises the step of:
- combining the first and second subsequences; and
- using the combined first and second subsequences to identify the coordinate codeword.
- Optionally, if the combined first and second subsequences does not map to a valid coordinate codeword, the method comprise the step of:
- determining a corresponding maximally likely valid coordinate from the combined first and second subsequences.
- Optionally, the imaged portion has a diameter of at least (l+q)√2 and spans across parts of at least first and second adjacent tags, a set of coordinate data symbols being arranged in each tag such that the windowed subsequence contained in the imaged portion is guaranteed to contain a w-bit subsequence of the cyclic code sequence, the method further comprising the step of:
- combining a first subsequence from at least one first tag with a second subsequence from at least one second tag to retrieve the w-bit subsequence,
- wherein l is a length of the tag and q is a length or a width of a coordinate data symbol.
- Optionally, the method further comprises the step of: mapping the w-bit subsequence to a coordinate.
- Optionally, each tag contains an x-coordinate codeword mapped from a first cyclic code sequence and a y-coordinate codeword mapped from a second cyclic code sequence, the x-coordinate codeword being defined by a first set of x-coordinate data symbols, and the y-coordinate codeword being defined by a second set of y-coordinate data symbols.
- Optionally, the first set is arranged in subsets of x-coordinate data symbols and the second set is arranged in subsets of y-coordinate data symbols.
- Optionally, each subset of x-coordinate data symbols is configured as a column containing a plurality of the x-coordinate data symbols, and each subset of y-coordinate data symbols is configured as a row containing a plurality of the y-coordinate data symbols, wherein each of the rows and columns has a maximal width v.
- Optionally, the imaged portion has a diameter of at least (l+v)√2 and spans across parts of a plurality of adjacent tags, the columns of x-coordinate symbols and the rows of y-coordinate symbols being arranged such the windowed subsequence contained in the imaged portion is guaranteed to a w-bit subsequence in the first cyclic code sequence and a w-bit subsequence in the second cyclic code sequence, the method further comprising at least one step selected from the steps of:
- combining subsequences from adjacent tags in at least one row of tags to retrieve the w-bit subsequence in the first cyclic code sequence; and
- combining subsequences from adjacent tags in at least one column of tags to retrieve the w-bit subsequence in the second cyclic code sequence,
- wherein l is a length of each tag.
- In a seventh aspect, there is provided an optical reader configured for decoding a position-coding pattern disposed on a surface of a substrate, the coding pattern comprising:
- a plurality of tags, each tag encoding a w-bit subsequence of a cyclic code sequence, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag, wherein adjacent tags contain successive w-bit subsequences in the cyclic code sequence; the optical reader comprising:
- means for accessing the cyclic code sequence;
- an image sensor for capturing an image of a portion of the position-coding pattern, the image sensor having a field-of-view of more than one tag diameter and less than two tag diameters; and
- a processor configured for performing the steps of:
-
- (i) sampling a windowed subsequence contained in the imaged portion;
- (ii) accessing the cyclic code sequence and comparing the windowed subsequence with the accessed cyclic code sequence;
- (iii) identifying a coordinate codeword using the windowed subsequence; and
- (iv) determining a position of the optical reader from the coordinate codeword.
- Optionally, the imaged portion spans across parts of at least first and second adjacent tags such that the windowed subsequence contains a first subsequence from at least one first tag and a second subsequence from at least one second tag, wherein the processor is further configured for:
- combining the first and second subsequences; and
- using the combined first and second subsequences to identify the coordinate codeword.
- In an eighth aspect, there is provided a system for decoding a position-coding pattern disposed on a surface of a substrate, the system comprising:
- (A) the substrate, wherein the position-coding pattern comprises:
- a plurality of tags, each tag encoding a w-bit subsequence of a cyclic code sequence, the w-bit subsequence mapping to a corresponding coordinate codeword for the tag,
- wherein adjacent tags contain successive w-bit subsequences in the cyclic code sequence; and
(B) an optical reader comprising: - means for accessing the cyclic code sequence;
- an image sensor for capturing an image of a portion of the position-coding pattern, the image sensor having a field-of-view of more than one tag diameter and less than two tag diameters; and
- a processor configured for performing the steps of:
-
- (i) sampling a windowed subsequence contained in the imaged portion;
- (ii) accessing the cyclic code sequence and comparing the windowed subsequence with the accessed cyclic code sequence;
- (iii) identifying a coordinate codeword using the windowed subsequence; and
- (iv) determining a position of the optical reader from the coordinate codeword.
- It will be appreciated that optional embodiments of the fifth aspect may also be optional embodiments of the sixth, seventh and/or eighth aspects. Equally, some generic features of the first aspect may be used in combination with the fifth, sixth, seventh and/or eighth aspects.
- In a ninth aspect, there is provided a substrate having a coding pattern disposed on a surface thereof, the coding pattern comprising a plurality of merged data symbols, each merged data symbol being represented by a plurality of data elements disposed on the surface, wherein each merged data symbol encodes at least a first individual data symbol and a second individual data symbol.
- An advantage of the ninth aspect is that the merged data symbols occupy a minimal area of the surface and minimize visible coloration of the surface compared with separately disposed first and second individual data symbols.
- Optionally, the first and second individual data symbols are different from each other.
- Optionally, each merged data symbol encodes a first data symbol from a first codeword and a second data symbol from a second codeword.
- Optionally, each merged data symbol encodes a coordinate data symbol from a coordinate codeword and a common data symbol from a common codeword.
- Optionally, each merged data symbol encodes an x-coordinate data symbol from an x-coordinate codeword, a y-coordinate data symbol from a y-coordinate codeword and a common data symbol from a common codeword.
- Optionally, the common codeword encodes information common to an extended region of the surface, wherein the information is selected from the group consisting of: a region identity, an encoding format, a region flag, a pattern scale identifier and a CRC.
- Optionally, the first and second individual data symbols are symbols from different error-correcting codes.
- Optionally, the different error-correcting codes are selected from the group consisting of: Reed-Solomon codes, binary codes, simplex codes and cyclic position codes.
- Optionally, the cyclic position codes use a cyclic code sequence, and wherein a w-bit subsequence of the cyclic code sequence defines a codeword.
- Optionally, the cyclic code sequence is an m-sequence or a simplex code.
- Optionally, the cyclic code sequence has a length n and a dimension k, and wherein: n>w>k.
- Optionally, the w-bit subsequence of the cyclic code sequence defines a coordinate codeword.
- Optionally, each merged data symbol in a set of the merged data symbols encodes a coordinate data symbol from the coordinate codeword, each coordinate data symbol encoding one bit of the w-bit subsequence.
- Optionally, the merged data symbol further encodes a multi-bit Reed-Solomon symbol from a Reed-Solomon common codeword.
- Optionally, wherein each merged data symbol is represented by the data elements using pulse position modulation (PPM).
- Optionally, the data elements are macrodots, and wherein each merged data symbol is represented by m macrodots, each of the macrodots occupying a respective position from a plurality of predetermined possible positions p within the merged data symbol, the respective positions of the macrodots representing one of a plurality of possible data values, wherein m is an integer value of 1 or more, and p>m. For example, m may be 1, 2, 3, 4, 5, 6 or 7 and p may be 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 or 16.
- Optionally, the coding pattern comprises a plurality of target elements defining a target grid, the target grid comprising a plurality of cells, each cell defining a symbol group containing one or more of the merged data symbols, wherein neighboring symbol groups share target elements.
- Optionally, the coding pattern comprises a plurality of tags, each tag being square and comprising M2 symbol groups, each symbol group containing R symbols.
- Optionally, a tag encoding strategy for each tag is in accordance with a tag encoding strategy (1) to (4) described in Table A:
-
tag configuration (M2 × R) = available No. of PPM coordinate common data tag merged encoding merged codeword codeword capacity encoding symbols (m- symbol symbol symbol per strategy per tag pPPM) size size size tag (1) 22 × 8 = 32 2-9PPM 5b 1b 4b 160b (2) 22 × 8 = 32 3-9PPM 6b 1b 5b 192b (3) 32 × 8 = 72 2-9PPM 5b 1b 4b 360b (4) 32 × 8 = 72 3-9PPM 6b 1b 5b 432b - Optionally, a codeword configuration for each of the tag encoding strategies (1) to (4) is in accordance with one of the codeword configurations described in Table B:
-
Common Codeword Coordinate Codeword Configuration(s) for each tag Configuration(s) for each tag encoding strategy encoding strategy total total data data capacity Coordinate capacity Common of tag codewords of codewords Reed- coordinate encoding per Cyclic coordinate per Solomon codeword strategy tag Code codewords tag Code (s) (1) 2 (X, Y) (16, 8) 2 × 8 × 1b = 2 (A, B) (15, 7) 2 × 7 × 4b = 16b 56b (2) 2 (X, Y) (16, 8) 2 × 8 × 1b = 2 (A, B) (16, 8) 2 × 8 × 5b = 16b 80b 2 (X, Y) (16, 8) 2 × 8 × 1b = 1 (A) (31, 23) 1 × 23 × 16b 5b = 115b 2 (X, Y) (32, 16) 2 × 16 × 2 (A, B) (15, 7) 2 × 7 × 4b = 1b = 32b 56b (3) 2 (X, Y) (36, 20) 2 × 20 × 4 (A, B, (15, 7) (4 × 7 × 1b = 40b C, D) + 1 (12, 4) 4b) + (1 × (E) 4 × 4b) = 128b (4) 2 (X, Y) (36, 20) 2 × 20 × 4 (A, B, (18, 10) 4 × 10 × 1b = 40b C, D) 5b = 200b 2 (X, Y) (36, 20) 2 × 20 × 3 (A, B, (24, 16) 3 × 16 × 1b = 40b C) 5b = 240b 2 (X, Y) (36, 20) 2 × 20 × 2 (A, B) (31, 23) 2 × 23 × 1b = 40b 5b = 230b - In a tenth aspect, there is provided a method of decoding a coding pattern disposed on a surface of a substrate, the method comprising the steps of:
- (a) operatively positioning an optical reader relative to the surface and capturing an image of a portion of the coding pattern, the coding pattern comprising:
- a plurality of merged data symbols, each merged data symbol being represented by a plurality of data elements disposed on the surface, wherein each merged data symbol encodes a first individual data symbol from a first codeword and a second individual data symbol from a second codeword;
- (b) sampling a set of the merged data symbols contained in the imaged portion; and
- (c) decoding the sampled set of merged data symbols to obtain the first codeword encoded by a corresponding set of first individual data symbols.
- Optionally, the method further comprises the step of:
-
- decoding the sampled set of merged data symbols to obtain a second codeword encoded by a corresponding set of second individual data symbols.
- Optionally, the method further comprises the step of:
-
- detecting at least one erroneous first individual data symbol in the first codeword; and
- treating a second individual data symbol co-encoded with the erroneous first individual data symbol as an erasure.
- Hence, decoding of the first individual data symbols may assist in detecting errors in the second individual data symbols co-encoded with the first individual data symbols, and vice versa.
- Optionally, the first codeword is a common codeword identifying information common to an extended region of the surface.
- Optionally, the second codeword is a coordinate codeword.
- Optionally, each merged data symbol encodes a third individual data symbol, and the method further comprises the step of:
-
- decoding the sampled set of merged data symbols to obtain a third codeword encoded by a corresponding set of third individual data symbols.
- In an eleventh aspect, there is provided an optical reader configured for decoding a coding pattern disposed on a surface of a substrate, the coding pattern comprising:
- a plurality of merged data symbols, each merged data symbol being represented by a plurality of data elements disposed on the surface, wherein each merged data symbol encodes a first individual data symbol from a first codeword and a second individual data symbol from a second codeword;
- the optical reader comprising:
- an image sensor for capturing an image of a portion of the coding pattern; and
- a processor configured for performing the steps of:
-
- (i) sampling a set of the merged data symbols contained in the imaged portion; and
- (ii) decoding the sampled set of merged data symbols to obtain the first codeword encoded by a corresponding set of first individual data symbols.
- Optionally, the processor is further configured for:
-
- decoding the set plurality of merged data symbols to obtain a second codeword encoded by a corresponding set of second individual data symbols.
- Optionally, the processor is further configured for:
-
- detecting at least one erroneous first individual data symbol in the first codeword; and
- treating a second individual data symbol co-encoded with the erroneous first individual data symbol as an erasure.
- In a twelfth aspect, there is provided a system for decoding a coding pattern disposed on a surface of a substrate, the system comprising:
- (A) the substrate, wherein the coding pattern comprises:
- a plurality of merged data symbols, each merged data symbol being represented by a plurality of data elements disposed on the surface, wherein each merged data symbol encodes a first individual data symbol from a first codeword and a second individual data symbol from a second codeword;
- (B) an optical reader comprising:
- an image sensor for capturing an image of a portion of the coding pattern; and
- a processor configured for performing the steps of:
-
- (i) sampling a set of the merged data symbols contained in the imaged portion; and
- (ii) decoding the sampled set of merged data symbols to obtain the first codeword encoded by a corresponding set of first individual data symbols;
- (iii) detecting at least one erroneous first individual data symbol in the first codeword;
- (iv) treating a second individual data symbol co-encoded with the erroneous first individual data symbol as an erasure; and
- (v) decoding the sampled set of merged data symbols to obtain a second codeword encoded by a corresponding set of second individual data symbols including the erasure.
- In a thirteenth aspect, there is provided a method of encoding a coding pattern for disposition on a surface of a substrate, the method comprising the step of:
- co-encoding, in a merged data symbol, a first individual data symbol from a first codeword with at least a second individual data symbol from a second codeword,
- wherein the merged data symbol is represented on the surface by a plurality of data elements disposed thereon.
- The method of thirteenth aspect may advantageously minimize a number of the data elements disposed on the surface.
- The method of thirteenth aspect may advantageously minimize visible coloration of the surface.
- Optionally, the merged data symbol is represented by the data elements using pulse position modulation (PPM) as described above.
- Optionally, the coding pattern comprises a plurality of the merged data symbols.
- Optionally, the method further comprises the step of printing the merged data symbol onto the surface.
- Optionally, each merged data symbol encodes a coordinate data symbol from a coordinate codeword and a common data symbol from a common codeword.
- Optionally, each merged data symbol encodes an x-coordinate data symbol from an x-coordinate codeword, a y-coordinate data symbol from a y-coordinate codeword and a common data symbol from a common codeword.
- Optionally, the first and second individual data symbols are symbols from different error-correcting codes.
- It will be appreciated that optional embodiments of the ninth aspect may also be optional embodiments of the tenth, eleventh, twelfth and thirteenth aspects.
- 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:
-
FIG. 1 is a schematic of a relationship between a sample printed netpage and its online page description; -
FIG. 2 shows an embodiment of basic netpage architecture with various alternatives for the relay device; -
FIG. 3 shows a tag structure with 3×3 symbol groups; -
FIG. 4 shows a tag structure with 2×2 symbol groups; -
FIG. 5 shows a symbol group; -
FIG. 6 shows the layout of a 9 PPM data symbol; -
FIG. 7 shows the spacing of macrodot positions; -
FIG. 8 shows the layout of a registration symbol; -
FIG. 9 shows the layout of a 32-bit x-coordinated codeword; -
FIG. 10 shows the layout of a 32-bit y-coordinated codeword; -
FIG. 11 shows the layout of a common codeword A; -
FIG. 12 shows the layout of a common codeword B; -
FIG. 13 shows the layout of a 16-bit x-coordinated codeword; -
FIG. 14 shows the layout of a 16-bit y-coordinated codeword; -
FIG. 15 shows the layout of a Reed-Solomon codeword; -
FIG. 16 is a flowchart of initial image processing by the Netpage pen; -
FIG. 17 is a flowchart of codeword decoding subsequent to the initial image processing; -
FIG. 18 shows a nib and elevation of the Netpage pen held by a user; -
FIG. 19 shows the pen held by a user at a typical incline to a writing surface; -
FIG. 20 is a lateral cross section through the pen; -
FIG. 21A is a bottom and nib end partial perspective of the pen; -
FIG. 21B 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; -
FIG. 22 is a longitudinal cross section of the pen; -
FIG. 23A is a partial longitudinal cross section of the nib and barrel molding; -
FIG. 23B is a partial longitudinal cross section of the IR LED's and the barrel molding; -
FIG. 24 is a ray trace of the pen optics adjacent a sketch of the ink cartridge; -
FIG. 25 is a side elevation of the lens; -
FIG. 26 is a side elevation of the nib and the field of view of the optical sensor; and -
FIG. 27 is a block diagram of the pen electronics. - In a preferred embodiment, the invention is configured to work with the netpage networked computer system, an overview of which follows. 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.
- 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 (or reader) 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 or readers described herein.
- 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.
- As illustrated in
FIG. 1 , a printednetpage 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. Thenetpage 1 consists ofgraphic data 2, printed using visible ink, and asurface coding pattern 3 superimposed with the graphic data. Thesurface coding pattern 3 comprises a collection oftags 4. Atypical tag 4 is shown in the shaded region ofFIG. 1 , although it will be appreciated thatcontiguous tags 4, defined by thecoding pattern 3, are densely tiled over thewhole netpage 1. - 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 azone 7 which corresponds to the spatial extent of the corresponding graphic 8. - As illustrated in
FIG. 2 , anetpage sensing device 400, such as the pen described inSection 3, works in conjunction with a netpage relay device 601, which is an Internet-connected device for home, office or mobile use. Thepen 400 is wireless and communicates securely with the netpage relay device 601 via a short-range radio link 9. In an alternative embodiment, thenetpage pen 400 utilises a wired connection, such as a USB or other serial connection, to the relay device 601. - The relay device 601 performs the basic function of relaying interaction data to a
page server 10, which interprets the interaction data. As shown inFIG. 2 , the relay device 601 may, for example, take the form of apersonal computer 601 a, anetpage printer 601 b or someother relay 601 c (e.g. personal computer or mobile phone incorporating a web browser). - The
netpage printer 601 b 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. - 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 601 b 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. - As shown in
FIG. 2 , thenetpage sensing device 400 interacts with a portion of the tag pattern on a printednetpage 1, or other printed substrate such as a label of aproduct 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 relevantnetpage page server 10 for interpretation. Raw data received from thesensing device 400 may be relayed directly to thepage server 10 as interaction data. Alternatively, the interaction data may be encoded in the form of an interaction URI and transmitted to thepage server 10 via a user'sweb browser 601 c. Theweb browser 601 c may then receive a URI from thepage server 10 and access a webpage via awebserver 201. In some circumstances, thepage server 10 may access application computer software running on anetpage application server 13. - 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 anetpage page server 10 orapplication server 13. - Digital, on-demand delivery of
netpages 1 may be performed by thenetpage printer 601 b, 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. - 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.
- Netpages are the foundation on which a netpage network is built. They provide a paper-based user interface to published information and interactive services.
- As shown in
FIG. 1 , a netpage consists of a printed page (or other surface region) invisibly tagged with references to anonline description 5 of the page. Theonline page description 5 is maintained persistently by thenetpage 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. - 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 (or, more generally, region ID) has sufficient precision to distinguish between a very large number of netpages.
- 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 thepage description 5. Each tag also identifies its own position on the page. Characteristics of the tags are described in more detail below. - 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.
- 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. - 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 thepage description 5 for each printednetpage 1. - Each
tag 4 identifies an absolute location of that tag within a region of a substrate. - 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.
- 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. - 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 thepen 400 relative to the substrate to be determined. - 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. Alternatively, an active area flag may indicate to thepen 400 to forward captured input immediately to theNetpage server 10. - 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. - 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.
- 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, eachtag 4 is represented by a coding pattern which contains two kinds of elements. Referring toFIGS. 3 to 5 , the first kind of element is a target element. Target elements in the form oftarget dots 301 allow atag 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 (seeFIG. 6 ). The macrodots 302 encode data values. 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 multi-pulse position modulation, which is described in more detail in Section 2.3.
- 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. Thepattern 3 is typically printed onto the surface using a narrowband near-infrared ink. - 2.2.1 Tag Structure with 3×3 Symbol Groups
-
FIG. 3 shows the structure of acomplete tag 4A withtarget elements 301 shown. Thetag 4A is square and contains sixteen target elements. Thosetarget 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. The high number oftarget elements 301 advantageously facilitates accurate determination of a perspective distortion of thetag 4A when it is imaged by theNetpage pen 400. This improves the accuracy of tag sensing and, ultimately, position determination. - The
tag 4A consists of a square array of ninesymbol groups 303.Symbol groups 303 are demarcated by thetarget 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. - 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, onlysymbol groups 303, which define cells of a target grid, can be distinguished—thetags 4A themselves are indistinguishable by viewing only the target elements. Hence, tags 4A must be aligned with the target grid as part of tag decoding. - 2.2.2 Tag Structure with 2×2 Symbol Groups
-
FIG. 4 shows the structure of analternative tag 4B withtarget elements 301 shown. Thetag 4B is square, but differs from thetag 4A in that it contains nine target elements. Thosetarget elements 301 located at the edges and corners of the tag (eight in total) are shared by adjacent tags and define the perimeter of the tag. - The
tag 4B consists of a square array of foursymbol groups 303. Anindividual symbol group 303, used in eithertag - As shown in
FIG. 5 , each of thesymbol groups 303 comprises eightdata symbols 304. In addition, eachsymbol group 303 comprises a pair of registration symbols—a vertical registration symbol (‘VRS’) and a horizontal registration symbol (‘HRS’). These allow the orientation and translation of the tag in the field of view to be determined. Translation refers to the translation of tag(s) relative to thesymbol groups 303 in the field of view. In other words, the registration symbols enable alignment of the ‘invisible’ tags with the target grid. - Each
data symbol 304 is a multi-pulse position modulated (PPM) data symbol. Typically, eachPPM data symbol 304 encodes either 5-bits or 6-bits using 2-9 PPM or 3-9 PPM encoding, respectively. i.e. 2 macrodots in any of 9 positions {p0, p1, p2, p3, p4, p5, p6, p7, p8} or 3 macrodots in any of the 9 positions {p0, p1, p2, p3, p4, p5, p6, p7, p8}.FIG. 6 shows the layout for a 2-9 PPM or 3-9PPM data symbol 304. - Table 1 defines the mapping from 2-9 PPM symbol values to data symbol values. Unused symbol values can be treated as erasures.
-
TABLE 1 2-9PPM symbol to data symbol value mapping 2-9PPM symbol value data symbol value (p8-p0) (base 16) 000, 000, 011 0 000, 000, 101 1 000, 000, 110 2 000, 001, 001 3 000, 001, 010 4 000, 001, 100 5 000, 010, 001 6 000, 010, 010 7 000, 010, 100 8 000, 011, 000 9 000, 100, 001 a 000, 100, 010 b 000, 100, 100 c 000, 101, 000 d 000, 110, 000 e 001, 000, 001 f 001, 000, 010 10 001, 000, 100 11 001, 001, 000 12 001, 010, 000 13 001, 100, 000 14 010, 000, 001 15 010, 000, 010 16 010, 000, 100 17 010, 001, 000 18 010, 010, 000 19 010, 100, 000 1a 011, 000, 000 1b 100, 000, 001 1c 100, 000, 010 1d 100, 000, 100 1e 100, 001, 000 1f 100, 010, 000 unused 100, 100, 000 unused 101, 000, 000 unused 110, 000, 000 unused - The mapping from 3-9 PPM symbol values to data symbol values follows a similar scheme to the mapping scheme described in Table 1. A 3-9 PPM data symbol maps to 84 data symbol values in total. However, only the first 64 of these 3-9 PPM data symbol values are used to map to successive 6-bit data symbol values. Unused symbols are again treated as erasures.
- 3-9 PPM data symbols have the advantage of allowing more data to be encoded in each symbol. However, 2-9 PPM data symbols have the advantage of using less ink and, therefore, have less visible coloration of the substrate, particularly if the ink used to print the
coding pattern 3 is not perfectly invisible. - As noted above, each symbol group also contains a 2-6 PPM vertical registration symbol (VRS) and a 2-6 PPM horizontal registration symbol (HRS), which will be described in more detail in Section 2.6.
- 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 127 μm, based on 8 dots printed at a pitch of 1600 dots per inch. - Only macrodots 302 are part of the representation of a
symbol 304 in the pattern. The outline of asymbol 304 is shown in, for example,FIGS. 3 to 5 merely to elucidate more clearly the structure of atag 4. - A macrodot 302 is nominally square with a nominal size of 0.5 s. However, it is allowed to vary in size by ±10% according to the capabilities of the device used to produce the pattern.
- A
target 301 is nominally circular with a nominal diameter of 1.5 s. However, it is allowed to vary in size by ±10% according to the capabilities of the device used to produce the pattern. - Each
symbol group 303 has a width of 10 s. Therefore, eachtag 4A (having a 3×3 tag structure) has a width of 30 s and a length of 30 s. Similarly, eachtag 4B (having a 2×2 tag structure) has a width of 20 s and a length of 20 s. - However, it should be noted from
FIGS. 3 and 4 that thetags data symbols 304 within the target grid. - The macrodot spacing, and therefore the overall scale of the tag pattern, is allowed to vary by 170 μm and 120 μm according to the capabilities of the device used to produce the pattern. Any deviation from the nominal scale is recorded in each tag (via the macrodot size ID field) to allow accurate generation of position samples.
- These tolerances are independent of one another. They may be refined with reference to particular printer characteristics.
- If the macrodot spacing exceeds 127 μm then the tag is limited to four symbol groups as described in Section 2.2.2.
- As mentioned above, the
tags - 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 (i.e. from a whole symbol as opposed to partial symbols at opposite sides of the field of view), 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 four macrodots. Making the field of view at least as large as the tag plus four macrodot units guarantees that pulse-position modulated values can be coherently sampled.
- Each registration symbol is encoded using 2-6 PPM.
FIG. 8 shows the layout of the registration symbol. - As shown in
FIG. 5 , the horizontal and vertical registration symbols each appear once within asymbol group 303. The registration symbols of an entire tag typically indicate the vertical and horizontal translation of the tag by coding two orthogonal translation codes, and the orientation of the tag by coding two orthogonal direction codes. Each registration symbol may also encode a one-bit symbol of a flag code. - Table 2 defines the mapping from 2-6 PPM registration symbol values to flag code, direction code and translation code symbol values.
-
TABLE 2 2-6PPM registration symbol values to flag code, direction code and translation code symbol mapping 2-6PPM translation direction flag code symbol value code symbol code symbol symbol {p5-p0} value value value 001, 001 0 0 unspecified 100, 010 1 001, 010 1 0 0 000, 101 1 010, 100 1 0 101, 000 1 010, 001 2 0 unspecified 100, 100 1 000, 011 3 0 000, 110 1 011, 000 4 0 110, 000 1 001, 100 unused 010, 010 100, 001 -
Tags 4A (having a 3×3 tag structure) use the first eight registration symbol values in Table 2 i.e. those registration symbol values mapping to a translation code symbol value of 0, 1 or 2. In other words, if the registration symbol value maps to a translation code symbol value of 0, 1 or 2, then the position-coding pattern is identified as containingtags 4A having ninesymbol groups 303 contained in onetag 4A. - The additional translation code symbol values (i.e. 3 and 4) shown in Table 2 are reserved for
tags 4B (having a 2×2 tag structure). Thus, if the registration symbol value maps to a translation code symbol value of 3 or 4, then the position-coding pattern is identified as containingtags 4B having foursymbol groups 303 contained in onetag 4B. In this way, the registration symbol provides a means of distinguishing position-codingpatterns containing tags 4A ortags 4B, as described herein. Subsequent decoding of PPM data symbols proceeds in accordance with the position-coding pattern identified from decoding the registration symbol(s). - In the
tag 4A, 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 consists of the codeword (0, 1, 2) and its cyclic shifts. The code has a minimum distance of 3, allowing a single symbol error to be corrected. For each of the two orthogonal translations, the three translation 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. - The translation code symbol in the middle of the codeword (i.e. 1) is mapped to a set of 2-6 PPM symbol values that are each other's reverse, while the two translation code symbols at the ends of the codeword (i.e. 0 and 2) are each mapped to a set of 2-6 PPM symbol values that are the reverses of the 2-6 PPM symbol values in the other set. Thus a 0 read upside-down (i.e. rotated 180 degrees) becomes a 2, and vice versa, while a 1 read upside-down remains a 1. This allows translation to be determined independently of rotation.
- Furthermore, in the
tag 4A, each 2-6 PPM symbol value and its reverse map to opposite direction code symbol values (Table 2). The vertical registration symbols of an entire tag encode 9 symbols of a vertical direction code. This has a minimum distance of 9, allowing 4 symbol errors to be corrected. The horizontal registration symbols of an entire tag encode 9 symbols of a horizontal direction code. This has 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. Any erasures detected during decoding of a translation code can also be used during decoding of a direction code, and vice versa. Together the orthogonal direction codes allow the orientation of the tag to be determined. - The top left corner of an un-rotated tag is identified by a symbol group whose translation symbols are both zero and whose direction symbols are both zero.
- The active flag symbol consists of one bit of data, and is encoded in each vertical and horizontal registration symbol, as shown in Table 2. The active flag symbol allows the
Netpage pen 400 to provide immediate feedback to a user without reference to the correspondingpage description 5. For example, thepen 400, upon detection of an active flag, may indicate to a user (e.g. via an LED) that it is positioned within the zone of a hyperlink. - An active flag symbol is unique to a tag and is therefore coded redundantly in each quadrant of the tag. Since the active flag symbol is encoded in each registration symbol, it appears eight times within each quadrant. Eight symbols form a code with a minimum distance of 8, allowing 3 errors to be corrected. If additional symbols are visible within the field of view then they can be used for additional redundancy. Any erasures detected during decoding of translation and/or direction codes can also be used during decoding of the flag code, and vice versa.
- Each registration symbol contained in the
tags 4B is positioned and configured in the same way as the registration symbols contained intags 4A. However, as mentioned in Section 2.6.1, thetags 4B utilize only those registration symbol values mapping to the translation code symbol values (3, 4). This enables the registration symbol to identify thetags 4B containing four symbols groups, and distinguish them from thetags 4A containing nine symbol groups. - In the
tags 4B, each row of symbol groups and each column of symbol groups encodes a two-symbol 2-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 consists of the codeword (3, 4) and its cyclic shifts. For each of the two orthogonal translations, the two translation codes of an entire tag form a code with a minimum distance of 4, allowing 1 symbol error to be corrected. If additional symbols are visible within the field of view then they can be used for additional redundancy. - The two translation code symbols (3 and 4) are each mapped to a set of 2-6 PPM symbol values that are the reverses of the 2-6 PPM symbol values in the other set. Thus a 3 read upside-down (i.e. rotated 180 degrees) becomes a 4, and vice versa. This allows translation to be determined independently of rotation.
- Furthermore, in the
tags 4B, each 2-6 PPM symbol value and its reverse map to opposite direction code symbol values (Table 2). The vertical registration symbols of an entire tag encode 4 symbols of a vertical direction code. This has a minimum distance of 4, allowing 1 symbol error to be corrected. The horizontal registration symbols of an entire tag encode 4 symbols of a horizontal direction code. This has a minimum distance of 4, allowing 1 symbol error to be corrected. If additional symbols are visible within the field of view then they can be used for additional redundancy. Any erasures detected during decoding of a translation code can also be used during decoding of a direction code, and vice versa. Together the orthogonal direction codes allow the orientation of the tag to be determined. - The top left corner of an un-rotated tag is identified by a symbol group whose translation symbols are both zero and whose direction symbols are both zero.
- Although as shown in Table 2, the 2-6 PPM registration symbol does not allow flag codes for the
tags 4B, it will be appreciated that a 3-6 PPM registration symbol mapping to 20 available symbol values would allow thetags 4B to contain flag codes, if desired. In this case, 12 registration symbol values (3×2×2) would be used for thetags 4A, and 8 registration symbols value (2×2×2) would be used for thetags 4B. - In the Applicant's copending applications, U.S. application Ser. No. 12/178,611 (Docket No. NPT087US) and Docket No. NPT100US, which will be substituted with the corresponding application number, once assigned. The contents of which are incorporated herein by reference; tags generally encode codewords using a distinct set of PPM data symbols for each codeword.
- As described in NPT087US, an x-coordinate Reed-Solomon codeword may be encoded by a distinct set of X data symbols (e.g. X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10) and a y-coordinate Reed-Solomon codeword may be encoded by a distinct set of Y data symbols (e.g. Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7, Y8, Y9, Y10). Moreover, the Applicant has described various arrangements of X and Y data symbols within each tag, which make use of the fact that the x-coordinate does not vary within a column of tags, and the y-coordinate does not vary within a row of tags. This enables space to be saved in the tag, whilst still allowing each complete coordinate codeword to be read from a substantially tag-sized field of view. For example, at least some of the X data symbols may be placed in a column of the tag to avoid replicating the X data symbols in each east-west half of the tag. Likewise, at least some of the Y data symbols may be placed in a row of the tag to avoid replicating the Y data symbols in each north-south half of the tag.
- Likewise, information common to a set of contiguous tags in a surface region may be encoded by one or more common Reed-Solomon codewords e.g. A, B, C and D codewords. As described in, for example, NPT087US, each such Reed-Solomon codeword is encoded by a distinct set of PPM data symbols. Common codewords typically encode a region ID, but may also encode other information, such as an encoding format, a region flag, a pattern scale identifier (e.g. tag size ID or macrodot size ID) and a CRC.
- A secret-key signature or a fragment of an embedded data object may be encoded by an optional Reed-Solomon codeword e.g. E codeword. As described in, for example, NPT087US, this optional Reed-Solomon codeword is encoded by a distinct set of PPM data symbols. The provision of a distinct set of PPM data symbols for each codeword necessarily uses up valuable space in each tag. As an alternative to encoding each codeword in a distinct set of PPM symbols, individual symbols from two (or more) codewords can be merged into a single PPM symbol.
- Merged PPM data symbols not only save space in each tag, but may also assist in detecting errors during decoding. For example, if a symbol from one codeword is found to be in error during ECC decoding, then any symbol (or symbols) located in the same PPM symbol can be flagged as an erasure.
- The symbols from two (or more) codewords in a merged PPM data symbol may use the same error-correcting code (ECC) or they may use different error-correcting codes. For example, each symbol of the x-coordinate and y-coordinate codewords can be combined with a symbol of the common codeword(s) in a single PPM symbol. In this case the coordinate codewords may be encoded using a code with a smaller symbol size than the common codeword(s), such as a binary code.
- Whilst it is not feasible to elucidate all possible code configurations utilizing merged PPM data symbols, Tables 3 and 4 give examples of some possible code configurations using merged 2-9 PPM and 3-9 PPM data symbols. Where the error-correcting code (ECC) symbol size has multiple bits, then a Reed-Solomon code is typically used. Where the ECC symbol size is 1 bit, then a cyclic code, as described in Section 2.8, is typically used.
-
TABLE 3 Examples of combined tag encoding strategies available coordinate common data tag merged codeword codeword capacity encoding tag configuration PPM symbol symbol symbol per strategy (symbols) encoding size size size tag (1) 22 × 8 = 32 2-9PPM 5b 1b 4b 160b (2) 22 × 8 = 32 3-9PPM 6b 1b 5b 192b (3) 32 × 8 = 72 2-9PPM 5b 1b 4b 360b (4) 32 × 8 = 72 3-9PPM 6b 1b 5b 432b -
TABLE 4 Examples of Coordinate and Common Codeword Configurations Coordinate Codeword Common Codeword Configuration(s) for each tag Configuration(s) for each tag encoding strategy encoding strategy total total data data capacity Coordinate capacity Common of tag codewords of codewords Reed- coordinate encoding per Cyclic coordinate per Solomon codeword strategy tag Code codewords tag Code (s) (1) 2 (X, Y) (16, 8) 2 × 8 × 1b = 2 (A, B) (15, 7) 2 × 7 × 4b = 16b 56b (2) 2 (X, Y) (16, 8) 2 × 8 × 1b = 2 (A, B) (16, 8) 2 × 8 × 5b = 16b 80b 2 (X, Y) (16, 8) 2 × 8 × 1b = 1 (A) (31, 23) 1 × 23 × 5b = 16b 115b 2 (X, Y) (32, 16) 2 × 16 × 2 (A, B) (15, 7) 2 × 7 × 4b = 1b = 32b 56b (3) 2 (X, Y) (36, 20) 2 × 20 × 4 (A, B, (15, 7) (4 × 7 × 4b) + 1b = 40b C, D) + 1 (12, 4) (1 × 4 × (E) 4b) = 128b (4) 2 (X, Y) (36, 20) 2 × 20 × 4 (A, B, (18, 10) 4 × 10 × 5b = 1b = 40b C, D) 200b 2 (X, Y) (36, 20) 2 × 20 × 3 (A, B, (24, 16) 3 × 16 × 5b = 1b = 40b C) 240b 2 (X, Y) (36, 20) 2 × 20 × 2 (A, B) (31, 23) 2 × 23 × 5b = 1b = 40b 230b - A maximum-length LFSR (linear feedback shift register) produces as output a so-called m-sequence with a length of 2k−1, in which every possible non-zero register value appears once before the sequence repeats. Because each k-bit value appears exactly once in the m-sequence, a k-bit window into a known m-sequence yields a unique k-bit subsequence which in turn can be interpreted as a unique position within the m-sequence. Because of the cyclic nature of an m-sequence, a k-bit window onto a recurring m-sequence yields a locally unique position, i.e. modulo the length n of the m-sequence.
- Position decoding via a k-symbol window onto a recurring m-sequence of
length 2k−1 does not allow error detection or correction. However, position decoding via an n-symbol window onto a recurring cyclic codeword of length n does allow error detection and correction. - An arbitrary number of copies of a codeword of a cyclic (n, k) code C can be concatenated to form a sequence of arbitrary length. A window of size n onto the sequence is then guaranteed to yield a codeword of C. If the code is designed to contain exactly n codewords, then the dimension of the code is, by definition, k=logqn. If the code is designed so that all n codewords belong to the same and only cycle, then the window will yield n different codewords at n successive positions. Since there is a direct correspondence between a codeword and a position in the sequence (modulo n), each codeword can be uniquely mapped to one of n (relative) positions. Significantly, a position can be determined even in the presence of up to [(dmin−1)/2] symbol errors.
- As discussed in U.S. Pat. No. 7,082,562, the contents of which is herein incorporated by reference, the present Applicant refers to such a code as a “cyclic position code”. Any codeword of a cyclic position code defines the code. A cyclic position code is not a linear code, since it does not contain the zero vector. However, it is useful to use the terminology of linear codes in the following discussion. Many good cyclic position codes are linear codes with the zero vector removed.
- The cyclic shifts of a binary m-sequence of
length 2k−1 constitute all of the non-zero codewords of a linear cyclic code of length n=2k−1, dimension k, and minimum distance dmin=2k−1 (MacWilliams, F. J. and N. J. A. Sloane, “Pseudo-Random Sequences and Arrays”, Proceedings of the IEEE, Vol. 64, No. 12, December 1976). - More generally, m-sequences define a subset of the set of simplex codes. The simplex codes have length n=4m−1 and minimum distance dmin=(n+1)/2=2m. As implied by the name, the codewords of a simplex code define the equidistant vertices of an n-simplex. The minimum and maximum distances of a simplex code are therefore the same. For n prime, the Paley construction can be used to construct a cyclic simplex code using quadratic residues [MacWilliams, F. J. and N. J. A. Sloane, The Theory of Error-Correcting Codes, North-Holland, 1977; Wicker, S. B., Error Control Systems for Digital Communication and Storage, Prentice Hall, 1995]. For n prime or dmin=2k−1, then, a simplex code is cyclic and therefore defines a cyclic position code.
- A cyclic simplex code of length n=4m−1 defines an optimal cyclic position code in the sense that it has the largest minimum distance possible not only for its length but for any length
-
n<4(m+1)−1. - A w-bit window onto a cyclic simplex code also defines a cyclic position code. In this case the average distance within the window is:
-
avg(d(w))=wd min /n - The minimum distance within the window converges with the average distance within the window (and ultimately the minimum distance of the code) as the window size approaches the code length:
-
d min(w)→avg(d(w))→d min as w→n - For the same window size w, a larger code size n implies a smaller minimum distance dmin(w) within the window.
- When a Reed-Solomon coordinate codeword is spatially distributed throughout a tag (without replication), it becomes impractical to recover the entire codeword from an imaging window arbitrarily aligned with the tag pattern. The imaging window would be required to have a diameter of at least two tag diagonals in order to guarantee acquisition of a complete non-replicated coordinate codeword. Alternatively, the Applicant has described symbol arrangements whereby at least some X data symbols are positioned in a column of the tag, and at least some Y data symbols are positioned in a row of the tag (NPT087US). Symbol arrangements of this type can obviate at least some replication of coordinate data symbols whilst still allowing a substantially tag-sized imaging window. However, special symbol arrangements of this type inevitably constrain the design of tags.
- However, if the coordinate codeword is encoded using an underlying cyclic code then it becomes possible to reconstruct a valid codeword from fragments of adjacent tags' codewords. A coordinate codeword size of w bits corresponds to a w-bit window onto an underlying cyclic code of length n.
- There are two ways to encode the coordinates of adjacent tags. Assuming a codeword size of w bits, adjacent tags can either encode successive w-bit segments of the underlying code, or adjacent tags can encode w-bit segments of the underlying code shifted one bit relative to each other.
- This approach has the advantage that the dimension of the code, which determines its spatial extent, is minimized. Furthermore, as noted above, the minimum distance of a windowed cyclic position code increases with decreasing code dimension, so it is advantageous to minimize the code dimension. This approach nominally has the disadvantage that it sometimes only allows w−1 bits of the cyclic position code to be recovered from the window. However, as illustrated in Table 5, this does not necessarily imply a reduction in the minimum distance within the window.
- The alternative approach, whereby adjacent tags encode successive w-bit segments of the underlying code, has the advantage that it always allows w bits of the cyclic position code to be recovered from the window. However, this is usually outweighed by the reduction in minimum distance that the larger required code dimension entails.
- Assuming binary cyclic position codes for the x and y coordinates consists of the following
- bit sequences respectively:
-
(xn−1, xn−2, . . . , x1, x0) -
(yn−1, yn−2, . . . , y1, y0) - In the one-bit shifted approach, the ith tag in the x direction (counting from the left) and jth tag in the y direction (counting from the top) encodes the following w-bit subsequences:
-
(xi+w−1, xi+w−2, . . . , xi+1, xi) -
(yj+w−1, yj+w−2, . . . , yj+1, yj) -
FIG. 9 shows the layout of a 32-bit x-coordinate codeword (i.e. with w=32) intag 4B, where, for the ith tag in the x direction, symbol X0 encodes bit xi and symbol X31 encodes bit Xi+31. -
FIG. 10 shows the layout of a 32-bit y-coordinate codeword (i.e. with w=32) intag 4B, where, - for the jth tag in the y direction, symbol Y0 encodes bit yj and symbol Y31 encodes bit yj+31.
- The codeword layout in
FIGS. 7 and 8 guarantees that a square 24-macrodot window onto the coding pattern will always acquire contiguous 31-bit or 32-bit subsequences from the two cyclic position codes used to encode the x and y coordinates. - A 24-macrodot window corresponds to 20 macrodot units (the length l of the tag) plus four macrodot units (the length q of a symbol). Hence, the 24-macrodot window guarantees that pulse-position modulated values are decoded from spatially-coherent samples (i.e. from a whole symbol as opposed to partial symbols at opposite sides of the field of view).
- The symbols in
FIG. 9 are arranged in columns, which may overlap partially with each other. A 1st column contains symbols X0 and X1; a 2nd column contains symbols X2 and X3; a 3rd column contains X4, X5, X6 and X7; a 4th column contains symbols X8, X9, X10 and X11; a 5th column contains symbols X12 and X13 etc. The width v of each column corresponds to the length or width of each symbol, depending on the orientation of symbols within the column. Hence, the maximum width v of each column is 4 macrodots, corresponding to the length of one symbol. - Likewise, the symbols in
FIG. 10 are arranged in rows, which may overlap partially with each other. A 1st row contains symbols Y0 and Y1; a 2nd row contains symbols Y2 and Y3; a 3rd row contains Y4, Y5, Y6 and Y7; a 4th row contains symbols Y8, Y9, Y10 and Y11; a 5th row contains symbols Y12 and Y13 etc. The width v of each column corresponds to the length or width of each symbol, depending on the orientation of symbols within the column. Hence, the maximum width v of each row is 4 macrodots, corresponding to the length of one symbol. - Unless the imaging window coincides precisely with the beginning of a tag or the beginning of certain rows and columns, then a 31-bit subsequence will be acquired from the imaging window rather than the full 32-bit subsequence. For example, a 24-macrodot imaging window beginning 1 macrodot from the left-hand edge of the tag in
FIG. 9 (i.e. a window beginning in the middle of the 1st column containing X0 and X1) will acquire symbols X4 to X31 from that tag (a first imaged tag), and symbols X0 to X3 from an adjacent tag to the right (a second imaged tag). Since the second imaged tag contains a 32-bit subsequence shifted by one bit relative to the first imaged tag, then symbol X1 in the second imaged tag corresponds to X0 in the first imaged tag; symbol X2 in the second imaged tag corresponds to X1 in the first imaged tag; and symbol X3 in the second imaged tag corresponds to X2 in the first imaged tag. Hence, a contiguous 31-bit subsequence may be assembled, which consists of X0-X2 and X4-X31 in the first imaged tag. Although one bit (X3) is missing from this acquired subsequence, there is still sufficient data to determine a maximally likelihood offset in the cyclic code and, hence, the x-coordinate codeword of the first imaged tag. - Of course, similar considerations apply to the y-coordinate codeword encoded by symbols Y0-Y31 in
FIG. 10 . Accordingly, any 24-macrodot square window is sufficient to acquire at least a 31-bit subsequence of each off the two underlying code used to encode the x- and y-coordinated. Hence, an x-coordinate codeword and y-coordinate codeword may be determined from each 24-macrodot imaging window. -
FIG. 11 andFIG. 12 show possible layouts of corresponding common A and B Reed-Solomon codewords defined over GF(24) (assuming a 3-9 PPM encoding). CombiningFIGS. 7 to 10 , it will be appreciated that each PPM data symbol in the tag is a merged symbol, as described in Section 2.7, encoding a 1-bit X data symbol from the x-coordinate codeword, a 1-bit Y data symbol from the y-coordinate codeword and either a multi-bit A symbol from a common A Reed-Solomon codeword or a multi-bit B symbol from a common B Reed-Solomon codeword. - As noted earlier, any Reed-Solomon symbols corrected in the A and B codewords can be used to flag erasures in corresponding X and Y symbols during decoding.
-
FIG. 13 shows the layout of a 16-bit x-coordinate codeword (i.e. with w=16) intag 4B, where, for the ith tag in the x direction, symbol X0 encodes bit and symbol encodes bit xi and symbol X15 encodes bit xi+15. -
FIG. 14 shows the layout of a 16-bit y-coordinate codeword (i.e. with w=16) intag 4B, where, for the jth tag in the y direction, symbol Y0 encodes bit yj and symbol Y15 encodes bit yj+15. - Again, the codeword layout in
FIGS. 11 and 12 guarantees that a 24-macrodot window onto the tag pattern will always acquire contiguous 15-bit or 16-bit subsequences from the two cyclic position codes used to encode the x and y coordinates. -
FIG. 11 andFIG. 12 show possible layouts of corresponding common A and B codewords defined over GF(24) (assuming a 2-9 PPM encoding), or over GF(25) (assuming a 3-9 PPM encoding). CombiningFIGS. 13 and 14 withFIGS. 11 and 12 , it will be appreciated that each PPM data symbol in the tag is a merged symbol, as described in Section 2.7. Some merged PPM data symbols encode a 1-bit X data symbol from the x-coordinate codeword and multi-bit A symbol from a common A Reed-Solomon codeword. Some merged PPM data symbols encode a 1-bit Y data symbol from the y-coordinate codeword a multi-bit B symbol from a common B Reed-Solomon codeword. - In this approach, any given tag contains a w-bit subsequence corresponding to offset i in the cyclic code sequence. Adjacent tags on either side of the given tag contain w-bit subsequences corresponding to offsets (i+w) and (i−w) in the cyclic code sequence. Hence, adjacent tags contain successive w-bit subsequences of the underlying code sequence, rather than 1-bit shift subsequences as described in Section 2.8.3.
- As noted above, this approach has the advantage that it always allows w bits of the cyclic position code to be recovered from the window—there is no potential loss of 1 bit from any w-bit subsequence acquired from the 24-macrobit imaging window described in Section 2.8.3. Moreover, determination of fractional tag coordinates is possible, since an offset in the underlying code may correspond to a column or row within a tag, rather than just a particular tag. However, the determination of fractional tag coordinates may only have limited usefulness, because similar information could potentially be derived from the translation codewords.
- The layout of coordinate codeword symbols and common codeword symbols in
tag 4B may be the same as those used inFIGS. 9 to 14 , as described in Section 2.8.3. - Hence, it will be appreciated that each PPM data symbol in tags using the successive subsequence approach may be a merged symbol, as described in Section 2.7. A merged symbol may encode at least one of: a 1-bit X data symbol from an x-coordinate codeword, a 1-bit Y data symbol from a y-coordinate codeword and a multi-bit symbol from a common Reed-Solomon codeword.
- Likewise, any Reed-Solomon symbols corrected in the common codeword(s) can be used to flag erasures in corresponding X and Y symbols during decoding.
- Table 5 defines some optimal simplex codes for cyclic position coding. These are optimal in the sense that the minimum distance for both window sizes is maximized.
-
TABLE 5 Some optimal simplex codes for cyclic position coding code dmin dmin dimension code size spatial primitive (w = 15, (w = 31, (k) (n) extenta polynomial 16) 32) 8 255 0.6 m 1,0001,1101 4 (9) 1,1000,0111 (3) 11 9 511 1.2 m 10,0001,1011 3 10 10 1023 2.4 m 111,1111,1001 aassuming a minimum macrodot spacing of 120 μm - The primitive polynomial refers to the polynomial used to generate the code in an LFSR, since it is impractical to reproduce the entire code in table format. The primitive polynomial used to generate simplex code sequences will be readily understood by the person skilled in the art.
- Data encoded by common codeword(s) is encoded using a Reed-Solomon code defined over GF(24), GF(25) or GF(26). The code has a natural length n of 15, 31 or 63, respectively. 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.
- The code may be punctured, by removing high-order redundancy symbols, to obtain a code with reduced length and reduced error correcting capacity. The code may also be shortened, by replacing high-order data symbols with zeros, to obtain a code with reduced length and reduced data capacity. Both puncturing and shortening can be used to obtain a code with particular parameters. Shortening is preferred, where possible, since this avoids the need for erasure decoding. For example, some of the Reed-Solomon codes described in Table 4 are shortened and/or punctured codes.
- The code has one of the following primitive polynomials, respectively:
-
P 4(x)=x 4 +x+1 -
p 5(x)=x 5 +x 2+1 -
p 6(x)=x 6 +x+1 - The code has the following generator polynominal:
-
- 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.
- As shown in
FIG. 15 , redundancy coordinates ri and data coordinates di of the code are indexed from left to right according to the power of their corresponding polynomial terms. The symbols Xi 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. - The region ID is protected by a 16-bit cyclic redundancy check (CRC). This provides an added layer of error detection after Reed-Solomon error correction, in case a codeword containing a part of the region ID is mis-corrected.
- The CRC has the following generator polynomial:
-
g(x)=x 16 +x 12 +x 5+1 - The CRC is initialised to 0xFFFF. The most significant bit of the region ID is treated as the most significant coefficient of the data polynomial.
- 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.
- 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.
- The position encoded in a tag is defined in units of tags and is defined to be the centre of the top left target. The origin of a particular tag pattern is therefore the centre of the top left target of the tag that encodes coordinate pair (0, 0).
- The surface coding is optionally displaced from its nominal position relative to the surface by an amount derived from the region ID. This ensures that the utilisation of a pagewidth digital printhead used to print the surface coding is uniform. The displacement of the surface coding is negative, hence the displacement of the region described by the surface coding is positive relative to the surface coding. The magnitude of the displacement is the region ID modulo the width of the tag in 1600 dpi dots (i.e. 240). To accommodate non-1600 dpi printers the actual magnitude of the displacement may vary from its nominal value by up to half the dot pitch of the printer.
- Table 6 defines the information fields embedded in the surface coding.
-
TABLE 6 Field Definitions field description unique to tag active area flag A flag indicating whether the areaa immediately surrounding a tag intersects an active area. x coordinate The unsigned x coordinate of the tagb. y coordinate The unsigned y coordinate of the tagb. common to tagged region encoding format The format of the encoding. 0: the present encoding. Other values are reserved region flags Flags controlling the interpretation of region data (see Table 7). macrodot size ID The ID of the macrodot size. region ID The ID of the region containing the tags. secret-key signature An optional secret-key signature of the region. CRC (Cyclic Redundancy A CRC of region ID (see Section 2.9). Check) 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 - 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 theNetpage 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 7 Region flags bit meaning 0 Region is interactive, i.e. x and y-coordinates are present. 1 Region is active, i.e. the entire region is an active area. Otherwise active areas are identified by individual tags' active area flags. 2 Region ID is not serializeda. 3 Region has secret-key signature (see Section 2.13) 4 Region has embedded data. 5 Embedded data is a public-key signature (see Sections 2.12 and 2.13). 6 Region has long coordinatesb. 7 Region has a long region IDc. 8 Region ID is an EPC. 9 Region is displaced according to region ID (see Section 2.10) aFor an EPC this means that the serial number is replaced by a layout number, to allow the package design associated with a product to vary over time (see US 2007/0108285, the contents of which is herein incorporated by reference). bHence the X and Y Reed-Solomon codewords have less redundancy. cHence, the B, C and D Reed-Solomon codewords have less redundancy. - Codeword E (when present) either contains a data fragment or a secret-key signature. These are described in Section 2.12 and Section 2.13 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 in a particular tag if the <region contains embedded data> flag in the region flags is set and the tag does not already contain a secret-key signature.
- 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 and E codewords i.e. the X and Y codewords are present if the <region is interactive> flag in the region flags is set. The E codeword is present if a secret-key signature or data fragment is present.
- If the <region has 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.
- 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.
- As shown in Table 8, each block may have a data capacity of 176-bits. The block data is encoded in the data fragments of a contiguous group of six tags arranged in a 3×2 rectangle.
- The block parameters are as defined in Table 8. The E codeword of each tag may encode a fragment of the embedded data.
-
TABLE 8 Block parameters parameter value description w 3 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 - If the E codeword of a particular tag does not contain a fragment of the embedded data, then the
pen 400 can discover this implicitly by the failure of the codeword to decode, or explicitly from the tag's active area flag. - Data of arbitrary size may be encoded into a superblock consisting of a contiguous set of blocks, typically arranged in a rectangle. The size of the superblock may be encoded in each block.
- The superblock is replicated in the surface coding as many times as it will fit, including partially along the edges of the surface coding.
- The data encoded in the superblock may include, for example, more precise type information, more precise size information, and more extensive error detection and/or correction data.
- If the <region has a secret-key signature> flag in the region flags is set, then the region has 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.
- 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.
- 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.
- The actual length and type of the signature are determined from the region ID during signature verification i.e. typically from a previously-retrieved digital signature associated with a sequence of region IDs.
- Digital signature verification is discussed in the Applicant's US Publication No. 2007/0108285, the contents of which are herein incorporated by reference.
- The minimum imaging field of view required to guarantee acquisition of data from an
entire tag 4B has a diameter of 33.9 s (i.e. ((2×10)+4)√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+4s) captures the requisite information in full from spatially coherent samples, 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. - 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+4s)√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.
- The extra four macrodot units ensure that pulse-position modulated values can be decoded from spatially coherent samples i.e. from whole symbols rather than partial symbols at opposite sides of the imaging field of view.
- By analogy, the minimum imaging field of view required to guarantee acquisition of data from an
entire tag 4A has a diameter of 48. Is (i.e. ((3×10)+4)√2s). - In the present context, a “tag diameter” is given to mean the length of a tag diagonal.
-
FIG. 16 shows a tag image processing and decoding process flow up to the stage of sampling registration symbols and decoding the translation codewords. Firstly, araw 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. Theraw image 802 is then typically enhanced (at 804) to produce anenhanced image 806 with improved contrast and more uniform pixel intensities. Image enhancement may include global or local range expansion, equalization, and the like. Theenhanced image 806 is then typically filtered (at 808) to produce afiltered image 810. Image filtering may consist of low-pass filtering, with the low-pass filter kernel size tuned to obscure macrodots 302 but to preservetargets 301. Thefiltering step 808 may include additional filtering (such as edge detection) to enhance target features 301. Encoding ofdata symbols 304 using pulse position modulation (PPM) provides a moreuniform coding pattern 3 than simple binary dot encoding (as described in, for example, U.S. Pat. No. 6,832,717). Advantageously, this helpsseparate targets 301 from data areas, thereby allowing more effective low-pass filtering of the PPM-encoded data compared to binary-coded data. - Following low-pass filtering, the filtered
image 810 is then processed (at 812) to locate thetargets 301. This may consist of a search for target features whose spatial inter-relationship is consistent with the known geometry of the tag pattern (i.e. targets positioned at the corners of square cells). Candidate targets may be identified directly from maxima in the filteredimage 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 theenhanced 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. - The identified targets 301 are then assigned (at 816) to a
target grid 818. Each cell of thegrid 818 contains asymbol 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 thetarget grid 818, since thetargets 301 do not themselves demarcate one tag from another. - 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. - Since each image will typically contain at least 9 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.
- 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. - The next stage determines a type of position-coding pattern being imaged by the
pen 400 from a translation codeword. In other words, this stage distinguishes a first position-codingpattern containing tags 4A (3×3) from a second position-codingpattern containing tags 4B (2×2) for subsequent sampling and decoding. - Two or more orthogonal registration symbols (‘VRS’ and ‘HRS’) are sampled (at 824), to allow decoding of the orthogonal translation codewords and the orthogonal direction codewords. A flag symbol value may also be decoded subsequently from the decoded registration symbols.
- Decoding of the orthogonal translation codewords (at 828) yields either a (0, 1, 2) translation codeword or a (3, 4) translation codeword (at 830).
- Referring now to
FIG. 17 , the (0, 1, 2) translation codeword indicates nine symbol groups per tag, thereby identifying (at 832A) the imaged position-coding pattern as containingtags 4A. Alternatively, the (3, 4) translation codeword indicates four symbol groups per tag, thereby identifying (at 832B) the imaged position-coding pattern as containingtags 4B. - Once the position-coding pattern has been identified at 832A or 832B, subsequent sampling and decoding proceeds in accordance with the position-coding pattern thus identified. Accordingly, the decoded orthogonal translation codewords are used to determine the translation of tags(s) in the field of view relative to the
target grid 818. This enables alignment of thetags target grid 818, thereby allowing individual tag(s), or portions thereof, to be distinguished in thecoding pattern 3 in the field of view. In the first case, thetags 4A (each containing nine symbol groups) are aligned (at 834A) with thetarget grid 818. In the second case, thetags 4B (each containing four symbol groups) are aligned (at 834B) with thetarget grid 818. - Since each
symbol group 303 contains orthogonal registration symbols, multiple translation codes can be decoded to provide robust translation determination. As described in Section 2.6, 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×M. This allows robust determination of the alignment oftags target grid 818. The alignment needs to be both robust and accurate since there are many possible alignments when each tag containsmultiple symbol groups 303. - After the translation of
symbol groups 303 relative totags orientation - 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 can then be sampled and decoded (at 840A or 840B) to yield the requisite decoded
codewords - For example, decoding of data codewords from a
tag 4B may proceed as follows: -
- sample and decode common Reed-Solomon codeword (A)
- determine encoding format, and reject unknown encoding
- on decode error flag bad format sample
- determine region ID Reed-Solomon codeword format from region flags
- verify CRC of region ID
- on decode error flag bad region ID sample
- detect any erroneous symbols in region ID Reed-Solomon common codeword
- determine region ID
- sample and decode x and y coordinate Reed-Solomon codewords (X and Y), treating any coordinate symbols co-encoded with the detected erroneous symbols as erasures
- determine tag x-y location from codewords
- determine nib x-y location from tag x-y location and perspective transform taking into account macrodot size (from macrodot size ID)
- encode region ID and nib x-y location in digital ink (“interaction data”)
- In practice, when decoding a sequence of images of a tag pattern, it is useful to exploit inter-frame coherence to obtain greater effective redundancy.
- Region ID decoding need not occur at the same rate as position decoding.
- The skilled person will appreciate that the decoding sequence described above represents one embodiment of the present invention, based on a simple coding pattern containing only one common codeword (A) encoding the region ID. However, it will, of course, be appreciated that the interaction data sent from the
pen 400 to the netpage system may include other data e.g. digital signature (see Section 2.13), pen mode (see US 2007/125860 incorporated herein by reference), orientation data, force data, pen ID, nib ID etc. - An example of interpreting interaction data, received by the netpage system from the
netpage pen 400, is discussed briefly above inSection 1. 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). - 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.
- 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. - 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. - 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 theNetpage server 10, is referred to herein as “interaction data”. - 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.
- 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.
- 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.
- 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.
- 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.
- 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.
-
FIG. 18 shows a rounded triangular profile gives thepen 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 betweenthumb 402,index finger 404 andmiddle finger 406. - As shown in
FIG. 19 , a typical user writes with thepen 400 at a nominal pitch of about 30 degrees from the normal toward thehand 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 thepen 400 is able to image the pattern on the paper has been optimised for this asymmetric usage. The shape of thepen 400 helps to orient the pen correctly in the user'shand 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. - The
cap 410 is designed to fit over the top end of thepen 400, allowing it to be securely stowed while the pen is in use. Multi colour LEDs illuminate astatus window 412 in the top edge (as in the apex of the rounded triangular cross section) of thepen 400 near its top end. Thestatus 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). - As shown in
FIG. 20 , the grip portion of the pen has ahollow chassis molding 416 enclosed by abase molding 528 to house the other components. Theink 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 themain PCB 422 in the centre of the pen and for thebattery 424 in the base of the pen. By referring toFIG. 21A , it can be seen that this also naturally places the tag-sensing optics 426 unobtrusively below the nib 418 (with respect to nominal pitch). Thenib molding 428 of thepen 400 is swept back below theink cartridge 414 to prevent contact between thenib molding 428 and the paper surface when the pen is operated at maximum pitch. - As best shown in
FIG. 21B , the imaging field ofview 430 emerges through a centrally positioned IR filter/window 432 below thenib 418, and two near-infrared illumination LEDs nib molding 428. EachLED illumination field - 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.
- 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.
-
FIG. 22 is a longitudinal cross section through the centre-line if the pen 400 (with thecap 410 stowed on the end of the pen). The pen incorporates red andgreen LEDs 444 to indicate several states, using colours and intensity modulation. Alight pipe 448 on theLEDs 444 transmit the signal to thestatus indicator window 412 in thetube 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. - 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 theLED indicators 444 or high levels of ambient light. The haptic system indicates to the user when: -
- The pen wakes from standby mode
- There is an error with an action
- To acknowledge a transaction
- 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 9 Optical Specifications Magnification ~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 .~/6.5 mm Exposure time 200 us Wavelength 810 nm Image sensor size 140 × 140 pixels Pixel size 10 um Pitch range ~15 to. 45 deg Roll range ~30 to. 30 deg Yaw range 0 to 360 deg Minimum sampling 2.25 pixels per rate macrodot Maximum pen 0.5 m/s velocity 1Allowing 70 micron blur radius 2Illumination and filter 3Pitch, roll and yaw are relative to the axis of the pen - Cross sections showing the pen optics are provided in
FIGS. 23A and 23B . An image of the Netpage tags printed on asurface 548 adjacent to thenib 418 is focused by alens 488 onto the active region of animage sensor 490. Asmall aperture 494 ensures the available depth of field accommodates the required pitch and roll ranges of thepen 400. - First and
second LEDs 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. - A
longpass IR filter 432 suppresses the response of theimage sensor 490 to any coloured graphics or text spatially coincident with imaged tags and any ambient illumination below the cut-off wavelength of thefilter 432. The transmission of thefilter 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. - A ray trace of the optic path is shown in
FIG. 24 . Theimage sensor 490 is a CMOS image sensor with an active region of 140 pixels squared. Each pixel is 10 μm squared, with a fill factor of 93%. Turning toFIG. 25 , thelens 488 is shown in detail. The dimensions are: -
- D=3 mm
- R1=3.593 mm
- R2=15.0 mm
- X=0.8246 mm
- Y=1.0 mm
- Z=0.25 mm
- 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 ofview 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.10. - 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 theimage sensor 490 of 10 μ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 animage sensor 490 of minimum 128×128 pixels. Theimage sensor 490 however is 140×140 pixels, in order to accommodate manufacturing tolerances. This allows up to +/−120 μ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. - 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. - A 0.8
mm diameter aperture 494 is used to provide the depth of field requirements of the design. - 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 μm.
- Due to the geometry of the pen design, the pen operates correctly over a pitch range of 33.0 to 45.0 degrees.
- Referring to
FIG. 26 , theoptical axis 550 is pitched 0.8 degrees away from thenib axis 552. The optical axis and the nib axis converge toward thepaper surface 548. With thenib axis 552 perpendicular to the paper, the distance A between the edge of the field ofview 430 closest to the nib axis and the nib axis itself is 1.2 mm. - 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 CO2 laser cutter. -
-
TABLE 10 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) -
FIG. 27 is a block diagram of the pen electronics. The electronics design for the pen is based around five main sections. These are: -
- the
main ARM7 microprocessor 574, - the image sensor and
image processor 576, - the
Bluetooth communications module 578, - the power management unit IC (PMU) 580 and
- the
force sensor microprocessor 582.
- the
- 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 SRAM and 2 MBytes of external flash memory in a stack chip package.
- This
microprocessor 574 forms the core of thepen 400. Its duties include: -
- setting up the Jupiter image sensor 584,
- decoding images of Netpage coding pattern (see Section 2.14), 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, - setting up the power management IC (PMU) 580,
- compressing and sending digital ink via the
Bluetooth communications module 578, and
programming theforce sensor microprocessor 582.
- The
ARM7 microprocessor 574 runs from an 80 MHz oscillator. It communicates with theJupiter image sensor 576 using a Universal Synchronous Receiver Transmitter (USRT) 586 with a 40 MHz clock. TheARM7 574 communicates with theBluetooth module 578 using a Universal Asynchronous Receiver Transmitter (UART) 588 running at 115.2 kbaud. Communications to thePMU 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. - The
ARM7 microprocessor 574 is programmed via its JTAG port. - 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.14 and US Publication No. 2005/0024510) before macrodot sampling and decoding by themicroprocessor 574. - Jupiter controls the strobing of two
infrared LEDs - 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 Mbitflash 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 (EDR) specification which allows communication at up to 3 Mbps. - A 2.45
GHz chip antenna 486 is used on the pen for the Bluetooth communications. - 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.
- 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 LR2.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.3 gpp.org).
- 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.
- The
PMU 580 communicates with theARM7 microprocessor 574 via theLSS bus 590. - The force sensor subsystem comprises a custom Hokuriku force sensor 500 (based on Hokuriku, HFD-500 Force Sensor, http://www.hdk.co.jp/pdf/eng/e1381AA.pdf), an amplifier and
low pass filter 600 implemented using op-amps and aforce sensor microprocessor 582. - 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.
- 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 theforce sensor microprocessor 582 at 5 kHz. - 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).
- 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 theJupiter 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 theamplifier stage 600. - The
force sensor microprocessor 582 communicates with theARM7 microprocessor 574 via theLSS bus 590. There are two separate interrupt lines from theforce sensor microprocessor 582 to theARM7 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. - The force sensor microprocessor flash memory is programmed in-circuit by the
ARM7 microprocessor 574. - The
force sensor microprocessor 582 also provides the real time clock functionality for thepen 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 thecap 472 is on and theARM7 574 is powered down. Hence theforce sensor microprocessor 582 uses a low power LDO separate from thePMU 580 as its power source. The real time clock functionality includes an interrupt which can be programmed to power up theARM7 574. - The cap switch 602 is monitored by the
force sensor microprocessor 582. When thecap assembly 472 is taken off (or there is a real time clock interrupt), theforce sensor microprocessor 582 starts up the ARM7 572 by initiating a power on and reset cycle in thePMU 580. - The Netpage pen software comprises that software running on microprocessors in the
Netpage pen 400 and Netpage pod. - 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. Thepen BlueCore 578 also runs firmware supplied by the module manufacturer, and this firmware is not considered a part of the Netpage pen software. - 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.
- As the
Netpage pen 400 traverses a Netpage taggedsurface 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. - 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 theCPU 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. - 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. - 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.
- 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.
Claims (20)
1. A method of decoding a position-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 tags, each tag encoding a w-bit subsequence of a cyclic code sequence, said w-bit subsequence mapping to a corresponding coordinate codeword for said tag, wherein adjacent tags contain w-bit subsequences shifted by one bit relative to each other in the cyclic code sequence;
(b) sampling a windowed subsequence contained in said imaged portion;
(c) identifying a coordinate codeword using said windowed subsequence; and
(d) determining a position of the optical reader from said coordinate codeword
wherein said imaged portion has a diameter of more than one tag diameter and less than two tag diameters.
2. The method of claim 1 , wherein said windowed subsequence contains a first subsequence from at least one first tag and a second subsequence from at least one second tag, said first and second tags being adjacent to each other, and wherein said method comprises the step of:
combining said first and second subsequences; and
using the combined first and second subsequences to identify said coordinate codeword.
3. The method of claim 1 , wherein, if the combined first and second subsequences does not map to a valid coordinate codeword, said method comprises the step of:
determining a corresponding maximally likely coordinate from said combined first and second subsequences.
4. The method of claim 1 , wherein said w-bit subsequence is represented by a set of coordinate data symbols in said tag, each of said coordinate data symbols containing at least one bit of the w-bit subsequence, each coordinate data symbol being represented by one or more data elements disposed on said surface.
5. The method of claim 1 , wherein the cyclic code sequence is an m-sequence or a simplex code.
6. The method of claim 1 , wherein said cyclic code sequence has a length n and a dimension k, and wherein: n>w>k.
7. The method of claim 1 , wherein a given tag contains a w-bit subsequence corresponding to offset i in the cyclic code sequence, and adjacent tags on either side of said given tag contain w-bit subsequences corresponding to offsets (i+1) and (i−1) in the cyclic code sequence.
8. The method of claim 1 , wherein said position-coding pattern comprises a plurality of target elements defining a target grid, said target grid comprising a plurality of cells, each cell defining a symbol group, wherein neighboring symbol groups share target elements.
9. The method of claim 8 , wherein each tag is square and contains a plurality of symbol groups.
10. The method of claim 4 , wherein each coordinate data symbol is a 1-bit symbol such that w coordinate data symbols represent said w-bit subsequence.
11. The method of claim 4 , wherein said imaged portion has a diameter of at least (l+q)√2 and spans across parts of at least first and second adjacent tags, said set of coordinate data symbols being arranged in each tag such that said windowed subsequence contained in said imaged portion is guaranteed to contain at least (w−1) bits of a w-bit subsequence, said method further comprising the step of:
combining a first subsequence from at least one first tag with a second subsequence from at least one second tag to retrieve at least (w−1) bits of the w-bit subsequence,
wherein l is a length of the tag and q is a length or a width of a coordinate data symbol.
12. The method of claim 11 , wherein said windowed subsequence contains only (w−1) bits of the w-bit subsequence, and said method further comprises the step of:
determining a maximally likely coordinate corresponding to said windowed subsequence.
13. The method of claim 4 , wherein each tag contains an x-coordinate codeword mapped from a first cyclic code sequence and a y-coordinate codeword mapped from a second cyclic code sequence, said x-coordinate codeword being defined by a first set of x-coordinate data symbols, and said y-coordinate codeword being defined by a second set of y-coordinate data symbols.
14. The method of claim 13 , wherein said first set is arranged in subsets of x-coordinate data symbols and said second set is arranged in subsets of y-coordinate data symbols.
15. The method of claim 14 , wherein each subset of x-coordinate data symbols is configured as a column containing a plurality of said x-coordinate data symbols, and each subset of y-coordinate data symbols is configured as a row containing a plurality of said y-coordinate data symbols, wherein each of said rows and columns has a maximal width v.
16. The method of claim 15 , wherein said imaged portion has a diameter of at least (l+v)√2 and spans across parts of a plurality of adjacent tags, said columns of x-coordinate symbols and said rows of y-coordinate symbols being arranged such said windowed subsequence contained in said imaged portion is guaranteed to contain at least (w−1) bits of a w-bit subsequence in said first cyclic code sequence and at least (w−1) bits of a w-bit subsequence in said second cyclic code sequence, said method further comprising at least one step selected from the steps of:
combining subsequences from adjacent tags in at least one row of tags to retrieve at least (w−1) bits of the w-bit subsequence in said first cyclic code sequence; and
combining subsequences from adjacent tags in at least one column of tags to retrieve at least (w−1) bits of the w-bit subsequence in said second cyclic code sequence,
wherein l is a length of each tag.
17. The method of claim 4 , wherein one or more of said coordinate data symbols is a merged data symbol, each merged data symbol being represented by said one or more data elements, and wherein each merged data symbol encodes at least one of said coordinate data symbols and at least one further data symbol which is different from said coordinate data symbol.
18. An optical reader configured for decoding a position-coding pattern disposed on a surface of a substrate, said coding pattern comprising:
a plurality of tags, each tag encoding a w-bit subsequence of a cyclic code sequence, said w-bit subsequence mapping to a corresponding coordinate codeword for said tag, wherein adjacent tags contain a w-bit subsequence shifted by one bit relative to each other in the cyclic code sequence;
said optical reader comprising:
means for accessing said cyclic code sequence;
an image sensor for capturing an image of a portion of said position-coding pattern, said image sensor having a field-of-view of more than one tag diameter and less than two tag diameters; and
a processor configured for performing the steps of:
(i) sampling a windowed subsequence contained in said imaged portion;
(ii) accessing said cyclic code sequence and comparing said windowed subsequence with the accessed cyclic code sequence;
(iii) identifying a coordinate codeword using said windowed subsequence; and
(iv) determining a position of the optical reader from said coordinate codeword.
19. The optical reader of claim 1 , wherein said imaged portion spans across parts of at least first and second adjacent tags such that said windowed subsequence contains a first subsequence from at least one first tag and a second subsequence from at least one second tag, wherein said processor is further configured for:
combining said first and second subsequences; and
using the combined first and second subsequences to identify said coordinate codeword.
20. A system for decoding a position-coding pattern disposed on a surface of a substrate, said system comprising:
(A) said substrate, wherein said position-coding pattern comprises:
a plurality of tags, each tag encoding a w-bit subsequence of a cyclic code sequence, said w-bit subsequence mapping to a corresponding coordinate codeword for said tag, wherein adjacent tags contain a w-bit subsequence shifted by one bit relative to each other in the cyclic code sequence; and
(B) an optical reader comprising:
means for accessing said cyclic code sequence;
an image sensor for capturing an image of a portion of said position-coding pattern, said image sensor having a field-of-view of more than one tag diameter and less than two tag diameters; and
a processor configured for performing the steps of:
(i) sampling a windowed subsequence contained in said imaged portion;
(ii) accessing said cyclic code sequence and comparing said windowed subsequence with the accessed cyclic code sequence;
(iii) identifying a coordinate codeword using said windowed subsequence; and
(iv) determining a position of the optical reader from said coordinate codeword.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/539,589 US20100086209A1 (en) | 2008-10-02 | 2009-08-11 | Method of imaging position-coding pattern having tag coordinates encoded by bit-shifted subsequences of cyclic position code |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10229908P | 2008-10-02 | 2008-10-02 | |
US12/539,589 US20100086209A1 (en) | 2008-10-02 | 2009-08-11 | Method of imaging position-coding pattern having tag coordinates encoded by bit-shifted subsequences of cyclic position code |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100086209A1 true US20100086209A1 (en) | 2010-04-08 |
Family
ID=42072943
Family Applications (13)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/539,583 Abandoned US20100084472A1 (en) | 2008-10-02 | 2009-08-11 | Method of distinguishing first coding pattern from second coding pattern |
US12/539,579 Expired - Fee Related US8328109B2 (en) | 2008-10-02 | 2009-08-11 | Coding pattern comprising registration symbols for identifying the coding pattern |
US12/539,603 Abandoned US20100086171A1 (en) | 2008-10-02 | 2009-08-11 | Method of imaging coding pattern having merged data symbols |
US12/539,588 Abandoned US20100084479A1 (en) | 2008-10-02 | 2009-08-11 | Position-coding pattern having tag coordinates encoded by bit-shifted subsequences of cyclic position code |
US12/539,599 Abandoned US20100084481A1 (en) | 2008-10-02 | 2009-08-11 | Coding pattern having merged data symbols |
US12/539,592 Expired - Fee Related US8282016B2 (en) | 2008-10-02 | 2009-08-11 | Position-coding pattern having tag coordinates encoded by successive subsequences of cyclic position code |
US12/539,580 Abandoned US20100084478A1 (en) | 2008-10-02 | 2009-08-11 | Coding pattern comprising columns and rows of coordinate data |
US12/539,605 Abandoned US20100085607A1 (en) | 2008-10-02 | 2009-08-11 | Method of encoding coding pattern |
US12/539,589 Abandoned US20100086209A1 (en) | 2008-10-02 | 2009-08-11 | Method of imaging position-coding pattern having tag coordinates encoded by bit-shifted subsequences of cyclic position code |
US12/539,586 Abandoned US20100084468A1 (en) | 2008-10-02 | 2009-08-11 | Method of imaging coding pattern comprising columns and rows of coordinate data |
US12/539,597 Abandoned US20100086236A1 (en) | 2008-10-02 | 2009-08-11 | Method of imaging position-coding pattern having tag coordinates encoded by successive subsequences of cyclic position code |
US13/532,781 Abandoned US20120267439A1 (en) | 2008-10-02 | 2012-06-26 | Position-coding pattern having tag coordinates encoded by bit-shifted subsequences of cyclic position code |
US13/711,567 Abandoned US20130175349A1 (en) | 2008-10-02 | 2012-12-11 | Coding pattern comprising registration symbols for identifying the coding pattern |
Family Applications Before (8)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/539,583 Abandoned US20100084472A1 (en) | 2008-10-02 | 2009-08-11 | Method of distinguishing first coding pattern from second coding pattern |
US12/539,579 Expired - Fee Related US8328109B2 (en) | 2008-10-02 | 2009-08-11 | Coding pattern comprising registration symbols for identifying the coding pattern |
US12/539,603 Abandoned US20100086171A1 (en) | 2008-10-02 | 2009-08-11 | Method of imaging coding pattern having merged data symbols |
US12/539,588 Abandoned US20100084479A1 (en) | 2008-10-02 | 2009-08-11 | Position-coding pattern having tag coordinates encoded by bit-shifted subsequences of cyclic position code |
US12/539,599 Abandoned US20100084481A1 (en) | 2008-10-02 | 2009-08-11 | Coding pattern having merged data symbols |
US12/539,592 Expired - Fee Related US8282016B2 (en) | 2008-10-02 | 2009-08-11 | Position-coding pattern having tag coordinates encoded by successive subsequences of cyclic position code |
US12/539,580 Abandoned US20100084478A1 (en) | 2008-10-02 | 2009-08-11 | Coding pattern comprising columns and rows of coordinate data |
US12/539,605 Abandoned US20100085607A1 (en) | 2008-10-02 | 2009-08-11 | Method of encoding coding pattern |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/539,586 Abandoned US20100084468A1 (en) | 2008-10-02 | 2009-08-11 | Method of imaging coding pattern comprising columns and rows of coordinate data |
US12/539,597 Abandoned US20100086236A1 (en) | 2008-10-02 | 2009-08-11 | Method of imaging position-coding pattern having tag coordinates encoded by successive subsequences of cyclic position code |
US13/532,781 Abandoned US20120267439A1 (en) | 2008-10-02 | 2012-06-26 | Position-coding pattern having tag coordinates encoded by bit-shifted subsequences of cyclic position code |
US13/711,567 Abandoned US20130175349A1 (en) | 2008-10-02 | 2012-12-11 | Coding pattern comprising registration symbols for identifying the coding pattern |
Country Status (9)
Country | Link |
---|---|
US (13) | US20100084472A1 (en) |
EP (2) | EP2344976A1 (en) |
JP (2) | JP2012504799A (en) |
KR (2) | KR20110069822A (en) |
CN (1) | CN102171705A (en) |
AU (2) | AU2009299096A1 (en) |
CA (2) | CA2736310A1 (en) |
TW (11) | TW201019230A (en) |
WO (2) | WO2010037158A1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100085607A1 (en) * | 2008-10-02 | 2010-04-08 | Silverbrook Research Pty Ltd | Method of encoding coding pattern |
CN105100808A (en) * | 2011-06-28 | 2015-11-25 | 三星电子株式会社 | Method and apparatus for image encoding and decoding using intra prediction |
KR101848340B1 (en) | 2011-12-23 | 2018-04-12 | 에이에스엠엘 네델란즈 비.브이. | Methods and apparatus for measuring a property of a substrate |
Families Citing this family (123)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8276049B2 (en) * | 2007-09-04 | 2012-09-25 | Ricoh Company Limited | Information processing device and method |
US9122994B2 (en) | 2010-03-26 | 2015-09-01 | Brain Corporation | Apparatus and methods for temporally proximate object recognition |
US9311593B2 (en) | 2010-03-26 | 2016-04-12 | Brain Corporation | Apparatus and methods for polychronous encoding and multiplexing in neuronal prosthetic devices |
US9405975B2 (en) | 2010-03-26 | 2016-08-02 | Brain Corporation | Apparatus and methods for pulse-code invariant object recognition |
US8467623B2 (en) | 2010-03-26 | 2013-06-18 | Brain Corporation | Invariant pulse latency coding systems and methods systems and methods |
TW201214293A (en) * | 2010-05-31 | 2012-04-01 | Silverbrook Res Pty Ltd | Hybrid system for identifying printed page |
US9906838B2 (en) | 2010-07-12 | 2018-02-27 | Time Warner Cable Enterprises Llc | Apparatus and methods for content delivery and message exchange across multiple content delivery networks |
US9152915B1 (en) | 2010-08-26 | 2015-10-06 | Brain Corporation | Apparatus and methods for encoding vector into pulse-code output |
US8942466B2 (en) | 2010-08-26 | 2015-01-27 | Brain Corporation | Sensory input processing apparatus and methods |
US8587585B2 (en) * | 2010-09-28 | 2013-11-19 | Intel Corporation | Backface culling for motion blur and depth of field |
US9015093B1 (en) | 2010-10-26 | 2015-04-21 | Michael Lamport Commons | Intelligent control with hierarchical stacked neural networks |
US8775341B1 (en) | 2010-10-26 | 2014-07-08 | Michael Lamport Commons | Intelligent control with hierarchical stacked neural networks |
ITTO20110839A1 (en) * | 2011-09-20 | 2013-03-21 | Sisvel Technology Srl | METHOD FOR RECONSTRUCTION OF THE PLANT OF AN ENVIRONMENT SURROUNDING A WIRELESS DEVICE AND WIRELESS DEVICE THAT IMPLEMENTS THIS METHOD |
US8990133B1 (en) | 2012-12-20 | 2015-03-24 | Brain Corporation | Apparatus and methods for state-dependent learning in spiking neuron networks |
US9147156B2 (en) | 2011-09-21 | 2015-09-29 | Qualcomm Technologies Inc. | Apparatus and methods for synaptic update in a pulse-coded network |
US9047568B1 (en) | 2012-09-20 | 2015-06-02 | Brain Corporation | Apparatus and methods for encoding of sensory data using artificial spiking neurons |
US9566710B2 (en) | 2011-06-02 | 2017-02-14 | Brain Corporation | Apparatus and methods for operating robotic devices using selective state space training |
US9070039B2 (en) | 2013-02-01 | 2015-06-30 | Brian Corporation | Temporal winner takes all spiking neuron network sensory processing apparatus and methods |
US8725662B2 (en) | 2011-09-21 | 2014-05-13 | Brain Corporation | Apparatus and method for partial evaluation of synaptic updates based on system events |
US9104973B2 (en) | 2011-09-21 | 2015-08-11 | Qualcomm Technologies Inc. | Elementary network description for neuromorphic systems with plurality of doublets wherein doublet events rules are executed in parallel |
US8719199B2 (en) | 2011-09-21 | 2014-05-06 | Brain Corporation | Systems and methods for providing a neural network having an elementary network description for efficient implementation of event-triggered plasticity rules |
US9460387B2 (en) | 2011-09-21 | 2016-10-04 | Qualcomm Technologies Inc. | Apparatus and methods for implementing event-based updates in neuron networks |
US8725658B2 (en) | 2011-09-21 | 2014-05-13 | Brain Corporation | Elementary network description for efficient memory management in neuromorphic systems |
US9412064B2 (en) | 2011-08-17 | 2016-08-09 | Qualcomm Technologies Inc. | Event-based communication in spiking neuron networks communicating a neural activity payload with an efficacy update |
US9146546B2 (en) | 2012-06-04 | 2015-09-29 | Brain Corporation | Systems and apparatus for implementing task-specific learning using spiking neurons |
US9104186B2 (en) | 2012-06-04 | 2015-08-11 | Brain Corporation | Stochastic apparatus and methods for implementing generalized learning rules |
US8712939B2 (en) | 2011-09-21 | 2014-04-29 | Brain Corporation | Tag-based apparatus and methods for neural networks |
US9098811B2 (en) | 2012-06-04 | 2015-08-04 | Brain Corporation | Spiking neuron network apparatus and methods |
US9213937B2 (en) | 2011-09-21 | 2015-12-15 | Brain Corporation | Apparatus and methods for gating analog and spiking signals in artificial neural networks |
US9015092B2 (en) | 2012-06-04 | 2015-04-21 | Brain Corporation | Dynamically reconfigurable stochastic learning apparatus and methods |
US9117176B2 (en) | 2011-09-21 | 2015-08-25 | Qualcomm Technologies Inc. | Round-trip engineering apparatus and methods for neural networks |
US9156165B2 (en) | 2011-09-21 | 2015-10-13 | Brain Corporation | Adaptive critic apparatus and methods |
US10210452B2 (en) | 2011-09-21 | 2019-02-19 | Qualcomm Incorporated | High level neuromorphic network description apparatus and methods |
US20130163034A1 (en) * | 2011-12-27 | 2013-06-27 | Xerox Corporation | Vendor selection method and system for wide format printing |
US9129221B2 (en) | 2012-05-07 | 2015-09-08 | Brain Corporation | Spiking neural network feedback apparatus and methods |
US9224090B2 (en) | 2012-05-07 | 2015-12-29 | Brain Corporation | Sensory input processing apparatus in a spiking neural network |
US9412041B1 (en) | 2012-06-29 | 2016-08-09 | Brain Corporation | Retinal apparatus and methods |
US9111215B2 (en) | 2012-07-03 | 2015-08-18 | Brain Corporation | Conditional plasticity spiking neuron network apparatus and methods |
US8977582B2 (en) | 2012-07-12 | 2015-03-10 | Brain Corporation | Spiking neuron network sensory processing apparatus and methods |
US9256823B2 (en) | 2012-07-27 | 2016-02-09 | Qualcomm Technologies Inc. | Apparatus and methods for efficient updates in spiking neuron network |
US9256215B2 (en) | 2012-07-27 | 2016-02-09 | Brain Corporation | Apparatus and methods for generalized state-dependent learning in spiking neuron networks |
US9440352B2 (en) | 2012-08-31 | 2016-09-13 | Qualcomm Technologies Inc. | Apparatus and methods for robotic learning |
US9186793B1 (en) | 2012-08-31 | 2015-11-17 | Brain Corporation | Apparatus and methods for controlling attention of a robot |
US9189730B1 (en) | 2012-09-20 | 2015-11-17 | Brain Corporation | Modulated stochasticity spiking neuron network controller apparatus and methods |
US9367798B2 (en) | 2012-09-20 | 2016-06-14 | Brain Corporation | Spiking neuron network adaptive control apparatus and methods |
US8793205B1 (en) | 2012-09-20 | 2014-07-29 | Brain Corporation | Robotic learning and evolution apparatus |
US9311594B1 (en) | 2012-09-20 | 2016-04-12 | Brain Corporation | Spiking neuron network apparatus and methods for encoding of sensory data |
US9082079B1 (en) | 2012-10-22 | 2015-07-14 | Brain Corporation | Proportional-integral-derivative controller effecting expansion kernels comprising a plurality of spiking neurons associated with a plurality of receptive fields |
US9111226B2 (en) | 2012-10-25 | 2015-08-18 | Brain Corporation | Modulated plasticity apparatus and methods for spiking neuron network |
US9183493B2 (en) | 2012-10-25 | 2015-11-10 | Brain Corporation | Adaptive plasticity apparatus and methods for spiking neuron network |
US9218563B2 (en) | 2012-10-25 | 2015-12-22 | Brain Corporation | Spiking neuron sensory processing apparatus and methods for saliency detection |
US9275326B2 (en) | 2012-11-30 | 2016-03-01 | Brain Corporation | Rate stabilization through plasticity in spiking neuron network |
US9123127B2 (en) | 2012-12-10 | 2015-09-01 | Brain Corporation | Contrast enhancement spiking neuron network sensory processing apparatus and methods |
US9195934B1 (en) | 2013-01-31 | 2015-11-24 | Brain Corporation | Spiking neuron classifier apparatus and methods using conditionally independent subsets |
US9177245B2 (en) | 2013-02-08 | 2015-11-03 | Qualcomm Technologies Inc. | Spiking network apparatus and method with bimodal spike-timing dependent plasticity |
US8937010B2 (en) | 2013-02-27 | 2015-01-20 | International Business Machines Corporation | Information encoding using wirebonds |
US9946365B2 (en) | 2013-03-11 | 2018-04-17 | Barnes & Noble College Booksellers, Llc | Stylus-based pressure-sensitive area for UI control of computing device |
US9785259B2 (en) | 2013-03-11 | 2017-10-10 | Barnes & Noble College Booksellers, Llc | Stylus-based slider functionality for UI control of computing device |
US9261985B2 (en) | 2013-03-11 | 2016-02-16 | Barnes & Noble College Booksellers, Llc | Stylus-based touch-sensitive area for UI control of computing device |
US9766723B2 (en) * | 2013-03-11 | 2017-09-19 | Barnes & Noble College Booksellers, Llc | Stylus sensitive device with hover over stylus control functionality |
US8996177B2 (en) | 2013-03-15 | 2015-03-31 | Brain Corporation | Robotic training apparatus and methods |
US9764468B2 (en) | 2013-03-15 | 2017-09-19 | Brain Corporation | Adaptive predictor apparatus and methods |
US9008840B1 (en) | 2013-04-19 | 2015-04-14 | Brain Corporation | Apparatus and methods for reinforcement-guided supervised learning |
US9242372B2 (en) | 2013-05-31 | 2016-01-26 | Brain Corporation | Adaptive robotic interface apparatus and methods |
US9314924B1 (en) * | 2013-06-14 | 2016-04-19 | Brain Corporation | Predictive robotic controller apparatus and methods |
US9384443B2 (en) | 2013-06-14 | 2016-07-05 | Brain Corporation | Robotic training apparatus and methods |
US9792546B2 (en) | 2013-06-14 | 2017-10-17 | Brain Corporation | Hierarchical robotic controller apparatus and methods |
US9436909B2 (en) | 2013-06-19 | 2016-09-06 | Brain Corporation | Increased dynamic range artificial neuron network apparatus and methods |
US9239985B2 (en) | 2013-06-19 | 2016-01-19 | Brain Corporation | Apparatus and methods for processing inputs in an artificial neuron network |
US9552546B1 (en) | 2013-07-30 | 2017-01-24 | Brain Corporation | Apparatus and methods for efficacy balancing in a spiking neuron network |
US9467177B1 (en) * | 2013-08-23 | 2016-10-11 | Applied Micro Circuits Corporation | Product coded modulation scheme based on leech lattice and binary and nonbinary codes |
US9579789B2 (en) | 2013-09-27 | 2017-02-28 | Brain Corporation | Apparatus and methods for training of robotic control arbitration |
US9296101B2 (en) | 2013-09-27 | 2016-03-29 | Brain Corporation | Robotic control arbitration apparatus and methods |
US9489623B1 (en) | 2013-10-15 | 2016-11-08 | Brain Corporation | Apparatus and methods for backward propagation of errors in a spiking neuron network |
US9463571B2 (en) | 2013-11-01 | 2016-10-11 | Brian Corporation | Apparatus and methods for online training of robots |
US9597797B2 (en) | 2013-11-01 | 2017-03-21 | Brain Corporation | Apparatus and methods for haptic training of robots |
US9248569B2 (en) | 2013-11-22 | 2016-02-02 | Brain Corporation | Discrepancy detection apparatus and methods for machine learning |
US9582864B2 (en) | 2014-01-10 | 2017-02-28 | Perkinelmer Cellular Technologies Germany Gmbh | Method and system for image correction using a quasiperiodic grid |
US9358685B2 (en) | 2014-02-03 | 2016-06-07 | Brain Corporation | Apparatus and methods for control of robot actions based on corrective user inputs |
US9533413B2 (en) | 2014-03-13 | 2017-01-03 | Brain Corporation | Trainable modular robotic apparatus and methods |
US9364950B2 (en) | 2014-03-13 | 2016-06-14 | Brain Corporation | Trainable modular robotic methods |
US9987743B2 (en) | 2014-03-13 | 2018-06-05 | Brain Corporation | Trainable modular robotic apparatus and methods |
US9630317B2 (en) | 2014-04-03 | 2017-04-25 | Brain Corporation | Learning apparatus and methods for control of robotic devices via spoofing |
US9613308B2 (en) | 2014-04-03 | 2017-04-04 | Brain Corporation | Spoofing remote control apparatus and methods |
US9346167B2 (en) | 2014-04-29 | 2016-05-24 | Brain Corporation | Trainable convolutional network apparatus and methods for operating a robotic vehicle |
US9713982B2 (en) | 2014-05-22 | 2017-07-25 | Brain Corporation | Apparatus and methods for robotic operation using video imagery |
US9939253B2 (en) | 2014-05-22 | 2018-04-10 | Brain Corporation | Apparatus and methods for distance estimation using multiple image sensors |
US10194163B2 (en) | 2014-05-22 | 2019-01-29 | Brain Corporation | Apparatus and methods for real time estimation of differential motion in live video |
US9848112B2 (en) | 2014-07-01 | 2017-12-19 | Brain Corporation | Optical detection apparatus and methods |
US10057593B2 (en) | 2014-07-08 | 2018-08-21 | Brain Corporation | Apparatus and methods for distance estimation using stereo imagery |
US9849588B2 (en) | 2014-09-17 | 2017-12-26 | Brain Corporation | Apparatus and methods for remotely controlling robotic devices |
US9860077B2 (en) | 2014-09-17 | 2018-01-02 | Brain Corporation | Home animation apparatus and methods |
US9821470B2 (en) | 2014-09-17 | 2017-11-21 | Brain Corporation | Apparatus and methods for context determination using real time sensor data |
US9579790B2 (en) | 2014-09-17 | 2017-02-28 | Brain Corporation | Apparatus and methods for removal of learned behaviors in robots |
US10055850B2 (en) | 2014-09-19 | 2018-08-21 | Brain Corporation | Salient features tracking apparatus and methods using visual initialization |
US9630318B2 (en) | 2014-10-02 | 2017-04-25 | Brain Corporation | Feature detection apparatus and methods for training of robotic navigation |
US9881349B1 (en) | 2014-10-24 | 2018-01-30 | Gopro, Inc. | Apparatus and methods for computerized object identification |
US9426946B2 (en) | 2014-12-02 | 2016-08-30 | Brain Corporation | Computerized learning landscaping apparatus and methods |
CN107408214B (en) * | 2015-01-30 | 2021-07-09 | 惠普发展公司,有限责任合伙企业 | M-ary cyclic coding |
US9717387B1 (en) | 2015-02-26 | 2017-08-01 | Brain Corporation | Apparatus and methods for programming and training of robotic household appliances |
US9840003B2 (en) | 2015-06-24 | 2017-12-12 | Brain Corporation | Apparatus and methods for safe navigation of robotic devices |
US10197664B2 (en) | 2015-07-20 | 2019-02-05 | Brain Corporation | Apparatus and methods for detection of objects using broadband signals |
KR102561546B1 (en) * | 2015-08-19 | 2023-07-31 | 가부시키가이샤 와코무 | Method for detecting of a sensor controller by a stylus, stylus, and sensor controller |
US9430682B1 (en) | 2015-09-28 | 2016-08-30 | King Saud University | Pressure profile data coding system and method |
EP3208788B1 (en) * | 2016-02-22 | 2020-06-03 | Eshard | Method of protecting a circuit against a side-channel analysis |
US10295972B2 (en) | 2016-04-29 | 2019-05-21 | Brain Corporation | Systems and methods to operate controllable devices with gestures and/or noises |
JP6908357B2 (en) * | 2016-06-21 | 2021-07-28 | 株式会社ミツトヨ | Position identification device and position identification method |
US11373076B2 (en) | 2017-02-20 | 2022-06-28 | 3M Innovative Properties Company | Optical articles and systems interacting with the same |
CN107122067B (en) * | 2017-05-04 | 2020-09-08 | 网易(杭州)网络有限公司 | Method and device for encoding and decoding surface position of physical medium and readable storage medium |
CN107103350B (en) * | 2017-05-04 | 2020-06-09 | 网易(杭州)网络有限公司 | Physical medium surface multi-dimensional position coding method and device and readable storage medium |
WO2019064108A1 (en) | 2017-09-27 | 2019-04-04 | 3M Innovative Properties Company | Personal protective equipment management system using optical patterns for equipment and safety monitoring |
CN110232428A (en) * | 2018-03-05 | 2019-09-13 | 中华映管股份有限公司 | Binary positions label generating method |
TWI661721B (en) * | 2018-04-03 | 2019-06-01 | 奇景光電股份有限公司 | Method and circuit for detection motion |
CN110415264B (en) * | 2018-04-25 | 2023-10-24 | 奇景光电股份有限公司 | Motion detection circuit and method |
GB2576164B (en) * | 2018-08-06 | 2020-07-29 | John Edward Aras Richard | Multi-axis position sensing system |
CN111918003B (en) * | 2019-05-08 | 2022-11-25 | 上海耕岩智能科技有限公司 | Image sensor, signal acquisition method and circuit thereof, storage medium and terminal |
WO2020255575A1 (en) * | 2019-06-19 | 2020-12-24 | ソニー株式会社 | Encryption key generation device and encryption key generation method |
US11195172B2 (en) | 2019-07-24 | 2021-12-07 | Capital One Services, Llc | Training a neural network model for recognizing handwritten signatures based on different cursive fonts and transformations |
CN114117988A (en) * | 2020-08-26 | 2022-03-01 | 长鑫存储技术有限公司 | Marker coordinate determination method and device, computer readable medium and electronic equipment |
CN112769573B (en) * | 2020-12-26 | 2022-08-05 | 西安电子科技大学 | Digital signature method, signature verification method and device based on GRS code |
TW202306805A (en) * | 2021-01-25 | 2023-02-16 | 瑞士商明門瑞士股份有限公司 | Infant car seat anchoring assembly with retractable foot |
CN113850100B (en) * | 2021-09-24 | 2023-08-11 | 杭州海康威视数字技术股份有限公司 | Method for correcting two-dimensional code and electronic equipment |
CN114549423A (en) * | 2022-01-26 | 2022-05-27 | 环旭电子股份有限公司 | Label integrity self-adaptive detection method and system |
Citations (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4864618A (en) * | 1986-11-26 | 1989-09-05 | Wright Technologies, L.P. | Automated transaction system with modular printhead having print authentication feature |
US5051736A (en) * | 1989-06-28 | 1991-09-24 | International Business Machines Corporation | Optical stylus and passive digitizing tablet data input system |
US5243655A (en) * | 1990-01-05 | 1993-09-07 | Symbol Technologies Inc. | System for encoding and decoding data in machine readable graphic form |
US5442147A (en) * | 1991-04-03 | 1995-08-15 | Hewlett-Packard Company | Position-sensing apparatus |
US5477012A (en) * | 1992-04-03 | 1995-12-19 | Sekendur; Oral F. | Optical position determination |
US5652412A (en) * | 1994-07-11 | 1997-07-29 | Sia Technology Corp. | Pen and paper information recording system |
US5661506A (en) * | 1994-11-10 | 1997-08-26 | Sia Technology Corporation | Pen and paper information recording system using an imaging pen |
US5692073A (en) * | 1996-05-03 | 1997-11-25 | Xerox Corporation | Formless forms and paper web using a reference-based mark extraction technique |
US5852434A (en) * | 1992-04-03 | 1998-12-22 | Sekendur; Oral F. | Absolute optical position determination |
US6076734A (en) * | 1997-10-07 | 2000-06-20 | Interval Research Corporation | Methods and systems for providing human/computer interfaces |
US20030056169A1 (en) * | 2001-04-12 | 2003-03-20 | Paul Lapstun | Cyclic position codes |
US6548768B1 (en) * | 1999-10-01 | 2003-04-15 | Anoto Ab | Determination of a position code |
US20030085565A1 (en) * | 2001-04-23 | 2003-05-08 | Asay Jon L. | Method of labeling a package for shipment |
US6666376B1 (en) * | 1999-05-28 | 2003-12-23 | Anoto Ab | Calendar |
US6672511B1 (en) * | 1996-06-03 | 2004-01-06 | Symbol Technologies, Inc. | Omnidirectional reading of two-dimensional symbols |
US20040079807A1 (en) * | 2002-10-25 | 2004-04-29 | Paul Lapstun | Orientation-indicating cyclic position codes |
US20040117250A1 (en) * | 2002-12-17 | 2004-06-17 | Allen Lubow | Method and system for providing coupon savings using existing credit card processing infrastructure, and barcoded coupon having 2-D component |
US6830198B2 (en) * | 2000-06-30 | 2004-12-14 | Silverbrook Research Pty Ltd | Generating tags using tag format structure |
US6843420B2 (en) * | 1999-05-25 | 2005-01-18 | Silverbrook Research Pty Ltd | Identity-coded surface with reference points and coded marks |
US6964374B1 (en) * | 1998-10-02 | 2005-11-15 | Lucent Technologies Inc. | Retrieval and manipulation of electronically stored information via pointers embedded in the associated printed material |
US20070018002A1 (en) * | 2005-07-25 | 2007-01-25 | Silverbrook Research Pty Ltd | Product item having first coded data and unique identifier |
US20070023523A1 (en) * | 2005-08-01 | 2007-02-01 | Takeshi Onishi | Code pattern image generation apparatus and method, code pattern image reader apparatus and method, and code pattern image medium |
US20070040029A1 (en) * | 2005-08-19 | 2007-02-22 | Thomas Mazowiesky | Information readers, apparatuses including information readers, and related methods |
US20080193007A1 (en) * | 2007-02-08 | 2008-08-14 | Silverbrook Research Pty Ltd | Coding Pattern With Optimal Number of Target Elements in Each Tag |
US20090080493A1 (en) * | 2005-04-20 | 2009-03-26 | Sivanand Krishnan | Apparatus and method for generating a monocycle |
US7672513B2 (en) * | 2003-04-29 | 2010-03-02 | Anoto Ab | Methods, apparatus, computer program and storage medium for position decoding |
US20100086171A1 (en) * | 2008-10-02 | 2010-04-08 | Silverbrook Research Pty Ltd | Method of imaging coding pattern having merged data symbols |
US7865043B2 (en) * | 2003-12-16 | 2011-01-04 | Anoto Ab | Method, apparatus, computer program and storage medium for recording a movement of a user unit |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US654768A (en) * | 1900-05-03 | 1900-07-31 | James M Thoburn | Bottle-finisher. |
US4924078A (en) | 1987-11-25 | 1990-05-08 | Sant Anselmo Carl | Identification symbol, system and method |
US6182901B1 (en) * | 1993-12-22 | 2001-02-06 | Xerox Corporation | Orientational disambiguation for self-clocking glyph codes |
US6415398B1 (en) * | 1995-09-29 | 2002-07-02 | Kabushiki Kaisha Toshiba | Coding system and decoding system |
US6081261A (en) | 1995-11-01 | 2000-06-27 | Ricoh Corporation | Manual entry interactive paper and electronic document handling and processing system |
WO1999050787A1 (en) | 1998-04-01 | 1999-10-07 | Xerox Corporation | Cross-network functions via linked hardcopy and electronic documents |
US6330976B1 (en) * | 1998-04-01 | 2001-12-18 | Xerox Corporation | Marking medium area with encoded identifier for producing action through network |
US6267296B1 (en) * | 1998-05-12 | 2001-07-31 | Denso Corporation | Two-dimensional code and method of optically reading the same |
US6427219B1 (en) * | 1998-06-24 | 2002-07-30 | Conexant Systems, Inc. | Method and apparatus for detecting and correcting errors using cyclic redundancy check |
EP1009098A1 (en) * | 1998-12-10 | 2000-06-14 | Sony International (Europe) GmbH | Error correction using a turbo code and a CRC |
US7178718B2 (en) * | 1999-05-25 | 2007-02-20 | Silverbrook Research Pty Ltd | Methods and systems for object identification and interaction |
AU2003900983A0 (en) * | 2003-03-04 | 2003-03-20 | Silverbrook Research Pty Ltd | Methods, systems and apparatus (NPT023) |
RU2234187C2 (en) * | 2000-10-06 | 2004-08-10 | Самсунг Электроникс Ко., Лтд. | Method and device for shaping (n, 3) and (n, 4) codes using simplex codes |
US20020172796A1 (en) * | 2001-05-18 | 2002-11-21 | Ronnie Magee | Multi-patterned floor covering sample element |
JP3910493B2 (en) * | 2002-06-14 | 2007-04-25 | 新光電気工業株式会社 | Semiconductor device and manufacturing method thereof |
JP2004054529A (en) * | 2002-07-18 | 2004-02-19 | Sharp Corp | Method and program for reading two-dimensional code, recording medium for two-dimensional code reading program, and two-dimensional code reading device |
WO2004038650A1 (en) * | 2002-10-25 | 2004-05-06 | Silverbrook Research Pty Ltd | Orientation-indicating cyclic position codes |
SE0203853D0 (en) | 2002-12-23 | 2002-12-23 | Anoto Ab | Data code |
JP3996520B2 (en) * | 2003-01-30 | 2007-10-24 | 株式会社デンソーウェーブ | Two-dimensional information code and generation method thereof |
US6839870B2 (en) * | 2003-03-21 | 2005-01-04 | Terayon Communications Systems, Inc. | Error-correcting code interleaver |
US20040196489A1 (en) * | 2003-04-07 | 2004-10-07 | Kia Silverbrook | Coupon redemption |
KR100541052B1 (en) * | 2003-09-22 | 2006-01-11 | 삼성전자주식회사 | Laser annealing processes of a semiconductor material using a free carrier generation technique |
US7385594B2 (en) * | 2004-02-19 | 2008-06-10 | Au Optronics Corporation | Position encoded sensing device and a method thereof |
KR100560330B1 (en) | 2004-04-21 | 2006-03-30 | 에이디정보통신 주식회사 | A bar code perfect virtue coding and decoding system for largeness a volume the two dimension color which a color revision is possible and method thereof |
CA2567250A1 (en) * | 2004-05-18 | 2005-11-24 | Silverbrook Research Pty Ltd | Authentication of an object using a signature encoded in a number of data portions |
KR20050114162A (en) * | 2004-05-31 | 2005-12-05 | 삼성전자주식회사 | Method and apparatus for decoding inner code and outer code in a mobile communication system using reed-solomon code |
US7543197B2 (en) * | 2004-12-22 | 2009-06-02 | Qualcomm Incorporated | Pruned bit-reversal interleaver |
JP4409455B2 (en) * | 2005-01-31 | 2010-02-03 | 株式会社ルネサステクノロジ | Manufacturing method of semiconductor device |
JP4556705B2 (en) * | 2005-02-28 | 2010-10-06 | 富士ゼロックス株式会社 | Two-dimensional coordinate identification apparatus, image forming apparatus, and two-dimensional coordinate identification method |
JP4688526B2 (en) * | 2005-03-03 | 2011-05-25 | Okiセミコンダクタ株式会社 | Semiconductor device and manufacturing method thereof |
JP4586677B2 (en) * | 2005-08-24 | 2010-11-24 | 富士ゼロックス株式会社 | Image forming apparatus |
US20070070311A1 (en) * | 2005-09-23 | 2007-03-29 | Asml Netherlands B.V. | Contacts to microdevices |
EP2016620A2 (en) * | 2006-04-17 | 2009-01-21 | Omnivision Cdm Optics, Inc. | Arrayed imaging systems and associated methods |
CN101467161A (en) * | 2006-06-14 | 2009-06-24 | 威泰克公司 | Multi-dimensional symbologies and related methods |
US20080144432A1 (en) * | 2006-09-18 | 2008-06-19 | Gideon Samid | MIXFIX: fine-tuned graded mixing/entropic alphabet for chemical and visual encoding, efficient processing, and decorative painting |
JP4688766B2 (en) * | 2006-09-21 | 2011-05-25 | パナソニック株式会社 | Solid-state imaging device, driving method thereof and camera |
TW200921498A (en) * | 2007-09-21 | 2009-05-16 | Silverbrook Res Pty Ltd | Computer system for printing a page and generating interactive elements |
WO2009108562A2 (en) * | 2008-02-25 | 2009-09-03 | Rambus Inc. | Code-assisted error-detection technique |
US8627163B2 (en) * | 2008-03-25 | 2014-01-07 | Micron Technology, Inc. | Error-correction forced mode with M-sequence |
-
2009
- 2009-08-11 US US12/539,583 patent/US20100084472A1/en not_active Abandoned
- 2009-08-11 US US12/539,579 patent/US8328109B2/en not_active Expired - Fee Related
- 2009-08-11 US US12/539,603 patent/US20100086171A1/en not_active Abandoned
- 2009-08-11 US US12/539,588 patent/US20100084479A1/en not_active Abandoned
- 2009-08-11 US US12/539,599 patent/US20100084481A1/en not_active Abandoned
- 2009-08-11 US US12/539,592 patent/US8282016B2/en not_active Expired - Fee Related
- 2009-08-11 US US12/539,580 patent/US20100084478A1/en not_active Abandoned
- 2009-08-11 US US12/539,605 patent/US20100085607A1/en not_active Abandoned
- 2009-08-11 US US12/539,589 patent/US20100086209A1/en not_active Abandoned
- 2009-08-11 US US12/539,586 patent/US20100084468A1/en not_active Abandoned
- 2009-08-11 US US12/539,597 patent/US20100086236A1/en not_active Abandoned
- 2009-08-12 TW TW098127124A patent/TW201019230A/en unknown
- 2009-08-12 AU AU2009299096A patent/AU2009299096A1/en not_active Abandoned
- 2009-08-12 EP EP09817086A patent/EP2344976A1/en not_active Withdrawn
- 2009-08-12 AU AU2009299097A patent/AU2009299097A1/en not_active Abandoned
- 2009-08-12 KR KR1020117009089A patent/KR20110069822A/en not_active Application Discontinuation
- 2009-08-12 TW TW098127113A patent/TW201110031A/en unknown
- 2009-08-12 WO PCT/AU2009/001034 patent/WO2010037158A1/en active Application Filing
- 2009-08-12 CA CA2736310A patent/CA2736310A1/en not_active Abandoned
- 2009-08-12 TW TW098127125A patent/TW201035803A/en unknown
- 2009-08-12 TW TW098127105A patent/TW201015446A/en unknown
- 2009-08-12 EP EP09817085A patent/EP2344975A1/en not_active Withdrawn
- 2009-08-12 TW TW098127120A patent/TWI456506B/en not_active IP Right Cessation
- 2009-08-12 CN CN2009801388581A patent/CN102171705A/en active Pending
- 2009-08-12 TW TW098127127A patent/TW201110032A/en unknown
- 2009-08-12 TW TW098127111A patent/TWI457831B/en not_active IP Right Cessation
- 2009-08-12 CA CA2736267A patent/CA2736267A1/en not_active Abandoned
- 2009-08-12 WO PCT/AU2009/001033 patent/WO2010037157A1/en active Application Filing
- 2009-08-12 KR KR1020117009271A patent/KR20110059894A/en not_active Application Discontinuation
- 2009-08-12 TW TW098127122A patent/TW201019229A/en unknown
- 2009-08-12 TW TW098127102A patent/TW201015445A/en unknown
- 2009-08-12 TW TW098127107A patent/TWI444902B/en not_active IP Right Cessation
- 2009-08-12 TW TW098127116A patent/TW201032144A/en unknown
- 2009-08-12 JP JP2011529415A patent/JP2012504799A/en active Pending
- 2009-08-12 JP JP2011529414A patent/JP2012504798A/en active Pending
-
2012
- 2012-06-26 US US13/532,781 patent/US20120267439A1/en not_active Abandoned
- 2012-12-11 US US13/711,567 patent/US20130175349A1/en not_active Abandoned
Patent Citations (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4864618A (en) * | 1986-11-26 | 1989-09-05 | Wright Technologies, L.P. | Automated transaction system with modular printhead having print authentication feature |
US5051736A (en) * | 1989-06-28 | 1991-09-24 | International Business Machines Corporation | Optical stylus and passive digitizing tablet data input system |
US5243655A (en) * | 1990-01-05 | 1993-09-07 | Symbol Technologies Inc. | System for encoding and decoding data in machine readable graphic form |
US5442147A (en) * | 1991-04-03 | 1995-08-15 | Hewlett-Packard Company | Position-sensing apparatus |
US5852434A (en) * | 1992-04-03 | 1998-12-22 | Sekendur; Oral F. | Absolute optical position determination |
US5477012A (en) * | 1992-04-03 | 1995-12-19 | Sekendur; Oral F. | Optical position determination |
US5652412A (en) * | 1994-07-11 | 1997-07-29 | Sia Technology Corp. | Pen and paper information recording system |
US5661506A (en) * | 1994-11-10 | 1997-08-26 | Sia Technology Corporation | Pen and paper information recording system using an imaging pen |
US5692073A (en) * | 1996-05-03 | 1997-11-25 | Xerox Corporation | Formless forms and paper web using a reference-based mark extraction technique |
US6672511B1 (en) * | 1996-06-03 | 2004-01-06 | Symbol Technologies, Inc. | Omnidirectional reading of two-dimensional symbols |
US6076734A (en) * | 1997-10-07 | 2000-06-20 | Interval Research Corporation | Methods and systems for providing human/computer interfaces |
US6964374B1 (en) * | 1998-10-02 | 2005-11-15 | Lucent Technologies Inc. | Retrieval and manipulation of electronically stored information via pointers embedded in the associated printed material |
US6843420B2 (en) * | 1999-05-25 | 2005-01-18 | Silverbrook Research Pty Ltd | Identity-coded surface with reference points and coded marks |
US6666376B1 (en) * | 1999-05-28 | 2003-12-23 | Anoto Ab | Calendar |
US6548768B1 (en) * | 1999-10-01 | 2003-04-15 | Anoto Ab | Determination of a position code |
US6830198B2 (en) * | 2000-06-30 | 2004-12-14 | Silverbrook Research Pty Ltd | Generating tags using tag format structure |
US20030056169A1 (en) * | 2001-04-12 | 2003-03-20 | Paul Lapstun | Cyclic position codes |
US20040148558A1 (en) * | 2001-04-12 | 2004-07-29 | Paul Lapstun | Cyclic position codes |
US7120853B2 (en) * | 2001-04-12 | 2006-10-10 | Silverbrook Research Pty Ltd. | Cyclic position codes |
US7082562B2 (en) * | 2001-04-12 | 2006-07-25 | Silverbrook Research Pty Ltd | Cyclic position codes |
US20030085565A1 (en) * | 2001-04-23 | 2003-05-08 | Asay Jon L. | Method of labeling a package for shipment |
US20040079807A1 (en) * | 2002-10-25 | 2004-04-29 | Paul Lapstun | Orientation-indicating cyclic position codes |
US20040117250A1 (en) * | 2002-12-17 | 2004-06-17 | Allen Lubow | Method and system for providing coupon savings using existing credit card processing infrastructure, and barcoded coupon having 2-D component |
US7672513B2 (en) * | 2003-04-29 | 2010-03-02 | Anoto Ab | Methods, apparatus, computer program and storage medium for position decoding |
US7865043B2 (en) * | 2003-12-16 | 2011-01-04 | Anoto Ab | Method, apparatus, computer program and storage medium for recording a movement of a user unit |
US20090080493A1 (en) * | 2005-04-20 | 2009-03-26 | Sivanand Krishnan | Apparatus and method for generating a monocycle |
US20070018002A1 (en) * | 2005-07-25 | 2007-01-25 | Silverbrook Research Pty Ltd | Product item having first coded data and unique identifier |
US20070108285A1 (en) * | 2005-07-25 | 2007-05-17 | Silverbrook Research Pty Ltd | Product item having coded data identifying a layout |
US20070023523A1 (en) * | 2005-08-01 | 2007-02-01 | Takeshi Onishi | Code pattern image generation apparatus and method, code pattern image reader apparatus and method, and code pattern image medium |
US20070040029A1 (en) * | 2005-08-19 | 2007-02-22 | Thomas Mazowiesky | Information readers, apparatuses including information readers, and related methods |
US20080193007A1 (en) * | 2007-02-08 | 2008-08-14 | Silverbrook Research Pty Ltd | Coding Pattern With Optimal Number of Target Elements in Each Tag |
US20100086171A1 (en) * | 2008-10-02 | 2010-04-08 | Silverbrook Research Pty Ltd | Method of imaging coding pattern having merged data symbols |
US20100084481A1 (en) * | 2008-10-02 | 2010-04-08 | Silverbrook Research Pty Ltd | Coding pattern having merged data symbols |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100085607A1 (en) * | 2008-10-02 | 2010-04-08 | Silverbrook Research Pty Ltd | Method of encoding coding pattern |
CN105100808A (en) * | 2011-06-28 | 2015-11-25 | 三星电子株式会社 | Method and apparatus for image encoding and decoding using intra prediction |
US10045043B2 (en) | 2011-06-28 | 2018-08-07 | Samsung Electronics Co., Ltd. | Method and apparatus for image encoding and decoding using intra prediction |
US10045042B2 (en) | 2011-06-28 | 2018-08-07 | Samsung Electronics Co., Ltd. | Method and apparatus for image encoding and decoding using intra prediction |
US10075730B2 (en) | 2011-06-28 | 2018-09-11 | Samsung Electronics Co., Ltd. | Method and apparatus for image encoding and decoding using intra prediction |
US10085037B2 (en) | 2011-06-28 | 2018-09-25 | Samsung Electronics Co., Ltd. | Method and apparatus for image encoding and decoding using intra prediction |
US10506250B2 (en) | 2011-06-28 | 2019-12-10 | Samsung Electronics Co., Ltd. | Method and apparatus for image encoding and decoding using intra prediction |
KR101848340B1 (en) | 2011-12-23 | 2018-04-12 | 에이에스엠엘 네델란즈 비.브이. | Methods and apparatus for measuring a property of a substrate |
US10317191B2 (en) | 2011-12-23 | 2019-06-11 | Asml Netherlands B.V. | Methods and apparatus for measuring a property of a substrate |
US10746668B2 (en) | 2011-12-23 | 2020-08-18 | Asml Netherlands B.V. | Methods and apparatus for measuring a property of a substrate |
US10996176B2 (en) | 2011-12-23 | 2021-05-04 | Asml Netherlands B.V. | Methods and apparatus for measuring a property of a substrate |
US11977034B2 (en) | 2011-12-23 | 2024-05-07 | Asml Netherlands B.V. | Methods and apparatus for measuring a property of a substrate |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8282016B2 (en) | Position-coding pattern having tag coordinates encoded by successive subsequences of cyclic position code | |
US8397141B2 (en) | Coding pattern comprising Reed-Solomon codewords encoded by mixed multi-pulse position modulation | |
US8413027B2 (en) | Method of decoding a pattern-encoded coordinate | |
US8276827B2 (en) | Coding pattern comprising control symbols | |
US8276828B2 (en) | Method of decoding coding pattern comprising control symbols | |
US20110180602A1 (en) | Method of imaging coding pattern using variant registration codewords | |
US20110180614A1 (en) | Coding pattern comprising non-replicated coordinate data symbols | |
US8292190B2 (en) | Coding pattern comprising registration codeword having variants corresponding to possible registrations | |
US20110182521A1 (en) | Method of decoding coding pattern with variable number of missing data symbols positioned outside imaging field-of-view | |
WO2011091464A1 (en) | Coding pattern comprising registration codeword having variants corresponding to possible registrations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SILVERBROOK RESEARCH PTY LTD,AUSTRALIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LAPSTUN, PAUL;REEL/FRAME:023088/0050 Effective date: 20090105 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |