AU2009202557A1 - QR code encoding method - Google Patents

QR code encoding method Download PDF

Info

Publication number
AU2009202557A1
AU2009202557A1 AU2009202557A AU2009202557A AU2009202557A1 AU 2009202557 A1 AU2009202557 A1 AU 2009202557A1 AU 2009202557 A AU2009202557 A AU 2009202557A AU 2009202557 A AU2009202557 A AU 2009202557A AU 2009202557 A1 AU2009202557 A1 AU 2009202557A1
Authority
AU
Australia
Prior art keywords
code
symbols
secondary data
data
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
Application number
AU2009202557A
Inventor
Andrew James Fields
James Swayn
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 AU2009202557A priority Critical patent/AU2009202557A1/en
Publication of AU2009202557A1 publication Critical patent/AU2009202557A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record 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/06009Record 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/06037Record 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record 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/06009Record 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/06046Constructional details
    • G06K19/06056Constructional details the marking comprising a further embedded marking, e.g. a 1D bar code with the black bars containing a smaller sized coding
    • 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/1434Barcodes with supplemental or add-on codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes

Description

S&F Ref: 886936 AUSTRALIA PATENTS ACT 1990 COMPLETE SPECIFICATION FOR A STANDARD PATENT Name and Address Canon Kabushiki Kaisha, of 30-2, Shimomaruko 3 of Applicant : chome, Ohta-ku, Tokyo, 146, Japan Actual Inventor(s): James Swayn Andrew James Fields Address for Service: Spruson & Ferguson St Martins Tower Level 35 31 Market Street Sydney NSW 2000 (CCN 3710000177) Invention Title: QR code encoding method The following statement is a full description of this invention, including the best method of performing it known to me/us: 5845c(2172834_1) -1 QR CODE ENCODING METHOD Technical Field of the Invention The current invention relates generally to the field of two-dimensional barcodes and in particular to methods of encoding QR codes. s Background For many years, two-dimensional barcodes have been used in a wide variety of applications ranging from the marking of packages for identification during transport to providing hyper-links to product information in marketing materials. In recent years, the so-called QR (Quick Response) codes 100 have enjoyed a surge in popularity due to their 1o high robustness to damage and their ability to be decoded at high speed by relatively simple decoder hardware. In many applications of QR codes, and indeed of two-dimensional barcodes in general, the specifications of the system in which the codes are used dictates the format and extent of the data that is stored in the code. An example is a paper document 15 workflow system in which QR codes are used to store information about printed documents. In such systems, the data in the QR codes typically consists of a fixed number of fields encoding information such as when a document was printed and by whom. This format may be defined by a standard that is agreed upon between multiple equipment vendors. As such, modifying the format to add additional information to the QR codes 20 used in the system would not be possible without violating compliance with that standard. One way to add extra information to two-dimensional barcodes in which the format of the primary data cannot be modified without breaking compatibility with an established standard is simply to print another barcode encoding the desired extra information near the existing barcode. While conceptually simple, a disadvantage to 25 using this technique is that completely new encoder and decoder functionalities need to be implemented for interacting with the new barcode, increasing the cost and complexity of the system. Another drawback to this technique is that the new barcode requires additional space on the page, which may not be possible in some situations. Furthermore, the obvious addition of a new barcode to the page may be undesirable in applications 30 where the extra data is to be used for security purposes. Both of these limitations could be overcome by printing the second barcode on top of the existing barcode in invisible ink. However, this would result in a further increase in the cost and complexity of the system. Another way to add to add extra information to a two-dimensional barcode in which the format of the primary data cannot be modified is to add an extra level of 35 modulation to the barcode. A common technique is to add high-resolution information- -2 carrying patterns to the existing information-carrying components of the barcode. These high-resolution sub-structures will typically not affect decoding of the primary barcode data by a standard decoder, but will be detectable by an additional more advanced decoder. However, the requirement for this additional more advanced decoder will s necessarily result in an increase to system cost and complexity. Summary It is an object of the present invention to substantially overcome, or at least ameliorate, one or more disadvantages of existing arrangements. Disclosed are arrangements, referred to as Error Flagged Data Communication 1o (or EFDC) arrangements, which seek to address the above problems by incorporating secondary data into the primary data of the QR codes after that primary data has been encoded for error correction, thus introducing deliberate errors that flag the presence of the secondary data. The error correction capability of the QR codes is used to recover the primary data. Various methods can be used to identify the locations of the encoded the 15 secondary data and to extract this secondary data. According to a first aspect of the present invention, there is provided a method of encoding, by an encoder for decoding by a decoder, primary and secondary data in a QR code having a predetermined code configuration, said method comprising the steps of: providing a plurality of symbols encoding the primary data in the QR code, said 20 plurality of symbols being error correction encoded; selecting at least one symbol from the plurality of symbols; modifying the at least one selected symbol to encode the secondary data, thereby introducing an error in the error correction encoded plurality of symbols, said error being correctable by the decoder to thereby recover the primary data; and 25 using the error correction encoded plurality of symbols and said at least one modified symbol to construct the QR code carrying the primary data and the secondary data. According to a second aspect of the present invention, there is provided a method of decoding secondary data in a QR code encoded with both primary and secondary data, 30 said method comprising the steps of: receiving a plurality of symbols encoding the primary data and secondary data in the QR code; identifying symbols encoding the secondary data based on the predetermined configuration of the QR code; and 35 extracting the secondary data from said identified symbols.
-3 According to another aspect of the present invention, there is provided an apparatus for implementing any one of the aforementioned methods. According to another aspect of the present invention there is provided a computer readable storage medium having recorded thereon a computer program for implementing 5 any one of the aforementioned methods. Other aspects of the invention are also disclosed. Brief Description of the Drawings One or more embodiments of the invention will now be described with reference to the following drawings, in which: 0 o Fig. 1 is an example image of a QR code; Fig. 2 is a diagram showing the features of QR codes; Fig. 3 is a schematic flow diagram illustrating the standard method of encoding a QR code; Fig. 4 is a schematic flow diagram illustrating the standard method of decoding a 15 QR code; Fig. 5 is a schematic flow diagram illustrating a method of adapting a QR code to embed secondary data in accordance with an EFDC arrangement; Fig. 6 is a schematic flow diagram illustrating a method of recovering secondary data from a QR code in accordance with an EFDC arrangement; 20 Fig. 7 is a schematic flow diagram illustrating a method of extracting secondary data from a QR code as used in the method of Fig. 6. Fig. 8 is a schematic flow diagram illustrating a method of preparing secondary data to be embedded in a QR code in accordance with an EFDC arrangement; Fig. 9 is a schematic flow diagram illustrating an alternative method of extracting 25 secondary data from a QR code as used in the method of Fig. 6 in accordance with another EFDC arrangement; Fig. 10 is a schematic flow diagram illustrating a method of determining a list of potential secondary data symbols as used in the method of Fig. 9. Fig. 11 is a schematic flow diagram illustrating a method of refining a list of 30 potential secondary data symbols as used in the method of Fig. 10. Fig. 12 is a diagram showing how symbol correlation templates are formed in the method of Fig. 11. Fig. 13 is a diagram showing how symbol correlation templates are used in the method of Fig. 11.
-4 Fig. 14 is a schematic flow diagram illustrating a method of determining candidate sets of secondary data as used in the method of Fig. 9. Fig. 15 is a schematic flow diagram illustrating a method of preparing candidate sequences of secondary data symbols as used in the method of Fig. 14. 5 Fig. 16 is a schematic flow diagram illustrating a method of decoding a candidate sequence of secondary data symbols as used in the method of Fig. 14. Fig. 17 is a diagram showing a subregion of a QR code for which a sampling grid is to be created; Fig. 18 is a schematic flow diagram illustrating a method of adapting a QR code 1o to include additional alignment features in accordance with an EFDC arrangement; Fig. 19 is a diagram showing a QR code with additional alignment features added in accordance with an EFDC arrangement; Fig. 20 is a diagram showing a subregion of a QR code for which an improved sampling grid is to be created in accordance with an EFDC arrangement; is Fig. 21 is a schematic flow diagram illustrating a method of creating an improved sampling region for a QR code subregion in accordance with an EFDC arrangement; Figs. 22A and 22B form a schematic block diagram of a general purpose computer system upon which the arrangements described can be practiced; 20 Fig. 23 illustrates structures of data as the data passes through the process depicted in Fig. 3; and Fig. 24 shows an example of how symbols are selected to encode secondary data in accordance with an EFDC arrangement. Detailed Description of Embodiments of the Invention 25 Where reference is made in any one or more of the accompanying drawings to steps and/or features, which have the same reference numerals, those steps and/or features have for the purposes of this description the same function(s) or operation(s), unless the contrary intention appears. It is to be noted that the discussions contained in the "Background" section and 30 that above relating to prior art arrangements relate to discussions of devices which may form public knowledge through their use. Such discussions should not be interpreted as a representation by the present inventor(s) or the patent applicant that such devices in any way form part of the common general knowledge in the art. The EFDC arrangements provide means to adapt QR codes to embed additional 35 secondary data without modifying the primary data stored in the code and without -5 violating compliance with the relevant QR code standard. The EFDC arrangements also provide means to use such secondary data capacity to add additional alignment features to QR codes, these alignment features being usable by the decoder to enable more accurate sampling of the QR code image during decoding. The term "Image" in this description 5 refers to the information captured with a common imaging device such as a camera 2227, or a scanner 2226 (see Fig. 22A). HARDWARE DESCRIPTION It should be understood that the EFDC processes described herein relating to the encoding and decoding of QR codes are suitable for implementation by a wide range of a0 computational arrangements. In this description, such processes are implemented in software and executed on general processor hardware. However, this is not a requirement. Alternatively, custom hardware logic such as Field Programmable Gate Arrays (FPGAs) or Application Specific Integrated Circuits (ASICs) can also be used to implement the EFDC processes related to QR code encoding and decoding described herein. Regardless is of the nature of the arrangement chosen to execute instructions required by the processes described herein, it should be understood that all information and intermediate computational results used in and generated by such processes would generally be stored in a digital memory of some kind such as random access memory or magnetic storage devices as described in relation to Figs. 22A and 22B. 20 The EFDC processes described herein should generally be understood to form components of a larger QR code encoding or decoding system 2200 (see Fig. 22A). To illustrate how these processes would be applied, a QR code decoding system can, for example, be created consisting of a personal computer 2201 running QR code decoding software 2233 implementing EFDC processes such as those described herein. Users can 25 interact with the system 2200 through common human interface devices such as a keyboard 2202, a mouse 2203 and the like. Images of QR codes can be acquired by the system 2200 with common imaging devices such as a camera 2227, a scanner 2226 (for example by scanning the QR code from a document in a paper document workflow system) and the like. Information can be displayed to users with display devices such as a 30 monitor 2214. In a corresponding QR encoder system, images of QR codes can be output through devices such as a printer 2215, for example by printing the QR code onto a document in a paper document workflow system. The previous scenario presumes, for simplicity, that the system 2200 in Figs. 22A and 22B is used to describe both the encoding and the decoding system. It is noted however that the encoding and decoding 35 functions can be performed either on the same system such as 2200 or on distinct systems.
-6 Note that the characteristics of the systems described here are for illustrative purposes only, and should not be construed in any limiting sense. Any system comprising some form of computing hardware and information input and output means of any nature would be within scope for the implementation of the EFDC processes described in relation to the 5 embodiments of the EFDC arrangements. Figs. 22A and 22B collectively form a schematic block diagram of a general purpose computer system 2200, upon which the various EFDC arrangements described can be practiced. In this description both the EFDC encoder and decider functionality is practiced on the same computer system 2200. The encoder/decider functionalities can to however be partitioned and distributed in other ways. As seen in Fig. 22A, the computer system 2200 is formed by a computer module 2201, input devices such as the keyboard 2202, the mouse pointer device 2203, the scanner 2226, the camera 2227, and a microphone 2280, and output devices including the printer 2215, the display device 2214 and loudspeakers 2217. An external Modulator is Demodulator (Modem) transceiver device 2216 may be used by the computer module 2201 for communicating to and from a communications network 2220 via a connection 2221. The network 2220 may be a wide-area network (WAN), such as the Internet or a private WAN. Where the connection 2221 is a telephone line, the modem 2216 may be a traditional "dial-up" modem. Alternatively, where the connection 2221 is a high capacity 20 (eg: cable) connection, the modem 2216 may be a broadband modem. A wireless modem may also be used for wireless connection to the network 2220. The computer module 2201 typically includes at least one processor unit 2205, and a memory unit 2206 for example formed from semiconductor random access memory (RAM) and semiconductor read only memory (ROM). The module 2201 also includes an 25 number of input/output (1/0) interfaces including an audio-video interface 2207 that couples to the video display 2214, loudspeakers 2217 and microphone 2280, an I/O interface 2213 for the keyboard 2202, mouse 2203, scanner 2226, camera 2227 and optionally a joystick (not illustrated), and an interface 2208 for the external modem 2216 and printer 2215. 30 In some implementations, the modem 2216 may be incorporated within the computer module 2201, for example within the interface 2208. The computer module 2201 also has a local network interface 2211 which, via a connection 2223, permits coupling of the computer system 2200 to a local computer network 2222, known as a Local Area Network (LAN). As also illustrated, the local network 2222 may also couple 35 to the wide network 2220 via a connection 2224, which would typically include a so- -7 called "firewall" device or device of similar functionality. The interface 2211 may be formed by an EthernetTM circuit card, a BluetoothTM wireless arrangement or an IEEE 802.11 wireless arrangement. The interfaces 2208 and 2213 may afford either or both of serial and parallel 5 connectivity, the former typically being implemented according to the Universal Serial Bus (USB) standards and having corresponding USB connectors (not illustrated). Storage devices 2209 are provided and typically include a hard disk drive (HDD) 2210. Other storage devices such as a floppy disk drive and a magnetic tape drive (not illustrated) may also be used. An optical disk drive 2212 is typically provided to act as a non-volatile io 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 2200. The components 2205 to 2213 of the computer module 2201 typically communicate via an interconnected bus 2204 and in a manner which results in a is conventional mode of operation of the computer system 2200 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. The EFDC method may be implemented using the computer system 2200 20 wherein the processes of Figs. 5-16, 18 and 21, to be described, may be implemented as one or more software application programs 2233 executable within the computer system 2200. In particular, the steps of the EFDC method are effected by instructions 2231 in the software 2233 that are carried out within the computer system 2200. The software instructions 2231 may be formed as one or more code modules, each for performing one 25 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 EFDC methods and a second part and the corresponding code modules manage a user interface between the first part and the user. The software 2233 is generally loaded into the computer system 2200 from a 30 computer readable medium, and is then typically stored in the HDD 2210, as illustrated in Fig. 22A, or the memory 2206, after which the software 2233 can be executed by the computer system 2200. In some instances, the EFDC application programs 2233 may be supplied to the user encoded on one or more CD-ROM 2225 and read via the corresponding drive 2212 prior to storage in the memory 2210 or 2206. Alternatively the 35 software 2233 may be read by the computer system 2200 from the networks 2220 or 2222 -8 or loaded into the computer system 2200 from other computer readable media. Computer readable storage media refers to any storage medium that participates in providing instructions and/or data to the computer system 2200 for execution and/or processing. Examples of such storage media include floppy disks, magnetic tape, CD-ROM, a hard s disk drive, a ROM or integrated circuit, USB memory, 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 2201. Examples of computer readable transmission media that may also participate in the provision of software, application programs, instructions and/or data to the computer module 2201 include radio or infra-red to 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 2233 and the corresponding code modules mentioned above may be executed to implement one or more graphical user is interfaces (GUls) to be rendered or otherwise represented upon the display 2214. Through manipulation of typically the keyboard 2202 and the mouse 2203, a user of the computer system 2200 and the application may manipulate the interface in a functionally adaptable manner to provide controlling commands and/or input to the applications associated with the GUI(s). Other forms of functionally adaptable user interfaces may 20 also be implemented, such as an audio interface utilizing speech prompts output via the loudspeakers 2217 and user voice commands input via the microphone 2280. Fig. 22B is a detailed schematic block diagram of the processor 2205 and a "memory" 2234. The memory 2234 represents a logical aggregation of all the memory devices (including the HDD 2210 and semiconductor memory 2206) that can be accessed 25 by the computer module 2201 in Fig. 22A. When the computer module 2201 is initially powered up, a power-on self-test (POST) program 2250 executes. The POST program 2250 is typically stored in a ROM 2249 of the semiconductor memory 2206. A program permanently stored in a hardware device such as the ROM 2249 is sometimes referred to as firmware. The POST program 30 2250 examines hardware within the computer module 2201 to ensure proper functioning, and typically checks the processor 2205, the memory (2209, 2206), and a basic input output systems software (BIOS) module 2251, also typically stored in the ROM 2249, for correct operation. Once the POST program 2250 has run successfully, the BIOS 2251 activates the hard disk drive 2210. Activation of the hard disk drive 2210 causes a 35 bootstrap loader program 2252 that is resident on the hard disk drive 2210 to execute via -9 the processor 2205. This loads an operating system 2253 into the RAM memory 2206 upon which the operating system 2253 commences operation. The operating system 2253 is a system level application, executable by the processor 2205, to fulfil various high level functions, including processor management, memory management, device management, 5 storage management, software application interface, and generic user interface. The operating system 2253 manages the memory (2209, 2206) in order to ensure that each process or application such as 2233 running on the computer module 2201 has sufficient memory in which to execute without colliding with memory allocated to another process. Furthermore, the different types of memory available in the system 2200 1o must be used properly so that each process can run effectively. Accordingly, the aggregated memory 2234 is not intended to illustrate how particular segments of memory are allocated (unless otherwise stated), but rather to provide a general view of the memory accessible by the computer system 2200 and how such is used. The processor 2205 includes a number of functional modules including a control is unit 2239, an arithmetic logic unit (ALU) 2240, and a local or internal memory 2248, sometimes called a cache memory. The cache memory 2248 typically includes a number of storage registers 2244 - 2246 in a register section. One or more internal buses 2241 functionally interconnect these functional modules. The processor 2205 typically also has one or more interfaces 2242 for communicating with external devices via the system bus 20 2204, using a connection 2218. The EFDC application program 2233 includes a sequence of instructions 2231 that may include conditional branch and loop instructions. The program 2233 may also include data 2232 which is used in execution of the program 2233. The instructions 2231 and the data 2232 are stored in memory locations 2228-2230 and 2235-2237 respectively. 25 Depending upon the relative size of the instructions 2231 and the memory locations 2228 2230, a particular instruction may be stored in a single memory location as depicted by the instruction shown in the memory location 2230. Alternately, an instruction may be segmented into a number of parts each of which is stored in a separate memory location, as depicted by the instruction segments shown in the memory locations 2228-2229. 30 In general, the processor 2205 is given a set of instructions which are executed therein. The processor 2205 then waits for a subsequent input, to which it reacts to by executing another set of instructions. Each input may be provided from one or more of a number of sources, including data generated by one or more of the input devices 2202, 2203, data received from an external source across one of the networks 2220, 2222, data 35 retrieved from one of the storage devices 2206, 2209 or data retrieved from a storage -10 medium 2225 inserted into the corresponding reader 2212. The execution of a set of the instructions may in some cases result in output of data. Execution may also involve storing data or variables to the memory 2234. The disclosed EFDC arrangements use input variables 2254, that are stored in the 5 memory 2234 in corresponding memory locations 2255-2258. The EFDC arrangements produce output variables 2261, that are stored in the memory 2234 in corresponding memory locations 2262-2265. Intermediate variables may be stored in memory locations 2259, 2260, 2266 and 2267. The register section 2244-2246, the arithmetic logic unit (ALU) 2240, and the io control unit 2239 of the processor 2205 work together to perform sequences of micro operations needed to perform "fetch, decode, and execute" cycles for every instruction in the instruction set making up the program 2233. Each fetch, decode, and execute cycle comprises: (a) a fetch operation, which fetches or reads an instruction 2231 from a is memory location 2228; (b) a decode operation in which the control unit 2239 determines which instruction has been fetched; and (c) an execute operation in which the control unit 2239 and/or the ALU 2240 execute the instruction. 20 Thereafter, a further fetch, decode, and execute cycle for the next instruction may be executed. Similarly, a store cycle may be performed by which the control unit 2239 stores or writes a value to a memory location 2232. Each step or sub-process in the processes of Figs. 5-16, 18 and 21 is associated with one or more segments of the program 2233, and is performed by the register section 25 2244-2247, the ALU 2240, and the control unit 2239 in the processor 2205 working together to perform the fetch, decode, and execute cycles for every instruction in the instruction set for the noted segments of the program 2233. As noted, the EFDC method may alternatively be implemented in dedicated hardware such as one or more gate arrays and/or integrated circuits performing the EFDC 30 functions or sub functions. Such dedicated hardware may also include graphic processors, digital signal processors, or one or more microprocessors and associated memories. If gate arrays are used, the process flow charts in Figs. 3-11, 14-16, 18 and 21 are converted to Hardware Description Language (HDL) form. This HDL description is converted to a device level netlist which is used by a Place and Route (P&L) tool to produce a file which -11 is downloaded to the gate array to program it with the design specified in the HDL description. BACKGROUND A general description of QR codes and the encoding and decoding processes for 5 QR codes follows in order to aid the description of the EFDC embodiments. As it is assumed that the reader is already familiar with QR codes in general, the purpose of this description is primarily to introduce the QR code related terminology used in the description of the EFDC embodiments. Fig. I shows a QR code 100. The QR code 100 consists of a set of modules 120 10 arranged in a matrix fashion 110, each module 120 either encoding one bit of information or being used in fixed function patterns necessary to facilitate recovery of the information in the QR code. The term "matrix" is also used to refer to the set of modules 120 in the QR code 100. Fig. 2 shows a detailed view of the features of a QR code 200. The QR code 200 is contains three finder patterns 210 to facilitate detection of the code and provide coarse alignment information. Alignment patterns 240 are also provided in some QR codes as a source of fine alignment information. A clocking pattern 230 is also provided as an additional source of alignment information. A data region 260 of the QR code 200 consists of an arrangement of information 20 carrying symbols 270, each of which contain, as depicted in an inset 281, eight modules such as 280. The data region 260 forms part of the matrix of symbols 270. The term "matrix" refers to all modules such as 280 in the QR code, including those used in fixed function pattern such as finder patterns 210 or alignment patterns 240. The term "data region" refers only to those modules that comprise part of information carrying symbols 25 such as 270. Each symbol 270 in the QR code 200 encodes eight bits of information. It can be seen in 281 that the shape of the symbol 270 varies according to the geometrical arrangement of the modules 280 forming the symbol 270. This variation occurs because of the way that the symbols are laid out in the QR code data region. For each configuration of QR code (defined subsequently), the layout of symbols 270 in the data 30 region 260 is fixed. QR codes are configurable in the number of modules included in the code matrix (and therefore the raw information storage capacity), and this parameter is known as the version of the code. QR code versions range from I to 40. Version 1 corresponds to the smallest currently possible QR code, containing just 21 modules per side of the QR code 35 matrix (giving a total of 441 modules in the matrix). Version 40 corresponds to the largest -12 currently possible QR code, with 177 modules per side of the matrix (giving a total of 31329 modules in the matrix). Note that the version of the QR code shown in Fig. 1 is the same as that shown in Fig. 2. For codes of version 7 and above, the version of the code is stored explicitly in the QR code in version information encoding areas 250 for 5 reading by the decoder. In QR codes of version 6 and below, the version of the code is determined by the decoder based on a distance 211 between two finder patterns 210 and the size in pixels of the modules 280 of the code. QR codes are also configurable in the level of error protection provided (referred to as levels "L" through "H") for the data stored in the code. In QR codes, this error 1o protection is provided by the well-known Reed-Solomon (RS) error correcting code. The selected error correcting level of a QR code is stored in the format information encoding areas 220 for reading by the decoder. The levels of error correction currently available and the associated proportion of the QR code symbols that can be damaged without affecting recovery of the data stored in the code are as follows: IS L - 7% M - 15% Q - 25% H - 30% Fig. 3 shows a general process 300 for encoding a QR code. An initial step 310 20 inputs, for example via the keyboard 2202, the primary data 311 (also see 2301 in Fig. 23) to be encoded into the QR code and then produces, by the processor 2205 executing the EFDC software 2233, a corresponding sequence 2302 of 8-bit data symbols of an appropriate length given the desired configuration (version and error correcting level) of the code. 25 A following step 320 divides and groups the sequence 2302 of data symbols into a number of error correction coding (data symbol) blocks 2303-2305 into which the symbols are grouped. The number of data symbol blocks, and therefore the number of data symbols in each block is defined by the desired configuration (version and error correcting level) of the QR code. The data symbols in each data symbol block are used to 30 calculate, by the processor 2205 executing the EFDC software 2233, a number of parity symbols 2306 for each corresponding data symbol block 2303, which are then appended to the sequence of data symbols in that block to form a corresponding error correction coding (ECC) block 2307. The number of parity symbols 2306 calculated for each data symbol block 2303 depends on the specific Reed-Solomon (RS) error-correcting code 35 used, which is defined by the desired configuration (version and error correction level) of -13 the QR code. The choice of RS code is related to the error correcting ability of the ECC blocks (the numbers of symbol errors in any one block that can be detected and corrected). The result of this step 320 is that a number of ECC blocks 2307 are defined, each of which consists of the sequence of data symbols 2303 (referred to in the ECC block using 5 the reference numeral 2303') followed by the sequence of corresponding parity symbols 2306 (referred to in the ECC block using the reference numeral 2306'). A following step 330 interleaves the data and parity symbols in the various ECC blocks 2307, ... , 2308 produced in the step 320 to create a final sequence 2309 of data and parity symbols ready for placement in the QR code. The details of this interleaving to process are not important to the description of the EFDC arrangements, and will not be described here. A following step 340 lays out the function patterns (being the finder patterns 210, the alignment patterns 240 and the clocking patterns 230) of the QR code in the QR code matrix in a manner defined by the desired configuration of the QR code, and stored in the is memory 2206. A following step 350 lays out the final sequence 2309 of data and parity symbols found in the step 330 in the QR code matrix in a manner defined by the desired configuration of the QR code. In this step 350, the modules 280 of the QR code matrix 261 that belong to each of the symbols 270 are set to either light or dark values as 20 necessary to encode the values of those symbols. In a following step 360, the modules 280 of the QR code matrix 261 that are being used to encode information (as opposed to being used in function patterns) are exclusive-ORed (XORed) with a corresponding fixed pattern of modules to randomize the appearance of the QR code data region 260. This fixed pattern of modules is known as a 25 mask in QR code terminology. Eight possible masking patterns are provided by the QR code standard, and a QR code encoder is required to try applying all eight masks and then determine the optimal mask according to a variety of criteria. The identity of the mask actually used for a particular QR code is stored in the format information areas 220 of the QR code matrix in a following step 370, with other format and version information. This 30 is necessary to allow a QR code decoder to unmask the data region of the QR code and thereby recover the original values of the information carrying symbols. A following step 380 outputs the encoded QR code, for example as data to be communicated over the network 2220 or in printed format by the printer 2215 to form an image of the QR code. The encoding process 300 terminates at a final step 390.
-14 Fig. 4 shows a general process 400 for decoding a QR code such as the code 200 produced by the process 300 in Fig. 3. An initial step 410 samples an image of the QR code 200, for example by the camera 2227, to read out the binary values of the modules 280 of the code. This step results in a matrix of binary values corresponding to each of 5 the modules of the QR code 200. In a following step 420, format information in the format information encoding area 220 of the QR code 200 is decoded, by the processor 2205 executing the EFDC software 2233, based upon the presumption that the encoding process 300 and the decoding process 400 are, in the present example, both being performed on the system 10 2200. The result of this step 420 is that both the ECC level of the code and the identity of the mask used during encoding are determined. A following step 430 determines the version of the QR code 200. The details of this step are not important to the description of the embodiments of the EFDC arrangements and will not be described here. The result of this step is that the full is configuration of the QR code 200, being the version and ECC level, is now known. In a following step 440, the matrix of module values is exclusive-ORed (XORed) with the mask pattern determined in the step 420. This reverses the masking process applied during encoding of the QR code in the step 360 of Fig. 3, resulting in the original (unmasked) values of the QR code modules 280 being recovered. 20 A following step 450 recovers the sequence 2309 of interleaved data and parity symbols laid out in the QR code matrix during encoding from the unmasked values of the QR code modules 280. As explained previously, the mapping between modules and symbols of a QR code is defined by the configuration (version and error correcting level) of the code. Next, the sequence of data and parity symbols is de-interleaved to recover the 25 individual sequences of data 2303' and parity symbols 2306' in each ECC block 2307 of the QR code. A following step 460 carries out the error correction process on the symbols 270 in each of the ECC blocks 2307. This step detects the locations of errors in the sequence of data and parity symbols in each ECC block 2307, and then corrects those errors if 30 possible. Error correction is possible if the number of errors in the ECC block 2307 is not greater than the maximum that can be corrected given the error correcting code used in that block. The result of this step 460 is that the locations and values before and after error correction of all symbols 270 identified as errors in each ECC block of the QR code are known.
-15 A following step 470 recovers the original data 2301 that was encoded in the QR code. First, the data symbol blocks 2303, being the data symbols 2303' in ECC blocks 2307, are recovered. The recovered data symbol blocks 2303 are then concatenated to recover the original encoded data 2301. The recovered data is output in a following step 5 480, either over the network 2220 or the printer 2215, or to storage in the hard disk 2210 or the disk storage medium 2225. The decoding process terminates at a final step 490. FIRST EFDC EMBODIMENT This EFDC embodiment provides a means of encoding a QR code such as to encode additional secondary data without affecting the decoding of the primary data 1o stored in the code. Also provided is a means of recovering the secondary data from the QR code that has been encoded to carry that secondary data in accordance with the principles of this EFDC embodiment. The means of adding additional secondary data to a QR code provided by this embodiment involves modifying the values of the primary data carrying symbols 270 in is the data region 260 of the QR code 200 during the encoding process to thereby encode the secondary data. This is done, in the present EFDC arrangement, after the error correction encoding process 320 is performed on the primary data symbols so that the original primary data can still be recovered at the decoder. Each primary data symbol changed to encode secondary data will result in an 20 error being introduced into the primary data of the QR code. The primary data of the QR code will still however be able to be recovered successfully if the total number of primary data symbol errors received at the decoder does not exceed the error correction ability of the QR code. The fact that the values of discrete primary data carrying symbols such as 270 are 25 modified to carry corresponding symbols of secondary data in the EFDC arrangements ensures that the maximum possible number of bits of secondary data is stored in the code for a given number of symbol errors introduced into the primary data of the QR code. When discrete primary data carrying symbols such as 270 are modified to carry corresponding symbols of secondary data, eight bits of secondary data is stored in the QR 30 code for each symbol error introduced in the primary data. In contrast, eight bits of secondary data could be stored in the QR code by changing four modules 280 of two discrete information carrying symbols 270. However this would result in two symbol errors being introduced into the primary data of the QR code. A further advantage of this technique is that only relatively basic modifications 35 are required to standard QR code encoders and decoders to add support for the secondary -16 data channel. In an encoder, symbols values are modified after they have been adapted to encode the primary data of the QR code and before they are laid out in the QR code image. In a decoder, the values of symbols encoding both primary and secondary data are readily available during the standard decoding process. 5 Yet another advantage of this technique for adding secondary data to a QR code is that it is not obvious to a casual observer that the QR code has been modified to include that secondary data. This is because symbols (e.g. 270) encoding secondary data have the same general appearance in the QR code image (e.g. 280) as those encoding primary data ie both primary and secondary data symbols will consist of modules 280 that are either 10 light or dark in appearance. A casual observer will not be able to determine that secondary information has been added to the QR code simply by looking at the QR code image. Fig. 5 shows a process 500 of encoding both primary and secondary data in a QR code according to the first EFDC embodiment. An initial step 510 takes the primary data 15 which is to be encoded in the QR code and carries out the QR code encoding steps 310 and 320 previously described with reference to Fig. 3. The result of this step 510 is that the sequences of data 2303' and parity symbols 2306' in each ECC block 2307 of the QR code are known and are ready to be interleaved before layout in the QR code. In a following step 520, it is determined, by the processor 2205 executing the 20 EFDC software 2233, which of the data 2303' and parity 2306' symbols in the ECC blocks (such as 2307) of the QR code to use to carry the additional secondary data. In this EFDC embodiment, the configuration of a QR code (being the version and ECC level) is used to define which of the data 2303' and parity 2306' symbols are used to carry secondary data. This means that for each possible configuration of QR code, the selection 25 of data and parity symbols used to encode secondary data is known to both the encoder and decoder via a look-up table. An example of such a look-up table of symbols for QR codes of version 3 and error correcting level "H" (QR code configuration "3H") is provided with reference to Fig. 24. QR codes of configuration "3H' have two ECC blocks 2402, 2403. Each ECC block contains a total of 35 data and parity symbols. In the 30 example look-up relationship shown in Fig. 24., symbols 2404', 2405' in the first ECC block 2402 and 2406', 2407' in the second ECC block 2403 of QR codes with configuration "3H" are selected to encode secondary data. In a following step 530, the values of the symbols that were selected to encode secondary data in the step 520 are changed to encode the secondary data 531. Each of the 35 symbols of secondary data to be encoded in the QR code is mapped to a corresponding -17 target symbol from the symbols selected in the step 520. An example of such a mapping is shown in Fig. 24, where four symbols of secondary data 2401 are to be encoded. In this example, the first symbol of secondary data to be encoded 2404 is mapped to symbol 2404' in the first ECC block. Similarly, the remaining symbols of secondary data 2405, 5 2406 and 2407 are mapped to ECC block symbols 2405', 2406' and 2407' respectively. The actual mapping used for this step can be arbitrary, the only requirement being that the mapping is known to both the encoder and decoder implemented under the principles of this EFDC embodiment. The selected symbols are then changed to the value of their corresponding secondary data symbol if necessary, thereby encoding the secondary data in 1o the QR code. As discussed previously, each time that the value of a selected data or parity symbol has to be changed to encode the value of a corresponding secondary data symbol, a deliberate error is consequently introduced into the QR code. Now that the secondary data has been inserted into the data and parity symbols of the QR code, the QR encoding process can be completed. A following step 540 consists is of carrying out the steps 330 through 390 of the QR code encoding process 300. The QR code process 500 terminates at a final step 550. In this EFDC embodiment, the selection of symbols in ECC blocks used to carry secondary data is achieved through lookup based on the predetermined (by the already executed steps of the standard QR code encoding 300 and decoding 400 processes) 20 configuration (version and ECC level) of the code, with a common look-up table being known to both the encoder and decoder. In designing an encoder-decoder pair according to the principles of this EFDC embodiment, considerable care must be taken in defining the symbols to use for encoding secondary data for each possible configuration of QR code. 25 In general, each symbol chosen to encode secondary data will correspond to one deliberate error that will be introduced into the QR code. This means that the number of symbols that can be selected to carry secondary data is not limited by the number of symbols in the code, but rather by the error correcting ability of the code. Specifically, the number of symbols selected to carry secondary data in each ECC block of a QR code 30 should not exceed the number of error symbols that can be corrected given the error correcting code used in that ECC block. If this condition is not met, there is a risk that the primary data of the QR code will not be able to be decoded once secondary data is encoded. Furthermore, in this EFDC embodiment it is strongly preferred that a number of symbols considerably less than the maximum number of correctable error symbols in a -18 QR code are selected for encoding secondary data. This is so that if further non-deliberate errors are introduced, the primary data of the QR code will still be able to be decoded. Fig. 6 shows a process 600 for decoding a QR code in which both primary and secondary data have been encoded according to the EFDC arrangement of Fig. 5. A first 5 step 610 consists of performing the steps 410 to 450 of the QR code decoding process 400. The result of this step is that the sequences of data and parity symbols in each of the ECC blocks of the QR code are made available. The process 600 is then directed to a step 620 that extracts the secondary data. Fig. 7 shows the step 620 in Fig. 6 in more detail. In an initial step 710, the to selection of symbols that have been used to encode secondary data are looked up based on the configuration of the QR code. Note that the QR code configuration, being the version and ECC level, was previously determined in the step 610 of Fig. 6. As explained previously, encoder-decoder pairs implemented in accordance with the principles of this EFDC embodiment can determine the selection of secondary data symbols for every is possible configuration of QR code based upon the configuration of the QR code, and this information is typically stored, by both the encoder and the decoder, in a lookup table of secondary data symbols for every possible configuration of QR code. In a following step 720, the original sequence of secondary data symbols is recovered based on the previously discussed predetermined correspondence between the 20 symbols selected to encode secondary data and a sequence of secondary data symbols to be encoded. The process 620 terminates at a final step 730 and returns to the process 600 which terminates at a final step 630. This completes the process of recovering the secondary data from the QR code, however the remaining steps 460 to 490 of the standard QR code decoding process 400 must be followed to recover the primary data of the code. 25 SECOND EFDC EMBODIMENT In the first EFDC embodiment, the selection of symbols used to encode secondary data is determined a through lookup table based on the configuration (version and ECC level) of the QR code. One consequence of this approach is that the secondary data carriage capacity of each possible configuration of QR code must be fixed and cannot 30 be varied depending on the amount of data to encode. Another consequence of the selection of secondary data symbols being exactly defined for each possible configuration of QR code is that it may be more obvious to third parties that QR codes have been adapted to carry such secondary data, a property that may be undesired in certain security applications. This present EFDC embodiment provides means to adapt a QR code to -19 encode secondary data wherein the selection of symbols used to encode that secondary data is not exactly defined by the configuration of the QR code. When the selection of secondary data carrying symbols is not known, a means is needed to determine if a given sequence of symbols carries valid secondary data. It is also 5 desirable to have a means by which to correct any additional non-deliberate errors introduced into the secondary data symbols between encoding and decoding of the QR code. In this present EFDC embodiment, it is preferred that these objectives are achieved by a pre-conditioning process using a combination of ECC (error correction code) coding and a CRC (cyclic redundancy check). While the combination of a standard ECC and 10 CRC is preferred, any suitable coding of the original secondary data symbols intended to enable the presence of errors in a sequence of received secondary data symbols to be detected can be used without departing from the spirit of the EFDC approach. Fig. 8 shows a process 800 of encoding a sequence of secondary data symbols for insertion into a QR code. This pre-conditioning step is an advantageous but not a required 15 step in practicing the second EFDC embodiment. A first step 810 receives a sequence of secondary data symbols to be encoded. A CRC for those symbols is determined, by the processor 2205 executing the EFDC software 2233, in a following step 820. In this EFDC embodiment, it is preferred that the two-byte CRC-16 code is used to calculate two CRC-16 symbols, which are then appended to the sequence of secondary data symbols. 20 This is a similar process to the one depicted in Fig. 23 where primary data 2301 to be encoded is processed to produce parity symbols 2306 which are appended to blocks 2303 of the data to be encoded to form corresponding ECC blocks 2307. An alternative to simply appending the CRC symbols is to interleave the CRC-16 bits throughout the secondary data symbols. Further, a stronger CRC such as CRC-32 can be used if higher 25 reliability (ability to detect errors in a received sequence of secondary data symbols) is required. A following step 830 is the application of an error correction code to the sequence of secondary data and CRC symbols, thus performing a second error correction process to the secondary data to be encoded. In this EFDC embodiment, it is preferred 30 that the well-known Reed-Solomon (RS) error correcting code be used. The error correction coding process essentially consists of calculating a sequence of parity symbols that are appended to the sequence of data and CRC symbols thus appending further parity symbols to the already-error-correction-coded secondary data symbols. In this EFDC embodiment, it is preferred that the number of parity symbols used depend upon the 35 predetermined configuration (size and ECC level) of the QR code. This means that given -20 a sequence of encoded secondary data symbols of a particular length and the configuration of the QR code, the decoder can determine which error correction code is in use. The process 800 then ends with a step 840. The result of the process 800 is that a sequence of encoded secondary data symbols suitable for insertion into a QR code is created. It is 5 again noted that the encoded secondary data symbols according to this arrangement has been error correction encoded twice, and associated parity bits added to the secondary data twice. Adapting the encoder of the first EFDC embodiment for use in the second EFDC embodiment. 10 The process of adapting a QR code to include a sequence of encoded secondary data symbols according to the present EFDC arrangement will now be described with reference to the process 500 in Fig. 5. Note that the same general process 500 is used as in the first EFDC embodiment, however the manner in which the symbols to be used to carry secondary data are determined in the step 520 is different. In the first EFDC 15 embodiment, the selection of data and parity symbols used to encode secondary data was determined through lookup (ie using a lookup table for example) based on the configuration of the QR code. In this present EFDC embodiment, the locations are chosen dynamically when adapting the QR code. For this reason, the symbols selected to carry secondary data may be different between QR codes of the same configuration in this 20 present EFDC embodiment. In this present EFDC embodiment, it is preferred that the number of secondary data carrying symbols is determined through lookup based on the configuration of the QR code to reduce the complexity of the decoding process, however this is not required. If the number of secondary data carrying symbols is fixed for a given configuration of QR 25 code, the amount of secondary data to encode must be appropriately adapted to that length during encoding. If the number of secondary data carrying symbols is not fixed, it can be chosen based on the amount of secondary data to encode as long as decoding of the primary data of the QR code is not compromised. Now that the number of secondary data carrying symbols has been established, 30 the next step is to select the actual symbols to use. The selection of symbols can be arbitrary, subject to two considerations. As explained in the description of the first EFDC embodiment, the first consideration is that the number of selected symbols in each ECC block of the QR code should not exceed the error correcting ability of that block. As the actual locations of secondary data carrying symbols are not known to the decoder in this 35 present EFDC embodiment, the second consideration is that the values of selected -21 symbols, prior to incorporation of the secondary data, should need to be changed (ie should not be equal to the secondary data) in order to encode their corresponding secondary data symbols. This is to ensure that each symbol carrying secondary data can be detected in the decoder as an error in the primary data of the QR code. To explain 5 further, if a selected symbol, prior to incorporation of the secondary data, has the same value as that secondary data, then since the symbol need not be changed in order to incorporate the secondary data, the symbol will not be detected as an error in the decoder, and consequently the secondary data in that symbol will be "hidden". Such lost symbols are known as erasures in error correcting code terminology. 1o Adapting the decoder of the first EFDC embodiment for use in the second EFDC embodiment. The process of recovering secondary data from a QR code adapted to carry that secondary data in accordance with principles of this second EFDC embodiment will now be described with reference to the process 600 in Fig. 6. Note that the same general is process 600 is used as in the first EFDC embodiment, however the implementation of the step 620 is different and will now be described in detail with reference to a process 620 in Fig. 9. Fig. 9 shows how secondary data is extracted according to the second EFDC embodiment. A first step 910 determines the number of symbols carrying secondary data. 20 In this EFDC embodiment, it is preferred that the number of secondary data symbols is determined through lookup based on the configuration (version and error correcting level) of the QR code, however this is not necessary. In an alternative EFDC embodiment, the number of secondary data symbols can be assumed based on the number of potential secondary data symbols found later in a later step 920. The following step 920 is 25 concerned with identifying symbols potentially carrying secondary data and is described in more detail in regard to Fig. 10. Fig. 10 shows an implementation of the step 920 in Fig. 9 in more detail. A first step 1010 saves the values of the data and parity symbols of the QR code before error correction (this being the data produced by the step 610 in Fig. 6, ie the steps 410-450 in 30 Fig. 4). This is necessary because secondary data symbols correspond to errors in the data and parity symbols encoding the primary data of the QR code. A following step 1020 performs error correction on the primary data of the QR code (ie the data and parity symbols of the QR code before error correction), resulting in (i) a second set of data and parity symbols in which errors have been corrected and (ii) a list of the original data and 35 parity symbols which were determined to be errors.
-22 A following step 1030 defines all the symbols detected as errors in the step 1020 as potential secondary data carrying symbols. As deliberate errors were introduced in the process of adapting the QR code to carry secondary data, a subset of the error symbols detected in the decoder will generally correspond to the secondary data symbols. It should s be noted however that additional non-deliberate errors may also be present. Conversely it should also be noted that it is possible for some originally selected secondary data symbols not to appear in this list. This is because non-deliberately introduced errors can cause the values of secondary data symbols to revert to their corresponding correct values with respect to the primary data, thus hiding the existence of the secondary data. 10 A following step 1040 is concerned with refining the list of potential secondary data symbols to remove those symbols corresponding to non-deliberately introduced errors. This step is optional, however, performing this step will result in reduced computational complexity in decoding and enable the original secondary data to be recovered more reliably. 15 Fig. 11 shows an implementation of the step 1040 in more detail. A first step 1110 receives the list of potential secondary data symbols found in the step 1030. The steps 1120 through 1150 described below are executed for each potential secondary data symbol input at the step 1110. The following steps 1120 and 1130 are concerned with inspecting the image of 20 the QR code to determine if a particular symbol error was deliberately introduced. The techniques used to make this determination will now be explained. The QR code configuration (version and ECC level) determines for a given symbol both the geometry of the symbol (ie how the eight modules 280 are arranged to construct the symbol 270) as well as the location of the symbol 270 in the QR code matrix 25 261. This fact, along with information about the size in pixels of modules 280 in the QR code image allows a template to be created for any symbol. Such a template corresponds to how the symbol should appear in the image of the QR code. Fig. 12 shows a template 1210 constructed using the original (before error correction) value of a symbol 1320 (see Fig. 13) identified as an error. Before this 30 template can be matched to the QR code image, it must be exclusive-ORed (XORed) (as depicted by a reference numeral 1220) with an appropriate mask symbol 1230 to create a final symbol template 1240. The mask symbol is determined through knowledge of the location of the symbol 1320 in the QR code matrix, and therefore the values of the QR code mask that overlaps that area of the matrix. A similar process is followed to create -23 initial 1250 and final 1260 templates for the post-error corrected value of the symbol 1320. Fig. 13 shows the two templates from Fig. 12 corresponding to the values of the symbol identified as an error before 1240 and after 1260 error correction. In steps 1120 s and 1130 of Fig. 11, these templates 1240 and 1260 are each individually correlated (the correlation operation being depicted by a reference numeral 1340) with the QR code image 1310 at the location of the symbol 1320, and the respective matching (ie correlation) scores for each template are saved. If the matching score for the template corresponding to the value of the symbol before error correction is higher than the io corresponding after error-correction value, then the error is determined to have been deliberately introduced in a step 1140. This technique relies on the assumption that symbols affected by non-deliberately introduced errors will generally appear in the QR code image to be more similar to their original appearance than to the appearance of a different symbol value. Symbols found not to correspond to deliberately introduced errors 15 are deleted from the list of potential secondary data symbols in a step 1150. After all potential symbols have been processed as determined by a step 1160, the process 1040 terminates at a final step 1170. Turning back to Fig. 9, a next step 930 uses the list of potential secondary data symbols to find candidate sequences of encoded secondary data symbols, and then 20 decodes these sequences to find candidate sets of secondary data. Fig. 14 shows the step 930 in further detail. An initial step 1410 receives the previously determined list of potential secondary data symbols from the step 920. A following step 1420 uses the list of potential secondary data symbols to construct candidate sequences of encoded secondary data symbols. Each candidate sequence 25 corresponds to a possible sequence of secondary data symbols inserted into the QR code during encoding. Fig. 15 shows the 1420 in further detail. An initial step 1510 chooses a list of possible candidate sequence lengths N. In this second EFDC embodiment, it is preferred that the number of secondary data symbols is determined through lookup based on the 30 configuration (version and ECC level) of the QR code. For this reason, it is preferred that only one value of N is chosen at this step, and that the value is determined from a lookup table based on the QR code configuration. If the number of secondary data symbols is not determined in this manner, an alternative is to assume that this number lies within a fixed range of the total number of potential secondary data symbols. This is equivalent to 35 assuming that the list of potential secondary data symbols substantially represents the -24 actual secondary data symbols. This assumption is most reasonable when the optional process 1040 (see Fig. 10) has been followed in order to substantially eliminate non deliberately introduced errors from the list of potential secondary data symbols. Steps 1520 through 1550 are executed for all values of N that are chosen in the step 1510, and 5 the details of these steps are described below. In this second EFDC embodiment, candidate sequences of secondary data symbols of length N are assumed to consist of N, symbols chosen from the list of potential secondary data symbols and Ne special symbols representing secondary data symbols that are assumed to have been lost. Essentially, these lost symbol placeholders to represent original secondary data symbols that are assumed not to exist in the list of potential secondary data symbols. Such lost symbols are known as erasures in error correcting code terminology. The step 1520 chooses pairs of N, and Ne values to use in generating candidate sequences of secondary data symbols. In this EFDC embodiment, it is preferred that only is one pair of values being (Ns, Ne) = (N, 0) is chosen at this step. This assumes that all secondary data symbols are present in the list of potential secondary data symbols. If it were assumed that a maximum of one secondary data symbol has been lost, an additional pair of values (Na, Ne) = (N - 1, 1) can be chosen in this step. Steps 1530 and 1540 are executed for every pair of N, and Ne values chosen at this step, and the details of these 20 steps are described below. The step 1530 generates sequences of secondary data symbols formed by choosing N, symbols from the list of potential secondary data symbols. The number of possible candidate sequences formed in this way is determined by the standard formula for combinations. 25 The following step 1540 expands the set of sequences formed in the step 1530 to include Ne lost symbol placeholders if required. When a maximum of one symbol is assumed to have been lost (Ne = 1), this expansion step consists of using each original sequence of Ns symbols to generate an additional N, + 1 sequences of symbols formed by inserting a lost symbol placeholder in each of the N, + 1 possible locations in the original 30 sequence. This process can be executed recursively when Ne > 1. When all pairs of (N,, Nc) values have been processed as determined by a step 1550 for all values of N 1560, the process of generating candidate sequences of secondary data symbols 1420 terminates at a final step 1570. Turning back to Fig. 14, the next step 1430 attempts decoding of candidate 35 sequences of secondary data symbols generated in the step 1420.
-25 Fig. 16 shows the step 1430 in more detail. An initial step 1610 determines which error correcting code was used on the sequence of symbols. In this EFDC embodiment, it is preferred that Reed-Solomon (RS) error correction is used on the secondary data, and that the number of parity symbols used for a set of secondary data is 5 determined through lookup based on the configuration of the QR code. This means that the specific Reed-Solomon error correcting code used on a given sequence of symbols can be determined from the length N of the sequence and the configuration of the QR code. A following step 1620 attempts to error correct the candidate sequence of secondary data symbols. If error correction is successful (indicating that all errors in the 1o sequence can be corrected, or that there were too many errors to be detected), control passes to a step 1630. If error correction fails, the process 1430 terminates at a step 1650. The step 1630 checks the CRC for candidate sequences of secondary data symbols for which error correction was successful. This consists of extracting the CRC from the sequence of decoded symbols, calculating the corresponding CRC from the is remaining symbols and then comparing the extracted and calculated CRC values. If the CRC values match, the process 1430 terminates at a step 1640. If a CRC mismatch occurs, the process terminates at the step 1650. Turning back to Fig. 14, a next step 1440 saves candidate sets of secondary data when the step 1430 completes successfully via the step 1640. Sets of candidate secondary 20 data correspond to the error-corrected data symbols (excluding CRC) found in step 1620. When decoding has been attempted on all candidate sequences of secondary data symbols 1450, the process 930 terminates at a step 1460. Turning back to Fig. 9, a following step 940 determines the set of secondary data most likely to be valid. First, a tally is created for the number of times each unique set of 25 secondary data was saved in the step 1440. The secondary data set with the highest tally score is then chosen as the most likely set, and this is output in a following step 950. The process of recovering secondary data from a QR code terminates at a step 960. THIRD EMBODIMENT This EFDC embodiment provides means to add additional alignment features to 30 QR codes to enable more accurate sampling of the QR code image during decoding. This is made possible by utilising the secondary data embedding capability provided by the EFDC arrangements. A brief description of the process of creating a grid for sampling a QR code follows to aid the description of this embodiment. Fig. 17 shows a subregion 1700 of a QR code defined and substantially bounded 35 by four known alignment features 1710, 1720, 1730 and 1740. Those skilled in the art -26 will recognise that QR codes typically consist of a number of such subregions, and that the process of creating a complete sampling grid for a QR code is accomplished by creating a sampling grid within each subregion individually and aggregating the results. While several different types of subregions are possible, those skilled in the art will 5 appreciate that the technique for creating a sampling grid is essentially the same for all types. The process of creating a sampling grid for the subregion 1700 shown in Fig. 17 will now be described. First, a distance L,,' (1750) is determined. This is the distance between the centres of the finder pattern 1710 in the upper left of the subregion and the 10 alignment pattern 1720 in the upper right. Similarly, a distance Ly' (1780) between the finder pattern 1710 and the alignment pattern 1730 on the left of the subregion is then found. The distances L,,' and Ly' are then divided by the corresponding number of QR code modules between the endpoints of each distance to determine the module pitches at the top and left of the subregion as follows: is CP,,' = L,'/(Number of modules horizontally between centres of 1710 and 1720) CPy' = Ly'/(Number of modules vertically between centres of 1710 and 1730) A similar process is then followed to find the distances L, (1770) and Ly (1760) and corresponding module pitches CP, and CPy. Equidistant sampling points are placed between the centres of the top left finder pattern 1710 and top right alignment pattern 20 1720 based on module pitch CP,,'. Similarly, sampling points are placed between 1720 and 1740 based on CPy, between 1740 and 1730 based on CP, and then finally between 1730 and 1710 based on CPy'. The sampling grid for the subregion is then created by joining the sampling points at the top and bottom of the subregion with grid lines, and then similarly creating grid lines between the sampling points at the left and right of the 25 subregion. Those skilled in the art will realise from the previous description of the QR code sampling grid creation process that the accuracy of grids created by that process is limited by the availability of known alignment features (finder patterns and alignment marks) within the QR code. Following is a description of a process for adapting a QR code to 30 include additional known alignment features in accordance with the principles of the EFDC arrangements. Fig. 18 depicts a process 1800 for adapting a QR code to include additional alignment features. A first step 1810 is to partially encode a QR code of some desired configuration by following steps 310 to 360 of the standard QR code encoding process 35 300 in Fig. 3. The important results of this step are that the final sequence of data and -27 parity symbols prepared in step 330 is available and that the mask for the QR code determined in step 360 is now known. Turning back to Fig. 18, the next step 1820 is to determine which of the data and parity symbols encoding the primary data of the QR code should be changed to adapt the 5 QR code to carry additional alignment features. In the previous EFDC embodiments, the physical location within the QR code of selected symbols was not important to their purpose of encoding secondary data. In this EFDC embodiment, the physical location of selected symbols is important as those symbols are to be used as additional alignment features. For this reason, in this EFDC embodiment the selected symbols within the 1o sequence of data and parity symbols are generally selected based on their eventual physical location in the QR code matrix. In this EFDC embodiment, it is preferred that the step 1820 be accomplished by lookup based on the desired QR code configuration (version and error correcting level). This means that for a given configuration of QR code, the symbols used to add additional is alignment features are predetermined and known by both the encoder and the decoder. Fig. 19 shows a QR code 1900 containing both standard alignment features 1910 and 1930 and additional alignment features 1920 added through the methods described in this EFDC embodiment. In this EFDC embodiment it is preferred that for each configuration of QR code, 20 the predetermined symbols 1920 are physically distributed throughout the QR code matrix between the existing alignment features 1910 and 1930. Note that the number and arrangement of selected symbols shown in Fig. 19 is purely an example of one possible arrangement of additional alignment features that can be added to a QR code in accordance with the principles of the EFDC arrangements. One skilled in the art will 25 appreciate that any number and arrangement of symbols can be selected in a similar fashion, subject to the considerations outlined in the previously described EFDC embodiments, ie ensuring that the ability of the primary data of the QR code to be decoded is not compromised. Specifically, it should be noted that while only rectangular shaped symbols have been selected in Fig. 19, this should not be construed in any limiting 30 sense. It would be equally valid for non-rectangular shaped symbols such as 1950 to be used for additional alignment features. Turning back to Fig. 18, a next step 1830 is to change the values of the symbols selected previously in the step 1820 to adapt the QR code to include the desired additional alignment features. In the previously described EFDC embodiments, the new values of 35 each changed symbol were based upon corresponding values of secondary data to be -28 encoded in the QR code. In this EFDC embodiment, the new values of changed symbols is based on a requirement that the appearance in the QR code image after masking of each changed symbol is able to be determined by the decoder before sampling of the QR code matrix. 5 In this EFDC embodiment it is preferred that the after-masking appearance of all alignment symbols is predetermined based on the QR code configuration and the locations of the symbols in the QR code matrix. Further, it is preferred that this appearance consists of one pattern that is simply adapted given the different possible symbol geometries such as 1920 and 1950. 10 Fig. 19 shows an example of the preferred appearance of alignment symbols 1940 in this EFDC embodiment. It should be noted that the checkerboard pattern of 1940 has been chosen due to favourable correlation properties, however one skilled in the art will recognise that any suitable symbol appearance could be chosen without departing from the principles of this EFDC embodiment. It should be further noted that while 1940 is shows a rectangular shaped symbol, those skilled in the art will realise that the same checkerboard pattern can be extended to cover non-rectangular shaped symbols such as 1950. Determining the new value for each of the symbols to be changed in the step 1830 requires the application of similar techniques to those previously described in the 20 second EFDC embodiment with reference to Fig. 12. For each symbol selected to be changed, the desired final appearance of the symbol 1940 is exclusive-ORed (XORed) with the corresponding portion of the QR code mask that overlaps the physical area of that symbol in the QR code matrix. This determines the appearance of the symbol the value of which the selected symbol must be changed to in order for that symbol to appear as 25 desired in the QR code image after masking. Note that the final mask to be used in encoding the QR code was determined previously in the step 1810 by partially encoding the QR code containing only the desired primary data to the masking stage 360. Turning back to Fig. 18, a next step 1840 is to complete the QR code encoding process to produce the QR code containing additional alignment features. This consists of 30 following the steps 340 to 380 of the standard QR code encoding process 300 in Fig. 3. Note that the final sequence of symbols placed in the QR code matrix in the step 350 is that which was modified in the step 1830 to add additional alignment features to the QR code by changing the values of symbols selected in the step 1820. The process of adapting the QR code to contain additional alignment features 1800 terminates at a final 35 step 1850.
-29 A process for creating improved sampling grids for QR codes by utilising extra alignment features added in accordance with the principles of this EFDC embodiment will now be described. The process described here is only a simple example of one way in which such additional alignment features may be used, and is provided primarily to aid in 5 appreciation of the advantages provided by the ability to add such additional features. Those skilled in the art will recognise that other alternative methods are possible. Fig. 20 shows a subregion 2000 of a QR code containing four standard alignment features 2001, 2002, 2003, 2004 and an additional alignment feature 2020 added in accordance with the principles of this EFDC embodiment. 10 Fig. 21 depicts a process 2100 of creating a sampling grid for this region using the additional alignment feature 2100. As discussed previously, while various other types of subregions do occur, those skilled in the art will recognise that the process for creating sampling grids within all subregions of a QR code is essentially the same. A first step 2110 of the grid creation process is to determine an initial grid for the is subregion that will later be refined based on the location of the additional alignment feature 2020. The process for determining the initial grid was described previously with reference to Fig. 17 and will not be repeated here. Essentially, the initial grid is formed using sets of equidistant sampling points on the four sides of the subregion located between the four standard QR code alignment features. Two sampling points on the left 20 and right of the subregion define the line 2014 which is intended to pass through the centre of the alignment symbol 2020 in the horizontal direction. Similarly, two sampling points on the top and bottom of the subregion define the line 2011 which is intended to pass through the centre of the alignment symbol 2020 in the vertical direction. These lines 2014, 2011, and thus the sampling points that define them, will be refined in 25 subsequent steps based on the true location of the additional alignment feature. A next step 2120 of the grid creation process is to determine the actual location of the centre of the additional alignment feature 2020. As previously explained, the locations within the QR code matrix of symbols used to provide additional alignment features are predetermined based on the QR code configuration (version and ECC level). 30 Further, the after-masking appearance of a given alignment symbol is also similarly predetermined. For these reasons, both an estimated location for and the expected appearance of the alignment symbol 2020 is already known at the step 2120. This allows a correlation template to be formed based on the expected appearance of the symbol, the QR code module size in pixels and the rotation of the QR code region. This template is 35 then correlated with the QR code image near the expected location of the alignment -30 symbol 2020. The location of the highest correlation score is saved as the actual centre location of the alignment symbol. A next step 2130 of the grid creation process is to refine the initial subregion grid based on the actual location of the additional alignment feature. First, the sampling points s on the sides of the QR code region defining the line 2014 intended to pass through the centre of the alignment feature 2020 in the horizontal dimension are moved such that the line passes through the actual centre of the alignment feature 2020 whilst preserving the original slope of the line. Similarly, the sampling points on the top and bottom of the QR code region defining the line 2011 intended to pass through the centre of the alignment to feature 2020 in the vertical direction are moved such that the line passes through the actual centre of the alignment feature 2020. The distances L,,' (ie 2010) and Lx 2 ' (ie 2012) between the known alignment features 2001, 2002 and the line 2011 passing through the centre of the additional alignment feature 2020 are now determined. These distances are used to calculate is corresponding module pitches CPI' and CPx 2 ' that are then used to place refined equidistant sampling points between 2011 and the known alignment features 2001 and 2002. The sampling points along the other sides of the subregion are then similarly refined based on the distances 2013, 2015, 2016, 2017, 2018, 2019 between the known alignment features 2001, 2002, 2003, 2004 and the newly found lines 2011 and 2014 20 passing through the centre of the additional alignment feature 2020. The final refined sampling grid for the subregion is then created by joining the sampling points along the sides of the subregion. The grid creation process terminates at a final step 2140. Industrial Applicability The arrangements described are applicable to the computer and data processing 25 industries and particularly for paper document workflow systems. 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. In the context of this specification, the word "comprising" means "including 30 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.

