WO2008072219A2 - An apparatus system and method for encoding and decoding optical symbols - Google Patents

An apparatus system and method for encoding and decoding optical symbols Download PDF

Info

Publication number
WO2008072219A2
WO2008072219A2 PCT/IL2007/001306 IL2007001306W WO2008072219A2 WO 2008072219 A2 WO2008072219 A2 WO 2008072219A2 IL 2007001306 W IL2007001306 W IL 2007001306W WO 2008072219 A2 WO2008072219 A2 WO 2008072219A2
Authority
WO
WIPO (PCT)
Prior art keywords
data
symbol
present
optical
bearing
Prior art date
Application number
PCT/IL2007/001306
Other languages
French (fr)
Other versions
WO2008072219A3 (en
Inventor
Ran Dvir
Arik Litinsky
Original Assignee
Symlink Technologies
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 Symlink Technologies filed Critical Symlink Technologies
Priority to PCT/IL2008/000048 priority Critical patent/WO2008087626A2/en
Publication of WO2008072219A2 publication Critical patent/WO2008072219A2/en
Publication of WO2008072219A3 publication Critical patent/WO2008072219A3/en

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
    • 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

Definitions

  • the present invention generally relates to the field encoding and decoding of an optical symbol. More specifically, the invention discloses a novel method and system of encoding and decoding optical information (i.e. 2D and 3D optical symbols).
  • a conventional ID bar code (one dimensional UPC bar code) is just a different way of encoding numbers and letters by using a combination of bars and spaces of varying widths which in essence is just another manner of entering data into a computer.
  • a bar code generally does not contain descriptive data. It is a reference number that a computer uses to look up an associated record that contains descriptive data and other important information.
  • a barcode found on a soda can does not contain the product name, type of soda, or price, instead, it contains a 12-digit product number.
  • This number is scanned by the cashier at the check-out, it is transmitted to the computer which finds the record associated with that item number in the data base.
  • the matching item record contains a description of the product, vendor name, price, quantity- on-hand, etc.
  • the computer instantly does a "price lookup" and displays the price on the cash register. It also subtracts the quantity purchased from the quantity-on-hand. This entire transaction is done instantly.
  • a bar code typically has ID data encoded in it, and that data is used by computer to look up all specific information associated with the data.
  • bar code scanner Since computers cannot "read" bar codes, for a computer to make use of the information contained in the bar code, the bar code data must be captured and decoded into a data format that the computer can process.
  • the device which reads or captures the bar code information and sends it to the decoder which is known as the bar code reader, generally called bar code scanner.
  • a typical bar code reader kit consists of a scanner, decoder, and cable which interfaces the decoder to the computer.
  • the Scanner scans the Bar Code symbol and captures the bars and spaces of the bar code and sends it to the decoder.
  • the decoder translates the bars and spaces into corresponding electrical output and transmits that data to the computer in a traditional data format.
  • a bar code scanner can either have the Decoder built into it, or have an interface between it and the computer.
  • the 2D barcode unlike linear codes can store the data within the code, therefore eliminating the needs for access to a database for getting the information. Large amounts of text and data can be stored securely and inexpensively.
  • Some 2D bar codes are like a set of linear bar codes literally stacked on top of each other.
  • the PDF417 is the best example of a stacked-bar symbol and is the most common of all 2D bar codes currently in use today.
  • 2D bar codes also use an advanced error correction instead of a check digits system. This error correction allows the symbol to withstand some physical damage without causing loss of data. This high level of error correction is far more advanced than conventional ID linear bar codes with check digits.
  • bar code readers include the pen type readers (bar code-wands), laser bar code scanners, CCD (Charge Couple Devices) barcode readers and camera-based barcode readers used for most two dimensional (2D) bar codes which contain much more information than standard vertical line bar codes.
  • pen type readers bar code-wands
  • laser bar code scanners CCD (Charge Couple Devices) barcode readers
  • camera-based barcode readers used for most two dimensional (2D) bar codes which contain much more information than standard vertical line bar codes.
  • Pen type barcode readers have a light source and a photo diode placed next to each other in the tip of a pen or wand. To read a bar code, a user drags the tip of the pen across all the bars, in a steady even motion. The photo diode measures the intensity of the light reflected back from the light source and generates a waveform corresponding to the widths of the bars and spaces in the bar code. The barcode reader sends the waveform to the decoder, which decodes the waveform and sends it to the computer in a traditional data format.
  • Laser barcode scanners work the same way as pen type barcode readers. The only main difference is that Laser barcode scanners use a laser beam as their light source, and typically employ either a reciprocating mirror or a rotating prism to scan the laser beam back and forth across the bar code. As with the pen type bar code reader, a photo diode is used to measure the intensity of the light reflected back from the bar code.
  • CCD barcode scanners use an array of tiny light sensors lined up in a row in the head of the barcode reader. Voltage waveform corresponding to the bars and spaces of the bar code is generated and sent to the decoder, which decodes the data and sends it to the computer.
  • CCD barcode scanner measures emitted ambient light from the bar code whereas pen or laser barcode scanners measure reflected light of a specific frequency originating from the scanner itself.
  • Linear bar codes are decoded along one axis or direction and generally encode data characters as parallel arrangements of alternating, multiple-width strips of lower reflectivity or "bars" separated by absences of such strips having higher reflectivity or "spaces.” Each unique pattern of bars and spaces within a predetermined width defines a particular data character. A given linear symbol encodes several data characters along its length as several groups of unique bar and space patterns. [0011] Newer data collection symbologies have departed from the typical linear symbologies to create 2D stacked or area symbologies in order to increase the amount of information encoded within a given area. Stacked symbologies or "multi-row symbologies" employ several adjacent rows of multiple-width bars and spaces.
  • Area symbologies or 2D matrix symbologies employ arrangements of regular polygonal data cells where the center-to-center distance of adjacent cells is uniform
  • Reading stacked symbologies and 2D area technologies with scanning beam-type detectors typically involves a scanning approach where the beam is scanned by hand by a user with the scanner, horizontally across the large object a number of times to capture the image line by line. The user must be very careful as to the distance the card is held from the scanner or it won't work correctly. Also, ambient light and reflections from the card surface itself can interfere with the imaging. For each sweep, the sensor output is converted to a digital signal. The digital signal is then mapped into a two-dimensional character array and processed by the computer as a whole to decode the symbol or symbols.
  • a system and method for encoding a digital data including a digital data stream.
  • the data may be encoded into an optical data bearing symbol, which optical data bearing symbol may consist of one or more optical data cells, wherein at least one data cell may include both a data bearing region and a reference region.
  • the encoding system may consist of a symbol generator module adapted to convert digital data into data bearing symbol.
  • the symbol generator module may be adapted to create two or more layers, which layers may be associated with the data bearing symbol, such that at least one of the layers is a data matrix layer.
  • the data matrix layer may be adapted to be populated with one or more data cells.
  • the symbol generator module may be further adapted to create other layers such as: (1) a detection layer, and (2) an orientation layer.
  • the data matrix layer may consist of a group of data cells, wherein one or more of the data cells may consist of at least one data bearing region and at least one reference region.
  • the data bearing region may be associated with a polarity, which polarity may be associated with the logic value (i.e. 0 or 1) of a portion of the data stream and may expressed a selection of color used to express the logical value.
  • the symbol generator module is adapted to define the polarity of the data bearing regions based on the values of a logic matrix (i.e. a matrix which cells have a value of 0 or a value of 1).
  • the symbol generator module is adapted to create a logic matrix (i.e. a matrix which cells have a value of 0 or a value of 1), which logic matrix may represent the values of a portion of the data stream and additional Meta data (i.e. CRC code type, opcode).
  • the symbol generator module may generate the symbol layers using raw data format.
  • Raw data (sometimes called source data or atomic data) is data that (1) has not been processed for use or (2) has not been processed to suit a specific format (i.e. GIF, JPEG). A distinction is sometimes made between data and information to the effect that information is the end product of data processing. Although raw data has the potential to become "information,” it requires selective extraction, organization, and sometimes analysis and formatting for presentation. [0018] According to some embodiments of the present invention, the encoding system may include an output interface module adapted to convert the raw data created by the symbol generator module to a different output format, which output format may be: (1) an image file (i.e.
  • the output interface module may be further adapted to send the output data to an external output device or system.
  • the detection data layer may include two or more pivot corners.
  • the pivot corners may be a predefined shape (i.e. square) positioned in predefined locations (i.e. the image's corners).
  • characteristics and parameters of a pivot corner may be significantly different than characteristics and parameters of other elements associated with the optical data symbol. More specifically, pivot corners may be defined in such a way that the ratio between (1) parameters of the pivot corner (i.e. Radius, area, diameter etc.) and (2) parameter of a shape framed within the pivot corner (i.e. Radius, area, diameter etc.) will be significantly different (e.g.
  • the orientation data layer may include optical data, which optical data is used to determine the planar positioning of a given optical data symbol.
  • the optical data bearing symbol may consist of one or more optical data cells, wherein one or more of the optical data cells is associated with a logic value and may be decoded based on a data bearing region and a reference region of the data cell.
  • the decoding system may include (1) a controller, (2) an input interface module, (3) a graphical processing module, (4) an output interface module and (5) a logic matrix parser module.
  • the input interface module may be adapted to receive optical data from an image acquisition device of the system or from an external image acquisition device.
  • the input interface module may be adapted to receive acquired image data (i.e. image file, video stream) from an external device and/or network.
  • acquired image data i.e. image file, video stream
  • the decoding system may include a graphical processing module adapted to: (1) determine whether a given image data consists of an optical data bearing symbol, and (2) extract from the optical data bearing symbol a logic data matrix.
  • the graphical processing module may be adapted to determine whether a given image data set
  • the graphical processing module may be further adapted to detect "potential pivot corners" based on general parameters that may suggest that the shape is a pivot corner (i.e. shape's coordinates, size etc.). [0027] According to some further embodiments of the present invention, the graphical processing module may be adapted to detect and tag a pivot corner based on a comparison of: (1) parameters of a potential pivot corner (i.e. Radius, area, diameter), and (2) parameters of a shape framed within the potential pivot corner (i.e. framed circle, rectangle, octagon etc.).
  • parameters of a potential pivot corner i.e. Radius, area, diameter
  • parameters of a shape framed within the potential pivot corner i.e. framed circle, rectangle, octagon etc.
  • the graphical processing module may be further adapted to project a data bearing symbol onto a normalized plane.
  • the graphical processing module may be adapted to detect that a data bearing symbol is positioned on a non-normalized plane based on the distances between the data symbol's pivot corners.
  • the graphical processing module may be adapted to project the data bearing symbol to a normalized plane based on the distances between the data symbol's pivot corners.
  • the graphical processing module may be adapted to determine the logic values (i.e. 0, 1) of one or more data cells associated with the data bearing symbol. According to some embodiments of the present invention, the graphical processing module may be further adapted to estimate a histogram of a data cell based on at least one sample taken from the data cell reference region and from at least one sample taken from the data cell data bearing region. According to further embodiments of the present invention, the graphical processing module may be adapted to determine the logic value of a data cell based on: (1) the histogram associated with the data cell, and (2) a sample taken from the data bearing region of the reference cell. [0030] According to some embodiments of the present invention, the graphical processing module may be adapted to extract a logic data matrix from the data bearing symbol based on the determined logic values of the data cells and the orientation regions.
  • the logic matrix parser module is adapted to decode a logic data matrix and retrieve the data encoded in the matrix (i.e. CRC type, opcode, data).
  • the output interface module is adapted to send data to an output device/network based on the decoded information from the data bearing symbol.
  • FIG. 1 is a diagram of an exemplary decoding device with its display showing an optical data bearing symbol acquired from different sources, wherein the optical data bearing symbol consists of one or more optical data cells;
  • FIG. 2 is a block diagram of an exemplary encoding system according to some embodiments of the present invention, wherein a symbol generator module is adapted to convert digital data into data bearing symbol;
  • FIG. 3 is a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a symbol generator module adapted to convert digital data into a data bearing symbol;
  • Fig. 4 is a diagram showing a group of exemplary symbol layers in accordance with some embodiments of the present invention, wherein the symbol layers are created by a symbol generator module and are associated with the creation of an optical data bearing symbol;
  • FIG. 5 is a block diagram of an exemplary decoding system according to some embodiments of the present invention, wherein a graphical processing module is adapted to: determine whether a given image data consists of an optical data bearing symbol, and extract from the optical data bearing symbol a logic data matrix;
  • Fig. 6 is a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a decoding system adapted to convert a data bearing symbol into digital data;
  • Fig. 7 is a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a graphical processing module adapted to detect a data bearing symbol within an acquired image;
  • Fig. 8 is a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a graphical processing module adapted to extract a logic data matrix from a data bearing symbol;
  • Fig. 9 is a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a logic matrix parser adapted to decode a logic data matrix and retrieve data encoded in the matrix (i.e. CRC type, opcode, data).
  • a logic matrix parser adapted to decode a logic data matrix and retrieve data encoded in the matrix (i.e. CRC type, opcode, data).
  • Fig. 1OA is a diagram showing an exemplary symbol generator module adapted to encode received data using a data bearing regions of an optical data cell of the data mask layer in accordance with some embodiments of the present invention, wherein the symbol generator module is adapted to define the polarity of the data bearing regions based on the values of a received data;
  • Fig. 1OB is a diagram showing an exemplary graphical processing module adapted to decode received data using a data bearing regions of an optical data cell of the data mask layer in accordance with some embodiments of the present invention, wherein the graphical processing module may be adapted to determine the logic values (i.e. 0, 1) of one or more data cells associated with the data bearing symbol.
  • Embodiments of the present invention may include apparatuses for performing the operations herein. This apparatus may be specially constructed for the desired purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer.
  • Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs) electrically programmable read-only memories (EPROMs), electrically erasable and programmable read only memories (EEPROMs), magnetic or optical cards, or any other type of media suitable for storing electronic instructions, and capable of being coupled to a computer system bus.
  • a computer readable storage medium such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs) electrically programmable read-only memories (EPROMs), electrically erasable and programmable read only memories (EEPROMs), magnetic or optical cards, or any other type of media suitable for storing electronic instructions, and capable of being coupled to a computer system bus.
  • a system and method for encoding a digital data including a digital data stream.
  • the data may be encoded into an optical data bearing symbol, which optical data bearing symbol may consist of one or more optical data cells, wherein at least one data cell may include both a data bearing region and a reference region.
  • the encoding system may consist of a symbol generator module adapted to convert digital data into data bearing symbol.
  • the symbol generator module may be adapted to create two or more layers, which layers may be associated with the data bearing symbol, such that at least one of the layers is a data matrix layer.
  • the data matrix layer may be adapted to be populated with one or more data cells.
  • the symbol generator module may be further adapted to create other layers such as: (1) a detection layer, and (2) an orientation layer.
  • the data matrix layer may consist of a group of data cells, wherein one or more of the data cells may consist of at least one data bearing region and at least one reference region.
  • the data bearing region may be associated with a polarity, which polarity may be associated with the logic value (i.e. 0 or 1) of a portion of the data stream and may expressed a selection of color used to express the logical value.
  • the symbol generator module is adapted to define the polarity of the data bearing regions based on the values of a logic matrix (i.e. a matrix which cells have a value of 0 or a value of 1).
  • the symbol generator module is adapted to create a logic matrix (i.e. a matrix which cells have a value of 0 or a value of 1), which logic matrix may represent the values of a portion of the data stream and additional Meta data (i.e. CRC code type, opcode).
  • the symbol generator module may generate the symbol layers using raw data format.
  • Raw data (sometimes called source data or atomic data) is data that (1) has not been processed for use or (2) has not been processed to suit a specific format (i.e. GIF, JPEG).
  • GIF GIF
  • JPEG JPEG
  • the encoding system may include an output interface module adapted to convert the raw data created by the symbol generator module to a different output format, which output format may be: (1) an image file (i.e.
  • the output interface module may be further adapted to send the output data to an external output device or system.
  • the detection data layer may include two or more pivot corners.
  • the pivot corners may be a predefined shape (i.e. square) positioned in predefined locations (i.e. the image's corners).
  • characteristics and parameters of a pivot corner may be significantly different than characteristics and parameters of other elements associated with the optical data symbol. More specifically, pivot corners may be defined in such a way that the ratio between (1) parameters of the pivot corner (i.e. Radius, area, diameter etc.) and (2) parameter of a shape framed within the pivot corner (i.e. Radius, area, diameter etc.) will be significantly different (e.g.
  • the orientation data layer may include optical data, which optical data is used to determine the planar positioning of a given optical data symbol.
  • the optical data bearing symbol may consist of one or more optical data cells, wherein one or more of the optical data cells is associated with a logic value and may be decoded based on a data bearing region and a reference region of the data cell.
  • the decoding system may include (1) a controller, (2) an input interface module, (3) a graphical processing module, (4) an output interface module and (5) a logic matrix parser module.
  • the input interface module may be adapted to receive optical data from an image acquisition device of the system or from an external image acquisition device.
  • the input interface module may be adapted to receive acquired image data (i.e. image file, video stream) from an external device and/or network.
  • acquired image data i.e. image file, video stream
  • the decoding system may include a graphical processing module adapted to: (1) determine whether a given image data consists of an optical data bearing symbol, and (2) extract from the optical data bearing symbol a logic data matrix.
  • the graphical processing module may be adapted to determine whether a given image data set
  • the graphical processing module may be further adapted to detect "potential pivot corners" based on general parameters that may suggest that the shape is a pivot corner (i.e. shape's coordinates, size etc.).
  • the graphical processing module may be adapted to detect and tag a pivot corner based on a comparison of: (1) parameters of a potential pivot corner (i.e. Radius, area, diameter), and (2) parameters of a shape framed within the potential pivot corner (i.e. framed circle, rectangle, octagon etc.).
  • the graphical processing module may be further adapted to project a data bearing symbol onto a normalized plane.
  • the graphical processing module may be adapted to detect that a data bearing symbol is positioned on a non-normalized plane based on the distances between the data symbol's pivot corners.
  • the graphical processing module may be adapted to project the data bearing symbol to a normalized plane based on the distances between the data symbol's pivot corners.
  • the graphical processing module may be adapted to determine the logic values (i.e. 0, 1) of one or more data cells associated with the data bearing symbol. According to some embodiments of the present invention, the graphical processing module may be further adapted to estimate a histogram of a data cell based on at least one sample taken from the data cell reference region and from at least one sample taken from the data cell data bearing region. According to further embodiments of the present invention, the graphical processing module may be adapted to determine the logic value of a data cell based on: (1) the histogram associated with the data cell, and (2) a sample taken from the data bearing region of the reference cell. [0067] According to some embodiments of the present invention, the graphical processing module may be adapted to extract a logic data matrix from the data bearing symbol based on the determined logic values of the data cells and the orientation regions.
  • the logic matrix parser module is adapted to decode a logic data matrix and retrieve the data encoded in the matrix (i.e. CRC type, opcode, data).
  • the output interface module is adapted to send data to an output device/network based on the decoded information from the data bearing symbol.
  • FIG.l there is shown a diagram of an exemplary decoding device 1000 with its display showing an optical data bearing symbol 1100 acquired from different sources such as :(1) a newspaper 1200, (2) a Television display 1300 and (3) a collection card.
  • FIG. 2 there is shown a block diagram of an encoding system 2000 with a symbol generator module 2100 adapted to convert digital data
  • encoding system 2000 may include: (1) a symbol generator module 2100, (2) a display driver 2200, (3) a printer driver 2300 and (4) a codec 2400.
  • FIG.3 there is shown a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a symbol generator module adapted to convert digital data into a data bearing symbol.
  • FIG. 4 there is shown a diagram of a group of exemplary symbol layers in accordance with some embodiments of the present invention, wherein the symbol layers are generated by a symbol generator module 2100 and are associated with the creation of an optical data bearing symbol.
  • symbol generator module 2100 is adapted to receive digital data 2500 (step 3000).
  • 2500 may be a digital data stream.
  • symbol generator module 2100 may be adapted to generate data representing optical detection layer 4000 and (2) orientation layer 4100 (step 3100).
  • detection layer is
  • pivot corners 4010 may include two or more pivot corners 4010.
  • the pivot corners may be a predefined shape (i.e. square) positioned in predefined locations (i.e. the image's corners).
  • characteristics and parameters of a pivot corner may be significantly different than characteristics and parameters of other elements associated with the optical data symbol. More specifically, pivot corners may be defined in such a way that the ratio between (1) parameters of the pivot corner (i.e. Radius, area, diameter etc.) and (2) parameter of a shape framed within the pivot corner (i.e. Radius, area, diameter etc.) will be significantly different (e.g. greater) than a similar ratio associated with an element of the data bearing symbol which isn't a pivot corner.
  • symbol generator module 2100 may be adapted to generate data representing an optical mask matrix (layer 4200) (step 3200).
  • the optical mask matrix layer 4200 may consist of a group of data cells 4210, wherein one or more of the data cells may consist of at least one data bearing region and at least one reference region.
  • the polarity of the data cells associated with the mask matrix may be predefined based on a predefined pattern, such as a checkerboard pattern as shown in layer 4200.
  • Step 3200 may be performed optionally based on the data complexity of the requested optical symbol, an example of when mask generation is not needed may occur when the optical symbol encodes 4 bits, which may represent a range of numbers from 0-15, and the optical symbol actually uses this entire range, in this case mask generation is not needed.
  • Another example of when a mask is not needed is when Forward Error Correction ("FEC") is used.
  • FEC Forward Error Correction
  • symbol generator module 2100 may be adapted to encode received data 2500 using one or more data bearing regions of one ore more optical data cell 4210 of the data mask layer 4200.
  • the data bearing region may be associated with a polarity, which polarity may be associated with the logic value (i.e. 0 or 1) of a portion of the data stream 2500 and may expressed a selection of color used to express the logical value.
  • symbol generator module 2100 may generate layers 4000, 4100, 4200, 4300A and 4300B using raw data format.
  • raw data (sometimes called source data or atomic data) is data that (1) has not been processed for use or (2) has not been processed to suit a specific format (i.e. GIF, JPEG).
  • GIF GIF
  • JPEG JPEG
  • symbol generator module 2100 is adapted to encode received data stream 2500 using one or more data bearing regions of one or more optical data cell of the data mask layer 4200 (step 3300).
  • step 3300 may best be described in conjunction with Fig. 1OA, there is shown a diagram of a symbol generator module 2100 adapted to encode received data using a data bearing regions of an optical data cell 100 of the data mask layer in accordance with some embodiments of the present invention, wherein the symbol generator module is adapted to define the polarity of a one or more data bearing region 110 based on the values of a received data and thus creating an optical data symbol.
  • symbol generator module 2100 may be adapted to define the polarity of the data bearing regions based on the values of a logic matrix (i.e. a matrix which cells have a value of 0 or a value of 1).
  • the symbol generator module is adapted to create a logic matrix (i.e. a matrix which cells have a value of 0 or a value of 1), which logic matrix may represent the values of a portion of the data stream and additional Meta data (i.e. CRC code type, opcode).
  • a logic matrix i.e. a matrix which cells have a value of 0 or a value of 1
  • additional Meta data i.e. CRC code type, opcode
  • symbol generator module 2100 is adapted to multiply the optical data symbol 4300A or 4300B by a data XOR matrix (step 3400).
  • encoding system 2000 is adapted to convert the raw data representing a data optical symbol to an output format (step 3500).
  • the encoding system may include an output interface module adapted to convert the raw data created by the symbol generator module to a different output format, which output format may be: (1) an image file (i.e.
  • the output interface module may be further adapted to send the output data to an external output device or system.
  • output interface module may include a display driver 2200, a printer driver 2300 and a codec driver 2400 adapted to convert the raw data created by the symbol generator module to a different output format.
  • FIG. 5 there is shown a block diagram of an exemplary decoding system according to some embodiments of the present invention, wherein a graphical processing module is adapted to: determine whether a given image data consists of an optical data bearing symbol, and extract from the optical data bearing symbol a logic data matrix.
  • a graphical processing module is adapted to: determine whether a given image data consists of an optical data bearing symbol, and extract from the optical data bearing symbol a logic data matrix.
  • the functionality of the block diagram depicted in Fig. 5 may best be described in conjunction with Figs. 6, 7, 8, 9 and 1OB.
  • system 5000 may be adapted to decode an optical data bearing symbol which may consist of one or more optical data cells, wherein one or more of the optical data cells is associated with a logic value and may be decoded based on a data bearing region and a reference region of the data cell.
  • system 5000 may include (1) a controller 5100, (2) an input interface module 5400, (3) a graphical processing module 5300, (4) an output interface module 5700, (5) a logic matrix parser module 5200, (6) an internal camera 5500 and (7) an external image acquisition device.
  • input interface module 5400 may be adapted to receive image data from an image acquisition device of the system i.e. camera (5500) or from an external image acquisition device (5600).
  • the input interface module may be adapted to receive acquired image data (i.e. image file, video stream) from an external device and/or network.
  • system 5000 is adapted to determine whether the image data is an optical symbol (step 6100) the functionality of this step may best be described in conjunction with Fig. 7 described herein bellow.
  • system 5000 is adapted to convert the optical data symbol to a logic data matrix (step 6200), the functionality of this step may best be described in conjunction with Fig. 8 described herein bellow.
  • system 5000 is adapted to decode the logic data matrix (step 6300), the functionality of this step may best be described in conjunction with Fig. 8 described herein bellow.
  • graphical processing module 5300 may be adapted to: (1) determine whether a given image data consists of an optical data bearing symbol, and (2) extract from the optical data bearing symbol a logic data matrix. The functionality of the graphical processing module 5300 may best be described in conjunction with Figs. 7 and 8 described herein bellow.
  • Fig. 7 there is shown a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a graphical processing module 5300 adapted to detect a data bearing symbol within an acquired image.
  • system 5000 is adapted to capture/receive image data (step 7000) as was described herein above.
  • graphical processing module 5300 is adapted to detect a data bearing symbol within the image data.
  • graphical processing module 5300 is adapted to detect a potential "pivot corner" shape (step 7100).
  • the graphical processing module may be adapted to determine whether a given image data set (i.e. data representing an image) consists of an optical data bearing symbol based on the detection of pivot corners in the given image data.
  • the graphical processing module may be further adapted to detect "potential pivot corners” based on general parameters that may suggest that the shape is a pivot corner (i.e. shape's coordinates, size etc.).
  • graphical processing module 5300 is adapted to locate a one or more point of reference (i.e. center of mass) within the potential "pivot corner" shape(step 7200). [0098] According to some embodiments of the present invention, graphical processing module 5300 is adapted to calculate parameters of a framed shape within the potential "pivot corner" i.e. radius of a framed circle (step 7300). [0099] According to some embodiments of the present invention, graphical processing module 5300 is adapted to compare parameters associated with the framed shape and parameters associated with the potential pivot corner (step 7400) and determine whether the potential pivot corner is actually a pivot corner based on that comparison.
  • the graphical processing module 5300 may be adapted to detect and tag a pivot corner based on a comparison of: (1) parameters of a potential pivot corner (i.e. Radius, area, diameter), and (2) parameters of a shape framed within the potential pivot corner (i.e. framed circle, rectangle, octagon etc.). [00100] According to some embodiments of the present invention, graphical processing module 5300 is adapted to determine whether the image data includes additional potential pivot corners (step 7500).
  • graphical processing module 5300 is adapted to determine whether the image data consists of an optical data symbol (step 7600) based on the analysis of the pivot comers described hereinabove.
  • the steps depicted in Fig. 7 are substantially associated with the field of Synthetic Analysis (“SA”) and Synthetic Information (“SI").
  • SA Synthetic Analysis
  • SI Synthetic Information
  • SA refers to an element which may be used to distinguish a frame or a segment of the frame from other frames
  • SA refers to the analysis of artificial elements (SI) which were added in order to exclude them from the other portions of image data which doesn't consist of the specified SI.
  • Fig.8 there is shown a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a graphical processing module 5300 adapted to extract a logic data matrix from a data bearing symbol.
  • graphical processing module upon detection of an optical symbol (step 8000) may be adapted to extract from the optical symbol a logic data matrix.
  • graphical processing module 5300 is adapted to project the detected optical symbol to a normalized plane (step 8100).
  • the graphical processing module may be adapted to detect that a data bearing symbol is positioned on a distorted ("non- normalized") plane based on the distances between the data symbol's detected pivot corners.
  • the graphical processing module may be adapted to project the data bearing symbol to a normalized plane based on the distances between the data symbol's pivot corners.
  • graphical processing module 5300 is adapted to detect clusters of data cells based on the position of a one or more orientation regions (step 8200), which orientation regions may be associated with orientation layer 4100 .
  • graphical processing module 5300 is adapted to calculate parameters associated with one or more optical data cell based on samples taken from one or more reference region and one or more data bearing region of the data cell (step 8300). [00107] According to some embodiments of the present invention, graphical processing module 5300 is adapted to generate a histogram of one or more optical data cell based on the data cell calculated parameters (step 8400). According to some further embodiments of the present invention, the graphical processing module may be adapted to estimate a histogram of a data cell based on at least one sample taken from the data cell reference region and from at least one sample taken from the data cell data bearing region.
  • graphical processing module 5300 is adapted to determine the logic value of an optical data cell ("data cell") (step 8500).
  • the graphical processing module may be adapted to determine the logic value of a data cell based on: (1) the histogram associated with the data cell, and (2) a sample taken from the data bearing region of the reference cell.
  • step a is a first step
  • the logic value of a data cell is determined based on (1) a histogram and (2) a sample taken from the data cell bearing region 320.
  • a data cell histogram may be generated using at least one sample taken from the data cell reference region 310 and from at least one sample taken from the data cell data bearing region 320..
  • graphical processing module 5300 is adapted to extract a logic data matrix from the optical data symbol based on the determined logic values of the optical data cells (step 8600).
  • Fig.9 there is shown a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a logic matrix parser adapted to decode a logic data matrix and retrieve data encoded in the matrix (i.e. CRC type, opcode, data).
  • a logic matrix parser adapted to decode a logic data matrix and retrieve data encoded in the matrix (i.e. CRC type, opcode, data).
  • logic matrix parser 5200 may be adapted to detect data bits clusters based on the location of a one or more data orientation bit associated with the logic data matrix
  • logic matrix parser 5200 may be adapted to decode clusters of data bits consisting of information associated with the meta-data of information encoded within the optical symbol (step 9100).
  • logic matrix parser 5200 may be adapted to decode data bearing cluster consisting of information associated with the CRC used with the optical symbol (step 9200).
  • logic matrix parser According to some embodiments of the present invention, logic matrix parser
  • 5200 may be adapted to decode data bearing cluster consisting of information associated with the opcode and /or additional data encoded by the optical symbol
  • output interface module 5700 is adapted to send data to an output device/network based on the decoded information from the data bearing symbol.

Abstract

There is provided a novel system and method for encoding and decoding digital data. The data may be encoded into an optical data bearing symbol, which optical data bearing symbol may consist of one or more optical data cells, wherein at least one data cell may include both a data bearing region and a reference region.

Description

AN APPARATUS SYSTEM AND METHOD FOR ENCODING AND DECODING
OPTICAL SYMBOLS RELATED APPLICATIONS
The present application claims priority from the following U.S. provisional patent applications: US60/869,921 filed December 14th, 2006; US60/886,934 filed December 14th, 2006; US60/885,248 filed January 17th, 2007; US60/885,251 filed January 17th, 2007; and US60/909,463 filed April 1st, 2007. Each of which is hereby incorporated by reference in its entirety.
FIELD OF THE INVENTION
[001] The present invention generally relates to the field encoding and decoding of an optical symbol. More specifically, the invention discloses a novel method and system of encoding and decoding optical information (i.e. 2D and 3D optical symbols).
BACKGROUND OF THE INVENTION
[002] Ever prevalent in the lives of people in most industrialized countries is the use of bar codes to identify products and memorialize other information. There are typically two types of bar codes in commercial use, a linear (ID) barcode and a two dimensional (2D) barcode. A conventional ID bar code (one dimensional UPC bar code) is just a different way of encoding numbers and letters by using a combination of bars and spaces of varying widths which in essence is just another manner of entering data into a computer. A bar code generally does not contain descriptive data. It is a reference number that a computer uses to look up an associated record that contains descriptive data and other important information. For example, a barcode found on a soda can does not contain the product name, type of soda, or price, instead, it contains a 12-digit product number. When this number is scanned by the cashier at the check-out, it is transmitted to the computer which finds the record associated with that item number in the data base. The matching item record contains a description of the product, vendor name, price, quantity- on-hand, etc. The computer instantly does a "price lookup" and displays the price on the cash register. It also subtracts the quantity purchased from the quantity-on-hand. This entire transaction is done instantly. In a nutshell, a bar code typically has ID data encoded in it, and that data is used by computer to look up all specific information associated with the data.
[003] Since computers cannot "read" bar codes, for a computer to make use of the information contained in the bar code, the bar code data must be captured and decoded into a data format that the computer can process. The device which reads or captures the bar code information and sends it to the decoder, which is known as the bar code reader, generally called bar code scanner. A typical bar code reader kit consists of a scanner, decoder, and cable which interfaces the decoder to the computer. The Scanner scans the Bar Code symbol and captures the bars and spaces of the bar code and sends it to the decoder. The decoder translates the bars and spaces into corresponding electrical output and transmits that data to the computer in a traditional data format. A bar code scanner can either have the Decoder built into it, or have an interface between it and the computer.
[004] The 2D barcode unlike linear codes can store the data within the code, therefore eliminating the needs for access to a database for getting the information. Large amounts of text and data can be stored securely and inexpensively. Some 2D bar codes are like a set of linear bar codes literally stacked on top of each other. Conventionally, the PDF417 is the best example of a stacked-bar symbol and is the most common of all 2D bar codes currently in use today. 2D bar codes also use an advanced error correction instead of a check digits system. This error correction allows the symbol to withstand some physical damage without causing loss of data. This high level of error correction is far more advanced than conventional ID linear bar codes with check digits. [005] Currently, four of the different types of bar code readers available include the pen type readers (bar code-wands), laser bar code scanners, CCD (Charge Couple Devices) barcode readers and camera-based barcode readers used for most two dimensional (2D) bar codes which contain much more information than standard vertical line bar codes. Each of these types uses a slightly different technology for reading and decoding a bar code.
[006] Pen type barcode readers have a light source and a photo diode placed next to each other in the tip of a pen or wand. To read a bar code, a user drags the tip of the pen across all the bars, in a steady even motion. The photo diode measures the intensity of the light reflected back from the light source and generates a waveform corresponding to the widths of the bars and spaces in the bar code. The barcode reader sends the waveform to the decoder, which decodes the waveform and sends it to the computer in a traditional data format.
[007] Laser barcode scanners work the same way as pen type barcode readers. The only main difference is that Laser barcode scanners use a laser beam as their light source, and typically employ either a reciprocating mirror or a rotating prism to scan the laser beam back and forth across the bar code. As with the pen type bar code reader, a photo diode is used to measure the intensity of the light reflected back from the bar code. [008] CCD barcode scanners use an array of tiny light sensors lined up in a row in the head of the barcode reader. Voltage waveform corresponding to the bars and spaces of the bar code is generated and sent to the decoder, which decodes the data and sends it to the computer. The main difference between a CCD barcode scanner, a pen type barcode scanner, and laser barcode scanner is that the CCD barcode scanner measures emitted ambient light from the bar code whereas pen or laser barcode scanners measure reflected light of a specific frequency originating from the scanner itself.
[009] The camera-based barcode readers used for the majority of 2D bar codes which are becoming more popular due to increased data carrying ability, use a small video camera to capture an image of a bar code. The barcode reader then transmits that information to a computer and uses sophisticated digital image processing techniques to decode the bar code. Unfortunately this type of image processing of the entire 2D bar code is time consuming, requires the aiming of a camera to properly capture the image, and consumes large amounts of computer processing and memory as well as requiring substantial electrical power to run the camera.
[0010] Linear bar codes are decoded along one axis or direction and generally encode data characters as parallel arrangements of alternating, multiple-width strips of lower reflectivity or "bars" separated by absences of such strips having higher reflectivity or "spaces." Each unique pattern of bars and spaces within a predetermined width defines a particular data character. A given linear symbol encodes several data characters along its length as several groups of unique bar and space patterns. [0011] Newer data collection symbologies have departed from the typical linear symbologies to create 2D stacked or area symbologies in order to increase the amount of information encoded within a given area. Stacked symbologies or "multi-row symbologies" employ several adjacent rows of multiple-width bars and spaces. "Area symbologies" or 2D matrix symbologies employ arrangements of regular polygonal data cells where the center-to-center distance of adjacent cells is uniform Reading stacked symbologies and 2D area technologies with scanning beam-type detectors typically involves a scanning approach where the beam is scanned by hand by a user with the scanner, horizontally across the large object a number of times to capture the image line by line. The user must be very careful as to the distance the card is held from the scanner or it won't work correctly. Also, ambient light and reflections from the card surface itself can interfere with the imaging. For each sweep, the sensor output is converted to a digital signal. The digital signal is then mapped into a two-dimensional character array and processed by the computer as a whole to decode the symbol or symbols. Such line by line scanning is very time consuming, and frequently hard to accomplish as the user may shift the reader. Thus the reader will then have an incorrect indication of the relative locations of light and dark regions, thereby impairing decoding. If the card on which the bar code is resident is bent, the problems of the resulting image are increased. [0012] To overcome such problems, two-dimensional readers have been employed that use cameras, or semiconductor or other suitable light receiving elements that image the entire two-dimensional area substantially simultaneously. This is a memory intensive operation for the processor and due to optical limitations inherent in such imaging devices. Further, these readers have a relatively small depth of field within which symbols can be read. To increase the reader's depth of field, some two-dimensional readers employ auto focus systems which are costly and relatively slow. Moreover, even readers with auto focus systems are limited by the depth-of-fϊeld of the auto focus system. Also, bent cards with resulting bent code strips can exacerbate the reading problems. Still further, even when reading linear or stacked symbologies, such systems employ relatively complex area-type processing for finding, identifying and decoding. The complexity of such processing makes these readers undesirably slow, and large as a system, for many linear and stacked technology applications SUMMARY OF THE INVENTION
[0013] According to some embodiments of the present invention there is provided a system and method for encoding a digital data, including a digital data stream. The data may be encoded into an optical data bearing symbol, which optical data bearing symbol may consist of one or more optical data cells, wherein at least one data cell may include both a data bearing region and a reference region.
[0014] According to some embodiments of the present invention, the encoding system may consist of a symbol generator module adapted to convert digital data into data bearing symbol. The symbol generator module may be adapted to create two or more layers, which layers may be associated with the data bearing symbol, such that at least one of the layers is a data matrix layer. The data matrix layer may be adapted to be populated with one or more data cells. According to some embodiments of the present invention, the symbol generator module may be further adapted to create other layers such as: (1) a detection layer, and (2) an orientation layer.
[0015] According to some embodiments of the present invention, the data matrix layer may consist of a group of data cells, wherein one or more of the data cells may consist of at least one data bearing region and at least one reference region. According to some further embodiments of the present invention, the data bearing region may be associated with a polarity, which polarity may be associated with the logic value (i.e. 0 or 1) of a portion of the data stream and may expressed a selection of color used to express the logical value.
[0016] According to some embodiments of the present invention, the symbol generator module is adapted to define the polarity of the data bearing regions based on the values of a logic matrix (i.e. a matrix which cells have a value of 0 or a value of 1). According to some embodiments of the present invention, the symbol generator module is adapted to create a logic matrix (i.e. a matrix which cells have a value of 0 or a value of 1), which logic matrix may represent the values of a portion of the data stream and additional Meta data (i.e. CRC code type, opcode). [0017] According to some embodiments of the present invention, the symbol generator module may generate the symbol layers using raw data format. Raw data (sometimes called source data or atomic data) is data that (1) has not been processed for use or (2) has not been processed to suit a specific format (i.e. GIF, JPEG). A distinction is sometimes made between data and information to the effect that information is the end product of data processing. Although raw data has the potential to become "information," it requires selective extraction, organization, and sometimes analysis and formatting for presentation. [0018] According to some embodiments of the present invention, the encoding system may include an output interface module adapted to convert the raw data created by the symbol generator module to a different output format, which output format may be: (1) an image file (i.e. GIF, JPEG, TIFF, BMP etc.) (2) a printer file (3) a display device image data (4) a data file and (5) a cellular message data (i.e. MMS etc.). According to some embodiments of the present invention, the output interface module may be further adapted to send the output data to an external output device or system.
[0019] According to some embodiments of the present invention, the detection data layer may include two or more pivot corners. The pivot corners may be a predefined shape (i.e. square) positioned in predefined locations (i.e. the image's corners). According to some embodiments of the present invention, characteristics and parameters of a pivot corner may be significantly different than characteristics and parameters of other elements associated with the optical data symbol. More specifically, pivot corners may be defined in such a way that the ratio between (1) parameters of the pivot corner (i.e. Radius, area, diameter etc.) and (2) parameter of a shape framed within the pivot corner (i.e. Radius, area, diameter etc.) will be significantly different (e.g. greater) than a similar ratio associated with an element of the data bearing symbol which isn't a pivot corner. [0020] The use of pivot corners for distinguishing an optical data bearing symbol from a set of images, such as background images, is explained in details herein below. [0021] According to some embodiments of the present invention, the orientation data layer may include optical data, which optical data is used to determine the planar positioning of a given optical data symbol.
[0022] According to some embodiments of the present invention there is provided a system and method for decoding an optical data bearing symbol.
According to some embodiments of the present invention, the optical data bearing symbol may consist of one or more optical data cells, wherein one or more of the optical data cells is associated with a logic value and may be decoded based on a data bearing region and a reference region of the data cell.
[0023] According to some embodiments of the present invention, the decoding system may include (1) a controller, (2) an input interface module, (3) a graphical processing module, (4) an output interface module and (5) a logic matrix parser module.
[0024] According to some embodiments of the present invention, the input interface module may be adapted to receive optical data from an image acquisition device of the system or from an external image acquisition device.
According to some embodiments of the present invention, the input interface module may be adapted to receive acquired image data (i.e. image file, video stream) from an external device and/or network.
[0025] According to some embodiments of the present invention, the decoding system may include a graphical processing module adapted to: (1) determine whether a given image data consists of an optical data bearing symbol, and (2) extract from the optical data bearing symbol a logic data matrix.
[0026] According to some embodiments of the present invention, the graphical processing module may be adapted to determine whether a given image data set
(i.e. data representing an image) consists of an optical data bearing symbol based on the detection of pivot corners in the given image data. According to some embodiments of the present invention, the graphical processing module may be further adapted to detect "potential pivot corners" based on general parameters that may suggest that the shape is a pivot corner (i.e. shape's coordinates, size etc.). [0027] According to some further embodiments of the present invention, the graphical processing module may be adapted to detect and tag a pivot corner based on a comparison of: (1) parameters of a potential pivot corner (i.e. Radius, area, diameter), and (2) parameters of a shape framed within the potential pivot corner (i.e. framed circle, rectangle, octagon etc.).
[0028] According to some embodiments of the present invention, the graphical processing module may be further adapted to project a data bearing symbol onto a normalized plane. According to some further embodiments of the present invention, the graphical processing module may be adapted to detect that a data bearing symbol is positioned on a non-normalized plane based on the distances between the data symbol's pivot corners. According to yet further embodiments of the present invention, the graphical processing module may be adapted to project the data bearing symbol to a normalized plane based on the distances between the data symbol's pivot corners.
[0029] According to some embodiments of the present invention, the graphical processing module may be adapted to determine the logic values (i.e. 0, 1) of one or more data cells associated with the data bearing symbol. According to some embodiments of the present invention, the graphical processing module may be further adapted to estimate a histogram of a data cell based on at least one sample taken from the data cell reference region and from at least one sample taken from the data cell data bearing region. According to further embodiments of the present invention, the graphical processing module may be adapted to determine the logic value of a data cell based on: (1) the histogram associated with the data cell, and (2) a sample taken from the data bearing region of the reference cell. [0030] According to some embodiments of the present invention, the graphical processing module may be adapted to extract a logic data matrix from the data bearing symbol based on the determined logic values of the data cells and the orientation regions.
[0031] According to some embodiments of the present invention, the logic matrix parser module is adapted to decode a logic data matrix and retrieve the data encoded in the matrix (i.e. CRC type, opcode, data). [0032] According to some embodiments of the present invention, the output interface module is adapted to send data to an output device/network based on the decoded information from the data bearing symbol.
BRIEF DESCRIPTION OF THE DRAWINGS
[0033] The subject matter regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanying drawings in which:
[0034] Fig. 1 is a diagram of an exemplary decoding device with its display showing an optical data bearing symbol acquired from different sources, wherein the optical data bearing symbol consists of one or more optical data cells;
[0035] Fig. 2 is a block diagram of an exemplary encoding system according to some embodiments of the present invention, wherein a symbol generator module is adapted to convert digital data into data bearing symbol;
[0036] Fig. 3 is a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a symbol generator module adapted to convert digital data into a data bearing symbol;
[0037] Fig. 4 is a diagram showing a group of exemplary symbol layers in accordance with some embodiments of the present invention, wherein the symbol layers are created by a symbol generator module and are associated with the creation of an optical data bearing symbol;
[0038] Fig. 5 is a block diagram of an exemplary decoding system according to some embodiments of the present invention, wherein a graphical processing module is adapted to: determine whether a given image data consists of an optical data bearing symbol, and extract from the optical data bearing symbol a logic data matrix;
[0039] Fig. 6 is a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a decoding system adapted to convert a data bearing symbol into digital data; [0040] Fig. 7 is a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a graphical processing module adapted to detect a data bearing symbol within an acquired image;
[0041] Fig. 8 is a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a graphical processing module adapted to extract a logic data matrix from a data bearing symbol;
[0042] Fig. 9 is a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a logic matrix parser adapted to decode a logic data matrix and retrieve data encoded in the matrix (i.e. CRC type, opcode, data).
[0043] Fig. 1OA is a diagram showing an exemplary symbol generator module adapted to encode received data using a data bearing regions of an optical data cell of the data mask layer in accordance with some embodiments of the present invention, wherein the symbol generator module is adapted to define the polarity of the data bearing regions based on the values of a received data;
[0044] Fig. 1OB is a diagram showing an exemplary graphical processing module adapted to decode received data using a data bearing regions of an optical data cell of the data mask layer in accordance with some embodiments of the present invention, wherein the graphical processing module may be adapted to determine the logic values (i.e. 0, 1) of one or more data cells associated with the data bearing symbol.
[0045] It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements. DETAILED DESCRIPTION
[0046] In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components and circuits have not been described in detail so as not to obscure the present invention. [0047] Unless specifically stated otherwise, as apparent from the following discussions, it is appreciated that throughout the specification discussions utilizing terms such as "processing", "computing", "calculating", "determining", or the like, refer to the action and/or processes of a computer or computing system, or similar electronic computing device, that manipulate and/or transform data represented as physical, such as electronic, quantities within the computing system's registers and/or memories into other data similarly represented as physical quantities within the computing system's memories, registers or other such information storage, transmission or display devices. [0048] Embodiments of the present invention may include apparatuses for performing the operations herein. This apparatus may be specially constructed for the desired purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs) electrically programmable read-only memories (EPROMs), electrically erasable and programmable read only memories (EEPROMs), magnetic or optical cards, or any other type of media suitable for storing electronic instructions, and capable of being coupled to a computer system bus.
[0049] The processes and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the desired method. The desired structure for a variety of these systems will appear from the description below. In addition, embodiments of the present invention are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the inventions as described herein. One of ordinary skill in the art should understand that the described invention may be used for all kinds of wireless or wire-line system.
[0050] According to some embodiments of the present invention there is provided a system and method for encoding a digital data, including a digital data stream. The data may be encoded into an optical data bearing symbol, which optical data bearing symbol may consist of one or more optical data cells, wherein at least one data cell may include both a data bearing region and a reference region.
[0051] According to some embodiments of the present invention, the encoding system may consist of a symbol generator module adapted to convert digital data into data bearing symbol. The symbol generator module may be adapted to create two or more layers, which layers may be associated with the data bearing symbol, such that at least one of the layers is a data matrix layer. The data matrix layer may be adapted to be populated with one or more data cells. According to some embodiments of the present invention, the symbol generator module may be further adapted to create other layers such as: (1) a detection layer, and (2) an orientation layer.
[0052] According to some embodiments of the present invention, the data matrix layer may consist of a group of data cells, wherein one or more of the data cells may consist of at least one data bearing region and at least one reference region. According to some further embodiments of the present invention, the data bearing region may be associated with a polarity, which polarity may be associated with the logic value (i.e. 0 or 1) of a portion of the data stream and may expressed a selection of color used to express the logical value.
[0053] According to some embodiments of the present invention, the symbol generator module is adapted to define the polarity of the data bearing regions based on the values of a logic matrix (i.e. a matrix which cells have a value of 0 or a value of 1). According to some embodiments of the present invention, the symbol generator module is adapted to create a logic matrix (i.e. a matrix which cells have a value of 0 or a value of 1), which logic matrix may represent the values of a portion of the data stream and additional Meta data (i.e. CRC code type, opcode).
[0054] According to some embodiments of the present invention, the symbol generator module may generate the symbol layers using raw data format. Raw data (sometimes called source data or atomic data) is data that (1) has not been processed for use or (2) has not been processed to suit a specific format (i.e. GIF, JPEG). A distinction is sometimes made between data and information to the effect that information is the end product of data processing. Although raw data has the potential to become "information," it requires selective extraction, organization, and sometimes analysis and formatting for presentation. [0055] According to some embodiments of the present invention, the encoding system may include an output interface module adapted to convert the raw data created by the symbol generator module to a different output format, which output format may be: (1) an image file (i.e. GIF, JPEG, TIFF, BMP etc.) (2) a printer file (3) a display device image data (4) a data file and (5) a cellular message data (i.e. MMS etc.). According to some embodiments of the present invention, the output interface module may be further adapted to send the output data to an external output device or system.
[0056] According to some embodiments of the present invention, the detection data layer may include two or more pivot corners. The pivot corners may be a predefined shape (i.e. square) positioned in predefined locations (i.e. the image's corners). According to some embodiments of the present invention, characteristics and parameters of a pivot corner may be significantly different than characteristics and parameters of other elements associated with the optical data symbol. More specifically, pivot corners may be defined in such a way that the ratio between (1) parameters of the pivot corner (i.e. Radius, area, diameter etc.) and (2) parameter of a shape framed within the pivot corner (i.e. Radius, area, diameter etc.) will be significantly different (e.g. greater) than a similar ratio associated with an element of the data bearing symbol which isn't a pivot corner. [0057] The use of pivot corners for distinguishing an optical data bearing symbol from a set of images, such as background images, is explained in details herein below. [0058] According to some embodiments of the present invention, the orientation data layer may include optical data, which optical data is used to determine the planar positioning of a given optical data symbol.
[0059] According to some embodiments of the present invention there is provided a system and method for decoding an optical data bearing symbol.
According to some embodiments of the present invention, the optical data bearing symbol may consist of one or more optical data cells, wherein one or more of the optical data cells is associated with a logic value and may be decoded based on a data bearing region and a reference region of the data cell.
[0060] According to some embodiments of the present invention, the decoding system may include (1) a controller, (2) an input interface module, (3) a graphical processing module, (4) an output interface module and (5) a logic matrix parser module.
[0061] According to some embodiments of the present invention, the input interface module may be adapted to receive optical data from an image acquisition device of the system or from an external image acquisition device.
According to some embodiments of the present invention, the input interface module may be adapted to receive acquired image data (i.e. image file, video stream) from an external device and/or network.
[0062] According to some embodiments of the present invention, the decoding system may include a graphical processing module adapted to: (1) determine whether a given image data consists of an optical data bearing symbol, and (2) extract from the optical data bearing symbol a logic data matrix.
[0063] According to some embodiments of the present invention, the graphical processing module may be adapted to determine whether a given image data set
(i.e. data representing an image) consists of an optical data bearing symbol based on the detection of pivot corners in the given image data. According to some embodiments of the present invention, the graphical processing module may be further adapted to detect "potential pivot corners" based on general parameters that may suggest that the shape is a pivot corner (i.e. shape's coordinates, size etc.). [0064] According to some farther embodiments of the present invention, the graphical processing module may be adapted to detect and tag a pivot corner based on a comparison of: (1) parameters of a potential pivot corner (i.e. Radius, area, diameter), and (2) parameters of a shape framed within the potential pivot corner (i.e. framed circle, rectangle, octagon etc.).
[0065] According to some embodiments of the present invention, the graphical processing module may be further adapted to project a data bearing symbol onto a normalized plane. According to some further embodiments of the present invention, the graphical processing module may be adapted to detect that a data bearing symbol is positioned on a non-normalized plane based on the distances between the data symbol's pivot corners. According to yet further embodiments of the present invention, the graphical processing module may be adapted to project the data bearing symbol to a normalized plane based on the distances between the data symbol's pivot corners.
[0066] According to some embodiments of the present invention, the graphical processing module may be adapted to determine the logic values (i.e. 0, 1) of one or more data cells associated with the data bearing symbol. According to some embodiments of the present invention, the graphical processing module may be further adapted to estimate a histogram of a data cell based on at least one sample taken from the data cell reference region and from at least one sample taken from the data cell data bearing region. According to further embodiments of the present invention, the graphical processing module may be adapted to determine the logic value of a data cell based on: (1) the histogram associated with the data cell, and (2) a sample taken from the data bearing region of the reference cell. [0067] According to some embodiments of the present invention, the graphical processing module may be adapted to extract a logic data matrix from the data bearing symbol based on the determined logic values of the data cells and the orientation regions.
[0068] According to some embodiments of the present invention, the logic matrix parser module is adapted to decode a logic data matrix and retrieve the data encoded in the matrix (i.e. CRC type, opcode, data). [0069] According to some embodiments of the present invention, the output interface module is adapted to send data to an output device/network based on the decoded information from the data bearing symbol.
[0070] Turning now to Fig.l, there is shown a diagram of an exemplary decoding device 1000 with its display showing an optical data bearing symbol 1100 acquired from different sources such as :(1) a newspaper 1200, (2) a Television display 1300 and (3) a collection card.
[0071] Turning now to Fig. 2, there is shown a block diagram of an encoding system 2000 with a symbol generator module 2100 adapted to convert digital data
2500 into data bearing symbol in accordance with some embodiments of the present invention. The functionality of the block diagram depicted in Fig. 3 may best be described in conjunction with Figs. 3 and 4.
[0072] According to some embodiments of the present invention, encoding system 2000 may include: (1) a symbol generator module 2100, (2) a display driver 2200, (3) a printer driver 2300 and (4) a codec 2400.
[0073] Turning now to Fig.3, there is shown a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a symbol generator module adapted to convert digital data into a data bearing symbol.
[0074] Turning now to Fig. 4, there is shown a diagram of a group of exemplary symbol layers in accordance with some embodiments of the present invention, wherein the symbol layers are generated by a symbol generator module 2100 and are associated with the creation of an optical data bearing symbol.
[0075] According to some embodiments of the present invention, symbol generator module 2100 is adapted to receive digital data 2500 (step 3000).
According to some further embodiments of the present invention, digital data
2500 may be a digital data stream.
[0076] According to some embodiments of the present invention, symbol generator module 2100 may be adapted to generate data representing optical detection layer 4000 and (2) orientation layer 4100 (step 3100).
[0077] According to some embodiments of the present invention, detection layer
4000 may include two or more pivot corners 4010. The pivot corners may be a predefined shape (i.e. square) positioned in predefined locations (i.e. the image's corners). According to some embodiments of the present invention, characteristics and parameters of a pivot corner may be significantly different than characteristics and parameters of other elements associated with the optical data symbol. More specifically, pivot corners may be defined in such a way that the ratio between (1) parameters of the pivot corner (i.e. Radius, area, diameter etc.) and (2) parameter of a shape framed within the pivot corner (i.e. Radius, area, diameter etc.) will be significantly different (e.g. greater) than a similar ratio associated with an element of the data bearing symbol which isn't a pivot corner. [0078] According to some embodiments of the present invention, symbol generator module 2100 may be adapted to generate data representing an optical mask matrix (layer 4200) (step 3200). According to some further embodiments of the present invention, the optical mask matrix layer 4200 may consist of a group of data cells 4210, wherein one or more of the data cells may consist of at least one data bearing region and at least one reference region. According to some further embodiments of the present invention, the polarity of the data cells associated with the mask matrix may be predefined based on a predefined pattern, such as a checkerboard pattern as shown in layer 4200.
[0079] According to some further embodiments of the present invention, Step 3200 may be performed optionally based on the data complexity of the requested optical symbol, an example of when mask generation is not needed may occur when the optical symbol encodes 4 bits, which may represent a range of numbers from 0-15, and the optical symbol actually uses this entire range, in this case mask generation is not needed. Another example of when a mask is not needed is when Forward Error Correction ("FEC") is used.
[0080] According to some further embodiments of the present invention, symbol generator module 2100 may be adapted to encode received data 2500 using one or more data bearing regions of one ore more optical data cell 4210 of the data mask layer 4200. According to some further embodiments of the present invention, the data bearing region may be associated with a polarity, which polarity may be associated with the logic value (i.e. 0 or 1) of a portion of the data stream 2500 and may expressed a selection of color used to express the logical value. [0081] According to some embodiments of the present invention, symbol generator module 2100 may generate layers 4000, 4100, 4200, 4300A and 4300B using raw data format. According to some embodiments of the present invention, raw data (sometimes called source data or atomic data) is data that (1) has not been processed for use or (2) has not been processed to suit a specific format (i.e. GIF, JPEG). A distinction is sometimes made between data and information to the effect that information is the end product of data processing. Although raw data has the potential to become "information," it requires selective extraction, organization, and sometimes analysis and formatting for presentation. [0082] According to some embodiments of the present invention, symbol generator module 2100 is adapted to encode received data stream 2500 using one or more data bearing regions of one or more optical data cell of the data mask layer 4200 (step 3300).
[0083] According to some embodiments of the present invention, step 3300 may best be described in conjunction with Fig. 1OA, there is shown a diagram of a symbol generator module 2100 adapted to encode received data using a data bearing regions of an optical data cell 100 of the data mask layer in accordance with some embodiments of the present invention, wherein the symbol generator module is adapted to define the polarity of a one or more data bearing region 110 based on the values of a received data and thus creating an optical data symbol. [0084] According to some further embodiments of the present invention, symbol generator module 2100 may be adapted to define the polarity of the data bearing regions based on the values of a logic matrix (i.e. a matrix which cells have a value of 0 or a value of 1). According to some embodiments of the present invention, the symbol generator module is adapted to create a logic matrix (i.e. a matrix which cells have a value of 0 or a value of 1), which logic matrix may represent the values of a portion of the data stream and additional Meta data (i.e. CRC code type, opcode).
[0085] According to some embodiments of the present invention, symbol generator module 2100 is adapted to multiply the optical data symbol 4300A or 4300B by a data XOR matrix (step 3400). [0086] According to some embodiments of the present invention, encoding system 2000 is adapted to convert the raw data representing a data optical symbol to an output format (step 3500). According to some further embodiments of the present invention, the encoding system may include an output interface module adapted to convert the raw data created by the symbol generator module to a different output format, which output format may be: (1) an image file (i.e. GIF, JPEG, TIFF, BMP etc.) (2) a printer file (3) a display device image data (4) a data file and (5) a cellular message data (i.e. MMS etc.). According to some embodiments of the present invention, the output interface module may be further adapted to send the output data to an external output device or system. According yet further embodiments of the present invention, output interface module may include a display driver 2200, a printer driver 2300 and a codec driver 2400 adapted to convert the raw data created by the symbol generator module to a different output format.
[0087] Turning now to Fig. 5, there is shown a block diagram of an exemplary decoding system according to some embodiments of the present invention, wherein a graphical processing module is adapted to: determine whether a given image data consists of an optical data bearing symbol, and extract from the optical data bearing symbol a logic data matrix. The functionality of the block diagram depicted in Fig. 5 may best be described in conjunction with Figs. 6, 7, 8, 9 and 1OB.
[0088] According to some embodiments of the present invention, system 5000 may be adapted to decode an optical data bearing symbol which may consist of one or more optical data cells, wherein one or more of the optical data cells is associated with a logic value and may be decoded based on a data bearing region and a reference region of the data cell.
[0089] According to some embodiments of the present invention, system 5000 may include (1) a controller 5100, (2) an input interface module 5400, (3) a graphical processing module 5300, (4) an output interface module 5700, (5) a logic matrix parser module 5200, (6) an internal camera 5500 and (7) an external image acquisition device. [0090] Turning now to Fig. 6, there is shown a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a decoding system 5000 adapted to convert a data bearing symbol into digital data. According to some embodiments of the present invention, input interface module 5400 may be adapted to receive image data from an image acquisition device of the system i.e. camera (5500) or from an external image acquisition device (5600). According to some embodiments of the present invention, the input interface module may be adapted to receive acquired image data (i.e. image file, video stream) from an external device and/or network.
[0091] According to some embodiments of the present invention, system 5000 is adapted to determine whether the image data is an optical symbol (step 6100) the functionality of this step may best be described in conjunction with Fig. 7 described herein bellow.
[0092] According to some embodiments of the present invention, system 5000 is adapted to convert the optical data symbol to a logic data matrix (step 6200), the functionality of this step may best be described in conjunction with Fig. 8 described herein bellow.
[0093] According to some embodiments of the present invention, system 5000 is adapted to decode the logic data matrix (step 6300), the functionality of this step may best be described in conjunction with Fig. 8 described herein bellow. [0094] According to some embodiments of the present invention, graphical processing module 5300 may be adapted to: (1) determine whether a given image data consists of an optical data bearing symbol, and (2) extract from the optical data bearing symbol a logic data matrix. The functionality of the graphical processing module 5300 may best be described in conjunction with Figs. 7 and 8 described herein bellow.
[0095] Turning now to Fig. 7 there is shown a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a graphical processing module 5300 adapted to detect a data bearing symbol within an acquired image. According to some embodiments of the present invention, system 5000 is adapted to capture/receive image data (step 7000) as was described herein above. According to yet further embodiment of the present invention, graphical processing module 5300 is adapted to detect a data bearing symbol within the image data.
[0096] According to some embodiments of the present invention, graphical processing module 5300 is adapted to detect a potential "pivot corner" shape (step 7100). According to some embodiments of the present invention, the graphical processing module may be adapted to determine whether a given image data set (i.e. data representing an image) consists of an optical data bearing symbol based on the detection of pivot corners in the given image data. According to some embodiments of the present invention, the graphical processing module may be further adapted to detect "potential pivot corners" based on general parameters that may suggest that the shape is a pivot corner (i.e. shape's coordinates, size etc.).
[0097] According to some embodiments of the present invention, graphical processing module 5300 is adapted to locate a one or more point of reference (i.e. center of mass) within the potential "pivot corner" shape(step 7200). [0098] According to some embodiments of the present invention, graphical processing module 5300 is adapted to calculate parameters of a framed shape within the potential "pivot corner" i.e. radius of a framed circle (step 7300). [0099] According to some embodiments of the present invention, graphical processing module 5300 is adapted to compare parameters associated with the framed shape and parameters associated with the potential pivot corner (step 7400) and determine whether the potential pivot corner is actually a pivot corner based on that comparison. According to some further embodiments of the present invention, the graphical processing module 5300 may be adapted to detect and tag a pivot corner based on a comparison of: (1) parameters of a potential pivot corner (i.e. Radius, area, diameter), and (2) parameters of a shape framed within the potential pivot corner (i.e. framed circle, rectangle, octagon etc.). [00100] According to some embodiments of the present invention, graphical processing module 5300 is adapted to determine whether the image data includes additional potential pivot corners (step 7500).
[00101] According to some embodiments of the present invention, graphical processing module 5300 is adapted to determine whether the image data consists of an optical data symbol (step 7600) based on the analysis of the pivot comers described hereinabove.
[00102] According to some embodiments of the present invention, the steps depicted in Fig. 7 are substantially associated with the field of Synthetic Analysis ("SA") and Synthetic Information ("SI"). In the field of image processing, SI refers to an element which may be used to distinguish a frame or a segment of the frame from other frames, SA refers to the analysis of artificial elements (SI) which were added in order to exclude them from the other portions of image data which doesn't consist of the specified SI.
[00103] Turning now to Fig.8, there is shown a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a graphical processing module 5300 adapted to extract a logic data matrix from a data bearing symbol. According to some embodiments of the present invention, upon detection of an optical symbol (step 8000) graphical processing module may be adapted to extract from the optical symbol a logic data matrix.
[00104] According to some embodiments of the present invention, graphical processing module 5300 is adapted to project the detected optical symbol to a normalized plane (step 8100). According to some further embodiments of the present invention, the graphical processing module may be adapted to detect that a data bearing symbol is positioned on a distorted ("non- normalized") plane based on the distances between the data symbol's detected pivot corners. According to yet further embodiments of the present invention, the graphical processing module may be adapted to project the data bearing symbol to a normalized plane based on the distances between the data symbol's pivot corners.
[00105] According to some embodiments of the present invention, graphical processing module 5300 is adapted to detect clusters of data cells based on the position of a one or more orientation regions (step 8200), which orientation regions may be associated with orientation layer 4100 .
[00106] According to some embodiments of the present invention, graphical processing module 5300 is adapted to calculate parameters associated with one or more optical data cell based on samples taken from one or more reference region and one or more data bearing region of the data cell (step 8300). [00107] According to some embodiments of the present invention, graphical processing module 5300 is adapted to generate a histogram of one or more optical data cell based on the data cell calculated parameters (step 8400). According to some further embodiments of the present invention, the graphical processing module may be adapted to estimate a histogram of a data cell based on at least one sample taken from the data cell reference region and from at least one sample taken from the data cell data bearing region.
[00108] According to some embodiments of the present invention, graphical processing module 5300 is adapted to determine the logic value of an optical data cell ("data cell") (step 8500). According to further embodiments of the present invention, the graphical processing module may be adapted to determine the logic value of a data cell based on: (1) the histogram associated with the data cell, and (2) a sample taken from the data bearing region of the reference cell.
[00109] According to some embodiments of the present invention, step
8500 may best be described in conjunction with Fig. 10B5 there is shown a diagram of a graphical processing module 5300 adapted to decode an optical symbol by determining the logic values of a one or more optical data cell (200,300). According to some embodiments of the present invention, the logic value of a data cell is determined based on (1) a histogram and (2) a sample taken from the data cell bearing region 320.According to further embodiments of the present invention, a data cell histogram may be generated using at least one sample taken from the data cell reference region 310 and from at least one sample taken from the data cell data bearing region 320..
[00110] According to some embodiments of the present invention, graphical processing module 5300 is adapted to extract a logic data matrix from the optical data symbol based on the determined logic values of the optical data cells (step 8600).
[00111] Turning now to Fig.9, there is shown a flow chart depicting the steps of an exemplary embodiment of the present invention which may be executed by a logic matrix parser adapted to decode a logic data matrix and retrieve data encoded in the matrix (i.e. CRC type, opcode, data).
[00112] According to some embodiments of the present invention, logic matrix parser 5200 may be adapted to detect data bits clusters based on the location of a one or more data orientation bit associated with the logic data matrix
(step 9000).
[00113] According to some embodiments of the present invention, logic matrix parser 5200 may be adapted to decode clusters of data bits consisting of information associated with the meta-data of information encoded within the optical symbol (step 9100).
[00114] According to some embodiments of the present invention, logic matrix parser 5200 may be adapted to decode data bearing cluster consisting of information associated with the CRC used with the optical symbol (step 9200).
According to some embodiments of the present invention, logic matrix parser
5200 may be adapted to decode data bearing cluster consisting of information associated with the opcode and /or additional data encoded by the optical symbol
(step 9300).
[00115] According to some embodiments of the present invention, output interface module 5700 is adapted to send data to an output device/network based on the decoded information from the data bearing symbol.
[00116] While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents will now occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention.

Claims

ClaimsWhat claimed is:
1. A method for decoding an optical data bearing symbol comprising one or more optical data cells, said method comprising the step of: a. determining the logic value of one or more (each???) data cell based on its data bearing region and reference region.
2. The method according to claim 1, wherein said data bearing symbol comprises two or more pivot corner.
3. The method according to claim 1, wherein said data bearing symbol comprises one or more orientation region.
4. The method according to claim 2 further comprising the steps of: a. calculating parameters associated with a potential pivot comer and parameters associated with a framed shape of the potential pivot corner; and b. comparing said parameters associated with a potential pivot corner and with a framed shape of the potential pivot corner.
5. The method according to claim 2 further comprising the step of: a. Projecting said optical data symbol to a normalized plane.
6. The method according to claim 2 further comprising the steps of: a. creating a histogram of one or more data cell based on at least one sample taken from the data cell reference region and from at least one sample taken from the data cell data bearing region; and b. determining the logic value of the data cell based on said data cell histogram.
7. The method according to claim 2 further comprising the step of: a. extracting a logic data matrix based on said data cells logic value and orientation bits.
8. A method for encoding a received data stream, comprising the steps of: a. creating (generating????) an optical data bearing symbol comprising one or more optical data cells, wherein at least one data cell comprising both a data bearing region and a reference region.
9. The method according to claim 8, wherein said data bearing symbol further comprises two or more pivot corner.
10. The method according to claim 8, wherein said data bearing symbol further comprises one or more orientation region.
11. The method according to claims 8 further comprises the step of: a. determining the polarity of said data bearing region based on the logic values of the received data stream.
12. An optical data bearing symbol comprising one or more optical data cells, wherein at least one data cell comprising both a data bearing region and a reference region.
13. The optical data bearing symbol according to claim 12, further comprises two or more pivot corner.
14. The optical data bearing symbol according to claim 12, further comprise one or more orientation region.
15. The optical data bearing symbol according to claim 12, wherein the polarity of said data bearing regions is associated with said data logic values.
PCT/IL2007/001306 2006-12-14 2007-10-28 An apparatus system and method for encoding and decoding optical symbols WO2008072219A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/IL2008/000048 WO2008087626A2 (en) 2007-01-17 2008-01-10 An apparatus system and method for decoding optical symbols

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US86993406P 2006-12-14 2006-12-14
US86992106P 2006-12-14 2006-12-14
US60/869,921 2006-12-14
US60/869,934 2006-12-14
US88524807P 2007-01-17 2007-01-17
US88525107P 2007-01-17 2007-01-17
US60/885,251 2007-01-17
US60/885,248 2007-01-17
US90946307P 2007-04-01 2007-04-01
US60/909,463 2007-04-01

Publications (2)

Publication Number Publication Date
WO2008072219A2 true WO2008072219A2 (en) 2008-06-19
WO2008072219A3 WO2008072219A3 (en) 2009-05-07

Family

ID=39512172

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IL2007/001306 WO2008072219A2 (en) 2006-12-14 2007-10-28 An apparatus system and method for encoding and decoding optical symbols

Country Status (1)

Country Link
WO (1) WO2008072219A2 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5946414A (en) * 1998-08-28 1999-08-31 Xerox Corporation Encoding data in color images using patterned color modulated image regions
US6494375B1 (en) * 1999-05-26 2002-12-17 Denso Corporation Information-code-image capturing apparatus
US6722565B2 (en) * 2001-02-21 2004-04-20 Denso Corporation Data code label, a method of decoding data codes, and an optical data code decoding system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5946414A (en) * 1998-08-28 1999-08-31 Xerox Corporation Encoding data in color images using patterned color modulated image regions
US6494375B1 (en) * 1999-05-26 2002-12-17 Denso Corporation Information-code-image capturing apparatus
US6722565B2 (en) * 2001-02-21 2004-04-20 Denso Corporation Data code label, a method of decoding data codes, and an optical data code decoding system

Also Published As

Publication number Publication date
WO2008072219A3 (en) 2009-05-07

Similar Documents

Publication Publication Date Title
US20230067071A1 (en) System and method for document processing
US10331929B2 (en) Imaging terminal, imaging sensor to determine document orientation based on bar code orientation and methods for operating the same
EP1138013B1 (en) Skew processing of raster scan images
US6802452B2 (en) Bar code scanner and method
US8152070B2 (en) Two-dimensional symbol and method for reading same
CN105654015B (en) Method and system for decoding two-dimensional matrix symbols
US20020044689A1 (en) Apparatus and method for global and local feature extraction from digital images
JP2000501209A (en) Sub-pixel data form reader
JP7263423B2 (en) Improved matrix symbol error fix
EP2320350B1 (en) Annotation of optical images on a mobile device
US8302866B2 (en) Optical reader using distance map decoding
TW201601068A (en) Image type high-speed barcode scanning method
WO2008072219A2 (en) An apparatus system and method for encoding and decoding optical symbols
KR100829108B1 (en) Apparatus and method for reading 2 dimensional barcode with a pattern gradient calculation function
WO2008087626A2 (en) An apparatus system and method for decoding optical symbols
Weng et al. Design and implementation of barcode management information system
EP1178665A2 (en) Optical scanner and image reader including one and two dimensional symbologies at variable depth of field

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 07827280

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase in:

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 07827280

Country of ref document: EP

Kind code of ref document: A2