1. Field of the Invention
The present invention relates to data communication. More particularly, the present invention relates to data communication using Two-Dimensional (2D) bar codes.
2. Description of the Related Art
Two-Dimensional (2D) bar codes are fast gaining traction as enablers for online content and services. 2D bar codes encoded with information, such as a Uniform Resource Locator (URL), may appear in a magazine, on a sign, on a bus, on a business card or on any other object about which a user might desire to obtain information. To obtain information about an object with a 2D bar code disposed thereon, a user may use a device equipped with a camera and 2D bar code reader software. The device uses the camera to scan the image of the 2D bar code. The device then uses the 2D bar code reader software to decode the scanned 2D bar code to obtain the information encoded therein. For example, if the information is a URL, the URL may be used by an Internet browser to load a website corresponding to the URL that was encoded in the 2D bar code. The act of linking from a physical world object is referred to as a hardlink or a physical world hyperlink. Users may also generate and print their own 2D bar codes for others to scan.
Several 2D bar code symbologies have been standardized by the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC). For example, the ISO/IEC 18004 standard specifies a 2D bar code symbology referred to as Quick Response (QR) code. An exemplary QR code will be described below with reference to
Referring to
QR codes come in a variety of sizes. For example, there are forty sizes of QR code symbols, which are referred to as Version 1, Version 2 . . . Version 40. Version 1 measures 21 modules×21 modules, Version 2 measures 25 modules×25 modules and so on increasing in steps of 4 modules per side up to Version 40 which measures 177 modules×177 modules. The QR code illustrated in
Referring to
While a conventional 2D bar code communication system may be used to communicate limited amounts of information, the conventional 2D bar code communication system is not suitable for the transfer of large amounts of information.
Therefore, a need exists for an apparatus and method for transferring large amounts of information using 2D bar codes.
An aspect of the present invention is to address at least the above-mentioned problems and/or disadvantages and to provide at least the advantages described below. Accordingly, an aspect of the present invention is to provide an apparatus and method for data communication using Two-Dimensional (2D) bar codes.
In accordance with an aspect of the present invention, a method for operating a 2D code receiver in a 2D code communication system is provided. The method includes receiving a sequence of 2D codes from a 2D code transmitter having data encoded therein, wherein the 2D codes of the sequence are received in succession, and decoding the received sequence of 2D codes into the data.
In accordance with another aspect of the present invention, a method for operating a 2D code transmitter in a 2D code communication system is provided. The method includes encoding data into a sequence of 2D codes, and transmitting the sequence of 2D codes to a 2D code receiver, wherein the 2D codes of the sequence are transmitted in succession.
In accordance with yet another aspect of the present invention, a 2D code receiving apparatus for use in a 2D code communication system is provided. The apparatus includes a 2D code receiver for receiving a sequence of 2D codes from a 2D code transmitter having data encoded therein, wherein the 2D codes of the sequence are received in succession, and a processor for decoding the received sequence of 2D codes into the data.
In accordance with still another aspect of the present invention, a 2D code transmitting apparatus for use in a 2D code communication system is provided. The apparatus includes a processor for encoding data into a sequence of 2D codes, and a 2D code transmitter for transmitting the sequence of 2D codes to a 2D code receiver, wherein the 2D codes of the sequence are transmitted in succession.
Other aspects, advantages, and salient features of the invention will become apparent to those skilled in the art from the following detailed description, which, taken in conjunction with the annexed drawings, discloses exemplary embodiments of the invention.
The above and other aspects, features, and advantages of certain exemplary embodiments of the present invention will be more apparent from the following description taken in conjunction with the accompanying drawings, in which:
Throughout the drawings, like reference numerals will be understood to refer to like parts, components, and structures.
The following description with reference to the accompanying drawings is provided to assist in a comprehensive understanding of exemplary embodiments of the invention as defined by the claims and their equivalents. It includes various specific details to assist in that understanding but these are to be regarded as merely exemplary. Accordingly, those of ordinary skill in the art will recognize that various changes and modifications of the embodiments described herein can be made without departing from the scope and spirit of the invention. In addition, descriptions of well-known functions and constructions are omitted for clarity and conciseness.
The terms and words used in the following description and claims are not limited to the bibliographical meanings, but, are merely used by the inventor to enable a clear and consistent understanding of the invention. Accordingly, it should be apparent to those skilled in the art that the following description of exemplary embodiments of the present invention are provided for illustration purpose only and not for the purpose of limiting the invention as defined by the appended claims and their equivalents.
It is to be understood that the singular forms “a,” “an,” and “the” include plural referents unless the context clearly dictates otherwise. Thus, for example, reference to “a component surface” includes reference to one or more of such surfaces.
By the term “substantially” it is meant that the recited characteristic, parameter, or value need not be achieved exactly, but that deviations or variations, including for example, tolerances, measurement error, measurement accuracy limitations and other factors known to those of skill in the art, may occur in amounts that do not preclude the effect the characteristic was intended to provide.
Exemplary embodiments of the present invention described below relate to data communication using Two-Dimensional (2D) bar codes (hereafter referred to as 2D codes). Quick Response (QR) codes may be described below as an example of 2D codes. However, the present invention is not limited to QR codes as it is can equally apply to other types of 2D codes.
It should be understood that the following description may refer to terms utilized in various standards merely for simplicity of explanation. For example, the following description may refer to terms utilized in an Open Mobile Alliance (OMA) Mobile Codes standard as well as an Institute of Electrical and Electronics Engineers (IEEE) 802.15 TG7 visible-light communication standard. However, this description should not be interpreted as being limited to such standards. Independent of the mechanism used for data communication using 2D codes, it is preferable to communicate data using 2D codes and it is advantageous for that ability to conform to a standardized mechanism.
Referring to
The 2D code transmitter 310 may be a display or any other apparatus capable of producing 2D codes in sequence. If the 2D code transmitter 310 is a display, the display may utilize a display unit such as a Cathode Ray Tube (CRT), plasma display, Liquid Crystal Display (LCD), Organic Light Emitting Diode (OLED) or any other type of display. In this case, the display may include a controller for controlling the display unit, a video memory in which image data is stored and the display unit. Further, the display may be a projected image.
The 2D receiver 320 may be a camera or any other apparatus capable of reading 2D codes in sequence. If the 2D receiver 320 is a camera, the camera captures an image of the 2D codes through a lens. Herein, the camera includes a camera sensor for converting a captured optical signal to an electrical signal and a signal processor for converting an analog video signal received from the camera sensor to digital data. The camera sensor may be a Charge Coupled Device (CCD) sensor or a Complementary Metal-Oxide Semiconductor (CMOS) sensor, and the signal processor may be a Digital Signal Processor (DSP), to which the present invention is not limited.
All or a portion of the actions of the 2D code transmitter described herein may be performed by or under the control of a processor associated there with. Similarly, all or a portion of the actions of the 2D code receiver described herein may be performed by or under the control of a processor there with.
An exemplary encoding of the data into the 2D codes 330-0 to 330-(N-1) is described in more detail below with reference to
Referring to
Up to this point, unidirectional 2D code communication has been described. However, according to an exemplary embodiment of the present invention, 2D code communication between two devices may be bi-directional. An example of Bi-directional 2D code communication will be described below with reference to
Referring to
Data communicated from device 510 to device 520 is communicated using 2D codes 530-0 to 530-(N-1). More specifically, the 2D code transmitter 514 of device 510 transmits the 2D codes 530-0 to 530-(N-1), which are received by the 2D code receiver 526 of device 520. The 2D codes 530-0 to 530-(N-1) may be transmitted by the 2D code transmitter 514 of device 510 in sequence to the 2D code receiver 526 of device 520. The 2D codes 530-0 to 530-(N-1) may be QR codes. The 2D codes 530-0 to 530-(N-1) are encoded with the data being communicated.
Data communicated from device 520 to 510 is communicated using 2D codes 532-0 to 532-(N-1). More specifically, the 2D code transmitter 524 of device 520 is used to transmit the 2D codes 532-0 to 532-(N-1), which are received by the 2D code receiver 516 of device 510. The 2D codes 532-0 to 532-(N-1) may be transmitted by the 2D code transmitter 524 of device 520 in sequence to the 2D code receiver 516 of device 510. The 2D codes 532-0 to 532-(N-1) may be QR codes. The 2D codes 532-0 to 532-(N-1) are encoded with the data being communicated.
Bi-directional 2D code communication is advantageous in that the bi-directional communication allows a 2D code receiver to provide control information feedback to a 2D code transmitter. To facilitate control information feedback, a 2D code may carry data information, control information or both. For example, when device 510 provides control feedback to device 520, device 510 may also encode data to be transmitted to device 510 in the same 2D code used for carrying control feedback.
In addition, bi-directional 2D code data communication is advantageous in that the bi-directional 2D code communication allows for simultaneous 2-way communication of data via 2D codes. Exemplary applications that would benefit from implementing bi-directional 2D code communication include instant messaging and interactive multi-person gaming. While bi-directional 2D code data communication has been described above, in an exemplary embodiment of the present invention, one the two directions of communication may be implemented using a type of communication other than 2D code communication, such as infrared communication, radio frequency communication, etc.
An exemplary method for receiving 2D codes at a 2D code receiver in a 2D code communication system is described below with reference to
Referring to
An example of the synchronization process of step 610 is described in more detail below with reference to
Referring to
In exemplary embodiments of the present invention, the 2D codes transmitted by the 2D code transmitter may include features that assist the 2D code receiver in synchronizing with the 2D code transmitter. Exemplary implementations of the features in the 2D codes that assist the 2D code receiver in synchronizing with the 2D code transmitter are described below with reference to
Referring to
Referring to
Referring to
Referring to
As described above with reference to
In an exemplary embodiment of the present invention, in addition to the 2D codes employing features that assist in synchronization, the same 2D codes may be used by the 2D code receiver for determining a supported code resolution. An exemplary implementation of using 2D codes to assist the 2D code receiver in determining the supported code resolution is described below with reference to
Referring to
After the supportable resolution is determined, the 2D code receiver 1204 transmits the determined supportable resolution (or version number) to the 2D code transmitter 1202 in step 1220. The transmitted determined supportable resolution may additionally include supportable transmission rate information. The 2D code transmitter 1202 then transmits 2D codes to the 2D code receiver 1204 in step 1230 based on the supportable resolution reported by the 2D code receiver.
An exemplary method for receiving 2D codes based on a supported code resolution is described below with reference to
Referring to
While 2D codes are normally communicated without error, it may be possible that a 2D code received at a 2D code receiver may not be successfully decoded. Here, the error may be caused by any number of circumstances. In order to address this scenario, an Automatic Repeat reQuest (ARQ) transmission method may be used to ensure reliable data transmission. An exemplary ARQ transmission method for communicating data using 2D codes is described below with reference to
Referring to
The determining, by the 2D code receiver 1404, if any of the 2D codes have not been successfully decoded may be performed by any combination of one or more of a processor associated with the 2D code receiver 1404 and a successful decoding determiner. The generation, by the 2D code receiver 1404, of the NACK may be performed by any combination of one or more of a processor associated with the 2D code receiver 1404, the successful decoding determiner, and a NACK generator.
The determining, by the 2D code transmitter 1402, if any of the 2D codes should be retransmitted may be performed by any combination of one or more of a processor associated with the 2D code transmitter 1402 and a 2D code retransmission determiner.
While the NACK described above only indentifies one 2D code, it may identify any number of 2D codes that have not been successfully decoded. Alternatively, a separate NACK may be generated and transmitted for each 2D code or a subset of the 2D codes that have not been successfully decoded.
While it is described above that the 2D code receiver 1404 determines if any of the 2D codes have not been successfully decoded after all 2D codes of a 2D code sequence have been received, in an another exemplary embodiment, the 2D code receiver 1404 may determine if a 2D code has not been successfully decoded after each 2D code is transmitted. In this case, the 2D code receiver 1404 may transmit the NACK as described above, or may alternatively, transmit a NACK after any 2D code has not been successfully decoded.
The 2D code transmitter 1402 may retransmit the one or more 2D codes identified in a NACK upon receipt of the NACK, even if the retransmission of the one or more 2D codes occurs within the transmission of a sequence of 2D codes. Alternatively, the 2D code transmitter 1402 may retransmit the one or more 2D codes after any transmission of a sequence of 2D codes. When more than one NACK is received, the 2D code transmitter 1402 may retransmit the one or more 2D codes identified in the NACKs in an order based on the order of receipt of the NACKs. The order may be First-In-First-Out (FIFO), Last-In-First-Out (LIFO), or any other order.
Alternatively, instead of using a NACK, a 2D code communication system according to an exemplary embodiment of the present invention, may employ an ACknowledgement (ACK) scheme. The ACK scheme is similar to the NACK scheme described above, except that an ACK identifies one or more successfully decoded 2D codes instead of the identification of one or more unsuccessfully decoded 2D codes that is employed in the NACK scheme. In the ACK scheme, 2D codes are retransmitted by the 2D code transmitter 1402 based on the lack of receipt of an ACK from the 2D code receiver 1404. Here, the determining, by the 2D code receiver 1404, if any of the 2D codes have been successfully decoded may be performed by any combination of one or more of a processor associated with the 2D code receiver 1404 and a successful decoding determiner. The generation, by the 2D code receiver 1404, of the ACK may be performed by any combination of one or more of a processor associated with the 2D code receiver 1404, the successful decoding determiner, and an ACK generator. The determining, by the 2D code transmitter 1402, if any of the 2D codes should be retransmitted may be performed by any combination of one or more of a processor associated with the 2D code transmitter 1402 and a 2D code retransmission determiner.
As described above, the 2D code receiver 1404 provides feedback on the codes that need to be retransmitted. In this exemplary embodiment, it is assumed that there is a reverse channel from the 2D code receiver 1404 to the 2D code transmitter 1402. The communication on this reverse channel may use 2D code communication or any other type of communication, such as infrared communication, radio frequency communication, etc.
Another exemplary technique to ensure reliable data transmission in a 2D code communication system is to provide redundancy in the transmitted 2D codes. The addition of redundancy to the transmitted 2D codes is described below with reference to
Referring to
In one exemplary embodiment, when mapping the coded symbols 1530-0 to 1530-(N-1) to the 2D codes 1540-0 to 1540-(N-1), each coded symbol is mapped over the four sub-codes of each 2D code.
In another exemplary embodiment, each of the four sub-codes of each 2D code comprises substantially identical information, thereby providing redundancy in the transmitted 2D codes. In this case, a 2D code receiver need only be able to successfully decode one of the 2D sub-codes of a 2D code in order to receive the 2D code without error.
In one exemplary embodiment, the four sub-codes of a 2D code are simultaneously transmitted to the 2D code receiver. In this exemplary embodiment, each the 2D codes 1540-0 to 1540-(N-1) are serially transmitted at a code switching rate. To receive the 2D codes 1540-0 to 1540-(N-1), the 2D code receiver synchronizes with the 2D code transmitter's code switching rate to properly receive each 2D code. The synchronizing with the 2D code transmitter may be performed by any combination of one or more of a processor associated with the 2D code receiver and a synchronization unit. The 2D code receiver extracts data encoded in each of the 2D sub-codes of a received 2D code. When the sub-codes comprise redundant information, a 2D code receiver need only be able to successfully decode one of the 2D sub-codes of a 2D code in order to receive the 2D code without error. If the information of the 2D code is spread over the 2D sub-codes, a 2D code receiver needs to be able to successfully decode all of the 2D sub-codes of a 2D code in order to receive the 2D code without error. After all of the 2D codes are decoded, the 2D code receiver performs reassembly of the data 1510, and delivers the data 1510 to higher protocol layers.
In another exemplary embodiment, the four sub-codes of a 2D code are serially transmitted by the 2D code transmitter to the 2D code receiver. In this exemplary embodiment, each the 2D sub-codes are serially transmitted at a certain frequency, which may be referred to as a sub-code switching rate. To receive the 2D codes 1540-0 to 1540-(N-1), the 2D code receiver synchronizes with the 2D code transmitter's sub-code switching rate to properly receive the sub-codes for each 2D code. The synchronizing with the 2D code transmitter may be performed by any combination of one or more of a processor associated with the 2D code receiver and a synchronization unit. The 2D code receiver extracts data encoded in each of the 2D sub-codes of a received 2D code. When the sub-codes comprise redundant information, a 2D code receiver need only be able to successfully decode one of the 2D sub-codes of a 2D code in order to receive the 2D code without error. If the information of the 2D code is spread over the 2D sub-codes, a 2D code receiver needs to be able to successfully decode all of the 2D sub-codes of a 2D code in order to receive the 2D code without error. After all of the 2D codes are decoded, the 2D code receiver performs reassembly of the data 1510, and delivers the data 1510 to higher protocol layers.
The decoding and reassembly of the data 1510 may be performed by any combination of one or more of a processor associated with the 2D code receiver, a 2D sub-code demapper, a 2D code demapper, a channel decoder, and a data assembly unit.
The implementation of 2D sub-codes may advantageously employ ARQ to provide feedback on a 2D sub-code basis. An exemplary ARQ operation for use with 2D sub-codes is described below with reference to
Referring to
The determining, by the 2D code receiver 1604, if any of the 2D Sub-codes have not been successfully decoded may be performed by any combination of one or more of a processor associated with the 2D code receiver 1604 and a successful decoding determiner. The generation, by the 2D code receiver 1604, of the NACK may be performed by any combination of one or more of a processor associated with the 2D code receiver 1604, the successful decoding determiner, and a NACK generator.
The determining, by the 2D code transmitter 1602, if any of the 2D codes should be retransmitted may be performed by any combination of one or more of a processor associated with the 2D code transmitter 1602 and a 2D code retransmission determiner.
While the NACK described above only indentifies one 2D sub-code, it may identify any number of 2D sub-codes that have not been successfully decoded. Alternatively, a separate NACK may be generated and transmitted for each 2D sub-code or a subset of the 2D sub-codes that have not been successfully decoded.
While it is described above that the 2D code receiver 1604 determines if any of the 2D sub-codes have not been successfully decoded after all 2D sub-codes of a 2D code have been received, in an another exemplary embodiment, the 2D code receiver 1604 may determine if a 2D sub-code has not been successfully decoded after reception of each 2D sub-code. In this case, the 2D sub-code receiver 1604 may transmit the NACK as described above, or may alternatively, transmit a NACK after any 2D sub-code has not been successfully decoded.
The 2D code transmitter 1602 may retransmit the one or more 2D sub-codes identified in a NACK upon receipt of the NACK, even if the retransmission of the one or more 2D sub-codes occurs within the transmission of other 2D sub-codes of a 2D code. Alternatively, the 2D code transmitter 1602 may retransmit the one or more 2D sub-codes after any transmission of 2D sub-codes of a 2D code. When more than one NACK is received, the 2D code transmitter 1602 may retransmit the one or more 2D sub-codes identified in the NACKs in an order based on the order of receipt of the NACKs. The order may be First-In-First-Out (FIFO), Last-In-First-Out (LIFO), or any other order.
While an ARQ operation for a serial transmission of sub-codes has been described above, the ARQ operation similarly applies when sub-codes are simultaneously transmitted. In this case, the 2D sub-codes are simultaneously transmitted and a NACK, if any, is transmitted thereafter.
In addition, instead of using a NACK, a 2D code communication system according to an exemplary embodiment of the present invention, may employ an ACK scheme. The ACK scheme is similar to the NACK scheme described above, except that an ACK identifies one or more successfully decoded 2D sub-codes instead of the identification of one or more unsuccessfully decoded 2D sub-codes that is employed in the NACK scheme. In the ACK scheme, 2D sub-codes are retransmitted by the 2D code transmitter 1602 based on the lack of receipt of an ACK from the 2D code receiver 1604. Here, the determining, by the 2D code receiver 1604, if any of the 2D codes have been successfully decoded may be performed by any combination of one or more of a processor associated with the 2D code receiver 1604 and a successful decoding determiner. The generation, by the 2D code receiver 1604, of the ACK may be performed by any combination of one or more of a processor associated with the 2D code receiver 1604, the successful decoding determiner, and an ACK generator. The determining, by the 2D code transmitter 1602, if any of the 2D codes should be retransmitted may be performed by any combination of one or more of a processor associated with the 2D code transmitter 1602 and a 2D code retransmission determiner.
As described above, the 2D code receiver 1604 provides feedback on the sub-codes that need to be retransmitted. In this exemplary embodiment, it is assumed that there is a reverse channel from the 2D code receiver 1604 to the 2D code transmitter 1602. The communication on this reverse channel may use 2D code communication or any other communication media.
While a point-to-point 2D code communication system has been described above, an exemplary point-to-multipoint 2D code communication system will be described below with reference to
Referring to
Described below with reference to
Referring to
In an exemplary embodiment of the present invention, the sequence of codes transmitted may include the same overall pattern but with varying colors. For example, given a code with a pattern (e.g. a QR code), the pattern may remain the same for successive 2D codes but the colors in the pattern may vary for successive 2D codes. In other words, the colors of the filled in parts could be changed for each 2D code. Alternatively, a black pattern may be used while the “white areas” change color. This way the pattern stays the same, but the colors change. In other words, each 2D code can be considered as a grid of squares with each square having a specific color that changes in each of the 2D codes that make up a sequence of 2D codes.
In an exemplary implementation, the cascading codes of this invention may be hidden, for example, in a digital movie, with each code being contained in a new frame. That way, it can be used as a watermark (or hidden message) in a digital movie.
Described below with reference to
The encoded bits consisting of the data bits (or information bits) and error correction bits are randomly or systematically interleaved or interlaced such that they are placed into physical matrix modules of a color 2D code or a black and white 2D code. As shown in
An exemplary multipoint-to-point 2D code communication system is described hereafter with reference to
Referring to
In an exemplary embodiment of the present invention, the 2D codes are scalable and the transmission has an adaptive feature such as joint source-channel coding. For stored information (e.g. a file), multiple images (multiple 2D codes) could be simultaneously transmitted in one screen (e.g., for a large sized screen). For the information which can be 2D coded on the fly, not only the resolution (version) of the 2D codes can be selected based on the channel information, but also the size of the image of the 2D code can be adjusted based on the screen size and the channel information. Herein, a feature of the 2D transmitter, such as the contrast of a display, could be adjusted as well based on the channel information. For example, if the channel is not good, the contrast can be increased to make the image more easily detectable. Accordingly, the 2D communication may be adaptive.
In another exemplary embodiment of the present invention, 2D codes with different error protection can be used to transmit different information with diverse reliability requirements. For example, it is generally advantageous to employ more robust error protection in control signaling than for payload data, such as audio, where the reliability requirement is not high. Thus, in one exemplary embodiment, control signaling in 2D codes is implemented with more error protection than the payload data.
In another exemplary embodiment of the present invention, a superposition technique may be employed. In other words, some information may be embedded into 2D codes at locations typically reserved for another purpose. For example, if only two versions of the 2D codes are to be implemented in a 2D code communication system, and if the version of the 2D code can be detected by the 2D receiver, the version information itself can be transmitted using only 1 bit. If the 2D codes are always transmitted in a unit of two 2D codes, then we can have four combinations, which are actually transmitted in two bits.
In another exemplary embodiment of the present invention, if a device has multiple 2D code receivers, the communication may employ Multiple Input Multiple Output (MIMO)-like cooperative approaches. In other words, if 2D codes are transmitted in a synchronized way by multiple 2D code transmitters, one 2D code receiver receives multiple 2D codes from multiple 2D code transmitters and may jointly decode these 2D codes.
Accordingly, exemplary embodiments of the present invention employ a 2D code communication system using 2D code communication techniques in order to transfer large amounts of information using 2D bar codes. Any of the 2D code communication systems described above may implement any combination of the above described 2D code communication techniques.
Certain aspects of the present invention may also be embodied as computer readable code on a computer readable recording medium. A computer readable recording medium is any data storage device that can store data, which can be thereafter read by a computer system. Examples of the computer readable recording medium include Read-Only Memory (ROM), Random-Access Memory (RAM), CD-ROMs, magnetic tapes, floppy disks, optical data storage devices, and carrier waves (such as data transmission through the Internet). The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion. Also, functional programs, code, and code segments for accomplishing the present invention can be easily construed by programmers skilled in the art to which the present invention pertains.
While the invention has been shown and described with reference to certain exemplary embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims and their equivalents.
This application claims the benefit under 35 U.S.C. §119(e) of a U.S. Provisional application filed on Apr. 24, 2009 in the U.S. Patent and Trademark Office and assigned Ser. No. 61/214,520, the entire disclosure of which is hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
61214520 | Apr 2009 | US |