Claims (15)

1. A method of encoding, by an encoder for decoding by a decoder, primary and 5 secondary data in a QR code having a predetermined code configuration, said method comprising the steps of: providing a plurality of symbols encoding the primary data in the QR code, said plurality of symbols being error correction encoded; selecting at least one symbol from the plurality of symbols; 1o modifying the at least one selected symbol to encode the secondary data, thereby introducing an error in the error correction encoded plurality of symbols, said error being correctable by the decoder to thereby recover the primary data; and using the error correction encoded plurality of symbols and said at least one modified symbol to construct the QR code carrying the primary data and the secondary is data.
2. A method according to claim 1, wherein the method comprises the further step of printing the QR code carrying the primary data and the secondary data onto a document in a paper document workflow system. 20
3. A method according to claim 1, wherein at least one of the number of symbols and the identity of symbols selected for modification to encode the secondary data is based on the predetermined configuration of the QR code. 25 4. A method according to claim 1, wherein the number of symbols selected for modification to encode the secondary data is equal to or less than the number of errors that can be corrected according to the error correction encoding used for the primary data.
5. A method according to claim 1 wherein: 30 symbols encoding the primary data are grouped into one or more blocks; and said at least one symbol for encoding the secondary data is selected such that the number of modified symbols in any said block is equal to or less than the number of errors that can be corrected in that block according to the error correction encoding used for the primary data. 35 -32
6. A method of decoding secondary data in a QR code encoded with both primary and secondary data, said method comprising the steps of: receiving a plurality of symbols encoding the primary data and secondary data in the QR code; 5 identifying symbols encoding the secondary data based on the predetermined configuration of the QR code; and extracting the secondary data from said identified symbols.
7. A method of decoding secondary data in a QR code encoded with both primary 1o and secondary data, said method comprising the steps of: receiving a plurality of symbols encoding the primary data and secondary data in the QR code; performing error correction on the plurality of symbols to identify a plurality of error symbols; is identifying a plurality of potential secondary data symbols based on the plurality of error symbols; and recovering the secondary data from the plurality of potential secondary data symbols. 20 8. A method according to claim 7, wherein the step of identifying the plurality of potential secondary data symbols comprises selecting only error symbols found to be deliberately introduced as potential secondary data symbols, said process of determining whether error symbols are deliberately introduced comprising, for a current error symbol, the steps of: 25 generating correlation templates for said error symbol based on the values of the symbol before and after error correction; correlating the symbol templates and a corresponding symbol in an image of the QR code to determine corresponding correlation scores; and determining whether the error symbol was deliberately introduced based on the 30 correlation scores.
9. A method according to either claim 7 or claim 8, wherein secondary data is, in a pre-conditioning process, encoded with an error correction code and the process of recovering the secondary data from the plurality of potential secondary data symbols 35 comprises the steps of: -33 generating combinations of potential secondary data symbols; attempting error correction decoding of the combinations; and recovering the secondary data based on the decoded data from combinations for which error correction decoding is successful. 5
10. A method according to claim 9, wherein the number of combinations generated is based on an expected number of secondary data symbols which is based on the predetermined configuration of the QR code. 10 i1. A method of adding additional alignment features to a QR code for use in a decoder, said method including the steps of: providing a plurality of symbols encoding the primary data in the QR code, said plurality of symbols being error correction encoded; selecting at least one symbol from the plurality of symbols, said selected symbol is being based on the predetermined configuration of the QR code; modifying the at least one selected symbol to encode a predetermined value known to the decoder, said predetermined value being usable by the decoder as an alignment feature; and: using the error correction encoded plurality of symbols and said at least one 20 modified symbol to construct the QR code carrying the primary data and an additional alignment feature.
12. A method according to claim 11, wherein the values of modified symbols are based on a desired QR code mask pattern and a predetermined pattern known to the 25 decoder.
13. A method according to claim 12, wherein the predetermined pattern known to the decoder is a checkerboard pattern. 30 14. A method of utilising additional alignment features added to a QR code for creation of a sampling grid during decoding, said method comprising the steps of: receiving an image of a QR code, said QR code comprising a plurality of symbols encoding the data in the QR code; forming a correlation template for a symbol based on the predetermined value of 35 the symbol, said value being based on the predetermined configuration of the QR code; -34 correlating the image and the template near the expected location of the symbol in the QR code image to determine the location of the symbol in the QR code image; and refining the sampling grid for the QR code using the location of the symbol in the QR code image. 5
15. A method according to claim 14, wherein the predetermined values of symbols are based on the QR code mask pattern and a predetermined pattern.
16. A method according to claim 15, wherein the predetermined pattern is a 1o checkerboard pattern.
17. An encoder for encoding primary and secondary data in a QR code having a predetermined code configuration, said encoder comprising: a memory for storing a program; and is a processor for executing the program, said program comprising: code for providing a plurality of symbols encoding the primary data in the QR code, said plurality of symbols being error correction encoded; code for selecting at least one symbol from the plurality of symbols; code for modifying the at least one selected symbol to encode the secondary data, 20 thereby introducing an error in the error correction encoded plurality of symbols, said error being correctable by the decoder to thereby recover the primary data; and code for using the plurality of symbols and said at least one modified symbol to construct the QR code carrying the primary data and the secondary data. 25 18. A decoder for decoding secondary data in a QR code encoded with both primary and secondary data, said decoder comprising: a memory for storing a program; and a processor for executing the program, said program comprising: code for receiving a plurality of symbols encoding the primary data and 30 secondary data in the QR code; code for performing error correction on the plurality of symbols to identify a plurality of error symbols; code for identifying a plurality of potential secondary data symbols based on the plurality of error symbols; and -35 code for recovering the secondary data from the plurality of potential secondary data symbols.
19. A computer readable storage medium having recorded thereon a computer 5 program for directing a processor to execute a method for encoding primary and secondary data in a QR code having a predetermined code configuration, said program comprising: code for providing a plurality of symbols encoding the primary data in the QR code, said plurality of symbols being error correction encoded; 10 code for selecting at least one symbol from the plurality of symbols; code for modifying the at least one selected symbol to encode the secondary data, thereby introducing an error in the error correction encoded plurality of symbols, said error being correctable by the decoder to thereby recover the primary data; and code for using the plurality of symbols and said at least one modified symbol to 15 construct the QR code carrying the primary data and the secondary data.
20. A computer readable storage medium having recorded thereon a computer program for directing a processor to execute a method for decoding primary and secondary data in a QR code having a predetermined code configuration, said program 20 comprising: code for receiving a plurality of symbols encoding the primary data and secondary data in the QR code; code for performing error correction on the plurality of symbols to identify a plurality of error symbols; 25 code for identifying a plurality of potential secondary data symbols based on the plurality of error symbols; and code for recovering the secondary data from the plurality of potential secondary data symbols. 30 DATED this 24 h Day of June 2009 CANON KABUSHIKI KAISHA Patent Attorneys for the Applicant SPRUSON&FERGUSON
AU2009202557A 2009-06-25 2009-06-25 QR code encoding method Abandoned AU2009202557A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2009202557A AU2009202557A1 (en) 2009-06-25 2009-06-25 QR code encoding method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AU2009202557A AU2009202557A1 (en) 2009-06-25 2009-06-25 QR code encoding method

