AU2006252242A1 - Encoding and decoding data on a surface - Google Patents

Encoding and decoding data on a surface Download PDF

Info

Publication number
AU2006252242A1
AU2006252242A1 AU2006252242A AU2006252242A AU2006252242A1 AU 2006252242 A1 AU2006252242 A1 AU 2006252242A1 AU 2006252242 A AU2006252242 A AU 2006252242A AU 2006252242 A AU2006252242 A AU 2006252242A AU 2006252242 A1 AU2006252242 A1 AU 2006252242A1
Authority
AU
Australia
Prior art keywords
barcode
grid
symbols
constellation
dot
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
Application number
AU2006252242A
Inventor
Stephen Edward Ecob
Stephen Farrar
Dmitri Katchalov
Filip VELICKOVSKI
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to AU2006252242A priority Critical patent/AU2006252242A1/en
Publication of AU2006252242A1 publication Critical patent/AU2006252242A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods 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/1404Methods for optical code recognition
    • G06K7/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14172D bar codes

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)

Description

S&F Ref: 789692
AUSTRALIA
PATENTS ACT 1990 COMPLETE SPECIFICATION FOR A STANDARD PATENT Name and Address of Applicant Actual Inventor(s): Address for Service: Invention Title: Canon Kabushiki Kaisha, of 30-2, Shimomaruko 3-chome, Ohta-ku, Tokyo, 146, Japan Stephen Edward Ecob Stephen Farrar Dmitri Katchalov Filip Velickovski Spruson Ferguson St Martins Tower Level 31 Market Street Sydney NSW 2000 (CCN 3710000177) Encoding and decoding data on a surface The following statement is a full description of this invention, including the best method of performing it known to me/us:- 5845c(619589_1) 0-1c
N
I ENCODING AND DECODING DATA ON A SURFACE FIELD OF INVENTION The present invention relates generally to two-dimensional barcodes and, more particularly, to barcodes resistant to the presence of global distortions, local distortions, Cr and/or noise. Further, this invention relates to the encoding, printing, and decoding of such barcodes.
BACKGROUND
While computers have significantly enhanced the way data is processed and utilized, paper is still an important medium for recording and conveying information.
Paper is primarily used to record and convey human readable information. It may also sometimes be advantageous to record computer readable information on paper in addition to human readable data.
One format for printing data to be read by a computer is to encode the information in a barcode. The most common techniques are one-dimensional barcodes, of which there are a number of popular formats. For example, UPC/EAN, Code 39, Code 128, and Interleaved 2 of 5. However, one-dimensional barcodes are limited in the amount of data that they can store. This is first because their data density is low, and second, because they are usually a fixed size.
To increase the data density, a two-dimensional barcode can be used. Various twodimensional barcodes are known in the art. Most barcode formats consist of a collection of regions arranged in a grid formation. Each region is coloured either black or white. The colour of each region conveys one bit of information.
Many variations on this theme are known in the art, because there are a number of issues to be addressed in typical scenarios of barcode usage. Typically, the printing process C:\NrPortbl\SAF\LDP\618344_1.DOC 789692_specif I-2- Sintroduces distortions into the barcode. When the printing is performed by an electrophotographic engine, such as a laser printer, the types of distortions introduced often C include: warping, which causes straight lines to be printed as wavy lines, deviating C 5 from being straight by up to a few printer pixels; C (ii) noise, caused by splotches of ink appearing where they shouldn't; and
O
(iii) colour channel mis-registration, where the cyan, magenta, yellow, and black channels are not correctly aligned.
Also, warping can be introduced if the barcode is folded or crumpled in between printing and scanning the barcode. Additional noise may be introduced by marks made on the barcode (eg. dirt or finger smudges). Useful barcodes will be resistant to these distortions.
In one system for barcoding known in the art, the scanned barcode image is sampled at points on a grid formation, in order to ascertain the colours of the regions, and hence the encoded bits of information. This system is problematic in the presence of warping distortions. If the amount of deviation is larger than the size of the barcode regions, the scanned barcode image will be sampled at points inside the wrong region.
Instead, the barcode needs to be sampled at points lying on a warped grid (with wavy lines).
In another system for barcoding known in the art, instead of colouring each region, glyphs are printed in each region. Typically, the glyphs that are printed in each region are either forward or backward slashes. Upon reading the barcode, the glyphs can be found by a tracking method. The tracking method works along each row of the grid, locating each successive glyph relative to the location of the previous glyph. This makes the system C:\NrPortbl\SAF\LDP\618344_1.DOC 789692_speci_f -3resistant to warping. However, printing glyphs (instead of colouring the regions) sacrifices data density, since the regions need to be larger. Additionally, tracking is not resistant to cnoise. If a glyph becomes corrupted due to noise and cannot be located, subsequent glyphs may not be locatable either.
C 5 In another system for barcoding known in the art, the barcode regions are coloured C either black or white. Tracking is performed based on detecting the edges where the colour changes from black to white, or vice versa. This solves the data density issue, but it is still disadvantageously affected by noise.
Another system for barcoding known in the art, includes a barcode with indicator patterns that aids in finding the location of the barcode on a surface and its orientation.
The disadvantage is that the space the indication patterns occupy could be used to potentially store more data.
In another system for barcoding known in the art, a barcode contains specific alignment markers to aid in tracking and barcode orientation in localised regions of the surface, however again in using this method the space the markers occupy could potentially be used to store more data.
SUMMARY
In accordance with one aspect of the present invention there is disclosed A method of decoding a barcode, the barcode comprising message data encoded on a grid using symbols from a constellation of symbols, the method comprising the steps of: detecting the grid by detecting a plurality of locations where a dot representing one of said symbols of said constellation is located; determining a probability, at each of said plurality of locations, for a dot location corresponding to each of the symbols in the constellation; and C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692_specif .4
O
N estimating the message data using the determined probabilities to thereby Sdecode the barcode.
C Generally wherein the library has 12 symbols and there are 4 symbols in the constellation and step comprises calculating 4 probabilities at each location in the grid.
C 5 Further each dot of the barcode typically lies on a line of the grid.
CN Other aspects are disclosed.
O
BRIEF DESCRIPTION OF THE DRAWINGS At least one embodiment of the present invention will now be described with reference to the drawings, in which: Fig. 1 shows the 12 different ways to place a 2x1 symbol inside a 3x3 grid; Fig. 2 shows the dot centres of the 12 possible 2x1 symbols of Fig. 1; Fig. 3 is a section of a bitmap containing a DM barcode; Fig. 4 shows examples of possible constellations to use for creating a DM barcode; Fig. 5 shows how vertical and horizontal tiles are used to calculate x and y component of the grid parameters; Fig. 6 shows a flow chart describing an encoding example according to the present disclosure; Fig. 7 shows a flow chart describing a decoding example according to the present invention; Fig. 8 shows a document containing a DM barcode; Fig. 9 shows a scanned document containing the DM barcode divided into cells; and Fig. 10 is a schematic block diagram representation of a general purpose computer system in which the described arrangements may be performed.
C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692_speci_f c DETAILED DESCRIPTION INCLUDING BEST MODE
INTRODUCTION
Disclosed herein is a barcode termed by the present inventors as a "Digital Marble" barcode, herein abbreviated to the "DM barcode". The DM barcode is a two-dimensional 5 machine readable mark that can be printed onto paper using standard printers such as laser (Ni r or inkjet printers and can be read through the use of a standard desktop scanner. One advantage that the DM barcode has over the prior art is it offers significantly larger data capacities. Further, the size of the barcode can be arbitrarily large or small whilst being still resistant to warping and page distortions. Thus the encoded data can be decoded even after photocopying, folding and coffee staining. Further the DM barcode has no indicator pattern or alignment pattern contained within the barcode, so no space is sacrificed.
The methods of barcode encoding (generation), printing, scanning and decoding may be implemented using a computer system 1000, such as that shown in Fig. 10 wherein the processes of Figs. 1-9 may be implemented as software, such as one or more application programs executable within the computer system 1000. In particular, the barcoding method is effected by instructions in the software that are carried out within the computer system 1000. The instructions may be formed as one or more code modules, each for performing one or more particular tasks. The software may also be divided into two separate parts, in which a first part and the corresponding code modules performs the barcoding methods and a second part and the corresponding code modules manage a user interface between the first part and the user. The software may be stored in a computer readable medium, including the storage devices described below, for example. The software is loaded into the computer system 1000 from the computer readable medium, and then executed by the computer system 1000. A computer readable medium having such C:\NrPortbI\SAF\LDP\618344_1 .DOC 789692_specif
\O
-6software or computer program recorded on it is a computer program product. The use of Sthe computer program product in the computer system 1000 preferably effects an advantageous apparatus for barcode generation, printing, scanning and decoding.
As seen in Fig. 10, the computer system 1000 is formed by a computer r, 5 module 1001, input devices such as a keyboard 1002, a mouse pointer device 1003 and a i scanner 1018, and output devices including a printer 1015, a display device 1014 and
\O
loudspeakers 1017. An external Modulator-Demodulator (Modem) transceiver device 1016 may be used by the computer module 1001 for communicating to and from a communications network 1020 via a connection 1021. The network 1020 may be a widearea network (WAN), such as the Intemrnet or a private WAN. Where the connection 1021 is a telephone line, the modem 1016 may be a traditional "dial-up" modem. Alternatively, where the connection 1021 is a high capacity (eg: cable) connection, the modem 1016 may be a broadband modem. A wireless modem may also be used for wireless connection to the network 1020.
The computer module 1001 typically includes at least one processor unit 1005, and a memory unit 1006 for example formed from semiconductor random access memory (RAM) and read only memory (ROM). The module 1001 also includes an number of input/output interfaces including an audio-video interface 1007 that couples to the video display 1014 and loudspeakers 1017, an I/O interface 1013 for the keyboard 1002 and mouse 1003 and optionally a joystick (not illustrated), and an interface 1008 for the external modem 1016, scanner 1018 and printer 1015. In some implementations, the modem 1016 may be incorporated within the computer module 1001, for example within the interface 1008. The computer module 1001 also has a local network interface 1011 which, via a connection 1023, permits coupling of the computer system 1000 to a local C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692_specif O -7computer network 1022, known as a Local Area Network (LAN). As also illustrated, the local network 1022 may also couple to the wide network 1020 via a connection 1024, N which would typically include a so-called "firewall" device or similar functionality. The interface 1011 may be formed by an Ethernet T M circuit card, a wireless Bluetooth T M or an 5 IEEE 802.11 wireless arrangement.
,IC The interfaces 1008 and 1013 may afford both serial and parallel connectivity, the
INO
former typically being implemented according to the Universal Serial Bus (USB) standards and having corresponding USB connectors (not illustrated). Storage devices 1009 are provided and typically include a hard disk drive (HDD) 1010. Other devices such as a floppy disk drive and a magnetic tape drive (not illustrated) may also be used. An optical disk drive 1012 is typically provided to act as a non-volatile source of data. Portable memory devices, such optical disks (eg: CD-ROM, DVD), USB-RAM, and floppy disks for example may then be used as appropriate sources of data to the system 1000.
The components 1005, to 1013 of the computer module 1001 typically communicate via an interconnected bus 1004 and in a manner which results in a conventional mode of operation of the computer system 1000 known to those in the relevant art. Examples of computers on which the described arrangements can be practised include IBM-PC's and compatibles, Sun Sparcstations, Apple MacTM or alike computer systems evolved therefrom.
Typically, the application programs discussed above are resident on the hard disk drive 1010 and read and controlled in execution by the processor 1005. Intermediate storage of such programs and any data fetched from the networks 1020 and 1022 may be accomplished using the semiconductor memory 1006, possibly in concert with the hard disk drive 1010. In some instances, the application programs may be supplied to the user C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692_specif -8-
O
encoded on one or more CD-ROM and read via the corresponding drive 1012, or alternatively may be read by the user from the networks 1020 or 1022. Still further, the software can also be loaded into the computer system 1000 from other computer readable media. Computer readable media refers to any storage medium that participates in I 5 providing instructions and/or data to the computer system 1000 for execution and/or
(N
NI processing. Examples of such media include floppy disks, magnetic tape, CD-ROM, a
\O
hard disk drive, a ROM or integrated circuit, a magneto-optical disk, or a computer readable card such as a PCMCIA card and the like, whether or not such devices are internal or external of the computer module 1001. Examples of computer readable transmission media that may also participate in the provision of instructions and/or data include radio or infra-red transmission channels as well as a network connection to another computer or networked device, and the Internet or Intranets including e-mail transmissions and information recorded on Websites and the like.
The second part of the application programs and the corresponding code modules mentioned above may be executed to implement one or more graphical user interfaces (GUIs) to be rendered or otherwise represented upon the display 1014. Through manipulation of the keyboard 1002 and the mouse 1003, a user of the computer system 1000 and the application may manipulate the interface to provide controlling commands and/or input to the applications associated with the GUI(s).
The application programs are operative to encode a DM barcode and reproduce that barcode as an image upon a paper medium through printing via the printer 1015.
Subsequently, the paper medium may be scanned by the scanner 1018 to extract the image, from which the computer 1001 executing the application program may then decode the DM barcode.
C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692speci f -9- SFig. 3 is a section of an exemplary DM barcode 300 presented as a bitmap before Sprinting. In the DM barcode 300, each small square 310 represents a single pixel coloured C white in the bitmap, and each symbol 311 of the DM barcode occupies 4 mutually adjacent pixels.
N 5 CONSTELLATIONS cI The DM barcode 300 is created by placing small pixel symbols 311 on a regular
O
0square grid 312. The DM barcode 300 is usually surrounded by a margin of white space
(NI
313 to aid in detecting the grid boundaries.
When the barcode is printed the pixel symbols appear as small dots and information is encoded by introducing small deviations in dot positions or locations relative to the grid position. It is noted that the terms position and location are used herein interchangeably.
Fig. 1 shows that there are 12 different pixel configurations for placing a 2x1 pixel symbol inside a 3x3 pixel grid. The configurations of Fig. 1 form a library of symbols which may be used to encode a message in a 2-dimensional barcode. After printing and scanning, the orientation of the pixel symbol can no longer be discerned, however the position of the centre of the scanned dot (representing the symbol) can be found with a sufficient degree of accuracy. Fig. 2 shows where the dot centres would lie after printing of the pixel symbols from Fig. 1. More specifically symbols 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155 and 160 correspond to dot centres 205, 210, 215, 220, 225, 230, 235, 240, 245, 250, 255 and 260 respectively.
Not all possible dot positions or locations need to be used in a DM barcode.
Normally a subset of the pixel configurations is chosen from the library of symbols to form a constellation. In Fig. 4, each of 410, 411, 412, and 413 illustrate some constellations that can be used to encode data in a DM barcode. Other constellations may be developed. The C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692_speci_f 0 c encoding and decoding examples to be described use constellation 411 as the encoding Sconstellation. While the constellation used is normally a subset of the library of symbols it C is possible for the constellation to be the same as the library of symbols. For the present example, the library has 12 symbols and there are 4 symbols in the constellation.
cN 5 ENCODING c To create a barcode, several encoding parameters are specified including the height
O
Sand width of the barcode in symbols, and the data to encode. Other parameters also specified are the constellation, the grid spacing in pixels (which is the space between the expected position of symbols), the data block sizes in symbols, before (referred to as data_block_symbol_size) and after (referred to as encoded_block_symbol_size) an error correction code is applied to the data to encode. As these parameters are also used in the complementary DM barcode decoder, they may be grouped as a packet, referred to herein as the DM Profile. In the present implementation the error correction code used is Low Density Parity Check, referred to as LDPC, however other correction codes like Turbo codes, and Reed-Solomon may be used instead. After choosing the encoding parameters, the DM barcode is produced by following the steps of the encoding process 600 in Fig. 6.
BARCODE SIZE AND NUMBER OF BLOCKS CALCULATIONS The method 600 of encoding a DM barcode firstly in step 610 calculates barcode dimensions and data blocks. From the input parameters the barcode dimensions in pixels is calculated: barcode_pixel_width barcode symbol_width grid_spacing barcode_pixel_height barcode_symbol_height gridspacing Also the input data block size in bytes is calculated from the input parameters: data_blockbyte_size int (data_block_symbol_size log2(constellation_size) 8) C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692_specif
O
-11c where constellation_size is the number of different symbol configurations in the input constellation, for example in the case of constellation 411 the size is 4.
C The number blocks for encoding is calculated as: num_symbols barcode_symbolwidth barcode_symbolheight N 5 num blocks int(numsymbols encoded_blocksymbolsize).
(,1 C The following constraint is ensured to make sure the barcode is large enough for the
(O
input data to fit: numblocks data_block_byte_size input_data_bytesize.
It will be appreciated that the above specific calculations are only performed in the present implementation of the DM barcode encoder. In other implementations where different input parameters are given to the encoder different calculations may need to be performed.
BLOCK SCRAMBLING The next step is step 615, which may be termed block scrambling and involves an XOR of the data blocks with a pseudorandom noise mask. Input data blocks of size data_block_byte_size are read and scrambled with pseudo-random noise using an XOR operation. The purpose is to remove any statistical bias from the input data.
BASE CONVERSION Step 620 performs base conversion. The blocks of scrambled data are converted to blocks of symbols of base constellation size, the size of the converted block is data_block_symbol_size and is padded with zeros if necessary.
C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692_speci_f 0 -12c~ ERROR CODE CORRECTION Step 625 handles the error correction code. In this implementation, the LDPC error CI correction code is applied to the base converted blocks to create LDPC encoded blocks of size encoded_block_symbolsize in base constellation_size.
N 5 GRID COORDINATES PERMUTATION cI The next step 630 involves permutation of the grid coordinates. For each symbol
NO
0index in the LDPC encoded block, a pre-computed pseudo-random permutation table is used to map the symbol index to a corresponding grid position. Each symbol index in each block should have a unique grid position mapping.
BITMAP RENDER The last step of the method 600 is a bitmap render step 635. The pixel configuration from the selected constellation is rendered onto the bitmap which corresponds to the symbol at the mapped grid position. After processing all the input data blocks, the final result is a bitmap, such as that shown in Fig. 3 which contains num_symbols rendered pixel configurations representing the input data and extra error correction information in base constellation size.
DECODING
Decoding a DM barcode involves taking a scanned image of the surface (eg. paper) onto which the barcode has been printed, and processing it through a decoding process to retrieve the data stored within the barcode. Fig. 8 is an example of a scanned paper document 800 containing text 810 and a DM barcode 811. A decoding process 700 for decoding a DM barcode is shown in Fig. 7.
C:\NrPortbl\SAF\LDP\618344_1.DOC 789692_speci_f -13- DOT DETECTION Q The first step of the method 700 is dot detection in step 710. Dots in the image C, scanned by the scanner 1018 appear as a smooth round dip in the luminance image, irrespective of the pixel configuration used to print the dot. A pixel is considered to be a CN 5 dot if: Ci it is a local minimum in its immediate neighbourhood of pixels, and
\O
the pixels grey value is less than a threshold.
The value of the threshold is either a fixed constant or calculated dynamically by a dynamic thresholding algorithm.
One possible dynamic thresholding algorithm that gives good results is: threshold min(average, maximum MINCONTRAST) where average is the average pixel grey value over the 16x16 neighbourhood of the current pixel, maximum is the largest pixel grey value over the same 16x16 neighbourhood and MIN CONTRAST is a constant.
Once a dot has been detected, for improved results the co-ordinates of the centre of the dot can be calculated with sub-pixel accuracy. One way of doing this is using a parabolic fit over its 3x3 neighbourhood: x c =x-b/a y, =y-c/a' where a -4V+2(V
V+
1 V,y+I,) b Vx+, 4 1 Vx-. c (V- 1 Vx V 1 Vx.- V+ 1 y) and C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692_speci_f
O
-14c y are the pixel coordinates of the local minimum, V,.j is the pixel value at coordinates and (x c y) are the coordinates of the dot centre.
CANDIDATE REGION DETECTION The next step of the method 700 involves candidate region detection in step 715.
N The purpose of step 715 is to identify the area that the DM barcode belongs to on the CNi scanned image. In one embodiment this is performed by analysing the dot density of the image. The process is: break the image up in into equally spaced small cells; count how many dots belong to each cell; flag those cells which have a dot count above a certain threshold; perform connect component analysis by grouping connected flagged cells; flag groups which are roughly rectangular in appearance and satisfy minimal size constraints; and adding a safety margin around the group, and the region becomes a potential candidate for containing a DM barcode.
Fig. 9 shows how the scanned image 900 of the document containing a DM barcode 911 which is broken up into small equally spaced cells 910. In Fig. 9, an example of a cell that would contain a high dot count and be flagged is the cell 912.
ORIENTATION AND SPACING DETERMINATION The next step of the method 700 is step 720 which performs orientation and spacing determination. The purpose of this step is to provide an initial estimation of the grid spacing and the angle of rotation. The approach used in this embodiment is a point- C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692_speci_f
O
0 c sampling of the continuous Fourier transform and searching for the highest peak. This is Sthe initial estimation and does not account for small variations in the grid spacing through C the barcode.
First, a cell is selected in the middle of the DM candidate region. The coordinates l 5 of the top-left corer of this cell become the approximate origin of the grid (xgc yg, c)
C
The height of the frequency response peak is calculated as:
O
N H= Fo, r 2 where F(co, a) e-w((x x )cosa+(y'-y g )sin a is the Fourier transform of the function f(x,y)with arguments expressed in polar coordinates centred at Yg), 2r co is the special frequency of the grid for the given grid spacing, grid spacing a is the rotation angle of the grid, Fho, and Fver, a 2 are the values of the Fourier transform in the horizontal direction of the grid rotated by the angle a, and (xi, is a co-ordinate of a dots in the DM candidate region with index i.
When searching for the highest peak, all the possible values of grid_spacing are tried over an angular range of a ±10" at 20 equally spaced values. The value of grid_spacing and a that gives the highest peak is then recorded. The grid_spacing is C:\NrPortbl\SAFLDP\618344_1 .DOC 789692_speci_f N -16-
O
c considered to be detected if the ratio of the highest peak to the second-best peak is greater than a pre-set threshold, otherwise the entire candidate region is rejected.
c A finer estimation for a is then computed by searching in the vicinity of the previously found a using progressively smaller steps until the desired accuracy is CN 5 achieved.
C Once the orientation is found, the origin of the grid can be calculated as:
O
S
x in1 o=xg (arg Fho, cos a arg sin a) co Yin, _o (arg sin a arg cos a).
CREATING THE GRID AND EXTENDING THE GRID Step 725 operates to create the grid of the barcode. The purpose of this step is to find the co-ordinates of the grid points with a high degree of accuracy taking into account small localised variations in the co-ordinate positions due to page warping.
In this embodiment, the information of localised warping is stored at each grid point as a grid parameter. This grid parameter can be used to calculate the grid-point's coordinate to a high degree of accuracy. The grid is created by initially taking a small square tile in the centre of the barcode region and finding the corresponding dot to each grid position in the initial tile. The corresponding dots are found by first estimating the expected dot coordinates at the grid position (col,row): Xcolrow Xini o grid spacing(col cos a rowsin a) Ycoi.ow yint grid spacing(col sin a row cos a) where: Xinit o, yinit o, grid spacing, a are the initial estimations calculated in step 720.
C:\NrPortbl\SAF\LDP\618344_1.DOC 789692_speci_f
O
-17c Next, the nearest dot closest to this grid position co-ordinate is found, and a check is done to make sure it is not closer to another grid position co-ordinate, using the equation: (xfou d Xcolrow )cos a (Yfound Ycol,row )sin a rI~pd grid spacing \(yfound Ycol,row )cos a (X found col,row )sin a grid- spacing 2 t After a sufficient number of dots have been associated with the grid points in the
ID
initial tile, the grid parameters can begin to be calculated by averaging the dots' coordinates using the least squares fit method.
The grid parameters are the grid origin(xo,yo), with column displacement (dxco,,dycol) and row displacement (dxow,dyco t The expected co-ordinates of the dot position at (row, col) in the grid can be calculated as: xco.row x o dx c col +dx o row row (1) ycorow Yo dyco col dyo w row The x-components of the grid parameters dxcot, and dxow) at grid position (row, col) 510 seen in Fig. 5 are calculated using the least squares fit method taking the coordinates of the known dots 512 in a vertical oriented tile 513. The y-components of the grid parameters (yo, dyco 1 and dyr o w) are similarly calculated for the grid position 510 but this time using the dots from a horizontally oriented tile 511.
The grid is expanded by a whole rows and columns at each edge, by using the equation with the grid parameters of a nearby grid position to estimate the co-ordinate of the new dot on the edge that is being expanded. After expansion the new dot positions are used to calculate more grid parameters. This process continues until it is not possible to expand the grid any further in all 4 directions.
C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692_speci_f -18c, UNDO DOT COORDINATE PERMUTATION
U
SStep 730 operates to undo coordinate permutations. The DM barcode is decoded block by block, and each block is formed from a demodulating step 735, which interprets the dots to symbols that form the block located at various grid positions. The grid C 5 positions in the block are determined by using the same permutation function used in the I encoder in step 630 to distribute the elements of the block to grid positions. In this case the permutation function is used to find which grid positions belong to the block being decoded.
DEMOD ULA TION Demodulation step 735 operates to produce a set of (symbol number i, probability) pairs for each grid position in the block currently being decoded. Each pair represents the probability that the pixel pattern at that grid position was produced by the ith symbol in the chosen encoding constellation 411. For the present example, the library has 12 symbols and there are 4 symbols in the constellation, therefore it is appropriate to calculate 4 probabilities at each location in the grid.
In one embodiment this is done by referring back to the original input scanned image, and around each grid position, by sampling greyscale values at the co-ordinates of the dot-centres of the symbols in the constellation. The intention is that the darker the greyscale value, the more likely the scanned dot was encoded using this particular symbol centred at the greyscale value sample point. For more accurate results, the image is sampled at sub-pixel accuracy by using bi-linear interpolation. The conversion from grey scale values to probabilities may be done by a number of methods; in this embodiment the following equations were used: C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692_speci_f ID -19i e-gi c' where 1i is likelihood of i-th symbol, and gi is the greyscale value sampled at the dot centre from the grid position for the i-th symbol in the constellation. The parameter a can be fixed or automatically chosen through algorithmic means. The fixed value a 0.25 t 5 has been found by the present inventors to work well.
ID
0 The likelihoods are then normalised to obtain the probabilities: Other possible embodiments for performing demodulation are by using solely the dot positions associated with each grid point found in step 725. The probability function is formed by using the heuristic: the closer the dot's position is to the expected dot centre for the particular symbol in the constellation, the more likely the dot was encoded with that particular symbol.
ERROR CORRECTION CODE APPLICATION Step 740 applies the error correction code. The reason why, for each index in the block, probabilities are stored for all possible symbols in the encoding constellation, is so that it can be used with a soft-error correction code, such as LDPC, to correct any errors.
Soft-error correcting codes offer a much improved performance when it comes to correcting errors over the traditional hard methods.
In step 740, LDPC error correction is applied to a whole block of symbol probabilities. The base used in the LDPC is equal to the encoding constellation size. The output of step 740 is a block containing the correct symbols that were used to originally encode the LDCP block.
C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692_speci_f 0 c~ BINARY CONVERSION SIn step 745, the symbols in the LDPC output block are converted from base c constellation_size back into a binary base.
PSEUDO-RANDOM NOISE REMOVAL C 5 In step 750, the binary converted block is descrambled by XORing the contents of CN the block with the same pseudo-random noise used in encoding. The same pseudo-random
\O
0noise can be generated by using the same seed both in encoding and later in decoding. The descrambled blocks are put together to form the original input data. The decoding method 700 then ends.
Industrial Applicability The arrangements described are applicable to the computer and data processing industries and particularly to the printing of documents encoded with a 2-dimensional barcode and for consequential decoding.
The foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the embodiments being illustrative and not restrictive.
(Australia Only) In the context of this specification, the word "comprising" means "including principally but not necessarily solely" or "having" or "including", and not "consisting only of'. Variations of the word "comprising", such as "comprise" and "comprises" have correspondingly varied meanings.
C:\NrPortbl\SAF\LDP\618344_1 .DOC 789692_speci_f

Claims (5)

1. A method of decoding a barcode, the barcode comprising message data encoded on a grid using symbols from a constellation of symbols, the method comprising the steps of: NC 5 detecting the grid by detecting a plurality of locations where a dot (N CN representing one of said symbols of said constellation is located; determining a probability, at each of said plurality of locations, for a dot location corresponding to each of the symbols in the constellation; and estimating the message data using the determined probabilities to thereby decode the barcode.
2. A method according to claim 1 wherein the library has 12 symbols and there are 4 symbols in the constellation and step comprises calculating 4 probabilities at each location in the grid.
3. A method according to claim 1 wherein each dot of the barcode lies on a line of the grid.
4. A method of encoding a 2 dimensional barcode substantially as described herein with reference to Fig. 6 of the drawings. A method of decoding a 2 dimensional barcode substantially as described herein with reference to Fig. 7of the drawings. C:\NrPortbl\SAF\LDP\618344 1.DOC 789692_sped_f O N -22- S6. A computer readable medium having a computer program recorded thereon and Q adapted to make a computer device execute the method of any one of claims 1 to
7. Computer apparatus adapted to execute the method of any one of claims 1 to ,i C 8. A 2 dimensional barcode substantially as described herein with reference to Figs, 1 Sand 2 of the drawings. Dated this 22nd day of December 2006 CANON KABUSHIKI KAISHA Patent Attorneys for the Applicant Spruson&Ferguson C:\NrPortbl\SAF\LDP\618344_1.DOC 789692_speci_f
AU2006252242A 2006-12-22 2006-12-22 Encoding and decoding data on a surface Abandoned AU2006252242A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2006252242A AU2006252242A1 (en) 2006-12-22 2006-12-22 Encoding and decoding data on a surface

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AU2006252242A AU2006252242A1 (en) 2006-12-22 2006-12-22 Encoding and decoding data on a surface

Publications (1)

Publication Number Publication Date
AU2006252242A1 true AU2006252242A1 (en) 2008-07-10

Family

ID=39665871

Family Applications (1)

Application Number Title Priority Date Filing Date
AU2006252242A Abandoned AU2006252242A1 (en) 2006-12-22 2006-12-22 Encoding and decoding data on a surface

Country Status (1)

Country Link
AU (1) AU2006252242A1 (en)

Similar Documents

Publication Publication Date Title
US8594453B2 (en) Method of robust alignment and payload recovery for data-bearing images
US8023160B2 (en) Encoding message data in a cover contone image via halftone dot orientation
US8014035B2 (en) Decoding message data embedded in an image print via halftone dot orientation
US8244067B2 (en) Constellation detection
US10679175B2 (en) Two-dimensional code, system for creation of two-dimensional code, and analysis program
AU2007254619B2 (en) Barcode removal
JP5253352B2 (en) Method for embedding a message in a document and method for embedding a message in a document using a distance field
US8456699B2 (en) System and method for creating a data-bearing image
US20060157574A1 (en) Printed data storage and retrieval
Bulan et al. Orientation modulation for data hiding in clustered-dot halftone prints
US20130301870A1 (en) Embedding visual information in a two-dimensional bar code
US8488837B2 (en) Apparatus and method for generating constructively multi-patterned watermark, and apparatus and method for inserting and detecting the watermark using the same
JPWO2004098171A1 (en) Watermark information detection method
Bulan et al. High capacity color barcodes: Per channel data encoding via orientation modulation in elliptical dot arrays
CN109840576A (en) The generation method and coding/decoding method of anti-copying two dimensional code based on segmentation insertion
AU2007254626A1 (en) Data encoding and decoding using circular configurations of marks
Zou et al. Formatted text document data hiding robust to printing, copying and scanning
AU2006252254A1 (en) Multiple barcode detection
AU2010257220B2 (en) Data block offset encoding method for coordinates
JP2009070061A (en) Two-dimensional code reading device, two-dimensional code reading method, two-dimensional code reading program and recording medium
AU2006252242A1 (en) Encoding and decoding data on a surface
EP2529331A1 (en) Parallel test payload
AU2005209709A1 (en) Two dimensionally phase modulated information symbol
TWI411927B (en) Method of embedding information in input image, method of extracting information from input image and related apparatuses thereof
Briffa et al. Imperceptible printer dot watermarking for binary documents

Legal Events

Date Code Title Description
MK1 Application lapsed section 142(2)(a) - no request for examination in relevant period