|
|
|
| United States Patent | 4873426 |
| Link to this page | http://www.wikipatents.com/4873426.html |
| Inventor(s) | Sarna; David E. Y. (Teaneck, NJ);
Mailick; Daniel (New Rochelle, NY) |
| Abstract | A technique for reading a bar code representative of message information is
stored electronically in bit-map form. The bit map is obtained by
optically scanning a document carrying non-bar code information also to
convert pixel information into bit information. A row is identified in the
bit map which is the most likely one to pass through an area in the bit
map containing bar code information. The data stored in the bit map is
compared with assigned data corresponding to designated bar code
components. Once such a row is identified, processing of rows above and
below it in the bit map reveals whether rows more likely to agree with the
coded message information can be found. Initially, a fast processing mode
is selected involving processing of only a few rows to maximize processing
speed in case acceptable data can be found. If acceptable bar code data is
not found, then the processing is switched into a slow processing mode
which involves processing of a greater number of rows. Once a row likely
to contain the bar code data of interest is identified, the information it
contains is converted into signals which are used for converting the coded
bar code data into the message represented thereby. |
|
|
|
Title Information  |
|
|
|
|
|
|
| Publication Date |
October 10, 1989 |
|
|
|
|
|
| Filing Date |
August 3, 1988 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Title Information  |
|
|
References  |
|
|
| *references marked with an asterisk below are user-added references |
|
U.S. References |
|
|
|
|
|
|
U.S. References |
|
|
Foreign References |
|
|
|
|
|
|
Foreign References |
|
|
Other References |
|
|
|
|
|
|
Other References |
|
|
|
|
|
References  |
|
|
|
|
|
| Market Size |
|
Estimate the gross annual revenues of the relevant market
sector:
|
| | |
| |
|
|
| Market Share |
|
Estimate the percentage of the relevant market sector this invention will capture:
|
| | |
| |
|
|
| Reasonable Royalty |
|
What percentage of gross sales should the inventor or assignee be paid?
|
| | |
| |
|
|
|
Public's "Guesstimation" of Royalty Value
|
| Market Size | N/A | [No votes] | | x | Market Share | N/A | [No votes] | | x | Reasonable Royalty | N/A | [No votes] |
| | N/A | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
Market Review  |
|
|
Technical Review  |
|
|
Claims  |
|
|
We claim:
1. A bar code apparatus for processing digitized bar code data stored
electronically in bit map form and representative of a bar code having
parallel bar code components including alternating dark bars and blank
spaces carried on a light reflective surface, said bar code data being
obtained by scanning said surface in lines along a primary scanning
direction substantially perpendicular to the bar code components and at a
resolution of a predetermined number of pixels per unit length to generate
for a line of said pixels respective bar code signals having values
related to the amount of light reflected by said dark bars and blank
spaces, respectively, and scanning in a secondary scanning direction
substantially perpendicular to said primary scanning direction to traverse
a plurality of said scanning lines at a resolution of a predetermined
number of lines per unit length, said bit map being produced from said bar
code signals and having a plurality of bits arranged in rows, said rows
corresponding, respectively, to the scanning lines, and the bits in each
row corresponding to the pixels in a corresponding one of said scanning
lines, the bit map bits having a bit value related to the bar code signal
value of the corresponding pixels; said apparatus comprising:
memory means for storing assigned bar code component data related to a
number of bits allotted, respectively, in a row of said bit map to said
bar code components;
means for comparing the bit map with the stored bar code component data to
identify said bar code components in said bit map; and
conversion means for providing from said identified bar code components a
bar code reading result for converting the bar code to the message it
represents.
2. The bar code reading apparatus of claim 1, wherein the assigned bar code
component data includes a range of bits allotted to at least one of said
preselected bar code components for a dimension extending along said
primary scanning direction.
3. The bar code reading apparatus of claim 1, wherein the comparing means
comprises counting means for identifying sets of bits in a bit map row,
with each set consisting of a number of contiguous bits of the same value,
and means to count the number of contiguous bits in each set.
4. The bar code reading apparatus of claim 1, wherein the conversion means
comprises means for indicating whether all bar code components in the bar
code corresponding to the entire message information carried on the
surface have been identified.
5. The bar code reading apparatus of claim 1, wherein said bit map includes
rows with data corresponding to other than said selected message
information, said comparing means includes means for locating at least one
row in the bit map into which bar code component data corresponding to the
coded version of the selected message information has been stored.
6. The bar code reading apparatus of claim 5, wherein said row locating
means comprises means for counting a string of consecutive bar code
components identified by said comparing means for each of at least two
rows of the bit map, and selecting the row with the longest string.
7. The bar code reading apparatus of claim 6, wherein said row locating
means comprises means for designating said at least two rows of the bit
map based on a dimension of the bar code components in the secondary
scanning direction relative to the number of rows in the bit map.
8. The bar code reading apparatus of claim 7, where the designating means
follows the relationship N=N=MN/(BH-1), where N is the number of
designated rows, MN is the number of rows in the bit map, and BH is said
dimension of the bar code in the secondary direction, as expressed in
rows.
9. The bar code reading apparatus of claim 8, wherein the spacing between
the at least two designated rows is chosen based on the relationship
INT=MN/N, where INT is said spacing expressed in rows.
10. The bar code reading apparatus of claim 9, wherein the first row of the
at least two designated rows is chosen by the choosing means to be INT/2.
11. The bar code reading apparatus of claim 6 wherein said row locating
means comprises further means for designating additional rows in the bit
map vicinity of the selected row, and for determining whether any of the
additional designated rows includes a longer string than the longest
string found in said at least two designated rows and, if so, selecting
such additional row.
12. The bar code reading apparatus of claim 11, wherein said row locating
means includes confirming means for indicating whether all bar code
components corresponding to the entire message information in the bar code
carried on the surface have been identified.
13. The bar code reading apparatus of claim 12, wherein said further means
chooses an initial number A of additional designated rows and, if said
confirming means indicates a failure, it chooses a number B of additional
designated rows, with B>A.
14. The bar code reading apparatus of claim 13, wherein said additional
designated rows include at least one above and at least one below said
selected row.
15. The bar code reading apparatus of claim 6, wherein said conversion
means includes means for processing only bits stored in the longest string
of the selected row.
16. Apparatus for determining a bar code from a bit map obtained by a
plurality of optically scanned lines of a light reflective surface area,
at least part of which carries said bar code having components including
alternating dark bars and blank spaces representative of selected message
information, and scanned with a resolution of a predetermined number of
pixels per unit length to input data into said bit map related to light
reflected by respective pixels of said surface, said bit map having a
plurality of bits arranged in rows, said rows corresponding, respectively,
to the scanning lines, and the bits in each row corresponding to the
pixels in a corresponding one of said scanning lines, comprising:
means for storing assigned bar code component data related to a number of
bits allotted, respectively, in a row of said bit map to said bar
components;
means for designating at least two rows in said bit map;
means for comparing the at least two designated rows with said assigned bar
code component data to provide an identified bar code component signal;
means coupled to the comparing means for identifying the longest string of
consecutive bar code components for each of said designated rows;
means for selecting whichever of said designated rows has the longest
string of consecutive bar code components; and
means coupled to the selecting means for obtaining a bar code reading
result from the selected designated row for converting the bar code to
said selected message information.
17. The apparatus of claim 16, wherein the bar code has a given height in a
direction substantially perpendicular to said scanned lines of pixels and
said bit map having rows with data corresponding to other than said
selected message information, said designating means comprising means for
setting the location of, and spacing between, said at least two designated
rows to have at least one of such rows coincide with a row in the bit map
having data representing said bar code stored therein which corresponds to
the selected message information.
18. The bar code reading apparatus of claim 17, wherein the assigned bar
code component data includes a range of bits allotted to at least one of
said preselected bar code components for a dimension extending along said
scanning lines.
19. The bar code reading apparatus of claim 18, wherein the comparing means
comprises counting means for identifying sets of bits in a bit map row,
with each set consisting of a number of contiguous bits of the same value,
and means to count the number of contiguous bits in each set.
20. The bar code reading apparatus of claim 19, wherein said conversion
means comprises means to generate a match signal when coincidence is found
between the number of bits in a set and said assigned bar code component
data, and means for relating a particular match signal to a particular bar
code component to produce said identified bar code component signals.
21. The bar code reading apparatus of claim 16, wherein said row
designating means comprises means for designating said at least two rows
of the bit map based on the number of rows in the bit map relative to a
dimension of the bar code components in a direction perpendicular to the
scanning lines.
22. The bar code reading apparatus of claim 21, where the designating means
follows the relationship N=MN/(BH-1), where N is the number of designated
rows, MN is the number of rows in expressed in rows, in a direction
perpendicular to the scanning lines.
23. The bar code reading apparatus of claim 22, wherein the spacing between
the at least two designated rows is chosen based on the relationship
INT=MN/N, where INT is said spacing expressed in rows.
24. The bar code reading apparatus of claim 23, wherein the first row of
the at least two designated rows is chosen by the choosing means to be
INT/2.
25. The bar code reading apparatus of claim 24, wherein said row
designating means comprises further means for designating additional rows
in the bit map vicinity of the selected row, and for determining whether
any of the additional designated rows includes a longer string than the
longest string found in said at least two designated rows and, if so,
selecting such additional row.
26. The bar code reading apparatus of claim 25, wherein said row
designating means includes confirming means for indicating whether all bar
code components corresponding to the entire message information in the bar
code carried on the surface have been identified.
27. The bar code reading apparatus of claim 26, wherein said further means
chooses an initial number A of additional designated rows and, if said
confirming means indicates a failure, it chooses a number B of additional
designated rows, with B>A.
28. The bar code reading apparatus of claim 27, wherein said additional
designated rows include at least one above and at least one below said
selected row.
29. The apparatus of claim 16, further comprising means for retrieving from
the bit map at least one additional row in the vicinity of said selected
designated row; said comparing means, identifying means, and selecting
means providing a processed designated row indicative of whether the at
least one additional row includes a string of consecutive bar code
components longer than in said selected designated row.
30. The bar code reading apparatus of claim 16, wherein said conversion
means includes means for processing only bits stored in the longest string
of the selected row.
31. A bar code reading apparatus comprising:
means for optically detecting a bar code with which selected message
information has been converted into a coded version, said bar code having
parallel bar code components including alternating dark bars and blank
spaces carried on a light reflective surface, said detecting means
scanning said surface in lines along a primary scanning direction
substantially perpendicular to the bar code components and at a resolution
of a predetermined number of pixels per unit length to generate for a line
of said pixels respective bar code signals having values related to the
amount of light reflected by said dark bars and blank spaces,
respectively, said detecting means moving in a secondary scanning
direction substantially perpendicular to said primary scanning direction
to traverse a plurality of said scanning lines at a resolution of a
predetermined number of lines per unit length;
means coupled to the detecting means for producing from said bar code
signals a bit map having a plurality of bits arranged in rows, said rows
corresponding, respectively, to the scanning lines, and the bits in each
row corresponding to the pixels in a corresponding one of said scanning
lines, the bit map bits having a bit value related to the bar code signal
value of the respective corresponding pixels;
memory means for storing assigned bar code component data related to a
number of bits allotted, respectively, in a row of said bit map to said
bar code components;
means for comparing the bit map with the stored bar code component data to
identify said bar code components in said bit map; and
conversion means for providing from said identified bar code components a
bar code reading result for converting the bar code to said selected
message information.
32. The bar code reading apparatus of claim 31, wherein said detecting
means comprises an analog signal generating means for providing an output
signal having an amplitude related to the amount of light reflected by the
bar code components, and means for digitizing said output signal for each
of said pixels to be input to the bit map.
33. The bar code reading apparatus of claim 31, wherein said bit map
producing means comprises a memory having addressable memory locations
corresponding to bits in said bit map.
34. The bar code reading apparatus of claim 31, wherein the assigned bar
code component data includes a range of bits allotted to at least one of
said preselected bar code components for a dimension extending along said
primary scanning direction.
35. The bar code reading apparatus of claim 31, wherein the comparing means
comprises counting means for identifying sets of bits in a bit map row,
with each set consisting of a number of contiguous bits of the same value,
and means to count the number of contiguous bits in each set.
36. The bar code reading apparatus of claim 35, wherein said conversion
means comprises means to generate a match signal when coincidence is found
between the number of bits in a set and said assigned bar code component
data, and means for relating a particular match signal to a particular bar
code component to produce said identified bar code component signals.
37. The bar code reading apparatus of claim 31, wherein the conversion
means comprises means for indicating whether all bar code components in
the bar code corresponding to the entire message information carried on
the surface have been identified.
38. The bar code reading apparatus of claim 31, wherein the conversion
means includes validating means to confirm whether all the identified bar
code components in each processed row of the bit map correspond to a valid
bar code.
39. The bar code reading apparatus of claim 31, wherein said bit map
includes rows with data corresponding to other than said selected message
information, said comparing means includes means for locating at least one
row in the bit map into which bar code component data corresponding to the
coded version of the selected message information has been stored.
40. The bar code reading apparatus of claim 39, wherein said row locating
means comprises means for counting a string of consecutive bar code
components identified by said comparing means for each of at least two
rows of the bit map, and selecting the row with the longest string.
41. The bar code reading apparatus of claim 40, wherein said row locating
means comprises means for designating said at least two rows of the bit
map based on a dimension of the bar code components in the secondary
scanning direction relative to the number of rows in the bit map.
42. The bar code reading apparatus of claim 41, where the designating means
follows the relationship N=MN/(BH-1), where N is the number of designated
rows, MN is the number of rows in the bit map, and BH is said dimension of
the bar code in the secondary direction, as expressed in rows.
43. The bar code reading apparatus of claim 42, wherein the spacing between
the at least two designated rows is chosen based on the relationship
INT=MN/N, where INT is said spacing expressed in rows.
44. The bar code reading apparatus of claim 43, wherein the first row of
the at least two designated rows is chosen by the choosing means to be
INT/2.
45. The bar code reading apparatus of claim 40, wherein said row locating
means comprises further means for designating additional rows in the bit
map vicinity of the selected row, and for determining whether any of the
additional designated rows includes a longer string than the longest
string found in said at least two designated rows and, if so, selecting
such additional row.
46. The bar code reading apparatus of claim 45, wherein said row locating
means includes confirming means for indicating whether all bar code
components corresponding to the entire message information in the bar code
carried on the surface have been identified.
47. The bar code reading apparatus of claim 46, wherein said further means
chooses an initial number A of additional designated rows and, if said
confirming means indicates a failure, it chooses a number B of additional
designated rows, with B>A.
48. The bar code reading apparatus of claim 47, wherein said additional
designated rows include at least one above and at least one below said
selected row.
49. The bar code reading apparatus of claim 40, wherein said conversion
means includes means for processing only bits stored in the longest string
of the selected row.
50. A method for processing digitized bar code data stored electronically
in bit map form and representative of a bar code having parallel bar code
components including alternating dark bars and blank spaces carried on a
light reflective surface, said bar code data being obtained by scanning
said surface in lines along a primary scanning direction substantially
perpendicular to the bar code components and at a resolution of a
predetermined number of pixels per unit length to generate for a line of
said pixels respective bar code signals having values related to the
amount of light reflected by said dark bars and blank spaces,
respectively, and scanning in a secondary scanning direction substantially
perpendicular to said primary scanning direction to traverse a plurality
of said scanning lines at a resolution of a predetermined number of lines
per unit length, said bit map being produced from said bar code signals
and having a plurality of bits arranged in rows, said rows corresponding,
respectively, to the scanning lines, and the bits in each row
corresponding to the pixels in a corresponding one of said scanning lines,
the bit map bits having a bit value related to the bar code signal value
of the corresponding pixels; said method comprising the steps of:
storing assigned bar code component data related to a number of bits
allotted, respectively, in a row of said bit map to said bar code
components;
comparing the bit map with the stored bar code component data to identify
said bar code components in said bit map; and
providing from said identified bar code components a bar code reading
result for converting the bar code to the message it represents.
51. A method for determining a bar code from a bit map obtained by a
plurality of optically scanned lines of a light reflective surface area,
at least part of which carries said bar code having components including
alternating dark bars and blank spaces representative of selected message
information, and scanned with a resolution of a predetermined number of
pixels per unit length to input data into said bit map related to light
reflected by respective pixels of said surface, said bit map having a
plurality of bits arranged in rows, said rows corresponding, respectively,
to the scanning lines, and the bits in each row corresponding to the
pixels in a corresponding one of said scanning lines, comprising the steps
of:
storing assigned bar code component data related to a number of bits
allotted, respectively, in a row of said bit map to said bar components;
designating at least two rows in said bit map;
comparing the at least two designated rows with said assigned bar code
component data to provide an identified bar code component signal;
identifying the longest string of consecutive bar code components for each
of said designated rows;
selecting whichever of said designated rows has the longest string of
consecutive bar code components; and
obtaining a bar code reading result from the selected designated row for
converting the bar code to said selected message information.
52. A method for reading a bar code comprising the steps of:
optically detecting a bar code with which selected message information has
been converted into a coded version, said bar code having parallel bar
code components including alternating dark bars and blank spaces carried
on a light reflective surface, said surface being scanned in lines along a
primary scanning direction substantially perpendicular to the bar code
components and at a resolution of a predetermined number of pixels per
unit length to generate for a line of said pixels respective bar code
signals having values related to the amount of light reflected by said
dark bars and blank spaces, respectively, said scanning also moving in a
secondary scanning direction substantially perpendicular to said primary
scanning direction to traverse a plurality of said scanning lines at a
resolution of a predetermined number of lines per unit length;
producing from said bar code signals a bit map having a plurality of bits
arranged in rows, said rows corresponding, respectively, to the scanning
lines, and the bits in each row corresponding to the pixels in a
corresponding one of said scanning lines, the bit map bits having a bit
value related to the bar code signal value of the respective corresponding
pixels;
storing assigned bar code component data related to a number of bits
allotted, respectively, in a row of said bit map to said bar code
components;
comparing the bit map with the stored bar code component data to identify
said bar code components in said bit map; and
providing from said identified bar code components a bar code reading
result for converting the bar code to said selected message information. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
FIELD OF THE INVENTION
This invention is directed to a technique for reading bar codes to
determine the alphanumeric information represented thereby and, in
particular, for identifying bar code data included along with other data
in a bit map, and for processing the bar code data in the bit map to
produce the corresponding alphanumeric information.
Bar codes have come into ever increasing usage in recent years for a
growing number of diverse applications. Such a code corresponds closely to
computer machine language and, therefore, readily lends itself to computer
data processing. A bar code symbol includes a plurality of rectangular
components such as alternating dark and light bars arranged into a pattern
which represents letters, numerals, and perhaps other human-readable
symbols. The entire symbol can represent one character or a plurality of
characters, as needed. Various types of bar codes, each with its own
specific rules and patterns, are available. Each of these types is capable
of symbolizing a plurality of different characters.
Typically, the dark bars are printed onto a light-reflective surface such
as paper, with the light bars simply being the spaces between a pair of
dark bars. The encoded message in the bar code symbol can be based on such
variables of its components as the number of dark bars, the relative
positions of the dark bars within the bar code, the variable width of the
dark bars, the variable width of the light bars, and the relative
positions of the light bars within the bar code.
Known techniques for reading bar codes utilize a device that emits a narrow
beam of light, and which is passed over the entire bar code to sense the
amount of light reflected by each of the bar code components. Such a
device is typically a wand manipulated manually or a laser beam operated
automatically. The spatially organized bar code pattern is converted from
space domain to time domain by the swept light beam. An algorithm
recognizes transitions between high and low outputs corresponding to the
degree of light reflected by the bar code components, and determines the
relative times at which such transitions occur. The resulting pulse width
pattern is processed by comparing the width of the obtained pulses
relative to each other in order to read the bar code. The sweep velocity
is immaterial (within limits), as long as it is constant, because ratios
rather than absolute values of the pulse widths are used. The HANDBOOK OF
BAR CODING SYSTEMS by Harry E. Burke available from Van Nostrand Reinhold
Co. and the publication titled "American National Standard for Materials
Handling - Bar Code Symbols on Unit Loads and Transport Packages"
available from the American National Standards Institute ("ANSI") as
document MH10.8M-1983 provide more detailed information on types of bar
codes, how they are utilized, and the related print and read technologies.
In more recent times, various applications have been found which require
scanning a document carrying alphanumeric characters in the form, for
example, of text, some of which may be typed and some of which may be
handwritten. Some examples of such documents are completed insurance
forms, voter registration cards, and postal routing slips. Such documents
include standard, typewritten text, handwritten information, and a
signature. Modern optical scanning technology and associated equipment has
made it possible to scan such documents with a satisfactory degree of
resolution, and to store the resulting signals in memory in the form of a
bit map, for example, for later retrieval and use. As is well known, a bit
map is an array of rows and columns of addressable memory locations
corresponding, respectively, to an image defined by an array of picture
elements ("pixels"). Data represented by at least one binary digit ("bit")
in the bit map represents a parameter characteristic of a respective
pixel.
It is desirable to utilize bar codes on documents of interest for any one
of a number of reasons to, for example, facilitate their identification,
classification, processing, utilization, storage, interpretation, and
retrieval with minimal human intervention. In order to enable high speed
unattended scanning, either an optical character reader ("OCR") or a bar
code reading apparatus is needed. A bar code is preferable to the use of a
human readable character scanned with an OCR to convey information to a
computer with a bit-map-based approach because of the relatively shorter
processing time required for a bar code.
When a bar code symbol is included within a document containing other
information, the problem is how to, firstly, distinguish and locate the
particular bits in the bit map which correspond to the bar code, and
secondly, to then read the thus located bar code symbol from data in the
bit map. These problems are exacerbated by the fact that a document may
become tilted, or skewed, somewhat within the scanning equipment relative
to the scanning direction. Therefore, the bar code which is detected
depends on the scanning line, or corresponding bit map row, which is used.
FIG. 1A depicts surface 3 with an exemplary bar code symbol 2 printed on
it. Bar code symbol 2 is tilted at an angle A to scanning direction 4
which is the direction swept by the scanning light beam, as explained
above. Each of scanning lines 6-11 is composed of pixels. The number of
pixels in a scanning line depends on the resolution of the apparatus used.
Due to the tilt of the bar code, the corresponding bit map rows will
include none or only a portion of the bar code, e.g., rows 6 and 7,
respectively. Consequently, the bar code reading technique must ensure
that an appropriate row or rows of the bit map are processed, such as row
10, in order to provide an accurately decoded message. This problem is, of
course, not encountered by prior art techniques that have as a basic
presumption that the entire bar code is scanned and which do not begin
with a bit-mapped image, particularly one that includes information other
than the bar code.
SUMMARY OF THE INVENTION
It is a primary object of the present invention to provide a bar code
reading technique which can identify the location of a bar code symbol
within a bit map.
It is another object of the present invention to provide a bar code reading
technique which can read a bar code symbol available in the form of a bit
map.
Another object of the present invention is to provide a bar code reading
technique with increased flexibility.
Yet another object of the present invention is to provide a bar code
reading technique that can read a bar code symbol stored in bit map form
quickly, accurately and reliably.
Still another object of the present invention is to provide a bar code
reading technique that can be utilized with a variety of different bar
code types.
These and other objects of the present invention are attained in accordance
with one aspect of the present invention by a bar code apparatus for
processing digitized bar code data stored electronically in bit map form
and representative of a bar code having parallel bar code components
including alternating dark bars and blank spaces carried on a light
reflective surface. The bar code data is obtained by scanning the surface
in lines along a primary scanning direction substantially perpendicular to
the bar code components and at a resolution of a predetermined number of
pixels per unit length to generate for a line of the pixels respective bar
code signals having values related to the amount of light reflected by the
dark bars and blank spaces, respectively. Scanning also takes place in a
secondary scanning direction substantially perpendicular to the primary
scanning direction to traverse a plurality of the scanning lines at a
resolution of a predetermined number of lines per unit length. The bit map
is produced from the bar code signals to have a plurality of bits arranged
in rows. These rows correspond, respectively, to the scanning lines, and
the bits in each row correspond to the pixels in a corresponding one of
the scanning lines. The bit map bits have a bit value related to the bar
code signal value of the corresponding pixels. A memory means stores
assigned bar code component data related to a number of bits allotted,
respectively, in a row of the bit map to the bar code components. A
comparison means compares the bit map with the stored bar code component
data to identify the bar code components in the bit map. A conversion
means provides from the identified bar code components a bar code reading
result for converting the bar code to the message it represents.
Another aspect of the present invention is directed to apparatus for
determining a bar code from a bit map obtained by a plurality of optically
scanned lines of a light reflective surface area. At least part of the
surface area carries the bar code having components including alternating
dark bars and blank spaces representative of selected message information.
The surface are is scanned with a resolution of a predetermined number of
pixels per unit length to input data into the bit map related to light
reflected by respective pixels of the surface. The bit map has a plurality
of bits arranged in rows, the rows corresponding, respectively, to the
scanning lines, and the bits in each row corresponding to the pixels in a
corresponding one of the scanning lines. A means is provided for storing
assigned bar code component data related to a number of bits allotted,
respectively, in a row of the bit map to the bar components. At least two
rows in thed bit map are designated for processing. The at least two
designated rows are compared with the assigned bar code component data to
provide an identified bar code component signal. The longest string of
consecutive bar code components is identified for each of the designated
rows. Whichever of the designated rows has the longest string of
consecutive bar code components is selected for obtaining therefrom a bar
code reading result for converting the bar code to the selected message
information.
Yet another aspect of the present invention is directed to a bar code
reading apparatus comprising means for optically detecting a bar code with
which selected message information has been converted into a coded
version, such bar code having parallel bar code components including
alternating dark bars and blank spaces carried on a light reflective
surface. The detecting means scans the surface in lines along a primary
scanning direction substantially perpendicular to the bar code components
and at a resolution of a predetermined number of pixels per unit length to
generate for a line of such pixels respective bar code signals having
values related to the amount of light reflected by the dark bars and blank
spaces, respectively. The detecting means moves in a secondary scanning
direction substantially perpendicular to the primary scanning direction to
traverse a plurality of the scanning lines at a resolution of a
predetermined number of lines per unit length. A means is coupled to the
detecting means for producing from the bar code signals a bit map having a
plurality of bits arranged in rows, such rows corresponding, respectively,
to the scanning lines, and the bits in each row corresponding to the
pixels in a corresponding one of the scanning lines. The bit map bits have
a bit value related to the bar code signal value of the respective
corresponding pixels. A memory means is provided for storing assigned bar
code component data related to a number of bits allotted, respectively, in
a row of the bit map to the bar code components. A means is provided for
comparing the bit map with the stored bar code component data to identify
the bar code components in the bit map. The, the identified bar code
components are used to generate a bar code reading result for converting
the bar code to the selected message information.
Still another aspect of the invention is directed to a method for
processing digitized bar code data stored electronically in bit map form
and representative of a bar code having parallel bar code components
including alternating dark bars and blank spaces carried on a light
reflective surface. The bar code data is obtained by scanning the surface
in lines along a primary scanning direction substantially perpendicular to
the bar code components and at a resolution of a predetermined number of
pixels per unit length to generate for a line of the pixels respective bar
code signals having values related to the amount of light reflected by the
dark bars and blank spaces, respectively, and also scanning in a secondary
scanning direction substantially perpendicular to the primary scanning
direction to traverse a plurality of scanning lines at a resolution of a
predetermined number of lines per unit length. The bit map is produced
from the bar code signals and has a plurality of bits arranged in rows,
such rows corresponding, respectively, to the scanning lines, and the bits
in each row corresponding to the pixels in a corresponding one of the
scanning lines. The bit map bits have a bit value related to the bar code
signal value of the corresponding pixels. Assigned bar code component data
is stored which is related to a number of bits allotted, respectively, in
a row of the bit map to the bar code components. The bit map is compared
with the stored bar code component data to identify the bar code
components in the bit map. A bar code reading result is provided from the
identified bar code components for converting the bar code to the message
it represents.
One other aspect of the present invention is directed to a method for
determining a bar code from a bit map obtained by a plurality of optically
scanned lines of a light reflective surface area, at least part of which
carries the bar code having components including alternating dark bars and
blank spaces representative of selected message information. The surface
is scanned with a resolution of a predetermined number of pixels per unit
length to input data into the bit map related to light reflected by
respective pixels of the surface, such bit map having a plurality of bits
arranged in rows, such rows corresponding, respectively, to the scanning
lines, and the bits in each row corresponding to the pixels in a
corresponding one of the scanning lines. Assigned bar code component data
is stored which is related to a number of bits allotted, respectively, in
a row of the bit map to the bar components. At least two rows are
designated in the bit map for further processing. Then, the at least two
designated rows are comoared with the assigned bar code component data to
provide an identified bar code component signal. The longest string of
consecutive bar code components for each of said designated rows is
identified. Whichever of the designated rows has the longest string of
consecutive bar code components is selected. Then, a bar code reading
result is obtained from the selected designated row for converting the bar
code to the selected message information.
A still further aspect of the present invention is directed to a method for
reading a bar code comprising the steps of optically detecting a bar code
with which selected message information has been converted into a coded
version, such bar code having parallel bar code components including
alternating dark bars and blank spaces carried on a light reflective
surface. The surface is scanned in lines along a primary scanning
direction substantially perpendicular to the bar code components and at a
resolution of a predetermined number of pixels per unit length to generate
for a line of the pixels respective bar code signals having values related
to the amount of light reflected by the dark bars and blank spaces,
respectively. Scanning is also performed in a secondary scanning direction
substantially perpendicular to the primary scanning direction to traverse
a plurality of scanning lines at a resolution of a predetermined number of
lines per unit length. A bit map is produced from the bar code signals
having a plurality of bits arranged in rows, such rows corresponding,
respectively, to the scanning lines, and the bits in each row
corresponding to the pixels in a corresponding one of the scanning lines.
The bit map bits have a bit value related to the bar code signal value of
the respective corresponding pixels. Assigned bar code component data is
stored which is related to a number of bits allotted, respectively, in a
row of the bit map to the bar code components. The bit map is compared
with the stored bar code component data to identify the bar code
components in the bit map. A bar code reading result is provided from the
identified bar code components for converting the bar code to the selected
message information.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1A shows a bar code tilted at an angle relative to a scanning
direction.
FIG. 1B is a block diagram of a system for scanning, interpreting and
storing bar codes.
FIG. 2 is a flow diagram of the general steps utilized to perform the
technique of the present invention.
FIG. 3 is a flow diagram which explains in more detail the technique of
locating the bar code data in a bit map.
FIG. 4 is a flow diagram which shows in detail the technique of processing
a particular row of the bit map to convert it into a seriew of sets, with
each set consisting of contiguous bits of the same binary value.
FIG. 5 is a flow diagram which shows in detail the technique of utilizing
the information obtained for each row with the process described in FIG. 4
to determine the longest string of WIDE and NARROW bars, and where it
begins.
FIG. 6 is a flow diagram describing a subroutine used in the process of
FIG. 5 to count the number of bars in a string of consecutive bars.
FIG. 7 is a flow diagram which shows in detail the technique of reading a
bar code stored within a bit map.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
FIG. 1B shows in block diagram form a system capable of implementing the
bar code reading technique of the present invention. More specifically,
optical scanning apparatus 20 provides a scanned image of a surface upon
which the bar code is printed. The surface is typically a light-reflective
surface such as white paper. Scanning apparatus 20 can take the form of,
for example, a laser scanner, a facsimile device, or a CCD camera.
Whichever of these device is utilized, it has a resolution of a
preselected number of pixels per unit length, such 200 pixels per inch,
along a primary scanning direction (such as 4 in FIG. 1A) with which the
bar code can be scanned from its beginning portion 21 to its end portion
22 (see FIG. 1A). The resolution also depends on the number of scanning
lines per unit length along a secondary scanning direction 5 (see FIG.
1A). Resolutions along the primary and secondary scanning directions need
not be the same, although normally they are. Apparatus for performing this
function is conventional and well known in the art. Accordingly, it is
deemed unnecessary to provide further details about it.
As the image on the surface is scanned, a reading is obtained for each
pixel in a scanning line. The reading provides a signal corresponding to
the amount of reflected light which is detected from that pixel. A
resulting analog signal is obtained for the scanning line the amplitude of
which varies in response to the amount of detected light per pixel. The
amount of reflected light is affected not only by the printed bar code,
but also by printing imperfections, paper surface imperfections, dust and
dirt.
The analog signals output by optical scanning apparatus 20 are converted
into binary information by analog-to-digital ("A/D" hereinafter) converter
24. Consequently, a stream of 0's and 1's represent the detected light for
the pixels in each scanning line on the scanned surface. A/D converter 24
is also a conventional unit, and no further details about it are deemed
necessary.
The digitized information from A/D converter 24 is input to digital image
retention unit 26. Unit 26 is typically a memory such as a RAM within a
digital computer. A bit map is retained in unit 26 and logically arranged
in bit rows corresponding, respectively, to the above-mentioned scan
lines. At least one bit in a row of the bit map corresponds to a pixel in
a scan line. (For the ensuing discussion, a 1:1 correspondence between the
two is assumed). Each row of the bit map corresponds to a scan line. Each
bit is stored in an addressable memory location and is, thus, retrievable,
or readable, therefrom under program control.
Data compression unit 28 is a conventional device which reduces the amount
of data obtained from A/D converter 24, without compromising data
integrity, so that less memory capacity is required to store the scanned
image in a storage unit 30. Storage unit 30 can include, for example, a
magnetic tape, magnetic disc, or optical devices such as an optical worm.
Both units 28 and 30 are of a conventional and well known type, so that no
further information about it is deemed necessary.
Decompression unit 32 receives the data stored in storage unit 30 and
converts it into its original digitized form for input to unit 26. Unit 32
is also a conventional apparatus about which further details are not
required.
So far, the described system is one which is well known for scanning
documents and storing the resulting information. The departure of the
present invention from this prior art technique lies in its capability
for, in particular, processing retained bit map information representing a
bar code symbol which is printed within the scanned document. The retained
bit map is generated with signals obtained from A/D converter 24 or
decompression unit 32.
The retained bit map is input to bar code recognition unit 34. In the
preferred embodiment, unit 34 comprises a programmable digital computer
which is controlled in accordance with the flow diagrams shown in FIGS.
2-6 described in detail below. It is the task of unit 34 to extract from
the bit map an accurate reconstruction of the bar code symbol, and to
provide an output from which the information represented by the bar code
symbol can be obtained. The details of how this is done follow immediately
below.
The flow diagram in FIG. 2 shows the overall steps utilized to implement
the technique of the present invention. Details of some of the steps are
provided in the remaining Figures. When the bar code reading operation is
begun, an initialization procedure is followed per step 40 to input values
of various parameters which include:
Type of bar code
Maximum width of WIDE bar.
Maximum width of NARROW bar.
Minimum width of WIDE bar.
Minimum width of NARROW bar.
Number of bit map columns corresponding to width of scanned area.
Number of bit map rows corresponding to height of scanned area.
Number of bit map rows corresponding to height of bar code.
Number of bit map rows to be processed in SLOW mode.
The "type of bar code" is specified because at least some of the
initialization values differ depending on the nature of the bar code. For
example, the range allowed for the width of WIDE and NARROW bars depends
on the type of bar code used. This range, incidentally, can be found on
page 9 of the ANSI publication for the "3 of 9" bar code and on page 11
for the CODABAR bar code. The dimensions of the bit map area to be
analyzed with the technique of this invention are advantageously provided
because the scanned document is likely to include a substantial amount of
information other than the bar code. If a bit map corresponding to the
entire scanned document were to be analyzed in order to identify the
location in which the bar code is stored in the bit map, this would
obviously produce a slower bar code reading. Consequently, whenever
possible, it is preferable to limit the area of the bit map within which
this technique will search for the bar code. The smaller this area is set
to be, the commensurately faster will be the bar code reading obtained
because less data needs to be processed. The starting point of the area to
be scanned, namely the bit corresponding to the upper, left-hand pixel can
be specified along with the number of columns and rows to locate the bit
map area to be analyzed, or a pre-processing step can simply clip the area
of interest from the entire bit map and pass only the resulting bit map
for processing by the present invention.
The preferred embodiment of the present invention is provided with a FAST
mode and a SLOW mode. The former provides results relatively quickly and
is, therefore, used first in case it can produce a satisfactory output. If
the FAST mode fails to provide a good bar code reading, then the SLOW mode
is tried. Further details on this are provided below. At this point, it
suffices to say that in step 42 the FAST mode is set to b | | |