Publications (1)

Publication Number Publication Date
AU2009202557A1 true AU2009202557A1 (en) 2011-01-20

Family

ID=43478330

Family Applications (1)

Application Number Title Priority Date Filing Date
AU2009202557A Abandoned AU2009202557A1 (en) 2009-06-25 2009-06-25 QR code encoding method

Country Status (1)

Country Link
AU (1) AU2009202557A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014065982A1 (en) * 2012-10-22 2014-05-01 Motorola Mobility Llc Secure information transfer via bar codes
US8936194B1 (en) 2013-03-15 2015-01-20 Wunderlich-Malec Engineering, Inc. Methods and systems for using two-dimensional matrix codes associated with panel component and equipment information and quality control
CN104778490A (en) * 2015-03-24 2015-07-15 立德高科(北京)数码科技有限责任公司 Method and device for binding data in combination-type anti-fake label
ES2835053A1 (en) * 2019-12-18 2021-06-21 Univ Almeria METHOD, DEVICE AND SYSTEM FOR THE STORAGE, ENCODING AND DECODING OF INFORMATION BASED ON CODES WITH ERROR DETECTION CAPACITY (Machine-translation by Google Translate, not legally binding)
US11430100B2 (en) 2016-12-19 2022-08-30 Datamax-O'neil Corporation Printer-verifiers and systems and methods for verifying printed indicia

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014065982A1 (en) * 2012-10-22 2014-05-01 Motorola Mobility Llc Secure information transfer via bar codes
US9107065B2 (en) 2012-10-22 2015-08-11 Google Technology Holdings LLC Secure information transfer via bar codes
CN105230055A (en) * 2012-10-22 2016-01-06 谷歌科技控股有限公司 Security information via bar code is transmitted
CN105230055B (en) * 2012-10-22 2019-05-03 谷歌技术控股有限责任公司 It is transmitted via the security information of bar code
US8936194B1 (en) 2013-03-15 2015-01-20 Wunderlich-Malec Engineering, Inc. Methods and systems for using two-dimensional matrix codes associated with panel component and equipment information and quality control
US9047279B1 (en) 2013-03-15 2015-06-02 Wunderlich-Malec Engineering, Inc. Methods and systems for using two-dimensional matrix codes associated with panel component and equipment information and quality control
CN104778490A (en) * 2015-03-24 2015-07-15 立德高科(北京)数码科技有限责任公司 Method and device for binding data in combination-type anti-fake label
CN104778490B (en) * 2015-03-24 2018-03-30 立德高科(北京)数码科技有限责任公司 The method and device that data during combined anti-fake is identified are bound
US11430100B2 (en) 2016-12-19 2022-08-30 Datamax-O'neil Corporation Printer-verifiers and systems and methods for verifying printed indicia
ES2835053A1 (en) * 2019-12-18 2021-06-21 Univ Almeria METHOD, DEVICE AND SYSTEM FOR THE STORAGE, ENCODING AND DECODING OF INFORMATION BASED ON CODES WITH ERROR DETECTION CAPACITY (Machine-translation by Google Translate, not legally binding)
WO2021123483A1 (en) * 2019-12-18 2021-06-24 Universidad De Almería Method, device and system for storing, encoding and decoding information based on codes with error detection capacity

