Barcode decoding method and barcode reader
Granted 5 Mar 2019 · no office action yet
Assignee: Qisda Corporation
Law firm: Law firm · Log in to unlock
Attorney: Attorney · Log in to unlock
Inventors: Chieh-Ling Hsiao, Chia-Ching Tsai, Jun-Hao Kuo, Hung-Chih Chan · Examiner: Jamara Franklin · AU 2876 · TC 2800
Life of the application
7 dated eventsAbstract
A barcode decoding method includes steps of (a) capturing an image of a barcode; (b) analyzing the image to recognize a data region of the barcode; (c) decoding the data region to obtain a codeword matrix, wherein the codeword matrix includes a plurality of codewords; (d) performing an error correction for the codeword matrix; (e) when the codeword matrix fails to pass the error correction, repeating steps (a) to (c), updating the codeword matrix according to a number of occurrence times of each codeword at an identical position of the codeword matrix, and repeating step (d) for the codeword matrix after updating; and (f) when the codeword matrix passes the error correction, decoding the codeword matrix.
Description
6 parts›BACKGROUND OF THE INVENTION
1. Field of the Invention
The invention relates to a barcode decoding method and a barcode reader and, more particularly, to a barcode decoding method and a barcode reader capable of enhancing decoding efficiency effectively.
2. Description of the Prior Art
PDF417 is a 2D barcode, wherein PDF stands for Portable Data File. The PDF417 barcode consists of 3 to 90 rows, wherein each row comprises a start pattern, a left row indicator, a data region, a right row indicator and a stop pattern. Each codeword of the PDF417 barcode is 17 units long and consists of 4 bars and 4 spaces.
In general, the method of decoding the PDF417 barcode comprises steps of capturing an image of a barcode; performing a binarization algorithm for the image; detecting the start pattern and the stop pattern; decoding the left row indicator and the right row indicator; decoding the data region; and performing an error correction for codewords. If the codewords can pass the error correction, the codewords can be decoded by a look-up table. If the codewords fails to pass the error correction, it means that the decoding process fails and the aforesaid decoding steps have to be repeated, such that the decoding efficiency reduces.
›SUMMARY OF THE INVENTION
An objective of the invention is to provide a barcode decoding method and a barcode reader capable of enhancing decoding efficiency effectively, so as to solve the aforesaid problems.
According to an embodiment of the invention, a barcode decoding method comprises steps of (a) capturing an image of a barcode; (b) analyzing the image to recognize a data region of the barcode; (c) decoding the data region to obtain a codeword matrix, wherein the codeword matrix comprises a plurality of codewords; (d) performing an error correction for the codeword matrix; (e) when the codeword matrix fails to pass the error correction, repeating steps (a) to (c), updating the codeword matrix according to a number of occurrence times of each codeword at an identical position of the codeword matrix, and repeating step (d) for the codeword matrix after updating; and (f) when the codeword matrix passes the error correction, decoding the codeword matrix.
According to another embodiment of the invention, a barcode reader comprises an image capturing unit and a processing unit, wherein the processing unit is electrically connected to the image capturing unit. The image capturing unit captures an image of a barcode. The processing unit analyzes the image to recognize a data region of the barcode. The processing unit decodes the data region to obtain a codeword matrix, wherein the codeword matrix comprises a plurality of codewords. The processing unit performs an error correction for the codeword matrix. When the codeword matrix fails to pass the error correction, the image capturing unit recaptures the image of the barcode. The processing unit analyzes the image, decodes the data region, updates the codeword matrix according to a number of occurrence times of each codeword at an identical position of the codeword matrix, and performs the error correction for the codeword matrix after updating. When the codeword matrix passes the error correction, the processing unit decodes the codeword matrix.
As mentioned in the above, when the codeword matrix fails to pass the error correction, the invention updates the codeword matrix according to the number of occurrence times of each codeword at the identical position of the codeword matrix and performs the error correction for the codeword matrix after updating, so as to improve decoding success rate. In other words, the invention accumulates the number of occurrence times of each codeword at the identical position of the codeword matrix after decoding the data region every time and selects the codeword having more occurrence times from the codewords at the identical position of the codeword matrix to update the codeword matrix. Accordingly, the invention can enhance decoding efficiency effectively.
These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings.
›BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a schematic duagram illustrating a barcode reader and a barcode according to an embodiment of the invention.
FIG. 2 is a functional block diagram illustrating the barcode reader shown in FIG. 1 .
FIG. 3 is a flowchart illustrating a barcode decoding method according to an embodiment of the invention.
FIG. 4 is a schematic diagram illustrating a codeword matrix and a statistic matrix obtained by first decoding process.
FIG. 5 is a schematic diagram illustrating a codeword matrix and a statistic matrix obtained by second decoding process.
FIG. 6 is a schematic diagram illustrating a codeword matrix and a statistic matrix obtained by third decoding process.
FIG. 7 is a schematic diagram illustrating a codeword matrix and a statistic matrix obtained by fourth decoding process.
FIG. 8 is a schematic diagram illustrating a codeword matrix and a statistic matrix obtained by fifth decoding process.
›DETAILED DESCRIPTION · 1 of 3
Referring to FIGS. 1 and 2 , FIG. 1 is a schematic duagram illustrating a barcode reader 1 and a barcode 3 according to an embodiment of the invention and FIG. 2 is a functional block diagram illustrating the barcode reader 1 shown in FIG. 1 .
As shown in FIG. 2 , the barcode reader 1 comprises an image capturing unit 10 and a processing unit 12 , wherein the processing unit 12 is electrically connected to the image capturing unit 10 . In practical applications, the image capturing unit 10 may be a charge-coupled device (CCD) sensor or a complementary metal-oxide semiconductor (CMOS) sensor; the processor 12 may be a processor or a controller with data processing function. In general, the barcode reader 1 may be further equipped with some necessary hardware or software components for specific purposes, such as a memory, a circuit board, a power supply, applications, a communication module, a lens, etc., and it depends on practical applications.
As shown in FIG. 1 , the barcode 3 is a PDF417 barcode, wherein the barcode 3 consists of 9 rows and each row comprises a start pattern, a left row indicator, a data region, a right row indicator and a stop pattern. Furthermore, the data region may be divided into 3 columns. The barcode reader 1 is used for reading and decoding the barcode 3 .
Referring to FIGS. 3 to 8 , FIG. 3 is a flowchart illustrating a barcode decoding method according to an embodiment of the invention, FIG. 4 is a schematic diagram illustrating a codeword matrix CM 1 and a statistic matrix SM 1 obtained by first decoding process, FIG. 5 is a schematic diagram illustrating a codeword matrix CM 2 and a statistic matrix SM 2 obtained by second decoding process, FIG. 6 is a schematic diagram illustrating a codeword matrix CM 3 and a statistic matrix SM 3 obtained by third decoding process, FIG. 7 is a schematic diagram illustrating a codeword matrix CM 4 and a statistic matrix SM 4 obtained by fourth decoding process, and FIG. 8 is a schematic diagram illustrating a codeword matrix CM 5 and a statistic matrix SM 5 obtained by fifth decoding process. The barcode decoding method shown in FIG. 3 can be implemented by the aforesaid barcode reader 1 .
As shown in FIGS. 4 to 8 , each position of the statistic matrices SM 1 -SM 5 comprises three numerals represented by x/y/z, wherein x represents a number of accumulated occurrence times of the codeword, y represents a number of continuous occurrence times of the codeword, and z represents a value of the codeword. For example, in row 1/column 2 of the statistic matrix SM 2 in FIG. 5 , the number of accumulated occurrence times and the number of continuous occurrence times of the codeword “453” both are 2 times; in row 3/column 1 of the statistic matrix SM 3 in FIG. 6 , the number of accumulated occurrence times and the number of continuous occurrence times of the codeword “94” are 2 times and 1 time, respectively.
When using the barcode reader 1 to read the barcode 3 , first of all, the image capturing unit 10 captures an image of the barcode (step S 10 ). Then, the processing unit 12 analyzes the image to recognize the data region of the barcode 3 (step S 12 ). When analyzing the image, the processing unit 12 performs a binarization algorithm for the image. Then, the processing unit detects the start pattern and the stop pattern of the barcode 3 to find out the position of the barcode 3 located in the image. Then, the processing unit 12 decodes the left row indicator and the right row indicator of the barcode 3 to obtain information including the number of rows, the number of columns, the error correction level, and so on of the barcode 3 . In this embodiment, the barcode 3 may consist of 9 rows and 3 columns and the error correction level may be 3.
After recognizing the data region of the barcode 3 , the processing unit 12 decodes the data region to obtain a codeword matrix (step S 14 ), wherein the codeword matrix comprises a plurality of codewords. As shown in FIG. 4 , the codeword matrix CM 1 obtained after first decoding process comprises 9*3 codewords. In this embodiment, the processing unit 12 further gathers statistics for the number of occurrence times of each codeword at an identical position of the codeword matrix CM 1 , so as to obtain the statistic matrix SM 1 , wherein the number of occurrence times of the codeword may comprise the number of accumulated occurrence times and the number of continuous occurrence times mentioned in the above.
Then, the processing unit 12 performs an error correction for the codeword matrix CM 1 (step S 16 ). The error correction for the PDF417 barcode may be implemented by Reed-Solomon error correction algorithm. It should be noted that the error correction for the PDF417 barcode is well known by one skilled in the art, so it will not be depicted in detail herein.
When the codeword matrix CM 1 passes the error correction, the processing unit 12 can decode the codeword matrix CM 1 (step S 18 ). In practical applications, the processing unit 12 may decode the codewords of the codeword matrix CM 1 by a look-up table, so as to obtain encoded content correspondingly. It should be noted that the method of decoding the PDF417 barcode is well known by one skilled in the art, so it will not be depicted in detail herein.
When the codeword matrix CM 1 fails to pass the error correction, it means that the decoding process fails. At this time, the barcode reader 1 has to repeat the aforesaid steps S 10 -S 14 (step S 20 ). Accordingly, when the codeword matrix CM 1 fails to pass the error correction, the image capturing unit 10 has to recapture the image of the barcode 3 . Then, the processing unit 12 analyzes the image and decodes the data region of the barcode 3 to obtain the codeword matrix CM 2 , as shown in FIG. 5 . Then, the processing unit 12 gathers statistics for the number of occurrence times of each codeword at the identical position of the codeword matrices CM 1 -CM 2 , so as to obtain the statistic matrix SM 2 , as shown in FIG. 5 .
›DETAILED DESCRIPTION · 2 of 3
Then, the processing unit 12 updates the codeword matrix CM 2 according to the number of occurrence times of each codeword at the identical position of the codeword matrix CM 2 and repeats step S 16 for the codeword matrix CM 2 ′ after updating (i.e. performing the error correction for the codeword matrix CM 2 ′ after updating). When the codeword matrix CM 2 ′ after updating passes the error correction, the processing unit 12 can decode the codeword matrix CM 2 ′ after updating (step S 18 ).
When the codeword matrix CM 2 ′ after updating fails to pass the error correction, it means that the decoding process fails. At this time, the invention has to repeat the aforesaid steps S 10 -S 14 to obtain the codeword matrix CM 3 and the statistic matrix SM 3 , as shown in FIG. 6 . Then, the invention updates the codeword matrix CM 3 and performs the error correction for the codeword matrix CM 3 ′ after updating.
When the codeword matrix CM 3 ′ after updating fails to pass the error correction, it means that the decoding process fails. At this time, the invention has to repeat the aforesaid steps S 10 -S 14 to obtain the codeword matrix CM 4 and the statistic matrix SM 4 , as shown in FIG. 7 . Then, the invention updates the codeword matrix CM 4 and performs the error correction for the codeword matrix CM 4 ′ after updating.
When the codeword matrix CM 4 ′ after updating fails to pass the error correction, it means that the decoding process fails. At this time, the invention has to repeat the aforesaid steps S 10 -S 14 to obtain the codeword matrix CM 5 and the statistic matrix SM 5 , as shown in FIG. 8 . Then, the invention updates the codeword matrix CM 5 and performs the error correction for the codeword matrix CM 5 ′ after updating.
In this embodiment, after fifth decoding process, the codeword matrix CM 5 ′ after updating can pass the error correction finally. In the prior art, the prior art performs the error correction for the codeword matrices CM 1 -CM 5 before updating. Since the codeword matrices CM 1 -CM 5 before updating cannot pass the error correction, the prior art has to repeat the decoding process more times to decode the barcode 3 successfully. However, the invention can decode the barcode 3 successfully after fifth decoding process, so the invention can enhance decoding efficiency effectively.
How to update the codeword matrix according to the number of occurrence times of each codeword at the identical position of the codeword matrix will be depicted in the following exemplarily.
In this embodiment, the processing unit 12 may select one codeword having more number of accumulated occurrence times or more number of continuous occurrence times from the codewords at the identical position of the codeword matrix to update the codeword matrix. For a plurality of codewords decoded from the identical position of the codeword matrix, the invention may select one codeword having more number of accumulated occurrence times to be a representative codeword because the codeword having more number of accumulated occurrence times may be correct codeword more probably in statistics. On the other hand, for a plurality of codewords decoded from the identical position of the codeword matrix, the invention may select one codeword having more number of continuous occurrence times to be a representative codeword. If a codeword having the same content has been decoded several times continuously during a period, it means that the captured image quality of the barcode may be more stable during the period. Therefore, the codeword having more number of continuous occurrence times may also be correct codeword. When a plurality of codewords having identical number of occurrence times exist at the identical position of the codeword matrix, the processing unit 12 may select one of the codewords having identical number of occurrence times according to a predetermined rule for each position to update the codeword matrix. The aforesaid predetermined rule may comprise an occurrence sequence of each codeword, a content property of each codeword, the accumulated occurrence times of each codeword, or the continuous occurrence times of each codeword.
When the aforesaid predetermined rule is the occurrence sequence of each codeword, the processing unit 12 may select one codeword occurring lately from the codewords having identical number of occurrence times at the identical position of the codeword matrix to update the codeword matrix. Needless to say, the processing unit 12 may select one codeword occurring most early from the codewords having identical number of occurrence times at the identical position of the codeword matrix to update the codeword matrix and it depends upon practical applications.
Furthermore, after the processing unit 12 decodes the data region, the content property of each codeword may comprise a non-confirmed property and a confirmed property. When the aforesaid predetermined rule is the content property of each codeword, the processing unit 12 may select one codeword having the confirmed property from the codewords having identical number of occurrence times at the identical position of the codeword matrix to update the codeword matrix. In practical applications, a codeword having the non-confirmed property may be set as “zero” and another codeword having the confirmed property may be set as “decoded non-zero value”. It should be noted that how the codewords having the non-confirmed property and the confirmed property work for the error correction is well known by one skilled in the art, so it will not be depicted in detail herein.
As the statistic matrix SM 2 shown in FIG. 5 , the codewords “11” and “0” in row 1/column 1 have identical number of occurrence times, the codeword “11” has the confirmed property, and the codeword “0” has the non-confirmed property. Accordingly, the processing unit 12 may select the codeword “11” to update the codeword in row 1/column 1 of the codeword matrix CM 2 . Furthermore, the codewords “178” and “51” in row 1/column 3 have identical number of occurrence times and the codewords “178” and “51” both have the confirmed property. Accordingly, the processing unit 12 may select the codeword “51” occurring lately to update the codeword in row 1/column 3 of the codeword matrix CM 2 . Needless to say, the processing unit 12 may select the codeword “178” occurring most early to update the codeword in row 1/column 3 of the codeword matrix CM 2 .
›DETAILED DESCRIPTION · 3 of 3
As the statistic matrix SM 3 shown in FIG. 6 , the number of accumulated occurrence times of the codeword “453” in row 1/column 2 is 2 times and the number of accumulated occurrence times of the codeword “76” in row 1/column 2 is 1 time. Accordingly, the processing unit 12 may select the codeword “453” to update the codeword in row 1/column 2 of the codeword matrix CM 3 .
As the statistic matrix SM 4 shown in FIG. 7 , the number of continuous occurrence times of the codeword “0” in row 7/column 1 is 3 times and the number of continuous occurrence times of the codeword “66” in row 7/column 1 is 1 time. However, since the codeword “66” has the confirmed property and the codeword “0” has the non-confirmed property, the processing unit 12 may select the codeword “66” to update the codeword in row 7/column 1 of the codeword matrix CM 4 .
It should be noted that the processing unit 12 may select one codeword having one of the more number of accumulated occurrence times and the more number of continuous occurrence times from the codewords at the identical position of the codeword matrix to update the codeword matrix. When a plurality of codewords having identical number of occurrence times exist at the identical position of the codeword matrix, the aforesaid predetermined rule may be to select another codeword having another one of the more number of accumulated occurrence times and the more number of continuous occurrence times from the codewords at the identical position of the codeword matrix to update the codeword matrix.
For example, the processing unit 12 may select the codeword having more number of accumulated occurrence times to update the codeword matrix first. If two codewords A and B having identical number of accumulated occurrence times exist in a specific row/column and the codeword A has more number of continuous occurrence times, the processing unit 12 may select the codeword A to update the codeword matrix.
For example, the processing unit 12 may select the codeword having more number of continuous occurrence times to update the codeword matrix first. If two codewords C and D having identical number of continuous occurrence times exist in a specific row/column and the codeword C has more number of accumulated occurrence times, the processing unit 12 may select the codeword C to update the codeword matrix.
It should be noted that the aforesaid embodiments of the predetermined rule can be combined randomly according to practical applications to update the codeword matrix.
In another embodiment, before performing the error correction for the codeword matrix after updating, the processing unit 12 may perform the error correction for the codeword matrix before updating first. As shown in FIG. 5 , before performing the error correction for the codeword matrix CM 2 ′ after updating, the processing unit 12 may perform the error correction for the codeword matrix CM 2 before updating first. When the codeword matrix CM 2 passes the error correction, the processing unit 12 can decode the codeword matrix CM 2 . When the codeword matrix CM 2 fails to pass the error correction, it means that the decoding process fails. Then, the processing unit 12 performs the error correction for the codeword matrix CM 2 ′ after updating.
In another embodiment, if the codeword matrix after updating still fails to pass the error correction, the processing unit 12 may perform the error correction for the codeword matrix before updating. As shown in FIG. 5 , if the codeword matrix CM 2 ′ after updating still fails to pass the error correction, the processing unit 12 may perform the error correction for the codeword matrix CM 2 before updating. When the codeword matrix CM 2 passes the error correction, the processing unit 12 can decode the codeword matrix CM 2 .
It should be noted that the control logic of the barcode decoding method of the invention can be implemented by software. Furthermore, each part or function of the control logic of the barcode decoding method of the invention may be implemented by software, hardware or the combination thereof.
As mentioned in the above, when the codeword matrix fails to pass the error correction, the invention updates the codeword matrix according to the number of occurrence times of each codeword at the identical position of the codeword matrix and performs the error correction for the codeword matrix after updating, so as to improve decoding success rate. In other words, the invention accumulates the number of occurrence times of each codeword at the identical position of the codeword matrix after decoding the data region every time and selects the codeword having more occurrence times from the codewords at the identical position of the codeword matrix to update the codeword matrix. Accordingly, the invention can enhance decoding efficiency effectively.
Those skilled in the art will readily observe that numerous modifications and alterations of the device and method may be made while retaining the teachings of the invention. Accordingly, the above disclosure should be construed as limited only by the metes and bounds of the appended claims.
Claims as granted
18 claimsLog in to read the claims of this application.
Log in to unlockClassifications
4 codes- G06K7/10
- G06K7/14
- H03M13/37
- H03M13/00
Claim changes
SoonSee which claims were amended, added or cancelled during examination, with every added and removed word marked.
The published claims of this application are not paired with the granted ones in what we hold.
File wrapper
See the full prosecution history — every USPTO and applicant action on this file, in order.
Log in to unlockDocuments
Log in to open the documents of this file: the application as filed, every office action and response, the notice of allowance.
Log in to unlockChain of title
See the full assignment history — every owner this patent has passed through, with recordation dates and reel/frame numbers.
Log in to unlock