United States Patent |
4,939,354
|
Priddy
,   et al.
|
July 3, 1990
|
Dynamically variable machine readable binary code and method for reading
and producing thereof
Abstract
A machine readable binary code which is dynamically variable in size,
format and density of information is provided. The binary code is formed
as a matrix having a perimeter and data contained therein. The perimeter
is provided with density indicia for indicating the density of data
contained within the matrix. The perimeter is also provided with size
indicia for indicating the size of the matrix. By utilizing the density
indicia and size indicia, a scanning device is able to calculate the size
and information density of the binary code.
Inventors:
|
Priddy; Dennis G. (Safety Harbor, FL);
Cymbalski; Robert S. (Clearwater, FL)
|
Assignee:
|
Datacode International, Inc. (Safety Harbor, FL)
|
Appl. No.:
|
190205 |
Filed:
|
May 5, 1988 |
Current U.S. Class: |
235/456; 235/436; 235/437; 235/494; D18/26 |
Intern'l Class: |
G06K 007/10 |
Field of Search: |
235/436,437,456,494
|
References Cited [Referenced By]
U.S. Patent Documents
3632995 | Jan., 1972 | Wilson | 235/494.
|
3763467 | Oct., 1973 | Cash et al.
| |
4113993 | Sep., 1978 | Heckman et al.
| |
4263504 | Apr., 1981 | Thomas | 235/494.
|
4430563 | Feb., 1984 | Harrington.
| |
4439672 | Mar., 1984 | Salaman.
| |
4695991 | Sep., 1987 | Hudson.
| |
4734565 | Mar., 1988 | Pierce et al.
| |
4814589 | Mar., 1989 | Storch.
| |
4874936 | Oct., 1989 | Chandler et al.
| |
Other References
Gruidel, Honomichl, Lujan "Variable Grid Detection", IBM Technical
Disclosure Bulletin, vol. 25, No. 33, Aug. 1982.
|
Primary Examiner: Trafton; David L.
Attorney, Agent or Firm: Kaplan; Blum
Claims
What is claimed is:
1. A method for determining the size and density of a dynamically variable
machine optically readable binary code forming a matrix having a perimeter
having a first side and a second side, the first side and second side each
being formed of a solid line of equal lengths and intersecting at a first
corner and a third side of the perimeter and a fourth side of the
perimeter, each being formed of an identical broken line pattern formed of
alternating dark areas and light areas, the third side and the fourth side
intersecting at a second corner corresponding to the density of data
contained within the matrix comprising the steps of:
scanning the binary code with an optical scanner to convert the matrix and
the surrounding area of the matrix to a sequence of electronic impulses,
wherein the binary code and visual code are located in a visual field;
converting the signal of electronic impulses into a series of electronic
data bits corresponding to the scanned image;
forming a bit mapped image of the matrix;
locating and determining the length of the first and second sides of the
perimeter; and
determining the product of the number of light areas and dark areas of the
third side and the number of light areas and dark areas of the fourth
side.
2. The method for determining the size and density of a binary code of
claim 1, further comprising the step of locating the corner of the
intersecting first line and second line and determining the orientation of
the matrix.
3. The method for determining the size and density of a binary code of
claim 1, wherein the matrix contains a key visual cell and further
comprising the steps of reading the key visual cell and decoding the
pattern of the data contained in the matrix.
4. The method for determining the size and density of a binary code as
claimed in claim 3 wherein the data contained within the matrix is formed
of light areas and dark areas and further comprising the step of decoding
the data contained within the matrix.
5. The method for determining the size and density of a binary code as
claimed in claim 1, further comprising the step of differentiating the
binary code from other images within the visual field.
6. A method for producing a dynamically variable machine optically readable
binary code forming a matrix having a perimeter for indicating the density
of the data contained within the matrix and the size of the matrix
comprising the steps of:
converting the data to be contained within the code into binary form;
determining the number of visual cells required to represent the binary
coded information within the matrix;
determining the size of the matrix to be formed;
forming a first side of the matrix perimeter as a solid dark line and a
second side of the matrix perimeter as a solid dark line intersecting at a
first corner said length being determined from the length of lines
required to represent the area of the matrix;
calculating the square root of the number of visual cells required to
represent the data contained within the binary code rounded up to a whole
number;
producing a third side of the matrix perimeter formed of a broken line
pattern formed of alternating dark areas and light areas so that the total
number of dark areas and light areas in the third side is equal to the
rounded up square root of the number of visual cells to be contained
within the matrix;
producing a fourth side of the matrix perimeter formed of a broken line
pattern identical to the third side; said fourth side intersecting the
third side at a second corner; the first side, second side, third side and
fourth side forming the perimeter of the matrix; and
producing the binary code as a visual cell pattern within the perimeter of
the matrix.
7. The method for producing a binary code of claim 6, further comprising
the steps of calculating the maximum number of possible variations
necessary to display the data within the matrix and determining the
minimum number of visual cells required to produce that number of
variations.
8. The method for producing the binary code of claim 7 further comprising;
forming the visual cells within the perimeter of the binary code in a
predetermined pattern.
9. The method for producing a binary code of claim 6 further comprising;
positioning redundant visual cells within the perimeter of the matrix
about a root visual cell.
10. The method for producing a binary code of claim 6 further comprising
the step of forming a distribution key containing information for decoding
the predetermined pattern.
Description
BACKGROUND OF THE INVENTION
This invention relates to a binary code which is optically readable by a
machine, and in particular, to a binary code which allows for dynamic
variability.
Optically readable codes are known in the art. One such code is formed as a
"checker board" symbol that represents information in the form of black
and white squares. Each square contained within the checker board matrix
is of equal size to every other square. Furthermore, the number and size
of the squares contained within the matrix is predetermined, accordingly
the computer receiving or producing the data expects a specific number of
squares contained within the matrix each being of a preset size. This code
has not been satisfactory. The code is unable to dynamically expand or
contract data capacity to meet changing user requirements without the
intervention of re-programming the software of the scanning computer.
Accordingly, the user of the code must identify the data requirement prior
to implantation of the software system. Additionally, since each square
must be of the exact same size and the number of squares is predetermined,
the scanning computer must be preset for the expected matrix size thereby
limiting the user to a single sized checker board code for each scanner.
This necessitates a plurality of code scanners and a system for separating
each different sized, different density code and forwarding it to the
appropriate scanner.
Codes which overcome these shortcomings by providing indicia associated
with the code for informing the computer as to the size of the code are
known in the art. One example of such a code is U.S. Pat. No. 3,763,467
which discloses the optical reading of data set up in box fashion upon a
card. The card is marked at its periphery with two field defining marks
located at the front and trailing edges of the box indicating the size of
the field containing binary code decimal data stored within the box. The
first row of data within the box, forming the perimeter edge, contains
format information identifying which of the columns within the box is to
be read. This code has also been less than satisfactory in that it suffers
from density and size problems. Even though the size of the field is
variable the actual size of the characters within the field is not,
accordingly a smaller field size results in smaller amounts of stored
information. Furthermore, the size indicia being read must be in a
particular location in order to be received and understood by the scanning
equipment.
Accordingly, it is desirable to provide a dynamically variable machine
optically readable binary code and method for reading and producing
thereof which overcomes the shortcomings of the prior art devices
described above.
SUMMARY OF THE INVENTION
Generally speaking, in accordance with the invention, an optically readable
binary code which is dynamically variable in size, format and density of
information is provided. The code is formed of a matrix containing data
having a first side and a second side each being formed of identical
broken line patterns of alternating darkened and lightened areas. The
first side and second side intersect at a first corner. The product of the
number of lightened areas and darkened areas of the first side and the
number of lightened areas and darkened areas of the second side
corresponds to the amount of information contained within the code. A
third side and a fourth side are each formed as a solid line of equal
darkness intersecting at a second corner. The solid lines correspond to
the length, height and area of the code.
The information contained within the code perimeter may appear once or a
number of times providing redundancy in the recorded information. The
information may also be stored in a plurality of patterns within the
matrix.
The code is read by an optical scanner and by measuring the solid black
lines the physical size of the matrix is determined. By scanning the
broken line pattern of the other perimeter sides, the amount of
information contained within the matrix may be determined. The computer
may then independently determine both size and density of the matrix being
scanned.
Accordingly, it is an object of this invention to provide an improved
optically readable binary code.
Another object of this invention is to provide an optically readable binary
code which allows a scanning computer to independently recognize,
understand and act upon the encoded information regardless of the actual
physical size or volume of data contained within the symbol.
A further object of this invention is to provide an optically readable
binary code which may be read and processed regardless of the angle
orientation of the symbol to the scanner.
Yet another object of this invention is to provide an optically readable
binary code which may dynamically encode large quantities of information
in any physical size.
Still another object of this invention is to provide an optically readable
binary code which enables the computer to independently recognize and
decode the information contained within the code regardless of the
physical size, data density, or angle of rotation of the code relative to
the reader.
Yet another object of this invention is to provide an optically readable
binary code which allows the density of the code matrix to be dynamically
determined and computer generated without requiring user involvement.
Yet another object of the present invention is to provide an optically
readable binary code and method for processing thereof which gives the
user absolute control over a selection of a physical size of the code as
well as the volume of the data which is encoded therein.
Still other objects and advantages of the invention will in part be obvious
and will in part be apparent from the specification and drawings.
The invention accordingly comprises the several steps in their relation of
one or more such steps with respect to each of the others and the article
possessing features, properties and relation of elements, which are
exemplified in the following detailed disclosure, and the scope of the
invention will be indicated in the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
For a fuller understanding of the invention, reference is had to the
following description, taken in connection with the accompanying drawings,
in which:
FIGS. 1a and 1b depict two binary codes in accordance with the invention;
of different sizes, but containing the same information;
FIGS. 2a-2d illustrate the arrangement of data within the perimeter of the
binary code in accordance with the invention;
FIGS. 3a-3d illustrate the redundant formation of visual cells within the
matrix in accordance with the invention;
FIG. 4 is a block diagram of an apparatus for processing and scanning the
code in accordance with the invention; and
FIG. 5 is a flowchart depicting the process for reading the binary code.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
Reference is made to FIG. 1a, wherein a binary code, generally indicated as
a matrix 10, constructed in accordance with the invention is presented.
Binary code matrix 10 has a perimeter 11 formed by intersecting sides 12
formed of solid lines and intersecting perimiter sides 14 formed of dark
perimeter squares 16 and light perimeter squares 18 in an alternating
pattern. Data, generally indicated as 19, is stored within perimeter 11 of
matrix 10.
Data 19 is stored within the perimeter of matrix 10 by converting each
character to be stored into a visual binary code represented by dark and
light squares corresponding to ones and zeros of binary information.
Accordingly, a letter or number represented by the binary code 0001 may be
represented by a string of data cells, each cell containing either a dark
square or light square. Accordingly, the data representing 0001 would
appear as a series of three light data cells and one dark data cell. For
example, the numbers 0 through 9 are stored within matrix 10 as a pattern
of light cells 20 and dark cells 22.
Binary representation of the one hundred twenty-eight (128) US-ASCII
letters, numbers and symbols requires eight binary bits, or in the case of
matrix 10, eight visual squares or cells to represent a character.
However, by defining the maximum range of characters that may appear at
each position of the input string, it is possible to suppress those binary
bits which contain information redundant and common to the entire range of
characters thereby compressing the required number of visual squares to
represent a single character to less than eight. In one embodiment, in
which only the letters A through D are anticipated to appear in the first
position of an input string, only two visual squares are required to
reflect the four possible binary bit configurations. Where the presence of
dark cell is indicated by "D" and the light cell is indicated by "L," the
letter A would be represented as LD. The letter B would be represented as
DL, the letter C as DD and the letter D as LL, all represented by using
only two cells of visual binary information. Similarly, if in a second
character position of the input string it is known that only numeric
values from 0 through 9 will appear, only four visual cells need be
reserved to accommodate the ten possible binary variations for forming
this character. Accordingly, in the above embodiment, a total of six
visual squares or cells need be reserved to reflect the two characters of
encoded information rather than the sixteen cells of the US-ASCII system.
The size of the square and the number of cells contained within the
perimeter of the square are determined from the code perimeter 11. Solid
lines 12 indicate the physical size of matrix 10.
For ease of explanation a square matrix 10 having equal sides 12 is
presented. However any parallagram, such as a rectangle, having an area
computable by length and height may be used.
Side 14 indicates the density or number of cells 20, 22 contained within
matrix 10. The number of alternating squares 16, 18 beginning with first
light square 18 adjacent each perimeter line 12, corresponds to the square
root of the number of visual cells 20, 22 contained within the perimeter
of matrix 10 rounded up to the nearest number. In this example the square
adjacent perimeter line 12 is a light square 18, however, in a matrix
having a different number of cells 20, 22 contained therein side 14 may
begin with a dark square 16 to obtain an appropriate value for the number
of alternating squares 16, 18.
In an exemplary embodiment, the numerals 0 through 9 are encoded within
matrix 10 utilizing thirty-six visual cells 20, 22 and being encased in a
matrix 10 having a perimeter side 14 containing six alternating dark
squares 16 and light squares 18. By providing a perimeter which indicates
the matrix size as well as the number of visual cells contained within
matrix 10 and in binary form, a binary code matrix 10 is provided which,
as will be discussed below, is recognizable and identifiable by a scanning
computer regardless of physical size or information density.
By comparison, a matrix 10A depicted in FIG. 1b contains the same
information in the same format as matrix 10 and has a perimeter 11a but at
a smaller scale having smaller perimeter sides 12a and 14a. Accordingly,
physical size of the code may be unlimited. By providing a format for
indicating to the scanning computer the size and density of the matrix in
machine readable form, machine readability of a variety of different size
and information density binary codes by a single optical scanner computer
system is possible. In exemplary embodiments, the physical size may range
from one-tenth of an inch square to seven inches square, but is limited
only by the ability of the user's print device to create the selected
size.
Reference is now also made to FIGS. 2a through 2d in which the arrangement
of visual cells 22 within matrix 10 is depicted, like elements from FIG.
1a being assigned like reference numerals. A character may be represented
by dark visual cells 22a, 22b, 22c, 22d and 22e. Visual cells 22a through
22e may be situated in a variety of patterns within matrix 10. Visual
cells 22 may be in serial order in one corner of matrix 10 (FIG. 2a),
visual cells 22 may be scattered about in each corner of matrix 10 (FIG.
2b), visual cells 22 may be in reverse serial order in a corner of matrix
10 (FIG. 2c) or they may be randomly distributed within matrix 10 (FIG.
2d). Each matrix 10 may be keyed to a specific visual cell placement
depending upon the needs of each specific user. This enables a user to
have patterns which are readable by either all users of a binary code, or
only by specific users of the binary code, as for example, in top secret
verification facilities. A key 23 for determining which pattern is used,
is encoded in visual cells contained within perimeter 11 of matrix 10 at a
known reference position within matrix 10. For example, key visual cell 23
may be a certain distance from the intersection of solid lines 12.
Additionally, a mixture of both public and secret patterns may be present
within the same structure to enable the general public to read part of
what is contained within the matrix 10 and only certain sections of the
public to read what is contained within the rest of matrix 10. In a
preferred embodiment, there are 256 pattern variations for situating
visual cells 22, 23 within matrix 10.
Data 19 may also be stored more than once providing the redundancy in the
information as encoded within matrix 10. Varying levels of redundancy may
be provided by selectively increasing the number of visual cells A, B, C,
D corresponding to visual cells 20, 22 which are utilized to represent a
particular character. At least a three bit differential between bit
patterns of respective characters of data is utilized so that if a single
visual cell 20 or 22 is obliterated there is still a two bit difference
between the bit cell composition representing respective desired
characters. The unique bit combination so generated also provides the
greatest differentiation between represented characters. Therefore,
redundancy is provided by expanding the number of data bit cells and
corresponding visual cells to represent a particular character. The
redundancy may range from a factor of no redundancy to 400% redundancy.
Furthermore, as illustrated in FIGS. 3a-3d the redundancy need not be in
the same pattern as the root cells. Visual cells A, B, C, D are positioned
within matrix 10 a plurality of times. The root cell, shown by the darker
letters, may be replicated in a mirror image (FIGS. 3a, 3b, 3c) or in a
random pattern (FIG. 3d) as long as identical visual cells such as A, A
are not adjacent each other. Accordingly, through redundancy the code is
not lost if a portion of the matrix is destroyed or deformed during normal
transit or use.
Matrix 10 may be read by the apparatus of FIG. 4. The visual image of
matrix 10, along with it's surrounding area, is captured by an optical
scanner 24 which converts the visual image into a series of electronic
impulses. Scanner 24 may be a light sensitive electronic array, optical
CCD camera, linear array scanner, laser reader adapted for two dimensional
scanning or the like.
The electronic impulses produced by scanner 24 are transmitted to a
digitizer 26 which converts these electronic impulses into a series of
computer recognizable binary data bits corresponding to the scanned image.
Each visual cell is assigned a binary numeric value based upon the
strength of light sensed by optical scanner 24. Visual cells which are
absolute black and absolute white are assigned the highest and lowest
values respectively, while shades in between are assigned incremental
values forming an electronic image of the scanned matrix 10. This image is
transmitted to a central processing unit of a computer 28 ("CPU") which
stores a bit mapped image of matrix 10 and a part of its surrounding area
as a reference within its memory.
Matrix 10 is not always scanned in a readily discernable orientation
relative to scanner 24. Accordingly, CPU 28 conducts a binary search to
locate the encoded pattern and determine the orientation of matrix 10 as
stored in CPU 28. The uniqueness of perimeter 11 of matrix 10 affords a
reference point. Each matrix 10 contains two solid dark sides 12. CPU 28
searches for either solid dark side 12 and upon finding it searches for
the intersection of the dark sides 12. By locating the corner at which
sides 12 intersect, CPU 28 identifies the specific location of matrix 10
regardless of size or orientation within the scanned visual field. CPU 28
then measures the length of each solid black line 12 stored within its
memory and the angle at which lines 12 intersect. CPU 28 then calculates
where the opposite corner of matrix 10 is located. By utilizing the length
and angle of intersection of sides 12, matrix 10 is always recognizable
even though it may have been subjected to substantial linear deformation
during the digitizing process as long as the binary image remains a
parallelogram. Additionally, the uniqueness of perimeter 11 allows CPU 28
to differentiate matrix 10 from other symbols or images within the scan
field.
Reference is now made to FIG. 5 in which a flowchart for reading and
decoding matrix 10 is provided. Once the four corners of matrix 10 have
been identified, CPU 28 counts the alternating dark and light squares 16,
18 of perimeter sides 14 in accordance with a step 100. As sides 14 are of
an identical construction, one side 14 is used as a check against the
second side 14 to validate the information contained therein in step 102.
In step 104, CPU 28 calculates the product of the number of squares
contained in each side 14 and determines the density of cells contained
within matrix 10. By calculating the angle of the matrix, the matrix size
and the matrix density, CPU 28 can calculate the position of each visual
cell 20, 22 relative to the intersecting lines 12 in accordance with a
step 106. Thus, the center of each visual cell 20, 22 can be determined.
CPU 28 now knows the physical size of the pattern to be decoded, the total
number of visual cells or their electronic equivalent stored as data 19
and the location of the center of each visual cell 20, 22 in relation to
the four corners of matrix 10. Since physical size and cell density of
matrix 10 are calculated values rather than predefined, CPU 28 may
recognize and decode a matrix 10 of any physical size or density.
The pattern of data 19 is decoded by first identifying the pattern
distribution key in accordance with step 108. The distribution key will
always be stored as a number of visual cells located at a specific
position relative to the corners of matrix 10. Accordingly, in step 110,
once the orientation of matrix 10 is determined by CPU 28, CPU 28
retrieves from its bit mapped image of matrix 10 the electronic equivalent
of the visually encoded key cells. Upon decoding of these key cells, as in
step 112, CPU 28 is informed which of the 256 cell distribution patterns
was employed to encode data 19 within matrix 10. In accordance with step
114 once the distribution pattern is determined, CPU 28 will reunite the
appropriate cells to re-form the binary character strings corresponding to
the binary character strings originally input for encoding.
To generate matrix 10, CPU 28 must reverse the process and first convert
the 0, 1 binary language of the computer to the dark/light visual cells
20, 22 of matrix 10. CPU 28 calculates the maximum number of character
variations expected at each position of the input string and then
determines the minimum number of visual cells required to encode that
number of variations. The compression process varies depending on the type
of input character anticipated. For instance, if it is known that only
numerics will appear at a given input location, the eight bit binary
numbers can be compressed to 3.32 visual cells; if all alphabetic
characters are anticipated, an eight bit binary letter can be compressed
to 4.75 visual cells; or, if the input character could be either
alphabetic or numeric the compression algorithms reduce each input
character from eight binary bits to 5.21 visual cells.
Further, the system may make use of the available "partial" cells. For
example, the first alphanumeric character will require six visual cells
(smallest integer .gtoreq.5.21) while the second alphanumeric character
will require only five (10.42 cells-6 for the first character=4.42 rounded
to 5). This allows for the enhanced binary compression as described above
and thereby further reduces the necessary density of matrix 10. If it were
known as in FIG. 1a, that the ten characters to be input were to be all
numeric (0 through 9), CPU 28 would determine through use of the
compression algorithm that the number of potential binary variations could
be accommodated by thirty-four (34) visual cells rather than eighty (80)
visual cells as would be otherwise supposed.
The user then inputs into CPU 28 the type of visual cell distribution
within matrix 10 desired. The amount of desired redundancy is then input
into CPU 28 ranging from no redundancy to as high as 400% repetition of
the pattern. CPU 28 analyzes the pattern of the root visual cell to be
encoded and positions the redundant data cells farthest from the root cell
to achieve the highest probability of survival of at least one cell in the
event of destruction of a part of matrix 10 (FIGS. 3a, 3b, 3c, 3d). The
number of visual cells required for the encoded data is then computed and
added to the number of visual cells required as distribution key cells to
determine the density of matrix 10. The square root of this total is then
determined to establish the number of squares required to form sides 14 of
perimeter 11 of matrix 10. Finally, the user desired physical size of
matrix 10 is input to determine the length of sides 12 of matrix 10. Upon
calculation of all these values, CPU 28 causes a printer 30 to produce the
newly generated matrix 10.
By providing a machine readable two dimensional binary code having a
perimeter which indicates the physical size of the code on two of its
sides and the density of the encoded material on two of its sides, a data
code which is dynamically variable as to size and density of information
contained therein is provided.
It will thus be seen that the objects set forth above, among those made
apparent from the preceding description, are additionally attained and,
since certain changes may be made in carrying out the above process and in
the construction set forth without departing from the spirit and scope of
the invention, it is intended that all matter contained in the above
description and shown in the accompanying drawings shall be interpreted as
illustrative and not in a limiting sense.
It is also to be understood that the following claims are intended to cover
all of the generic and specific features of the invention herein described
and all statements of the scope of the invention which, is a matter of
language, might be said to fall therebetween.
* * * * *