Similar Documents

Publication Publication Date Title
US8948445B2 (en) Embedding visual information in a two-dimensional bar code
US9665817B2 (en) Techniques for generating customized two-dimensional barcodes
Lin et al. Appearance-based QR code beautifier
US9177238B2 (en) Techniques for generating customized two-dimensional barcodes
TWI692724B (en) QR code, QR code creation system and analysis program
US20090255992A1 (en) System for Synthesizing a Two Dimensional Code and a Logo and the Method Thereof
US7792371B2 (en) Method and device for generating image code and method and device for decoding image code
CN108665041B (en) Two-dimensional code generation and identification method and device, computer equipment and storage medium
AU2009202557A1 (en) QR code encoding method
CN111046996B (en) Color QR code generation and identification method
CN103377390A (en) Method and device for generating and recognizing two-dimension code
AU2007254595A1 (en) Constellation detection
AU2007254619A1 (en) Barcode removal
Zhang et al. Aesthetic QR codes based on two-stage image blending
CN103997406A (en) Two-dimensional code-based identity authentication method and apparatus
CN109840576A (en) The generation method and coding/decoding method of anti-copying two dimensional code based on segmentation insertion
AU2010257220B2 (en) Data block offset encoding method for coordinates
US7987494B1 (en) Method and apparatus providing end to end protection for a document
US20080292136A1 (en) Data Processing System And Method
JP2008211769A (en) Tamper detection method of document using encoded dot
US8657205B2 (en) Image processing apparatus, identification apparatus, method for determining bit sequence and computer readable medium
CN102090052A (en) Apparatus, method, and computer program product for detecting embedded information
CN109840574B (en) Two-dimensional code information hiding method and device, electronic equipment and storage medium
JP2007049440A (en) Image processor, image processing method and image processing program
JP2008172643A (en) Device, method and program for generating two-dimensional code with embedded image, and computer readable recording medium

Legal Events

Date Code Title Description
MK4 Application lapsed section 142(2)(d) - no continuation fee paid for the application