IE960903L - Polygonal information encoding article, process and system - Google Patents

Polygonal information encoding article, process and system

Info

Publication number
IE960903L
IE960903L IE960903A IE960903A IE960903L IE 960903 L IE960903 L IE 960903L IE 960903 A IE960903 A IE 960903A IE 960903 A IE960903 A IE 960903A IE 960903 L IE960903 L IE 960903L
Authority
IE
Ireland
Prior art keywords
label
hexagons
polygons
tha
information
Prior art date
Application number
IE960903A
Other versions
IE80888B1 (en
Inventor
Donald Gordon Chandler
Eric Paul Batterman
Govind Shah
Original Assignee
Roche Products Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US07/178,600 external-priority patent/US4874936A/en
Priority claimed from US07/330,111 external-priority patent/US4896029A/en
Application filed by Roche Products Ltd filed Critical Roche Products Ltd
Publication of IE960903L publication Critical patent/IE960903L/en
Publication of IE80888B1 publication Critical patent/IE80888B1/en

Links

Description

80888 POLYGONAL XMFORBl&TION ENCODING ABTICLE This invention relates to an optically readable article storing encoded information comprising a multiplicity of information-encoded polygons having the same shape and more than » / s six sides, said polygons having one of at least two different optical properties. The optically readable article may be in the * form of a label attached to or printed on a substrate.
Merchandise, various component parts, letters, packages containers and a whole gamut of related items being shipped or 10 transported, frequently are required to be identified with information as to origin, flight number, destination, name, price, part number and numerous other kinds of information. In other applications, reading encoded information printed on labels affixed to such items permits automation of sales figures and 15 inventory or the operation of electronic cash registers. Other applications for such encoded labels include the automated routing and sorting of mail, parcels, baggage, and the like, and the placing of labels bearing manufacturing instructions on raw materials or component parts in a manufacturing process. Labels 20 for these types of articles are conventionally marked with, bar codes, one of which is the Universal Product Code. Numerous other bar code systems are also known, in the art.
Commercially-available bar code systems typically lack sufficient data density to accommodate the present and increasing 25 need to encode more and more information on labels of increasingly smaller sise. Attempts to reduce the overall sisse and spacing of bars in various bar code systems to increase data 1 (a Vt 80888 density have not solved, the problem; optical scanners having sufficient resolution to detect bar codes comprising contrasting bars spaced five rails or less apart are generally not economically feasible to manufacture because of the close tolerances inherent in the label printing process and the sophisticated optical apparatus required to resolve bit-encoded bars of these dimensions. Alternatively, to accommodate increased amounts of data, very large bar code labels must b Alternatives to bar codes include? circular formats employing radially disposed wedge-shaped coded elements, such as in U.S. Patent 3,553,438, or concentric black and white bit-encoded rings, such as in U.S. Patents, Nos„ 3,971,917 and 3,916,160; grids of rows and colusms of data-encoded squares or; rectangles, such as in U.S. Patent No. 4,286,145; microscopic spots disposed in cells farming a regularly spaced grid, as in U.S. Patent Ho. 4,S34,S3G; and densely packed multicolored data fields of dots or elements, such as described in U.S. Patent No. 4,488,679. Soms of the coding systems described in the foregoing examples and other coding systesg known in the art primarily suffer from deficiencies in' data density, such ass in the case of encoded circular patterns and grids of rectangular or square boxes. Alternatively, in the case of the grids comprised of microscopic spots or multicolored elements referred to above, such systems require special orientation and transport means, thus limiting their utility to highly controlled reading environments. 2 GB-A-1 216 539 describes articles having coded information applied thereto, and also methods of manufacturing such articles, and methods of storing and/or recovering data by use of such articles, the articles being in particular merchandising coupons. 5 The coupon has printed on it, for optical machine reading, at least two rows of black and white areas„ One row is a timing row and has alternate black and white areas indicating successive information positions. The or each other row is an information row and has a succession of black and/or white areas aligned with the timing row 10 positions and encoding information. Each black or white area in the timing row indicates one bit in the or each information row. A square array of information tracks may be provided having a timing row along a top edge and a row indicator column of alternate black and fcrhite squares along one side edge, GB-A-1 216 539 also 15 proposes, instead of the black squares, diamonds, ovals, concave sided quadrilaterals, and X-shapes. Reading is effected using transmitted or reflected light incident on any type of photocell or photosensitive device, and may involve the use of buffer storage for holding the data from the coupon for subsequent recognition, 20 validation, or feeding to a computer.
US-A-3 959 613 describes a different type of code which uses dark vredge-shaped code elements on a white background, data being encoded by having a wedge-shaped element that points to the right representing a binary X, and. a wedge-shaped element that points to 25 the left representing a binary 0. Consequently, decoding a label using this known code requires the direction in which each wedge-shaped element decreases in thickness to be determined. The optical properties of all the Madge-shaped elements are the sasas and are not used in the encoding and decoding.
Em® to tha sise and. speed o£ sodesra, eonveyos" systsssss, (utilizing conveyor belt widtiis of 3 to 4 feet, for example) and having belt, speeds approacliing 100 inches per second or more, carrying packages' of varying heights on which, iiu; otnn&tier. encoded labels are affixed, and the need to utilise a. small, inexpensive, 3 compact label of about one square inch, great strains are placed on the optical and decoding systems required to locate and read the data encoded labels or. these rapidly moving packages and the like. There are difficulties in the optical scanner simply S acquiring the label image. Furthermore, once acquired or identified, the labal image must be accurately decoded before the next operation on the package in the conveyor system takes place, often in a fraction of a second. These problems have led to the need .for providing a simple, rapid and low-cost means of signal-10 ing the presence of a data-encoded label within the field of view of an optical scanner mounted is a manner to permit scanning the entire conveyor belt. This feature desirably is coupled with a high density data array, described in snore detail below.
Data arrays containing acquisition targets are known in 15 the art; for example, concentric geometric figures, including rings, squares, triangles, hexagons and numerous variations thereof, such as described in U.S. Patents Nos. 3,513,320 and 3,503,728. U.S. Patents Nos. 3,693,154 and 3,801,775 also describe the use of symbols comprising concentric circles as iden-20 tification and position indicators, which symbols are affixed to artiel ass to he optically scanned. However, these systems employ two separate symbols to determine ths identification of the data field sad its position, thereby increasing the complexity of the logic circuitry required to detect the symbols, as well as reduc-25 ing the data-carrying capacity of the- associated data field.
Also, when two symbols are used, damage to one causes problems in locating the position of the data field and the attendant ability to rocover information from the data field. In the latter system, separate position and orientation markings are utilised at opposite 30 sndn of data tracks having data-encoded linear markings of only limited data carrying capability.
The foregoing systems are generally scanned with an optical sensor capable of generating a video signal output corresponding to the change in intensity of light reflected off the 35 data array and position and orientation symbols. Xhe video out™ 4 put of such systems, after it is digitised., has a particular bit pattern which can be matched to a predetermined bit sequence.
These systems, however, suffer the drawback of requiring two separate symbol® for first ascertaining the image and secondly S determining its orientation. Also, the process of having -so match the digitised signal output of the optical sensor with a predetermined bit sequence representing both the position and orientation symbols, is more likely to produce erroneous readings that the process and system of this invention, because the prior art 10 .label acquisition systems provide an inflexible characterization of the acquisition target signal level.
U.S. Patent Mo(. 3,S53,438 discloses a circular data array having a centrally-located -acquisition target comprising a series of concentric circles. She acquisition target provides a 15 meana of acquiring the circular label by the optical sensor and determining its geometric center *md thereby the geometric center of the circular data array. This is done through logic circuitry operating to recognize the pulse pattern representative of the bulla-eye configuration o£ the acquisition target. However, .as 20 for bar code-a, the data array ha© only a limited data capacity and the system requires a second circular scanning process. Use of both a linear and circular sczin for a system of . such limited data capacity creates undesirable complexity in the system for a slight gain la data -capacity over conventional bar codes. 2S To increase tha data carrying capacity of data arrays, codas employing multiple high density colored dots have bean developed, aa described in U.S. Patent Mo. 4,488,679. Systems of the type described in U.S. Patent Ho. 4,408,579, hoaevssf, require til® use of hand-held optical scanners, which are totally incapable 30 of recording and dacoding rapidly moving data arrays oa a package being transported on a high-jsroesd conveyor belt. Analogously, high density coding systems employing gaicrascapic data-encoded spots, as described in U.S.' Patent No. 4,634,850, require special transport means, thereby ensuring that the data array is smrsd in 35 a specific direction, rather than simply at a random orientation, 6> as might be found with a package being transported on a conveyor belt or the like. Thus, the coded label must be read track by track, utilizing a linear scanner coupled with label transport means to properly decode the information encoded on the label. 5 Also, in this patent, the position of the card in relation to the sensor must be very carefully controlled to be readable.
Multiple colours have also been utilized in the art of producing bar code systems so as to overcome the optical problems of scanning very minute bars. A bar code utilizing more than two 10 optical properties to encode data in a data array, by for instance, use of alternating black, grey and white bars, is described in U.S. Patent No. 4,443,694. However, systems of the type described, although am improvement over earlier bar code systems, nevertheless fail to achieve the compactness and data 15 density of the invention described herein.
According to the invention, an optically readable article of the kind defined hereinbefore at the beginning is characterised in that the said polygons are arranged with the geometric centres of adjacent polygons lying at the vertices of a 20 predetermined two-dimensional grid, and in that each polygon is substantially in the shape of a hexagon.
Preferred embodiments of the invention provide: compact, high-information-density, optically-readable labels; optically readable labels which may be encoded with about 100 highly error-protected alphanumeric characters per square inch of label area; compact high-information-density, optically-readable labels which may be read by an optical sensor when the label is 30 affixed to a package or other like article being transported on a high speed conveyor system, without regard to the orientation of the package thereon or the variability of the heights of said packages upon which the optically-readable label is affixed.
An optical mark sensing and decoding apparatus for reading 6 such an optically readable article storing encoded information preferably has: (a) means for illuminating a predetermined area; (b) means for optically imaging said predetermined 5 illuminated area through which said article is arranged to pass and generating analog electrical signals corresponding to the intensities of light reflected from said polygons to said imaging means; (c) means for converting said analog electrical signals into a sequenced digital bit stream corresponding to the intensities of light recorded by said imaging means; (d) means for storing said digital bit stream for subsequent decoding of said article; and (e) means for decoding said digital bit stream, said 15 decoding means producing an electrical output representative of the encoded information.
In a preferred embodiment of the invention, a label is capable of being reliably decoded even if tilted, curled, warped, partially obliterated or partially com. in using preferred embodiments of this invention, the location of a label passing under an optical sensor at high speed and decoding said label may be determined with a high degree of data integrity; compact, high-information-density, optically-readable 25 labels may be encoded by dividing the information to be encoded into higher and lower priority messages, to create a hierarchy of messages, which are separately error protected to ensure the integrity of the encoded information; compact, high density, optically-readable labels may be 30 encoded and deeoded by methods which include error correction capabilities, so so as to restore misread or missing information and to do so ?«ith a preference to the high priority encoded message; optically-readable labels may be produced by conventional ? printing means and decoded, with relatively inexpensive logic circuitry.
A preferred embodiment of the present invention comprises an optically-readable label storing data encoded in bit form, the 5 label having the multiplicity of information-encoded polygons arranged contiguously, partially contiguously or noncontiguously and having at least two different optical properties. 8 Optically readable labels of the invention may comprise predetermined two-dimensional georaetric arrays of polygons _ where •the geometric ceaters of such, polygons lie at the vertices of the intersecting axes as more fully discussed below of a predetermined 5 two-dimensional array and where the polygons have one of at least two different optical properties. The polygons of such optically readable labels may be regular or irregular polygons and the two-dimensional arrays of polygons on the optically readable labels may have two or mora equally- or unequally-angularly spaced axe's 10 in the plane of the label.
Optically readable labels may be printed with configurations of polygons which are totally contiguous, partially contiguous or noncontiguous. She latter two configurations inherently define a multiplicity of interstitial spactes on the IS optically readable label 'between adjacent polygons. Such interstitial spaces may have the same* or different optical properties as the two or snore optical properties, of' the polygons.
In addition to the foregoing varieties of geometric polygonal cells, arrangewenta of such, polygonal cells,' and gcom-20 etri«3 of the optically readable labels forsed by such arrangements of polygonal cells, the optically readahl© labels of the invention ssuay optionally contsin an acquisition target comprising a series of concentric rings to aid in the locating of the optically readable labels on the articles upon which they are 25 affixed, particularly in dynamic label reading systems.
In Irish Patent iJo. 075212 (corresponding to European Patent No. 0 3 3S 76 9) from which the present application was split as a divisional application, there is described a data array which comprises & generally square-shaped array of about one square inch, 30 having contiguously-arranged hexagons forming rows 9 and columns and a centrally-located acquisition target having a geometrie center which defines the geometric center of the data array. The acquisition target asay be any of a susaber of geometric shapes having optical properties capable of generating an S easily recognisable, video signal when scanned with an optical * sensor across a linear scan line passing through the geometric center of the acquisition target. The 1 acquisition target is a plurality of concentric rings of contrast- lag reflectivities, which will yield a periodic video signal when 10 scanned linearly. By using analog filter means as part of the method of locating and decoding the data array, the -signal generated by the optical, sensor is compared directly' with a pre-determined frequency, thereby allowing rapid and precise matching of the frequencies and consequent determination of the location 15 of the data array affixed to a substrate. The analog electrical signal output from 'die optical sensor representing the information-encoded label is then digitized and decoded. Utilising aa .analog bandpass filtering step permits label acquisition to occur without the need for decoding the information—encoded label. By locating 20 the center of the acquisition target a reference point on the data array ®ay be determined. If the" center of the acquisition target is located at the center of the label, a ssisaultaneoua determination of the center of -the acquisition target and the data array may be accomplished. A central location of the acquisition 25 target on the label is preferred, but not required, in the practice of the subject invention.
Xhe optically-readable data array of European patent bio. 0 336 769 is capable of encoding 100 or up to several hundred or mors error protected alphanumeric characters in an area of about on® 30 square iach when hexagons are •sncadad utilising threes reflective properties, such ass the colors black, white and gray. For a sensor with a given optical resolution, the array permits a s&ueh denser 'information packing capability than is possible with bar code systems. For example, if a high resolution 3S optical sensor is used, hundreds of alphanumeric characters snay be encoded in a square inch. Alternatively, 100 characters par square inch may easily ba defected with a relatively low resolution sensor with the system of EP-A-0 336 769.
Optically-readable labels of the said European patent siay be produced with varying data densities by utilizing as few as ■two or snore contrasting optical properties. Greater data densities and the inclusion of an acquisition target in the system of this invention require a scanning apparatus of increasing com-10 plexity and the addition of snore elaborate decoding algorithms to read the encoded message; when compared with a bar code reading system.
Data encoding may be accomplished by encoding a plurality of bits from a binary hit streaa into a IS cluster of contiguous hexr.gons, each hexagon having one of at least two optical propertiesalthough the encoding could alternatively be done on a hexagon-by-hexagon basis. The digital bit stream n&y b® generated by a computer, based upon data entered manually or othervis«s converted into a binary bit stream, or snay to.® provided as a prerecorded digital bit stream. The data to be / encoded is bit-mapped in a predetermined s«iqu&nca and within pre-determined geographical areas of the data array to increase the .nvuaher of .transitions betw«sen hexagons having different optical properties.
The messages to be encoded are. divided into high and low priority messages, which are separately sssappad in different geographic areas of the data array. She high priority message may optionally be duplicated is the low priority message area to reduce the 30 possibility q£ losing the high priority message due to scanning errors caused tov sssudges, tears,, fold® and other types o£ damage to the data array. The high priority message; is encoded in a central area of the data array, near the acquisition target contained in the preferred embodiment, ia order to protect the sues-35 sag® frosa damages which is ssiore likely to occur to the peripheral I 1 areas of the data array. Error correction capabilities are desirably incorporated in the data array, utilising the large information-carrying capacity of the present invention, to ensure a vary high degr&s of data integrity upon dacoding the message.
A pixel grid of sufficient density to print the label with hexagons of different optical properties is utilized, although alternative printing processes may be used.
The pixel grid is hit-remapped mo that, when the label is printed, th® optical properties of each hexagon are predetermined, so that they May later be decoded to recover the data designated by the encoding of the individual hexagons. This type o£ printing process is well known in. the art and standard printers and bit mapping techniques may be used to print hexagons having tha optical properties required.
To retrieve the data encoded in the bit-mapped array of hexagons, forming.the data array., encoded labels may be passed through n predetermined illuminated area and optically scanned by means of >an electronically operated optical sensor or a hand-held scanner ssay be passed over the labels. The* optical sensor produces an output which is an analog electrical signal corresponding to the intensity of the individual reflective property of an. area of a label, as recorded by the individual pixels of the optical sensor. By means of an .analog filter, the analog signal o£ the optical seaaor As first coiaparsd to a predetermined frequency value corresponding to that of a predetermined acquisition target if it is present on the data array. Once a good match is found, the label is acquired and the center e£ the acquisition target is determined, thereby also determining a refer* ence point on the data array. The analog signal is simultaneously digitized on a continuous basis by means of an analog-to-digital converter nz%& stored in an 'image buffer. The stored digitised data representing the entire label is available for further processing in the decoding process. 1 2 By stored program logic circuits, the digital data is transformed into a map of the interfaces of hexagons having different optical properties. In a preferred process, this is done by computing the standard deviation of the intensities of the 5 reflective properties recorded by the optical sensor at each pixel and a predetermined group of pixels surrounding that first pixel. High standard deviations therefore correspond to transition areas at the interfaces of contrasting hexagons.
Further data transformations, involving filtering programs 10 to determine orientation, direction and spacing of the hexagons, are performed on the digital data. The general steps of this process are: (1) Filtering the non-linear transformed version of the digitized image. (2) Determining the orientation of the label, preferably by locating the three axes of the image (as illustrated in Fig. 2) and determining which axis is parallel to two sides of the label. (3) Finding the center of each hexagon and determining the gray level at each center. (4) Transforming the gray levels to a bit stream. (5) Optionally, applying error correction to that bit stream; and (S) Optionally, converting the bit stream to a predetermined set of characters -25 The process of EP-0 33S 763 described as applied to hexagons having two or more optical properties, in particular, the steps for adjusting the optical image for label warp, tear and the like, is applied to other types of polygonal cells used in embodiments of the present 30 invention.
I 3 The invention fe-ill now be described by way of example *?ith reference co the accompanying drawings, in which:- Figures 1 to 12 relate to the technology of EP-A-0 336 769 as used in the present invention.
FIG. 1 is a plan view of an acquisition target of concentric rings. FIG. 2 is a fragmented plan view of an optiea.lly~rsadahle label having contiguously-arranged hexagons for encoding data .
FIG. 3 is si plan view of a complete optically-readable label having contiguously-arranged hexagons of three optical properties IS £or encoding binary data and including an acquisition target, •FIG. 4 is a plan view of a three cell by three cell cluster of contiguous hexagons, which snay serve as the basic encoding unit.
FIG. S is a cluster map showing a graphic representation of a data array comprising 33 rows and 30 columns, forming a grid of 11 rows and 10 coluians of three cell x three" cell cluster coding-units of h&xagoas.
FIG. 6 is a acheaaatic view of a camera adjusting system in accordance with the invention for adjusting the position of the optical light sensor in accordance with the haight of package being sensed.
FIG. 7 is a detailed outline of the decoding process.
FIC. a is a flow chart showing the acquisition target location process. 1 4 FIG. 9' is a flow chart showing "the encoding and decoding program structure and data flow.
FIG. 10 is a flov/ chart showing the sequence erf image processing steps.
S FIG-. 11 is a plan view of a cluster of contiguous regular hexagons arranged with the geometric centers of adjacent hexagons lying at the vertices of a regular hexagonal array.
FIG. 12 is a plan view of a cluster of contiguous irregular hexagons arranged with the geometric centers., of adjacent hexagons I lying at the vertices of an irregular hexagonal array.
FIG. 13 is a plan view-of a cluster of partially contiguous ooly- 1S go as substantially in the form of hesagona arranged with the geometric centers of adjacent polygons lying at the vertices of a hex&gonal array.
FIC. 14 is a plan view of a cluster-of contiguous polygons sub- stantially in the form of hexagons arranged with the geometric I centers of adjacent polygons lying at the vertices of a hexagonal .array.
FIG. 15 ia a plan view of an optically readable label having con- tiguous polygons substantially in the form of hexagons arranged with, the geometric centers of adjacent polygons lying at the vertices of a hexagonal array and including an acquisition target* 1 5 Embodiments of the present invention will be described hereinafter in relation to European Patent No. 0 336 769 % which utilizes actual hexagons as the polygons of substantially hexagonal shape. A hexagon encoded label will 5 therefore be described first.
DETAILED DESCRIPTTOW OF THE TINVENTION THE LABEL The ability to encode information by virtue of the con- trasting colors of contiguous hexagons or "calls" arranged in a honeycomb pattern in a predetermined sequence and array permits the information stored an tha label "to be recovered by an electro*" optical sensor. Polygonal cells, other than hexagons, that are 8 arranged with the geometric centers of adjacent polygons lying at; the vertices of a hexagonal or other predetermined array, may likewise ba used to encode information on an optically readable label. Such polygonal cells, when arrayed with their respective centers at predetermined locatieas on a t%?o-diJiuansional geometric array and when encoded in a predetermined sequence, through as- signing different optical properties to a plurality of such polygonal cells, xnay be "read13 by an electro-optical sensor and subsequently decoded in accordance with the process of the invention, described below.
Th® oolygonal cells are information encoding units formed by a closed broken line, which calls .are • arrayed in a predetermined two-dimensional pattern on an optically readable label. Label configurations employing a wide variety of polygonal shapes, and arrays of varying geometries, such as hexagonal, rectangular or square arrays, are usable in the practice of the invention. "Adjacent" polygonal cells may be totally contiguous, partially contiguous or noncontiguous on the optically readable label of the invention.
"Contiguous polygons" are polygons arranged with the geometric centers of adja&ent polygoas lying at th«s vertices of a predetermined two-dimensional array and with the borders of such polygons touching the borders o£ immediately adjacent polygons, leaving-no interstitial spaces. "Partially contiguous polygons" are polygons arranged with the geometric canters of adjacent polyaons lying at the vertices ©f a t l predetermined two-dimensional array and which polygons are separated somewhere along their respective borders from other surround ing polygons, thereby causing a multiplicity of interstitial spaces, to be interspersed among said polygons on the optically readable laJbal. "Noncontiguous polygons" are individual polygons arranged with, the geometric centers of adjacent polygons lying at the vertices of a predetermined two-dimensional array, and having no contact between the borders of an individual polygon and polygons surrounding said polygon. Additionally, the polygonal cells and the predetermined two-dimensional grids or arrays upon which the centers of adjacent polygons are located may be irregular, having unequally-spaced axes, or regular, having equally-spaced axes,, in configuration. Such twp-dimensional array axes may be independent of the axes of symmetry,. if any, of the polygonal ce lis.
Hexagons present certain important advantages for encoding information on a label. Those advantages are: (1) For a given optical resolution, hexagons can be more densely packed than other polygons. For example, at a given resolution, the comers of squares are more difficult to rasolve, so that otherwise unnecessary optical resolution is required to "read* squares. Circles would be optimal for optical resolution*, but the space between adjacent circles would be wasted and would t complicate the processing and printing of the label image, because o£ th«s need to assign an optical property to the spaces. Hexagon® permit optimum packing of information, compared with circles or other polygons including, octagons, squares, triangles and the like. Squares and triangles are problems because of the sharp corners they have. Circles and octagons are problems because 'of the wasted space between adjacent circles or octagons. (2) A grid of contiguous hexagons has three axes. By using a label of a square or rectangular shape the major axis of the hexagon can be located by its predetermined relation to a side of th® label. This location of the major axis of a hexagon grid facilitates the reeding of the data encoded in the hexagon by its relation to that major axis.
As used herein, "label" includes a discrete unit, with a suit aisle adhesive backing, to be attached to a package or product, and the exterior surface of a container or other object on which optically-readable information is imprinted in accordance with this invention..
As used herein, "optically"rnadabl® data array" or "data array" meana a pattern of contiguous hexagons or other polygonal cells having two or mora optical properties to encode, in retrievable form, a body of data by virtu® of the respective optical properties of and spatial relationship of the hexagons or other polygonal cells to each other. The hexagons or polygons imprinted to contain this recoverable information are referred to herein as "information-encoded" hexagons or polygons, because of the manner in vhieh the label encodes inforsa&tion.
The pattern of contiguous hexagons with the maximum number of hex&gon-to-hexagon interfaces for optimal reading and maximum information storage density is referred to as a "horsey-comb pattern." The contrasting reflective properties utilized to print the individual hexagons or calls of the data array can be varied greatly within the spirit of this invention. As used herein, "printing" means depositing raatsrials having predetermined optical propartie® on a substrate, or changing the optical properties, as when "thermal" printing is used, "Printing" also includes the omission to deposit a material having a predetermined optical property oa a portion of the substrate, where the substrate itself has & distinct optical property. For example, in printing hexagonal cells in black and white, if the substrate is white, tit,an only black cells must actually be printed. Thus, aa used herein, the white aasagoaal cello: are also withia thss definition of the term "print" or "printed." As used herein, "optical properties" means light absorption, reflection and/or refraction properties of cells ! 9 printed in different media. Where cells are printed ia black (high density black ink)/ gray (half tones of black) and white (no printing on a white substrate), as is the case in the preferred embodiment of the invention, there are said to ba 5 three optical properties.
As used herein, aad with reference to Fig. 1, "plurality of concentric rings" or "concentric rings" 10 means two or mora concentric rings 12, on® of which is the interior area of a circular sons 15 defined by the smallest radius "r" of the rings. 10 Fig. 2 illustrates a portion of an electro-optically scannable label.
As seen in Fig. 2, the label comprises a multiplicity of adjacent printed hexagonally-shaped cells, formed in a honeycomb pattern. Each of the individual hexagons is designated by numeral IS 20, and comprises 6 equal sides 22. The interior angles "a" of the hexagon are also equal, each of -120 degrees. In the illustrated embodiment, the hexagon has a long vertical axis y-y and a horizontal axis xrx. The x~x dissension of the hexagon 20 is soise-vhat smaller than the y-y dimension of the hexagon, 20 due to the 20 geometry of a regular hexagos..
Fig. 3 shows a label 30 having dimensions of approximately 1" by 1", i.e. about 2.5 cm by 2.5 cm, in which there will hm approximately 80S hexagons or cells 20 (taking into account the fact that 25 the center of the label is occupied by an acquisition target 35 comprised of a plurality of concentric rings). Ihese contiguous hexagons 20 naturally forsn horizontal rows "R", defined by imaginary lines 31, and vertical columns ^c15, defined by imaginary lines 33. In this example a one inch by one inch label has a 30 total of 33 horizontal rows "R" and 30 vertical columns* "C" of hexagons 20. Each individual hexagon has a "diameter" of about 0.3 ran. There are more rows "R" than columns "C" in a square perimeter bounding a honeycomb pattern of hexagons, due to the geometric packing of the contiguous hexagons. 2 0 Utilizing the hexagons i! lust rated, in Fig. 2, it will be seen that the hexagons are aligned in staggered and overlapping vertical columns, with alternate vertically spaced hexagons having co-linear y-v axes. The y-y axes of spaced hexagons ?,Q are in 5 alignment with an exterior vertical side 22 of an intermediate, displaced hexagon. The y-y axes of hexagons 20 are parallel to the two vertical borders 32 and 34 of the label, as depicted in Fig. 3. Horizontal rows BR" ars measured through the x-x axes at the mid-point of the hexagon 20.
As saore fully described below, the hexagons 20 are formed by a printing process which .will print the hexagons 20 in two or more optical properties, for example, contrasting colors. Those colors may be %/hite 25, black 26 and also, optionally but preferably, gray 27 as illustrated in Fig. 3, although other contrasting 15 colors stay be utilised. It is possible to use only ti^o contrasting colors, such as white 25, and black 26 as seen in Fig. 2.
Preferablys three contrasting colors are utilised, white 25, and black 26, and gray 27, illustrated in Fie. 3. The particular shades of white, black, and gray are 20 selected to achieve optimum contrast for ease of identification by &n electro-optical sensor. The gray level is selected so "chat its optical properties fall approximately squally between the optical properties of' the white snd black being used in creating the label. the label 30 of Fig. 3 may be formed by using a discrete label, having a. one square inch area, or, if an acceptable color background is utilised (preferably white), the label may be printed directly on a package surface, without requiring a discrete label. Because of the importance of 30 having a controlled optical property background for one of the contrasting colors, it is preferable* to use a discrete label, because the color of the labsi background is more easily controlled.
The alignment of the hexagons printed on the label in 35 relation to the sides of the label is important for subsequently determining the major axis of the label as described below. The label is printed 30 that the y-y axes of the hexagons forming the honeycomb will be parallel to the vertical sides of the label, 32 and 34, as showu in Fig. 3.
In "reading15 the hexagonal array, in order, to decode thes information contained in the individual .hexagons, it is important to have a sharp color contrast between adjacent hexagons. For reasons described below, the fewer optical properties utilized to encode the hexagons, the simpler may be the scanning equipment and software necessary to decode the hexagons. However, fewer optical properties also decrease the data density of the label. In a compromise between the amount of decoded information capable of being stored on the label and the cost of scanning multi-optical property labels, it has been fo&nd desirable to print the encoded hexagons with three optical properties, namely the colors black, gray and white. If the substrate or label has a good white background, then white hexagons can be created by the absence of ink, and only black and gray hexagons actually need to bs printed.
The Sray hexagona.1 calls ares created by printing'the cells with black 'ink, but or?,ly every fifth pixel of the pixel grid of a dot matrix printer is so printed in thes illustrative -example described herein. This is done by the use of a half-toning algorithm, in a manner which is well known in the art. This allows a printer to ■print a predetermined proportion of the pixels to define a given gray hexagon, whereas a black hexagon requires printing every pixel defining that hexagon. The specific half-toning algorithm used to psrint labels of the preferred embodiment is contained in the ssourc® cods listings entitled "LABEL1" in the 'Microfiche Appendix, pa.ge 29, lines 39 to 48.
The black hexagonal cells can be formed by printing with a standard black ink. As described below, the scanning analysis software of the decoding process makes gross determinations among black, gray and white reflectivities, so that precise color definition is not necessary. On the otner hand, if colors other than black, gray and white are used, or if various shades of gray are used, to create four or five color data arrays, the contrast of ink shades must be much more carefully controlled to S ensure measurable optical property differences among the various colors. It will be appreciated that the use of black ink is the simplest and easiest approach to creating a three optical property honeycomb array of hexagonal cells, and is preferred.
Because of the square shape of the label and the nature of the hexagonal cells, the edges of the honeycomb will contain incomplete hexagons 56'; as seen in Fig. 3 these incomplete hexagons are not used to convey any useful information.
The label also contains an. .acquisition target. The acquisition target 35, seen in Fig. 3, comprises a plurality of concentric rings of contrasting colors (shown as black and white). The black rings are respectively designated 42, 46 and 48, and the white rings are 20 respectively designated 44, 50 and 52. The target is preferably located- in thes geometric c en tear of the label,, to snake it less susceptible to being damaged or destroyed, in whole or in pari:, ■ if the periphery of the labssl is torn, soiled or dsmagad. Also, the size of the image buffer (described below), needed to store 25 the data from the label before th«s label target is identified, is ■minimized when the acquisition target is in the label canter.
The number of concentric rings used in the acquisition target may ba varied, but the six concentric rings 42, 44, 46, 48^ 50 and 52 and their resulting interfaces as they vary from 30 white to black to white, etc., have been found to be convenient and desirable, A pattern correlating technique is used to match a computed pattern of what the concentric rings are expected to be with the pattern being read. When the match occurs the acquisi-35 tion target has been located as more fully described below. The specific filter created and utilized may be found in the Microfiche Appendix under the file name "FIND.C." S Ths acquisition target may ba of any overall diameter smaller than the data array, to provide an. area which may be 25%, and is preferably about 7%, of the area of the data array. Preferably ths acquisition target is sised as small as possible since the area it occupies on the label cannot carry encoded information.. 10 In the preferred embodiment the diasaeters of the imprinted eingrs are selected so that the -outside boundary of the external ring 52 is about 7.45 millimeters. Thus, in Fig. 3 the area of the acquisition target 35 occupies about 7% of the surface area of the one square inch label 30. In this way, a satisfactory acquisition 15 target 35 may be imprinted on a one inch square label 30 without unduly interfering with the amount of information which can be encoded in ths hexagonal array that surrounds the acquisition •target. As is the case with the incomplete hexagons at the outer periphery of the label 55, the fractional hex.agons contiguous with the outer boundary of the acquisition target 56 are not uti- > Used, for the purpose of encoding information. The width of each ring, is desirably about tha sasie as the side-to-side (x-x axis in Fig. 1) dimension of the hexagons, to facilitate resolution. Six rings are convenient. This is a reasonable number to facilitate 25 location of the rings in a minimum label area "with a minimum of possible false: readings from "spurious" marks on the label and other "spurious" marks not on the label, such as marks elsewhere on a conveyor belt.
Hie acquisition target nay take shapes other than con-30 centric rings. For example, squares, spirals or haxagons may be used in order to create transitions of contrasting concentric figures, so long as linear sections through the acquisition target will ereate regular, predetermined and identifiable color transitions, susceptible of being sensed by an electro-optical 35 se.asor and measured by a suitable filter. It is to be noted that, 2 4 although a spiral is not a collection of concentric circles, depending on the size and radius of the spiral, a close approximation of concentric circles can be achieved. A target of concentric rings is preferred, because the signal generated by a scan 5 through their canter has a frequency which is ths same when sections are taker, in any direction through the center of the concentric rings. This makes identification of the center simpler, as mors fully described below, and allows identification of the location of the acquisition target with a one-dimension search, of 10 the analog or digital output of the scanner, although the process of the invention may alternatively or subsequently utilize a two-dimensional digital search for increased accuracy when a digital signal is being analysed.
As used herein, "Concentric Rings" is ir^ended to era-15 brace complete rings, partial rings in the form of semi-cireles, sectors of concentric rings occupying between 180 degrees and 330 degrees and concentric spirals which approximate concentric rings.
Sine® each hexagon, raay be encoded in three different optical properties, 1.585 "bits" of information may b«e encoded in each hexagon, (log ^3).
Obviously, if fewer or snore optical properties than three are utilized., the nusabar of bits encoded ia each hexagon will ■vary coBBensuratoly. Th«s encoding algorithm is structured to achieve close to maximum data density sad to increase the number of cell-25 to-cell optical property transitions, ia order to facilitate the two-dimensional clock recovery process described below.
Figure ft illustrates a 3 cell x 3 cell cluster o"f nine hexagonal cells 60, which is the basic encoding unit utilized.
This is a desirable en-30 coding approach, but is not essential. Other encoding units are feasible. As more fully described below, tha 3 cell x 3 cell clusters of hexagons 60 are m&pped to encode 13 bits of information if the cluster contains a full complement of 9 hexagons, or less than 13 bits if the cluster 35 is incomplete by having unusable hexagons. In a one inch square label with a data array comprising about 888 hexagons and an acquisition target occupying about 7 percent of the label area, about 1292 bits of information may be encoded.
In encoding each cluster, external, bottom hexagons 62 5 and 64 in each cluster 60, as seen in Fig. 4, are limited in their respective.optical properties, so that they are determined always to be different from intermediate and contiguous hexagon 66.
Thus, only one bit per hexagon can be encoded in hexagons 62 and 64. In this way it is possible to encode 13 bits of information, 10 in cluster 60 toy encoding 11 bits onto the remaining seven hexagons. Since mapping 7 hexagons provides more possible combinations than are utilised 11 ■ a. . 3?=2187 combinations vs. 2 ' '"=2048. combinations), some eosnbinations are rejected as, for example, all black, all gray, all white or substantially all black, gray IS or white combinations. The reasons for requiring contrasting colors of hexagons 62 and 64, compared to hexagon 66 are to guarantee transitions necessary for thes clock recovery step and optional normalisation process step described below and to assist in determining horizontal alignment of the data array, as described 20 below. In cases where encoding clusters have 7 or 8 hexagons, 7 t usable hexagons are encoded with 11 bits and" the eighth hexagon, if available, is encoded with 1 hit- For all other partial clus- ' tera 3 bits are encoded on every pair of hexagons and 1 bit onto' each remaining single hexagon as more fully described below. 25 It will therefore be seen that the label constitutes a particularly efficient, easy-to-read (by means of appropriate scanning equipment and .analytical software) label for encoding a very high density of information into a relatively inexpensive, easy-tc-print label. Ass noted, the label utilizes a 33 row x 30 column packing of hexagons into a one square-inch label, with sn acquisition target representing approximately 7% of the total surface area of the label. In practice, 13 bits of information are obtained from a cluster of 9 hexagons, so that 1.44 bits of data are derived per cell. This is less than the 2 6 iVFTTTftf&atf. 'j i ■ «f*1 theoretical 1.S85 bits per hexagon because of the other constraints of the encoding algorithm, since all 37 patterns are not used, and some of ths least optically desirable cell-to-cell transitions are eliminated. g For reasons described below, it is desirable to incorporate a certain amount of error protection into the encoding of the label, so » that the actual amount of recoverable information in the label is reduced ia favor of a high degree of data integrity in the dacod- •» ing process.
As siay ba readily appreciated by one skilled in the art, the foregoing discussion of labels employing hexa gonal cells is directly applicable- to optically readable labels utilising other polygonal cells. .The .disclosed methods of "print-IS ing" optical properties of hexagons apply equally to printing the optical properties of other polygonal cells, whether in black, white, gray (through half-toning) or other colors. Similar constraints -and advantages as to data density enure to labels printed with polygonal cells other than hexagons when the optical proper-20 ties black and whits, and optionally gray,, are utilised to print ■the polygonal cells. As with hfexagon-contaiq.ing labels, labels printed with other polygonal encoding cells may ba "read™ with '.scanning equipment of less cosaplessity when only two optical properties are utilized to encode Information in the polygonal cells, 23 ir* particular the colors black and white, because of the maximum contrast that is obtained with thesis colors.
Information encoding procedures and the algorithm described fos hexagon-containing labels are directly applicable to labels pristasd with, different polygoaal cells. Similar to hexagon-30 containing labels, incomplete polygonal cells which may appear at the border of the optically readable label or that result from partial obliteration by the acquisition target, comprising a series of concentric rings arc not used to encode information.
A "honeycomb pattern™ comprises aa array of • 35 contiguously-arranged hexagons 310, the geometric centers 311 of 2 7 which likewise lie at; ths vertices 311A of a "hexagonal grid" or "hexagonal array" 312, as shown in Fig. 11. Regular hexagons, I.e. hexagons having six equal sides and six equal interior angles, form hexagonal arrays that are likewise regular in configuration, having three equally"-spaced axes (Al, A2 and A3) that are spaced 60 degrees apart.
If the hexagons 320 of the label are irregular, but symmetrical, as for instance, if the hexagons are stretched along two parallel sides 321, 322, the geometric centers 325 of adjacent hexagons will describe an irregular' hexagonal array 327, as shown in Fig. 12. Such an irregular hexagonal array will still have three axes (Al, A2 (and A3), however, the three.axes will not be equally spaced i.e. the three axes will not al'l be 60 degrees apart.
Although the hexagonal array of Fig. 12 is not regular in nature, it is nevertheless a two-dimensional geometric grid or array having axes of predetermined spacing. Thus, the locations and spacinga of the geometric ceaters of the hexagons located at the vertices of the intersecting asses of the hexagonal array are also predetermined* The geometry of- the hexagonal array is then utilized in the decoding process described below. Specifically, the filtration step, performed on the transformed digital data corresponding to the image sensed by the optical sensor, is adjusted to reflect the predetermined label geometry, so that the digital representation of the sensed label can be used to precisely reconstruct the original grid. Th& reconstruction process further supplies the missing points from the hexagonal grid. The missing' grid points occur because optical property transitions did not take place between polygons of like optical properties.
With irregular hexagonal grids of the type disclosed in Fig. 12 it will be 'desirable to adjust the major axis deter-saination step, step (3)(e) 'of Fig. 7 of the decoding process done after the Fourier transformation step of the process to 2 8 Identify tha major axis of ths optically readable label. The major axis of the label will have the geometric centers of polygons lying along this axis at different spacings than on the other two axes.
Label configurations of the invention approximating the label'; containing hexagonal cells as described above are possible using certain polygonal cells. Figure 13 illustrates a label configuration utilizing polygonal cells 330 which substantially resesibie hexagons, but which are 20-sided 10 polygons, ratdisr than hexagons. Similarly constructed polygons with mora or less than 20 sides could also be printed. Polygons 330 are partially contiguous unlike the imaginary contiguous hexagonal cells 331 in which they are depicted.
The interstitial spaces 332 of the Fig. 13 label esn-15 bodiment saay or may not b© printed with a different optical property than the encoded polygons. Interstitial spaces do not carry encoded information, therefore, their presence leads to a lower data density for a given optical resolution and performance level. Further, if the interstitial spaces dispersed among polygons are 20 of a different optical property than the adjacent polygons, more transitions between, rthe optical, properties of the polygons .and the interstitial spaces could be sensed by the optical sensor and ■ thus a.higher clock signal energy would appear ia the transform doaain within, the decoding process described ia detail below. 2S Because the polygons of .the Fig. .13 label are arranged or a hexagonal grid having three equally-spaced axes, the geometric centers 333 of the polygonal cells 330 lie at the vertices of hexagonal array 333. The spacing, location and spatial orientation of the centers a£ the polygons are predetermined and 30 can be detected ia the transform domain of the decoding process. 2 9 The Fig. 13 label utilises polygons substantially in the form of hexagons. Because they so closely approximate a 5 hexagon, the optical sensor at a moderate resolution could "read" them as hexagons. Th© geometric centers 333 of ths polygons 330 do lie, however, at ths vertices of the three equally-spaced axes (Al, A2 and A3) of the hexagonal array 33S.
Fig. 14 illustrates a similarly shaped (to polygon 330 10 in Fig. 13) polygonal figure 340 that has been arranged to be totally contiguous. These polygons 340 can be approximated by an imaginary hexagon 341, as in Fig. 13, but no interstitial spaces (332 of Fig. 13) may b«s found between th® actual polygons. Such a. contiguous arrangement is desirable to simplify the decoding 15 process, but is not mandatory, in th® practice of the invention. Polygons 340 are shown with their respective geometric centers 342 lying at the vertices of a hexagonal array 345. Again., as for the. polygons 330 in Fig. 13, polygons 340 are substantially in the shape of hexagons, and at & moderate optical resolution 20 would appear to be hexagons.
Fig. IS is a blowup of a label as it would appear if printed with a dot matrix printer printing 200 pixels per inch. Polygons 360 of Fig. IS illnstr&'ba th® shape of the geometric figure that will actually be printed in place of a hexagon with 25 sueh a dot matrix printer, because of the pixel density of the printer. Printers with greater pixel densities should yield closer approximations of a hexagon than the polygons 3S0 shown on Fig. 15. Thus, polygons 340 of Fig. 14 and 360 of Fig, IS are likely resulting shapes, due to the inherent limitations of . ao certain printers, of the printing process for labels containing hexagonal cells or result frosa deliberates efforts to print such polygons 3 0 substantially in the form of hexagons in the first instance. The shape of such polygons substantially in ths shape of hexagons allow them to function, in a practical sense, as equivalents of contiguous hexagonal encoding cells.
As in the case of Fig. 3, the optically readable label of Fie. IS also contains an acquisition target 370 comprising a series of concentric rings 371 through 375. Lika the hexagons on the label of Fig. 3, the polygons 360 substantially in the form of hexagons ia Fig. IS &re arranged in columns "C" and rows "R," 10 as bounded by imaginary lines 361 and 362 and 3S3 and 364, respectively. Also, as in the case of the hexagons of Fig. 3, the polygons of Fig IS have their respective geometric centers lying at the vertices of a hexagonal array as defined by equally-spaced asses Al, A2 and A3. Thus, labels of the aon£xg-15 uration shown ia Fig". IS are readily encoded and decoded in ac~ cordan.ce with, the processes disclosed hereinbelow.
If an alternative label geometry is employed such as utilising a square or rectangular array, or the like, adjustments ismst be made In the two-dimensional clock recovery process de= 20 ascribed belo^f. 'The different geometry of the predetermined array requires changes to bs mada in the filters utilised ia the filtering step of the two-dimensional clock recovery process. The filter* operate on the transformed digital data corresponding to th<£ optical properties of ths polygons read by the sensor in the image 25 domain. Sucb, siarar adjustments to the filtration scheme eeuld easily bs made by a person o£ ordinary skill in the art. in situations whore the predetermined two-dimensional array has unequally-spaced axes, osr iss irregular in c©?s,figurati on, it may be dasiruble ■fee identify the sajor axis of the label prior to psarfosmirag the 30 Fourier transforms, tion of the digital data representing the opti-calif sensed iaaga. This is because the gsoa^tric centers o£ the polygon.® a,r® not equally spaced' along the axes.
Noncontiguously-arranged polygons can also ba utilized to create aa optically readable label in accordance with the 3 I present invention.
Ic will be appreciated that many variations of the label are possible.
For example, 'che label need not be one-inch square. One square inch was selected as a reasonable size of label, to achieve an acceptable data density of 100 alphanumeric characters of information with a high degree of error OR-p fiTJi protection applied thereto, without creating an excessively large size label. It is desirable to have a one square inch label, to reduce the paper and other costs associated v/ith the printing, shipping and handling of such labels. Conventional bar code S labels of similar sise would have a radically decreased data density. Using 4, 5 or more optical properties or colors to define the hexagons will allow substantially more information to be packed into a given space of hexagons o£ pre-determined sise, but with a resulting increase ia the complexity of the software and 10 sensitivity of the scanning system required i~n order to be able to recover that information. Thus, for practical purposes, a : three optical property, black, gray and white, encoding system of optical properties is highly desirable. Also, the sizes of the hexagons and acquisition target may be varied widely.
Although 85clustering" of hexagons in 3 cell x 3 cell clusters has been described, other patterns of clusters may be usad or clustering saay be omitted entirely and the encoding algorithm snay be directed specifically to an individual hexagon pat-20 tarn.. Also, the relative soaounta of encoded information devoted to the siessage as opposed to sr^or correction, may also be varied within wide limits, LABEL ENCODING The process saay begin with a predatarairjad series of data desired to be encoded on a label. In a preferred, embodiment, the label is a shipping label, and the data is broken into two fields, identified as a "high priority message" and a. "low priority massage.69 It will be understood, however, that the inven-35 tion is not restricted to two different messages or levels of 3 4 priority. Many messages and levels of priority may ba created within the quantitative limits of a label of given size and number of cells.
For example, where the label is intended as a shipping label, the "high priority massage" may constitute nine characters, representing the zip code of the recipient of the intended package, parcel or latter. Nine digits is referred to because, although many individuals and companies have five digit sip codes, nine digit zip codes are being used with increasing frequency. Therefore, in handling packages for delivery, the most important piece of information is the zip code. This determines the general destination of the package and allows various scanning and package control systems to be used to direct the package to the proper destination on trucks, aircraft, in a conveyor system and the like.
The low priority message snay, for example, include the Rams and shipping address, including sip code, of a recipient of ths intended package, as well as billing information.
The reason for creating a high priority message and a > low priority message is to protect the high priority message with atros correction, to allow the high priority message to be placed (encoded) in a move central of the label, where it is less likely to be damaged or destroyed, and to permit the high priority message to be repestsd and distributed in the low priority message so that., eves if the high priority message is selectively destroyed, t&ere is a high possibility that the high priority message can be retrieved from the low priority aeassge. By locating the high priority message in « central area, it may only b«s accessary to decodt» tha high priority messnge for soma purposes, so that, only a portion of the l*bel needs to b® processed, thus speeding «;p processing time. This will occur, for example, when, a parcel is or. s eorrweyor and only the sip code needs to be determined to control which of several conveyor paths the parcel should take in the handling process.
Because it is of a lowar priority, the low priority message is not presented twice on tha label. However, as described b^low, both the high priority and tha low priority massages snay incorporate various error protection codes and correction capabili-5 ties, in order to maximise the likelihood that both messages may accurately be retrieved. i The use of error protecting characters as part of tha encoded information can, in the preferred embodiment of this invention, in combination with an appropriate stored program and coia-10 puter, cause tha system to correct an error during the decoding process, in ths manner described below. The use of error protecting codes is well known in the art and is"within the'purview of the skilled parson in the art.
In the practice of tha invention an operator creating a 15 label may manually input the data to a suitable computer terminal which is designed, in the manner described below, to activate a printer to print a label with the high priority message, and ths low priority massage suitably encoded in ths hexagons of the label„ It is not essential to ths invention that a high priority message > and a low priority message be created, but it is desirable in order to maximize the likelihood that tha most important data to bss encoded will hs retrieved. Ia the preferred embodiment the label is also printed with a centrally-located acquisition target comprising a plurality of concentric rings of two alternating 23 contrasting colors, the colors preferably being two of the colors utilised to print the individual hexagons, and most preferably black and, white to ensure maximum contrast.
The operator manually inputting this d&ts will cause a suitably programmed computer to encode each character of the input 30 message aad use suitable field designators, in order to create, ±tl the operated computer, a binary bit stream, representing tha characters of the message and suitably encoded by field to designate the high priority ©ad 'low priority messages and ths relative position of each. This operation is carrisd out by tha program 35 "TEXTIM.C® which may be found ia the attached Appendix, 3 S and is designated 110 on Fig. 9. A computer with the required features may b® a Compaq Deskpro 306 (with a 16-MHz clock and an Intel 80387 math coprocessor chip).
Alternatively, tha process may begin with the informa tion to be encoded already contained in a binary bit stream, because, for example, it was received from a storage medium or otherwise created. Therefore, the roes sag® to be encoded can exist in a form whieh is manually (with electronic assistance) converted 10 to a binary bit stream or whieh begins as a binary bit stream.
. Once ths binary bit stream has been created or an error- protected bit stream has been produced by th® steps discussed mora fully below, th® bit stream must b® mapped in accordance with a predetermined mapping pattern for-tha encoding of th® hexa- 2,5 gen honeycomb of this invention. Fig. S i3 a "cluster map" which shows til® individual hexagonal cells of 3 cell x 3 cell clusters aligned in a ^rid or honeycomb captaining 33 rows and 30 columns of hexagons. Each row is numbered, and each column is numbered.
Tli® row numbers rang® from 1 to 33, and th© columns range from 1 to 30. It can be seen that certain of the hexagons designated along the upper surface and right-hand surface of the region map, and within the geometric center of ths' grid are designated by ; X'b. Txiis indicates that these hexagons de not contain bit-mapp«d information. Ibis is because th® exterior X* s represent partial 25 hexagons at'the edg® of the label, thus causing each of thes® rows to each have one fewer hexagon. The interior hexagons designated by K's represent spaces either occupied by the acquisition target or incomplete hexagons around the perimeter of the acquisition target:, so that these interior hax&goaa indicated by 3t"ss are 30 sot bit-mapped.. All of the hexagons which are not identified with Xss are capable of recording information. In accordance with the preferred embodiment, s&eh of these spaces will ba occupied by a black (B), white (W) or gray (G) hexagon. As noted above, although various clustering and mapping techniques can be 35 utilized, the application of this invention may us® clusters of 9 hexagons in 3 rows of 3 hexagons sach to define specific bits of information, and, as also described above, 13 bits of information are desirably encoded in each such 9-hexagon cluster.
Ia ci data array comprising 33 rows and 30 columns of 5 contiguous hexagons, a grid of 11 rows by 10 columns of hexagon clusters each containing a 3 cell x 3 cell arrangement of contiguous hexagons, is formad and may be visualised ia connection with, Fig. 5. It will ba appreciated hov'svor that every row of 3 cell by 3 cell clusters vithia the 11 cluster x 10 cluster grid 10 will contain a cluster of either 7 or 8 hexagons because of the geometric packing of hexagons, and the number will alternate from row to row. 2hus, 8 clusters containing 8 hexagons and 5 clusters containing 7 hexagons result from this arrangement. Also, the centrally located acquisition target creates additional in-15 complete clusters. Fig. 5 thus provides a' graphic representation of usable clusters of hexagons available for encoding with bits of information in a 33 row by 30 column data array of contiguous hexagonrs.
With reference to Fig. 4, clusters with nine usable / hexagons are encoded utilising the following algorithm: Tska eleven bits of information and map them into the set of seven hexagons identified as a, h, e, d, «, £ arid h- Hexagons g and i are, used' to represent 1 bit each in esuch a way as to guaraat.ee that each of them in different from he.-ss.gon h.
Thus, •Efeirtssri, bits at information are encoded in a complete 3 cell x 3 cell cluster of nine contiguous hexagons.
For partial clusters of 7 or 8 usable hexagons: Take eleven bits of information and map them 30 into the net of ths first seven usable hsxa- gom.
The eighth hexagon, if available, is used to represent one bit.
For all other partial cells: Hap three bits of information into as many pairs of haxagons as possible. 3 8 Any remaining single hexagons are used to represent one bit.
Since mapping seven hexagons provides more combinations than eleven bits (i.e., 1" ~ 2187 vs. 211 = 2048), some combinations S of the hexagons need to be raj acted. Tha rejected combinations ar® chosen to be those that provide the fewest number of transitions. To implement this, look-up tables were created to map the clusters in accordance with Fig. S. The creation and use of these look-up tables is vithia the capabilities of a skilled 10 programmer. With reference to Fig. 9, the program for creating the look-up tables "BINHEX.LOT" 132 and "HEXBIN.LUT" 134 may be found in the attached Appendix, and is identified as "MK HEX LUT" 13 0.
IS Use of this bit allocation scheme allows 1292 bits of information to be encoded in a 33 row x 30 column data array of contiguous hexagons.
The sequence in which the high priority information and low priority information is located throughout the cluster map is 20 predetermined, depending upon.: (a) The sise of th© high priority massage; (b) The size of th® low priority message; and (c) The optimum location, for the high priority message in a protected place.
Utilising the cluster sap as illustrated ia Fig. 5 as a template, a stored snapping program "MKMAPS.G" 140 operating on the digital data contained in a storage medium snakes a predetjer-mination of how to distribute the information ~~ both the high priority ?ae;sssge' asd th® low priority aeaaage — throughout the 30 cluster map, as more fully described be lot?. The mapping program is identified is the appended source code listings as "MKMAPS.C" 140 and may bra found in the attached ' Appendix. 3 9 In order to minimise ths likelihood of error, and be able to correct errors, tha preferred embodiment of the invention desirably includes extensive error protection and correction capabilities. For example, in a preferred embodiment having 1,292 5 bits of information able to be encoded in a one square inch array of hexagons having 33 rows x 30 columns of hexagons, and an acquisition target occupying about 7% of ths label area, it is desirabl® to utilise 36 high priority message infonaation bits to encode a 9-digit sip code plus one additional alphanumeric character, which 10 may represent a shipping cod®. In this example, it would also be desirable to use 120 check bits for the high priority message.
This is determined by the amount of error correction capability desired. Similarly, in the illustrative embodiment, 560 bits of low priority message are included; this includes 40 bits of high 15 priority messaga which is incorporated in the low priority message. In the example, 576 low priority message check bits will be added in order to Maintain the security and facilitate recovery of the low pri oritv message. This example illustrates the much mors lavish use of check bits in order to preserve and per-20 snit recovery of the high priority message as opposed to the low priority ma a sag®. It is to b© understood that the foregoing information is by way of example only and that the high priority message could be longer or shorter, the low priority message longer or shorter, and the number of check bits greater or fewer, 25 depending upon th® particular application of the invention.
A "systematic code" takes a specific message sequence and adds a distinct error check sequence to the message sequence. A "son-systematic" coda takes a specific message sequence and incorporates the: error check sequence with ths massage sequence 30 so that ths message is no longer distinct, but is, of course, recoverable. It is within the purview of this invention to use either systematic or non-systematic coding for error protection. The disclosure below la of a systematic code. 4 0 As defined herein, tha step of "interposing error detection symbols" includes systematic and/or non-systematic coding systems.
Various systematic linear cyclic error protection codes 5 are known in the art, for example, BCH codes, Reed-Solomon codes and Hamming codes. In a preferred embodiment:. Reed-Solomon codes are separately incorporated to protect the integrity of the high and low priority massages. Reed-Solomon codes are very efficient and most useful when multi-bit characters ar® being error-checked. 10 Re®d-Solomon codes are wall known and it is to be understood that this is simply & preferred embodiment, although many other error correcting codes could be utilised in the invention. Read-Solomon and other coding systems are discussed in, for example, Theory and Practice of Error Control Codes. Richard E. Blahut, Addison IS Wesley, 1983, at pages 174 .and 175.
By way of example, some relevant information about the Reed-Solomon code is set forth below. Specific characteristics of a Reed-Solomon code can ba specified by the following parameters : m = number of bits in each symbol n - number of symbols in the block = 2m-l k ~ number of message symbols (number of message'bits = km) t - correction, capability in number of symbols = (a - k)/2 A nine-digit zip code and single alphanumeric charac-2S tes for further identifieantios purposes requires 36 bits without error protection in the example described below. A Reed-Solomon code with the following parameters was chosen for the high priority message. as =s 6 (6 bit symbols) n » 26 - 1 s 63 t = 10 Therefore, k « n - 2t = 43 Slices only six S-bit symbols ar® required to represent a 36-bit message, the remaining 37 symbols (43-6) are padding symbols, which are issalied between the encoder and the decoder, 35 ' " 4 1 and need not be stored on the label. Thus, the total number of bits required on. the label for the high-priority message is (63 -37) x 6 or 156 bits.
This error coding scheme will be able to correct a maxi-5 mum of up to 60 (10 x 6) bit errors, which amounts to 38.5% of the bits used. Due to the large number of implied padding symbols, ths large error detection capability of this Reed-Solomon' encoding makas it extremely unlikely that the high priority message will be read erroneously.
Th© low priority message was encoded with a Reed-Solomon error protection code having different parameters, namely: m = 8 (8 bit symbols) n = 28 - 1 = 255 t = 36 k = a - 2t = 183 Since there: are 1292 bits available for encoding on the label according to this illustration, a total of 1136 bits (1292 - 156 high priority message bits and check bits) are available for encoding and check bits for tha low priority massage. Thus, the remaining 904 bits (255 x 0 - 1136) have to ba implied aadding I ■ bits. This allocs 560 .bits (183 x 8 - 904) for the information content of the .low priority message sad 576 check bits.
To further assure recovery of tha high priority message, it ia also included in the low priority message. The Reed-Solomon error protection cede applied to ths low priority message permits encoding of an additional 86 6-bit alphanumeric characters and has a maximum error correction capability of about 25.4%.
Utilising th® foregoing Resed-Solomon error protection encoding, the total auaabar of 1292 bits of information available oa the illustrative label ars distributed as follows: 3fi high priority information bits 120 high priority check, bits- 56Q low priority infonaation bits (including 40 bits of high priority message. incorporated in the low priority message) 573 low priority check bits The bit stream of data, including th® appropriate check bits for preserving the information, are assigned to individual 42 hexagons on the cluster map of Fig. 5. It will be appreciated that a. wide variety of distribution patterns can ba utilized, recognising that the important criteria to be determined are: (1) safe location of'the high priority message prox- imate the acquisition target (if present on the data array); and (2) creating a pattern which is reasonably easy to reassemble when reading occurs.
The specific error coding program employed in the illustrative* example is contained in the attached- Appendix under 10 the program "EEECODE.C".
Encoding for Reed-Solomon codes requires multiplication of the message cod© -vector with, a generator matrix. The matrix multiplication is don® using Galois Field arithmetic. Addition IS of any two elements of the field is obtained by performing an exclusive "or" operation between th® two elements. Multiplication is performed via & "log18 operation in th® Galois Field. Xhs log and antilog are obtained by using look-up tables generated from prime polynomials, specifically for the high priority »es- / sage: 1 + x"; and for the low priority message: 1 + x3 + x3 + x4 + x". With reference to Fig. 9, an auxiliary program "GF.C" i 126 generates the laok-up tables necessary for the Galois Field t arithmetic. Auxiliary program "GE.C8" may b-a found, within the attached Appendix. The look-up tables are computed and stored in the file *GF.LUT" 127 for use during encoding and decoding. The generator polynomial g(ss) for ths Reed-Solomon cod® is determined by tha following aquation: g(x) = (x + a) (x * a3) ........ (ss * a^) where a is the primitive element of the Galois Fi«ld.
The generator matrix for the Reed-Solomon code ia formed by p The computation of tha generator polynomials g(x) as wall ag the generator matrices for both the high priority and low S priority messages is implemented according to tfie auxiliary program 13MKKSLUT.C" 125, which may be found in the attached Appendix. The look-up tables for the generator matrices are generated and stored in the file "RS.LUT" 128.
In a. preferred embodiment of th® invention, labels containing hexagons are printed with standard printing equipment that is readily available and inexpensive. A printer having a 300 h 300 dot matrix per square inch capability will yield satis-15 factory results for printing 'three-color (black, gray, white) labels having 888 hexagons plus a centrally-located acquisition target. A printer with these capabilities is the Hewlett Packard Laser Jet Series II with 0.5 megabytes of memory and a 300 dot per inch graphics resolution. A 300 x 300 pixel grid having a 20 density of 90,000 pixels per square inch produces about 90 pixels per hexagon in ths preferred embodiment. Each pixel is assigned a value of 0 or 1, representing a black or white pixel. This printer ;is utilised to print & two-color data array of black or whit© hexagons. It may also be used to print a three-color data 25 array of black, white and gray hexagons if a half-toning algorithm is utilised to produce gray haxagona, as previously described.
Referring to Fig. 9, by means' of a stored program "MKMAPS.C, K 140 a regions look-up table "REGIONS.LUT" 141 of 34 rows x 30 colusans was created, which is analogous to Fig. 5, but 30 which was adapted to designate selection of black or white for the acquisition target rings. Individual hexagons are coded for black, white or gray or as unusable. A separate look-up table reHEZ MAP. Mir" 142 was created by a stored subroutine of the program "MKMAPS.C15 which specifies allegiance of each of the 300 x 35 300 pixels on th® pixel grid to specific regions in tha 4 4 "REGIONS.LUT" 141, i.e.. about 90 pixels per hexagon. Pixels belonging to th© finder rings are coded for either black or white. Acquisition target rings are printed by first generating a hexagonal pattern on each region row than generating the rings.
Regions partially or completely covered by the finder rings are rendered unusable in the "REGIONS.LUT" 141. The foregoing program "MKMAPS.C" and subroutines may be found in the appended source code in the attached Appendix, pages 94 to 97.
The error protection encoded bit stream is mapped in 10 accordance with a predetermined sequence into the 11 x 10 cluster array of hexagons. Still referring to Fig. 9, the sequence is specified by an order look-up table "ORDER. LUT" 151 generated by an auxiliary stored program Entitled 19ORDER.Cie, ISO which may be found in the attached . , Appendix, page T01, lines 1 to 47 and page 15 ^lines 1 to 3. A stored program "PRLABEL.C" 160 and found within the attached Appendix, was utilized to assign values of 0, l, or 2 to the regions available for printing on the label, while leaving the region.® with & value of 3 unchanged. Gray levels for each of 20 the hexagons in a 3 call by 3 cell cluster are assigned in conjunction with the stored program eat it led ,SCELL CODE.G" 170 found ia the attached Appendix.
A preference for storing the high priority massage in 25 an are®. proximate the acquisition target where it will h® less susceptible to label degradation ia built into this auxiliary order program. Program "LABEL.C!S 100 iss therefor® employed to generate a bit stream suitable for input to the laser printer. Program "LABEL.C" 100 may be found in the attached Appendix. tt can be seen that, the use of black, gray and white permits a simple label printing procedure, bscaus® only black ink is necessary, when a standard hslf-toning algorithm is used, in a 4 5 manner which is veil known in the art. If other color combinations are used (which ia feasible), tha necessity for printing in other colors obviously creates substantial complexities when compared with tha three-color black-gray-white approach or with a two-color black-white approach.
Thus, when each pixel of the printer has been assigned a black or white value, the labels may be printed to create an encoded format, as illustrated in Fig. 3, in which soma hexagons are white some are gray and sosne are black, and in which an acquisition target region, preferably of black and white concentric rings is formed at tha geometric center of the label.
LABEL INTERPRETATION OR DECOPTNr, Having described how data is encoded in the label and IS printed, it ia necessary to describe the subsequent label interpretation or decoding process. It will be appreciated that it is desirable- to perform tha label interpretation function at very high speeds, on the order of a fraction of. a second, in order to increase th® efficiency at which the package manipulation (or 20 other manipulation or label reading) process takes place.
There are two basic approaches that can be taken for capturing the image in the label reading process. The label can be read at relatively slow speeds, using a hand-held static fixed-focus scanner. Alternatively, an electro-optical sensor, having 25 a servo-control led focusing mechaai ssa to permit dynamic scanning of rapidly moving packages of variable siges sad heights is highly desirable to achieve high speed operation. The decoding process and equipment described below was demonstrated ia connection with & fixed-focus scaiasr. The process having the geuersl capsbili-30 ties described herein with respect to a static fixed-focus scanner is adaptable to a dynastic scanning system with certain modifications to the optical system as acted below. When manipulating packages at high speeds, it is desirable to have a high speed scanning mechanism which can read labels travelling at a linear 35 speed of about 100 inches per second or more and passing below a 4 S fixed scanner location. The image processing function thus comprises the following steps. Fig. 7 provides an outline of the steps of the decoding process. 1. Illumination of the Label When a package, parcel or letter is traveling on a highspeed conveyor, the area to b® illuminated is quite large, ba« causa the sises of the packages to be accommodated on ths conveyor could b© quite large and variable. For example, a 42 inch 10 wide conveyor and packages o£ only several inches in width up to three feet in width (and similar heights) are not uncommon in package handling systems. Therefor®, the one square inch label may be located anywhere across the width of the conveyor. Packages ar® also likely to be located at skewed angles with respect IS to th® axis of isovesaent of the conveyor belt. The parcels, packages, letters or the like will have different heights, so that th® labels to be scanned may ba located, .for example, one inch or leas above the conveyor, on th® one hand, or up to 36 inches or more above the cossveyor, on. the other hand, with respect to the 20 maxitauai height packages that the' described' system can accommodate.
In order to properly illusainate the labels in accordance vith this invention, especially considering the wide rang® of package i<»idths, heights and the angles of presentation of the labels, it is desirable to use as. high-intensity light source, 25 which will reflect veil based or. the two or more optical properties selected for the label. The light might be infrared, ultraviolet or visible light, and th® light spectrum of usable visible light Kiay vary. IChe technique for sensing tha light preferably involves 3»Uf»ing light reflected from the black, white and gray 30 hexagons of tha label.
Tha illuseination source must produce enough reflected light ©t tha light sensor (for examples a CCD device, as described below) to permit ths light sensor to reliably distinguish among black, .gray and white or whatever optical properties of the hexa-35 goria are being sensed. In a dynamic scanning system an array of LED'3 could be used to produce axi illumination level of about 10 mW/cm' in the label illumination area at the level of the label. The LED's may ba in an area array, without using a focusing lens, or a linear array, with a cylindrical focusing lens. A laser light source, passed through a suitable optical system to provide a line source of illumination could also be used iri the practice of this invention.
The selection of the light source and the properties of th® light source for th® Eipplication in question are within the purview of the skilled artisan. It is to ba recalled that, since the label to be located is only one square inch in maximum dimension, located at heights of up to 36 inches on a 42 inch wide belt travelling at speeds up to, for example, 100 linear inches per second, it is v®ry important to ba able to illuminate the labels properly in order to identify and locate the labels quite promptly.
In tha case of the static fixed-focus sensor utilized in the illustrative example, an illumination level of about 2 milliwatts/cm^ proved suitable for the practice of the invention. This was accomplished by means of a fluorescent light source. 2. Optical Sensing of the Reflected Label Imace The sscond step in the recognition portion of ths decoding process is to optically sense the illuminated area with an electronically operated sensor. Th® caraera/li ght sensor used in the illustrative example for a static fiited-focus scanning system comprised an industrial quality color CCD television camera, such ms model number WV-CD 130, available from Panasonic Industrial Company, One Panasonic Way, Secaucua, New Jersey 07094, fitted with a 50 ujugi! xi 1 a3 C—stiount <*,$ including & i? misi e^b.L»€i3aoSxon tube, available from 0.0. Industries, Inc. (Japan), 317 East Chestnut: Street, East Rochester, Nfe?*? Yorfc 14445 and identified under the brand name NAVITR0N™. The camera was coupled to an image capture board designated model number DT-2803-60, available from Data Translation Inc., 100 Locke Drive, Marlboro, Massachusetts 01752. 43 Optical sensing may involve imaging the entire label, utilizing an area sensor such as the above-described camera and image capture board or, in the alternative, may be accomplished vith a linear array sensor incorporating a charge coupled device 5 ("CCD") chip, wherein the second dimension of the label scanning is performed by the movement of the package (and label). A suitable CCD chip for this purpose is the Thomson-CSF THX 31510 CDS, 4096 element high speed linear CCD image sensor, available from Thomson-CSF, Division, Tubes Electroniquas, 38 rue Vautheir B.P. 10 305 92102 Boulogne-Billancourt CedeK, France.
For dynamic systems involving the movement of label-bearing packages on a conveyor system, it is desirable to have a long optical path between tha labels being sensed and the light senaor. The primary reason for creating a long optical path is 15 to reduce the change in apparent size or magnification of the label as sensed by a remote light sensor. • For example, if the optical path is, say, four feet, th© image size for labels one inch above the conveyor will be very different from that for labels three feet above th© conveyor. If a long optical path is 20 used of, say, tventy feet, the image sizes of the same labels are almost the same. This allows the area being sensed, regardless of height, to fill all or substantially all of th® area of the light sensor, to achieve consdstently high image resolution. If an area sensor rather than a line sensor is used, the same prin-25 ciple would also apply. This saay ba accomplished by means of a long optical path es depleted in Fig. 6.
In order to be able to focus on labels of different height'packages, a height sensor, is needed. An ultrasonic sensor may b« used or h set of light beams may be broken by the package 30 as, a asnsoff. Sit3$sr of syst«ssa® is usable and taa.y then activate a suitable adjustable focusing mechanise with an open or closed loop mechanism to sense and adjust the position of the optical sensing elements (e.g.. lenses and sensor) in relation to each other on a continuous basis, a® seen in Fig. 5. 35 Fig. 6 is a schematic view of a camera focusing and adjusting system operable in accordance with the invention for 4 9 adjusting tha position of tha camera light sensor in accordance with the height of the package being sensed. Fig. 6 demonstrates a view of a suitable lens 196, coil drive, height sensor and feedback loop in accordance with the invention. In Fig. 6, the 5 height sensor 206 may be an ultrasonic height sensor or a light beam which is broken by each package travelling on the conveyor, for example. The height sen&or outpu,t is fed to microprocessor 204 which in turn actuates coil driver 202 to move coil 200 on which CCD 198 or other suitable light sensor is mounted. A shaft 10 position sensor 208 senses the position of coil 200 and its output to microprocessor 204 completes a feedback loop for sensing and adjusting the position of coil 200.
The sensor must be able to senses the reflected light coming from the Illuminated label, and must also produce an. analog 15 signal corresponding to the intensity of the reflective properties of the label as recorded by the individual pixels of the electro-optical sensor.
A suitable light source, as described above, may be mounted to a mounting surface above a coavayor to bathe an area 20 extending across the entire width of th® conveyor with a light of predetermined quality and intensity. Th® reflected light from the label may be folded by a series of reflectors and then is sensed by electro-optical sensor.
The purpose of the folded optical path is to create a 25 compact and therefor® mora rigid system.
The analog video signal output of the sensor is than filtered. The analog electrical signal is utilised in conjunction with an analog bandpass filter to detect the presence of an acquisition target on. the data array. Tha analog signal is then 30 converted to a digital sign®.! using a conventional analog-to-digital converter incorporated ia the image capture board described below or by other means known in the art. In place of an analog bandpass filter, it is possible to substitute digital filtering circuitry to determine the presence of the acquisition 35 target by comparing the digital data representative thereof to 'che digitized signal output of the analog-to-digital converter, as more fully described below.
An example of an area sensor having a CCD chip with a plurality of detectors and which was used in accordance with the 5 invention is the- previously described Panasonic WV-CD 130 color CCD television camera. The analog signal output of the sensor was communicated to the previously described Data Translation DT 2803-60 image capture board, including a 6 bit monochrome video A/0 conversion for digitization and later operations. By means 10 of a suitable stored subroutine the sequenced digital output of the image capture board was saved in a memory device as an exact replica of the image recorded by the optical sensor. 3. Processing the Reflected Imacre The most important part of the invention is to process the optically sensed image in order to be able to recreate and orient with accuracy the original label configuration and the color (optical properties) of each hejeagon. This is done by using the following seeps, after which th® known pattern by which the 20 label was originally encoded and bit-mapped may be used to decode the information contained in the label. (a) Locating the Target Center.
Prior to utilizing the above-described CCD television. 25 camera and image capture board, as outlined in Fig. 10, an initialization program BDTINI£.C" 250 was run to put th® image capture board into a known ready state and to load the output color look-up tables, followed by the program "DTLIVE.C" 255 to put ths imags capture board in "live mod®.1® Th® program 30 "DTCRAB.C" then causes the image capture board to digitis® the scene into a 240 row by 256 column, image memory, with samples stored as 5 bit values right justified in bytes. The foregoing programs may bs found within the attached Appendix. Two auxiliary programs "DTSAVE.C" and 13 DT LOAD. C" allow screen images to be transferred to and from a storage medium. Source coda listings for the foregoing programs may be found within the -attached Appendix.
In first acquiring the label image, a conventional analog band pass filter can be usad to identify two or more optical properties of the acquisition target Concentric Rings.
These two optical properties are preferably ths colors black and white because tha greatest contrast will .create the strongest signal energy. In order to find a fixed pattern of transition from black to whits to black, ate., it is desirable that a linear scan across the acquisition target and passing through the center of the target yield a uniform frequency response regardless of label orientation. Thus, ths target rings are optimally comprised of contrasting Concentric Rings. The sensor output was then bifurcated and taken through two detection paths. One path detects all of ths energy in th® output: and th® other measures th® energy at the ring frequency. When the two outputs are compared, ths energy in tha ring detector most closely approximates the energy in the all energy detector when a scan through the acquisition target canter is being sensed. The acquisition » target center is located when this closest approximation occurs. Source code listings relating to the creation of a digital bandpass filter and filtering process may he found in the attached Appendix under the File Name "FIND.C How ever, in the dynamic preferred essbodiment of the invention, the first filtering step would preferably use an analog bandpass filter or else a sampled analog bandpass filter, although a digital filter is usable.
It is to b© sated that the acquisition target locating step denoted ,sFIMO.Ce- 280 in Fig. 10 is indicated as optional in Fig. 7, because a hand~h«ald scanner can. be used in the process of the invention, in which event the operator could properly place the .scanner to assure correct alignment of the sensor. This is, 2 of course, much slower than 'che use of an automated sensor and the use of the automated sensor is preferred in a high speed operation. If an automated sensor (not hand held) is usad, locating ths target is a required step of the process.
As an alternative to an analog filter dascribed above, a digital bandpass filter may be constructed using the Parks-McClellan algorithm supplied with the software package "Digital Filter Designs Software for the IBM PC" (Taylor and Stouraitis, Marcel Dekker, Inc., New York, M.Y., 1987).
A ena-dimensio^al digital band pass filter has been utilised in connection with ths present invention to filter a normalized digital bit stream, as described bslow, through the following filtration sub-routines. Ths band being filtered is the expectad ring frequency. Th® one-dimensional digital, band-IS pass filter was designed for a sampling rate of 400 pixels per inch and a l&ngth of 125 pixels (or 0.3125 inches), and designed to b® bas®d upon th@ sis® of the printed acquisition target rings, as illustrated in Fig. 3. The frequency was 300/16 line pairs per inch, yielding a normalised frequency, (where 400 line 20 pairs per inch ~ 1) of 300/15 x 400 or 0.046875. A filter with a passband extending S% helai-f this frequency and 15% above was choaon bscaus® label distortions typically result in image shrinkage &ad therefore an increased fr®qu©ncy. Stop bands from-15% bttlow the frequency down to 0 and from 2S% above the ring 25 frequency to 0.S (Nyquist limit) were constructed. The filter coefficients we re stored in the fil© 15 IMFut.SE. LUT*3 275, per Eig. 10, for later operations, deleting the first 62 coefficients, because the filter ia symmetrical. A flow chart is illustrated ■in Fig. 8. JTurther reference n»s.v be saatde to the source code 30 listings ia th© attached Appendix, under th® file name "FIND.C", 200 .
A filter of 25 pixels ia length was constructed by sampling tha band pass filter at output intervals corresponding to the measured horizontal magnification. For exsunpls, if the 35 horizontal magnification of the image is 00 pixels p®r inch, every fifth sample of the filter would be usad (400/00 = 5 pixels). For non-integer steps, linear interpolation of adjacent filter samples is used.
A second 25 by 25 pixel two-dimensional filter was also 5 utilized. Sample values for this two-dimensional filter ware based on the Euclidean distance of each point from the center of the filter, which were scaled for appropriate horizontal and vertical magnifications. Linear interpolation ia then used for non-integer sampling intervals.
The output of the above-mentioned one-dimensional fil ter was squared and smoothed with a first order recursive lowpass filter, providing an exponential window of past.history. When the smoothing filter output exceeded a predetermined threshold, an optional two-dimensional filtering step was employed to verify IS the existence of th® target and to accurately determine its location, as described below. Th® first part of the two-dimensional filtering usad a reduced filter size of 10 pixels by 10 pixels to save computation. This filter scans a rectangular area around the location detected by the on® dimensional filter. If the maxi-20 mum two-dimensional correlation exceeds a predetermined threshold, then ths final stags of two dimensional filtering, with the full 25 pixel by 25 pixel filter, was applied to a small square window around ths maximum. If the best result of this filter exceeded % predetermined threshold, th® center was detected. If any of ths 25 thresholds ware not exceeded, the program partially "discharged" the smoothing filter and reverted to one dimensional scanning. If one dimensional scanning completed without detecting th® presence of ths acquisition target, the program exited with an error return. For assy further elaboration of the filtering process em-30 ployed in the illustrative example, reference should be made to ths source code listings in the ' attached Appendix - 4 IS 23 (b) Normalization of Sensed Image Reflected light intensities recorded by the optical sensor employed may vary due to variations in illumination, print density, paper reflectivity, camera sensitivity and other reasons Involving degradation to the label, for example, folding, warping, etc. As an. optional (but desirable) step, the reflected light sensed by th® sensor and communicated to the memory may be normalised by conventional procedures. Using techniques known in th© art, a stored normalisation program "NORM.C" 270, depicted on Fig. 10, was used to analyze the intensity levels of reflected light from the label, s.s recorded by blocks of pixels in the scanner, to find the minimum and maximum reflected light intensities recorded for the data array. The sequenced digital output: of ths above-described scanner and image capture board combination was loaded from memory to the computer to be further operated upon by said stored normal!sati on program.
Utilising an aquation y = rax + b, where the minimum intensity substituted for x will yield a v^lua of y = 0 and a maximum intensity substituted for x will' via Id a value of y = 63, the recorded intensities of reflected light for each pixel ware adjusted so that; -the blackest blaek said the whitest white present ia ths atorsd image ware established as tha standard, and the other shades of black, white and grey w©r® adjusted to those standards. Hie normalization step thus makes tha sensed image easier to process. Normalisation was carried out using ths stored program "NORM.C" found in the attached Appendix. It will be appreciated that other, more sophisticated normalisation procedures known in the art may be applied.
For subsequent computations, the stored replicated label image ia rescalsd to create an image with equal horizontal and 5 vertical magnification. Again, this is an optional step, but it facilitates tha fast and accurate recovery of the encoded information . The resealing operation was performed to give the image a uniform horizontal and vertical sampling resolution of, for ex-5 ample, 150 pixels per inch, as usad in the illustrative static fixed focus embodiment of the invention.
The resealing operation occurs by computing the fractional row and column, addresses of samples at 1/150 inch, based upon th® known horizontal and vertical magnification. Each point 10 on tha new uniform rescaled image is then extracted from an appropriate sat of points on tha image replicated in the storage medium. Bilinear interpolation is used to approximate the value of points at fractional addresses. Th® resealing places the center of ths label at a known position in memory. The rescaled 3.5 image is stored for later use in th® searching step. All subsequent process steps then assume that a rescaled label image is centered on a known position on the grid, but it should be noted that this does not indicate the orientation of the label, which may still be skewed with respect to the sensor. The resealing 20 operation is carried out under t&e control of a stored subroutine found ia the source'code listings within the attached Appendix. (d) Two-Dimensional Clock Recovery The next sequsnc® of steps of tha process are referred to collectively a® * two-dimensional clock recovery." The steps; are performed by a suitable: stored program and subroutines entitled "CLOCK.C" 290/ depicted or Fig. 10, and found within tha attached- Appendix. This operation is _ performed is two dimensions on the; rescaled image to determine precisely the position of aaeh hexagon on ths original data array. Th'Ss purpose of clock recovery is to determine the sampling locations &nd to correct for the effects of warping, curling or tilting of the label, since the label may not b® perfectly flat. 3S This is an important part of the process and its application ia not limited to hexagonal encoded labels. It: may be applied to other processes for decoding an encoded label comprising a regular, two-dimensional grid, such as squares, triangles, etc.
'•One-dimensional clock recovery is a general concept 5 which ia wall understood in the signal processing field. Two dimensional clock recovery is an extension of that process and will be understood, upon reflection, by the skilled technician. 1'e will be understood that: the "clock recovery" term is somewhat confusing to the nonexpert:, since it do a a not relate to timing. (i) Edge Enhancement and Non-Linear Operation 'Ihe first step in accomplishing clock recovery may be performed by various non-linear mapping operations known in th® art rco create signal components at a specified clock frequency IS that ar® missing from the digitised image output from the optical sensor and image capture board. The purpose; of non-linear mapping is to take the (preferably) normalized and rescaled image which exists at this point in ths process and to form it into a two-dimensional non-linear map which enhances the transitions be-20 twees adjacent contrasting hexagons. In the preferred embodiment: of the present invention, this is done by standard deviation mapping. This step can also -be performed by filtering with an image differencing kernel, several means for which are known in the art, such as LaPlace or Sob®I kernels, and then an absolute value 25 is determined or squaring of the results is performed. These procedures s»ay be found i?>. the text Digital linage Processing, Rafael G. Ooassj&les aad Paul Mints, Addison Wesley, 1977.
In standard deviation mapping, the image with.undifferentiated cell-to-cell edges is stored ia memory. A standard 30 deviation ®ap is than created to locate the edges of adjacent contrasting hexagons by defcerjaiaisg the standard deviations of 3x3 groups of pixels (this ia different fresa the 3 cell x 3 call clusters), to determine the standard deviations of the pixel intensities. The standard deviation computations are performed 3S -to determine the regions of pixels having a fixed color (the lowest: standard deviations), representing the interior of a hexagon or the interface between two. like-colored hexagons, as opposed -to the groups of pixels having higher standard'deviations, which represent transitions from a hexagon of one color to an 5 adjacent hexagon of a contrasting color. "Because adjacent hexagons frequently have the same color, the standard deviation map will not completely outline every hexagon. Missing borders or edges between hexagons will result frosa the fact that the standard deviation mapping process cannot distinguish interfaces 10 between hexagons of the same color. Further aspects of the clock recovery process are intended to regenerate these missing transitions .
The decoding process of tha instant invention may be utilised for any of the previously described label embodiments, 15 as illustrated in the accompanying figures. Encoding units of various geometries may easily be accommodated and such optically encoded polygonal cells may be arrayed with the geometric centers of adjacent polygonal calls lying at the vertices of a. known, predetermined two-dimensional array.
When the optically readable labels of tha instant in vention are "read" with optical sensors of th® types described herein,, the particular geometry or shape of. the individual encoding units or polygonal cells is not determined by the optical sensor. Instead, the sensor simply samples the optically read-25 able label at a known nasnher 'of samples p«r inch sad records the intensity of the reflected light corresponding to the optical property of the particular sample area that has been imaged.
These values are then stored in a storage medium for later processing. In other words, the electro-optical sensor records 30 the average light intensity passspi® area-by-sample area across the entire label surface, regardless of whether or not anything is printed on the label. This is what is meant by storing the image with undiffarsatiated eell-to-call edges in memory.. For this reason ths decoding process ia readily adaptable to reading 35 optically readable labels of widely varying configurations, so long sa the centers of the polygonal encoding units lie at a predetermined spacing &ad direction on, & two-dimansional array.
In practice it has been found chat alterations of the S hexagonal encoding cell-based system, as in the case of the present invention employing polygons substantially in the shape of hexagons as illustrated in Fig. 15, result in negligible reduction of th© system's performance. Utilising polygonal shapes with poorer p&ekiag characteristics, or arrays of partially contiguous or 10 noncontiguous polygons rather than contiguous packing, will then result in a poorer, but nevertheless, us*ble system performance for msktirj application*. At seise point,, however, due to the optically unresoivabl-a high frequency components of lower order polygonal encoding cells, inefficient call packing sad prede t a miaed IS two-dimensional arrays resulting ia large .interstitial spaces between polygons, tha system performance will fall to an- unaccept-ably low information storages and retrieval capacity.
Tli® acceptability of the system depends on the quality of the sigu&l recovered by the electro-optical sossor. By alter-20 iag the sensing systes, as for example by increasing the auiaber 9 of samples per unit area across the label surface, one could improve the signal recorded by the sensor and improve the information storage and retrieval characteristics of such partially contiguous and noncontiguous label configurations.
Such adjustments, in order to make such less desirable label configurations usable, would be within the abilities of one of ordinary skill in th® art of electro-optica.
The process, therefore, allows a wide variability in terms of the label article, optical signal acquisition means and 'IQ signal processing. Polygonal cells, of either regular or irregular form may ba used as encoding units on the optically readable labels of the invention. Further, so long as the spacing and direction of the centers of the polygons are known in relation to adjacent polygonal cells, the polygonal encoding cells may lie on 15 a predetermined array, other than a hexagonal array, and the polygons may be arranged, contiguously, partially contiguously or even noncontiguously on the optically readable label.
As explained in greater detail below, the nonlinear snapping techniques,' specifically the standard deviation saapping 20 techniques disclosed herein in relation to th® preferred embodiment, facilitate reconstruction of the missing transitions or ■edges betwaaa polygonal cells of like optical properties. Moreover, th® same feature say ovurcome th® lack of transitions between polygons and interstitial spaces between polygons of like 25 optical properties. This ia th® situation when label configurations containing partially contiguous or noncontiguous polygons are utilised. This feature is accomplished through the following Fast Fourier Iraasforsaation, filtering and inverse Fast Fourier Transformation steps.
An optional technique utilised in ths preferred embod iment of the present invention reduces the computations needed to generate tha standard deviation map. Normally, to compute the sum of the nine pixels in each"3 x 3 pixel block, eight addition operations would be needed. This ©ay be cut in half by replacing 35 each pixel of the image with the sum of itself sad the pixels 6 0 immediately to its left and right. This requires two additions per pixel. Then, the same operation is performed on the new image, except the sum ia computed for pixels immediately above and below. This requires two more additions for a total of four.
It can he shown that, at the and of these steps, each pixel has been replaced by the sum of itself and its eight immediate neighbors.
Standard deviation mapping is the desired technique for crsating this map of hexagons corresponding to the original data 10 array but with missing transitions between original hexagons of th® same color. The specific standard deviation mapping techniques utilised in conjunction with the illustrative embodiment may b® found within the source code listings in th® attached Appendix. (ii) Windowing The nest subroutine, called windowing, is optional. Windowing was used in ths practice of the: invention to reduce tha intensity of borders which ar® not associated with hexagon outline®. 20 Thasa borders oceur at two locations: the target rings and the uncontrolled image surrounding the label. A weighting function .ia utilised to reduce tha intensity of these areas. The details of how to use windowing as a precursor to a Fast Fourier Transfotia is within the purview of the skilled artisan. Th® windowing pro™ 25 cedure utilised may h® found within the" source code listings contained in. the ■ attached.-; Appendix at page 1,2"J Unas 6 to 22.
A two-dim«msional Fast Fourier Transformation of the 30 digital values corr«ssponding to the (optionally) windowed standard d&wiaxion map is then performed under the control of a commercially-available stored, program la operation, a computer performs a Fast Fourier Transform e£ the image generated by the ■ prior step to yield a two-dimensional representation of the spae-35 ing, direction and intensity of the interfaces of contrasting 6 1 hexagons identified in ths standard deviation mapping step.
Simply stated, the Fast Fourier Transform is a measure of the spacing, direction and intensity of the edges between hexagons, where known. Thus, the regular spacing and directionality of the 5 hexagon boundaries will cause certain points in the transform domain to have a high energy level. The brightest point will be at 0,0 in the Transform plane corresponding to tha DC component in. the image. The six points surrounding the central point represent the spacing, direction and intensity of the edges between 10 hexagons.
It will be recognised by one skilled in the art that, as for hexagons, a two-dimensional representation of the spacing, direset:!on and intensity of the interfaces of contrasting polygons identified in the preceding standard deviation mapping step can IS also be computed by performing a East. Fourier Transform of th® digital data corresponding to the non-linearly mapped sensed label image. Thus, the spacing and directionality of the polygon borders will cause certain points in the transform domain to have high energy. Tins number of points of higher energy surrounding the center point, at th® 0,0 coordinate of the transform plana \ will depend on the geometry of the particular polygonal encoding call used to make the optically readable label. As for hexagons, however, such points surrounding tha central point will represent the spacing, direction and intensity of the edges between polygons 25 or ths edges between polygons and interstitial spaces if the label configuration is either partially contiguous or noncontiguous in nature.
Since ths image ia real (not complex) valued, the Transfers domain is point symmetric about the origin. Thus, only 30 a half plans of tha transform domain must be computed, thereby saving 3 First, 'high pass filtering is performed by zeroing all points within a predetermined circle around the origin of the Transform domain, but at a distance extending outward fro® the origin,' short of the sis prominent points arrayed ia the shape of a hexagon, in the graphic transfer® domain. These points corr.es-25 pa ad to spacings greater than, the hexagon spacings and thus carry information pertaining to the missing transitions in the Label isnsgc. To recreate miaaing transitions in thas label image, it is necessary to eliminate the information about the missing transitions ia the Fourier transform domain.
Next, all points outside! a certain radius -beyond the six prominent points in the Transform domain are zeroed. These correspond to spurious transitions that are spaced too close together. This operation combines with the first one to fona a ring of remaining points. Creating this ring is equivalent .to 35 performing spatial bandpass filtering. The inner and outer radii 8 3 of tha annulus are determined by the expected spacing of the hexagon outlines. Since the hexagon "diameter" is expected to be 5 pixels in the example being described, and for a transform length of 256 pixels, the hexagonal vertices in the Transform domain 5 should be 256/5 ~ 51.2 pixels away from the center. Accordingly, a ring with an inner radius of 45 pixels and an outer radius of 80 pixels corresponds to hexagon diameters of 3.2 to 5.69 pixels was used. A filter with a preference for passing higher frequencies was used because label deformations, such as warping and 10 tilting, cause image shrinkage.
After performing th® spatial bandpass filtering described above, an annulus with six prominent points exists, each point having equal angular spacing with respect to the center (0,0 point) of the transform domain. To complete the task of re-15 jacting undesired information in the Transform domain, a directional filtering step is esaployad. Any point at too great an angular distance from the prominent regions in the Transform domain is serosd. This haa the effect, in the image domain, of removing axiy edges that do not occur in one of the thrse direc-20 tions dictated by tha hexagonal honeycomb tiling pattern.
To perform directional filtering it is necessary to find the most prosiinant point remaining after spatial bandpass filtering. This paint is assumed to be one of th© six prominent points of the transform domain resembling the vertices of a hes-25 agon. Five other prominent points at the s&sie .radius from 'the canter and with angular spacing of multiples of 60 degrees ar® also evident in the transifona domain. Therefore, all other points with an angular distance of greater than 10 degress from any of these points are eslijain&ted. Six wedges of th® ring re-30- main. By this directional filtering step, any information of incorrect spacing or direction in the image domain is eliminated. Elimination of thia incorrectly spaced information enables the restoration of a complete outline of each hexagon in the image domain.
Th.® foregoing filtering steps are performed under the control of stored subroutines contained in th® source code listings within ths attached - Appendix.
Tha foregoing discussion of the filtration scheme employed for the preferred label embodiment comprising contiguously-arranged hexagons requires modification whan different predetermined two-dimensional arrays are utilised for tha optically 10 readable label. It will, nevertheless, b© appreciated by one skilled in the art that only slight modifications to the filtration schema ar© required to aeeomraodat® the different label configurations that have been previously described herein, and which are illustrated in ths accompanying drawings.
IS Oaca th® individual polygonal encoding cells are de cided upon, it is predetermined that their respective boundaries will have certain angular spacxngs, and a given number of sides of given length. " Next, it is necessary to determine the relationship of adjacent polygons, as for instance, whether they will ♦ be contiguous, partially contiguous or noncontiguous. Also, the geometric array upon which the geoaetric centers of the polygons will be arranged needs to be established. Since tha foregoing label geometry is predetermined a person ef ordinary skill in the art can construct the appropriate filtration scheme to filter the 25 energy points in tha transform domain, ®o that only tha brightest points corresponding to the appropriate spacing and direction of polygons boundaries is operated upon by the inverse Fast Fourier Transform subroutine.
Concerning the actual filters constructed, it will be 30 appreciated that it is necesa&ry to eons-cruet an appropriately dimensioned sapstial bandpass filter based upon tha predetermined spacing of the polygonal encoding cells. Then, it is desirable to construct & directional filter to filter out energy points ©5 other than the most prominent points corresponding to the axes of the predetermined two-dimensional array of the polygonal encoding cells. This eliminates any information concerning the incorrect spacing or direction of tha polygonal encoding cells in the image 5 domain and the interstitial spaces if present. By eliminating such incorrect information a complete array of the centers of the polygonal encoding cells can ba reconstructed in the image domain by means of inverse Fa:at Fourier Transformation in accordance with the process step described below. (v) Inverse Fast Fourier Transformation To actually return to tha image domain, thereby restoring the outline image of the contiguous hexagons of the data array, it ia desirable to perform a two-dimensional Inverse Fast Fourier 15 Transform (2D-IFFT) on the filtered transform domain data. Ths inverse transform is implemented by a standard two-dimensional Inverse Fourier Transform subroutine (R2DIFT) available in the 87FFT-2 package from Microway, Inc. of Kingston, Massachusetts. Upon completion of th® inverse Transform step, the outline of 20 every hexagon is restored in th® image domain. In the new image, the centers of the hexagons have high magnitude. The actual magnitude of the spots at th© hexagon centers is dependent on how many edges were ia its neighborhood. More edges create greater energy at allowed frequencies and hence high magnitude spots. 25 Fever edges give rise to lower assagai Hud® spots.. The magnitude of ths spots is a good measure of the confidence level in the clock restoration at any given point. (e) Major Axis Determination The hexagonal image has now been recreated but its orientation seeds to be determined.
The hexagonal honeycomb pattern of the invention has three "axes" spaced 60 degress apart. The direction of these ©»ss is established by the brightest points ia th® transform 35 ■ dosaain after spatial bandpass filtering. It is now possible to ascertain which of these three axes is the major axis. This step is optional. If whi3 step ia not performed, the label would have to ba decoded three times, using each of the three axes, with only on® axis yielding a meaningful massage. Ths major axis is arbitrarily chosen as the axis which runs parallel to tv/o sides S of the label as described hereinabove and depicted in Fig. 2.
If the boundaries of the square label are determined based on th© knowledge of the major axis, then most of the energy in th® restored hexagonal outline patxern will be inside this square'a boundaries.
To determine th® major axis, each of the three axes is assumed to be the major axis. Th© consequent square label outline is determined for each trial axis, and the total clock restoration pattern energy interior to that square is determined from the digital energy data output from the inverse transform subrou-15 tine. The correct trial is the oaa with the most energy. The angle of this major axis is then stored for the initialisation step and other searching operations. At this juncture, it is not yet know?, whether "the recorded angle is ia the correct direction or 180 degrees away from the correct direction. The source code 20 listing pertaining to tha determination of the major axis may be found in the attached Appendix. It will be appreciated that all three label areas do not need to be determined is toto. since ths energy ia th® areas common to all three squares doe a not, need %o ba determined. 23 (f) Ssacsmas A stored jasrogriiisa •sanitisd "S3ARCH.C* 3QQ», depicted oa E"lg, 10, cesahiares tha Transformed sad regenerated hexagon center infar^atioa with tha stared Intensity lev®la of the original inage so as to determine the gray level value of aaeh hexagon. The search is performed in such a way as to minimize tha chances of "getting lost1" while searching. The, end result is to obtain a matrix of the gray level value for each hexagon of the data array. The source code listings far "SEARCH.C" may be found within the 6? attached Appendix. Four important in formation arrays are constructed during ths first part of the SEARCH.C program. Tha array GVAL (clock valua) stores a measure of the quality of ths recovered clock signal for each hexagon, 5 while the array GVAL stores the grey lavel value (0-63) at tha center of each hexagon. The remaining arrays IVAL and JVAL store th® row and column locations of the center or each hexagon. (i) Initialization Steos From the major axis angle determined in step (e) and th® known spacing of the hexagons (5 pixels) in the example, tha expected horisontal and vertical displacements from the center of oss hexagon to ths canters of the surrounding six hexagons ar© computed.
IS Following these computations, ths SEARCH.C program operates on the clock recovery signal, retrieved from memory and ths rescaled label image, also retrieved from memory. The fundamental purpose of the initialization subroutine found in. the attached Appendix is to merge and condense the information from these two sources and to generate a data matrix providing the grey scale value for each hexagon.
The initialization step of the search is bounded by a square around th® label's center of about 1/3 of an inch on a 2S side. Within this area, a good starting point is tha point of highest magnitude ia the recovered clock signal array is found. Then, tha location of this starting point relative to ths center of the label is determined. This starting point is a.point where tha clock signal is strong aad distinct, and alao a point rela-30 tively issar the center of the label. A strong, distinct signal is desirsd to aasure that searching begins with a valid hexagon center, and it is desired that the point be near ths center of the label ®o that its absolute location can -be determined without serious influence from warping or tilting. The measure of the 6 8 quality of a point in the clock recovery pattern is the point's magnitude minus the magnitude of its eight surrounding points. Th« rectangular coordinates of tha starting point are converted to polar form, the polar coordinates are adjusted relative to the 5 previously determined major axis angle, and this result is converted back to rectangular form. These coordinates ar® scaled according to the expected row spacing (4.5 pixels) and coluran spacing (5 pixels) to arrive at the insertion position on the hexagon matrix. The clock quality, grey levels and locations 10 corresponding to the starting hexagon are then inserted in the respective arrays CVAL, GVAL, IVAL and JVAL. (ii) Main Search Looo Tha main search loop proceeds to locate the centers of IS the remaining hexagons. The loop terminates when the expected rassafoar of hexagons has been located. Tha order of the search for hexagon centers ia extremely important. The increased reliability of th® decoding process in the face of label degradations comes from the particular search technique employed, as described below. 20 Each iteration of the search loop begins by recalling the location of the highest magnitude clock recovery spot whose neighbors have not been searched for their strongest values.
From this known point, ths search will be extended one hexagon in each of six directions. The effect is to build up the search 25 pattern along a path, fsosa b«tt«;s to wr:« recovered clock quality. Thus, ir there is a weak area of recovered clock, e.g. at the label caster or an obliterated aria, the search algorithm skirt a around it rather than goiag through it. By outflanking these weak areas and saving the® for last, the probability of 30 getting lost os the grid ia greatly reduced. Since getting lost is just as bad as reading a gray level incorrectly, this characteristic of the search algorithm ia extremely powerful.
A subroutine fouad in the attached Appendix is responsible for searching the neighbours of the best quality clock value found in the main loop. Tha subroutine loops aij-t times, once for aaeh hexagonal neighbor of the hexagon then under consideration. First, the position of a neighbor is computed. If this neighbor is outside the label boundary, the loop 5 iteration terminates. If not, the neighbor is checked to see if it has already bees searched from another direction. Tha loop iteration will terminate if the neighbor has been searched, since the algorithm stakes earlier searches more reliable than later ones. If the neighbor gets beyond this test, tha expected po~ iq raitien of th® neighbor's center ia the clock recovery pattern is computed. At this point, a gradient search for the highest magnitude clock signal is performed. The aight pixels surrounding tha recovered position are searched to sas if a higher clock value is found.. If it is, then th® bast neighboring point has its eight 12 neighbors checked to see if an even better value is found. This gradient search provides a degre® of adaptation which is imperative if warped and tilted labels sre to be read. The subroutine then goes on to the next neighbor or returns when all neighbors have been checked. 2o A® mentioned above under step (d), as & result of the ds>ta transformation, processes, the reconstructed grid now carries information regarding the geometric centers of the polygonal encoding cells- This grid has mors energy in areas where more contrasting interfaces originally existed. The centers will lie 25 on ths predstarsain®d two-diinaaaianal arrmy having a predetermined nuabar of equally- or unequally-spaced axes, as the case smy be. The information concerning the spatial relationship of the axes of the predetermined two-dimensional array may desirably be used . in tha major axis orientation step. 3Q It will be appreciated,, however, that the algorithm could be appropriately modified to have the decoding process determine th© actual geometry of ths two-dimensional array ®nd from that determination proceed to determine the filtration scheme, the ao~c*lled major axip o£ the label (.1.. & the axis of 35 the two-dimensional array that is parallel to two sides of a 7 0 square optically readable label as discussed herein) and provide the necessary coordinates for the searching subroutine.
Whether ths geometry of the label is determined by such an optional step as described above or simply entered into the 5 decoding process through appropriate modifications to the two-dimensional clock recovery process, the variety of label configurations disclosed and discussed herein can be easily accommodated by one of ordinary skill in th® art. It will be appreciated that the number of ax©s upon which ths centers of the individual, 3.0 adjacent polygonal encoding cells are arrayed and their respective angular orientation, can be substituted in the major axis determination step for the three axes of tha hexagonal array of the preferred embodiment. Therefore the major axis of the predetermined two-dim Aa for the hexagonal array of. tSi® preferred embodiment, the information from the major axis determination step and the known spacing of polygons may be usad to compute ths expected horisoat&l &ad vertical displacements frosa the canter of one 20 polygon to th© centers of surrounding polygons. Following thes® computations and after making the necessary adjustments to the search subroutines, the search, including the initialisation step »nd mala search loop step can proceed for the particular label configuration that is being employed. If will be appreciated 2S that such minor adjustments to the search routine SEAHCH.C 300 in the appended source coda listings are within the abilities of a person of ordinary skill ia the art.
After th© subroutine completes, the currant. ceat.as location. iss marked so that it is not searched again. The affect is 3Q to dalate this position as a candidate for having its neighbors searched. For each loop iteration, fro® 0 to 6 n«w candidates ar® added and one candid&tot is deleted. An efficient implementation could use a data structure which keeps candidates in magnitude order as insert and delete operations are _performed. One 35 auch structure is called a priority queue (References The Design 7 1 and Analysis of Computer Algorithms. Aha, Hopcraft and Ullman, (Addison Wesley, 1974)). It is known that a linear search algorithm requires order n* operations whereas an efficiently implemented priority queue using a balanced tree or heap structure 5 requires order n log n operations. An order rx search algorithm based on bucket sorting could also be usad, if recovered clock values are scaled and reduced to a small range of integers. (g) Histogram Generation and Thresholding After the main, search loop terminates, the locations of the centers of all hexagons have been determined and the gray values of ths centers" of all hexagons, which have been stored, are completely filled in. Thus next step is to threshold the digitised grey level values in the range 0 - 63 to the discrete IS lovela of, for example* black, grey, and white (for a black, white and grey label) . This is dons by building a histogram of the label image intensity values frosa ths hexagon canters. Slicing levels can be determined by looking for dips in the histogram, Xi5,«3 specific subroutine utilized to construct the histogram and 20 determine the slicing levels may be found in tha appended source cods listings in the attached i Appendix at page 130, lines IS to 52 and page 131 lines 1 to IS. (h) Coarse Grid Correction and Final Orientation After thresholding to discrete levels, two distortions may still h® present. First, the array say ba off center. This can happen if the initial search step does not correctly determine the location of the beat quality clock signal relative to the label center. The second possibility is that the entire 30 label has effectively been read upside down since the siajor axis angle has an ambiguity of 180 degrees.
A stored subroutine found within the attached Appendix performs the function of detarsiiniitg whether the label is off canter. If 35 the label has been positioned correctly, the coordinates of the 72 center row should pass through tha center of the labal. To determine if a vertical positioning error has been made, rows above the hypothesized center row are checked to see vhieh would fona a line passing closest to the label center. If a row above or below 5 is closer than the hypothesised center row, -shea the appropriate shift up or down is made. If th® left justification of short rows has been performed incorrectly, this is adjusted by shifting short rows one position to the right.
Horizontal positioning errors and upside down reading 10 ar® checked using information embedded in the labsl known as coarse grid infonaation. The information is distributed in 3 cell x 3 cell clusters of hexagons as described hereinabove.
Since the label say be, for example, on a 33 row by 30 column grid, these clusters form a 11 by 10 grid. The bottom center IS hexagon of each complete 3 cell x 3 cell cluster has a special property which is provided during encoding. There is a guaranteed transition on either side of this hexagon, as previously described ia connection with Fig. 4. For example, if the bottom center hexagon is black, th® bottom left and bottom right hexagons must be either gray or white. A stored subroutine £012nd in the attached Appendix takes advantage of this transition position property to remove the fiaal two possible distortions. First an array Is created where each element of the array indicates whether a transitions took place between two horizontally adjacent hexagons. 25 Then ths array is checked for each of 9 hypothetical slides of the coarse grid arranged as a 3 x 3 pattern around the expected slide ef 0. One of these slides will show a better match between actual and expected transitions:, and this slid® position is retained. Next, the same hypothesis is, checked under the assump-30 tion that ths. label was read upside This will happen. if the major axiss angle actually pointed right to left in relation to he?*? the label was printed, rather than left to right.
If the label was simply inverted, i-e.. interchanged higher rows with lower rows and higher columns with lower col-35 umas, then the results of slidings should be inverted as well.
However, one important transformation must be performed to correctly invert the label. During reading the short (length 29) rows are left justified; thus, when the label is inverted these labels must be right justified. The adjustment is made, and it 5 is this procedure which will make the results of the slide hypotheses other than a simple inversion. In fact, the best result from the slide tests will be better than any previous test if the label was actually read upside down.
Having determined whether or not the label was read 10 upside down, sad whether there was any slide in the absolute positioning, the label matrix can now ba decoded. With correct determination of the im&gs and slide, the image processing functions are complete and the data decoding processes are started. 4. Decoding IS A stored program "HD.LABEL.CSi 182 on Fig. 9 found within the attached Appendix reads the file generated by the search program and generates a bit stream file with, in the preferred embodiment, 1292 bits. It uses a stored subroutine Call Dee„C 183 on Fig- 9 and contained in-the 20 attached Appendix to mask out unusable hexagons, and to apply decoding which is the inverse of the coding program.
The first step in. tha decoding process is to generate a bit stream from the hexagon infonaation," using a hexagon-to~bit mapping process which ia the reverse a£ the bit-to-hexagon map-__ pine process usad in the encoding operation- Hie bit (information) stream is then bifurcated by ths program into a high priority meaaagc bit stream and a low priority sasssage bit stre&sa or as raany bit streams aa are used in encoding the label. 3Q It is -then necessary to apply error correction- to each bit atreasa using tha error coding techniques which were used ia t±ie label encoding process. For example, if R«ed-Solomon coding is used, error correction on the bit stream generated by the 7 4 search program generates an output which is in tha sama tonaat as prsvioualy described for the encoding input file. Error correction may be performed ia tha following sequences (Reference: Theory and Pracfci ee of Erfar Control. Codes, described above. ) 1. Corapute syndromes 2. Corapute Error Locator Polynomial using Berlakamp-Massey Algorithm 3 . Corapute error locations .using Chi en search 4. Compute: error magnitudes using Forney's Algorithm Use last step is executed only if a correctable number of errors has been detected from steps 2 and 3. The number of errors detected are also cosaputed. If an. uncorrectable number of errors is detected or an error is located in the implied padding (des~ 15 cribed above), a flag is set. T&te specific error coding proce« dur® utilized in the illustrative example may be found in the attached Appendix and.is designated as ERRDEC.C 184 on Fig. 9. 0]AEBM£ By tracking th® package (by identifying its location on the conveyor) the high priority message, indicating tha sip cod® of the package destination, can be used to activate suitable routing arsaai or conveyors to route the package to the proper truck, 23 airplane, or package carrier to take the package to its destination.
Although the invention jaay b« ass used in ®i conveyor/ diver 1:ar system, it will ba apparent that it can to© used in a wide variety of information gathering, package handling and production operations in which it is desired to read a label on a 30 package, letter, part, machine or the like and causa a system to perform a package handling or manufacturing operation, for example, on the object bearing the label. Xbe invention allows these operations to occur with high speed, high accuracy, dealing with a substantial amount of label information and even proteet-3S ing much of that information from being lost due to label tears and the like. ry g With reference to Fig. 9, to alternatively display the decoded massage on a computer terminal, the-program TEXXOUT.C 185 may be employed. Program TEXTOTO.C may be found within the attached Appendix . 76 goto gctdp: } F class of serviiee '*/ gcscos pxiasff^aJExtter the Glass of Service (0 - 9. A - Z): ™); cos - gescfaQ; cos tocpperCcass); if CCcas < *A') ® (cos > *27)) if ((cos < "0") | (ess > *9*)) . ? \ priatfCAsSffl-yslid Class; of Service. Try atgaia'"); goto getcoss I priatfT'JfecVa^cos): if (cos 0) if Osj^tfc&asc&t - I] !-• OsSs) c psts&at(©); potcbsif "3c patsfcax(c); lp|nfciC--ciarcat] - 1 break; cxss 13: /* ester */ lpnfo(eteGat QxSf) hnssk; if (c — 0x5®} break; If (c < 0x20} ibnsadfc; Ipij^o{d!at3PCBit++] - c; break; eadlow: /* pack +Diff(4.6)+Diff(2,5); if (*pSort < 4) Rejectrl&s(ladcx] « Trase; if (*g>Sors <— 4) c priatfC\a%OLld "."pSort); for (I—3;i>-0;l-~) priatft%0 ■. 1 4 ) RejcctFlag{Xndex] - True; if (GssyCoua: — 4) if {Gr%y4G8%B-t < 10) {Gray4CouaM-KRejectFl2g[lBdcx] «■ True;) I if {RejecsHag{Indes}—True) (prbtf(*^RejectCoum++;) Biafi,pSc«r»+J++; 1 piriasfC^EsHasa&er of rejected codes %dT.RejectCoirat); /•generate histogram for ifcc sort radices */ KSsaagsaaaQ; priatfTAa\agray icvcl _TRUNqOJBINA»Y^_IWRnnE); wdse (eOeJLUXBTdELnsd^U^ wriK CsfeXU13H32jclsesfpj01BE32a c&sse(of33e)c ofSc - 0po<13exBii&3ar.0J9ra:0NLY|0MC3%EAT10wTRUNq0J3ZNARy^>_SVRrr£); writes (ofileXUTHToBjsiaednCLUTHre®)); write (ofibJLOTSS»^i^f|LOTi^23)|; 8 i ekmCofifc); ) static rat 2eNo1 JBisNa2) sat SsJNolJSitNoZ; c ha a; i - 3hVjd«c[BitNol] - BitValuc{BitNa2]; Errors a"i; ) ss&tie void His£ogr*aa() { 1st IJ.Mi^Co^t.RaaaungCoimt; float ScaleJScaledCoaai; /"rsad the scaling factor *J Max -> 0; for (J-O^KkNoBms^M-) if (Sinsl] > Mas) Max - Baap]fc RBsrasagCosaae - 0; Scsiic ■« LOj EC p*S« > S0| Scale - SQJO/Meb; for (5«^ i-ti £ S |r *"•>1 C^8 O » I 6° a 6* o a 8 & ft H. S II q » ft fs *'$•», V J fc*4 $u*£ f-jJ Q h tf 13 fcj o a ft 4 ff s r? I || «•- & g* fa u) m n ^ Oi O n US M ** -fc rc » WiS ys I go g' OS. p p p ip ' u u f* 'hi %.£ e £ £» $.-£• oa m ^ q® H li in |i &a&a » o.
I'-J %ie* i a ^ ■«5 * IX s a! I n ff -P-B p u c». H f-r I *'h S p ts < II w « t> _ * s u I? p 1 s iT*l! i? ii s 3 w f 0$ fi Cs US a b; & re lies e 2. o* g ft £3 K* O 0 s? a 01 g1 I- a. resigned cissx KsldJEIcX JEle2; C if ((Elel •—> 0) 1 (E3e2 •—fl)) rs'Dirs(O); retcsxi (L__JtadToE3e£FieSdJL__EkToIffiid(FlddIEk I ] + L_HleToInd(FicIdIEle2]]); > r ---—: nsssigsed cter GriavesB!av(FiddJDavidend,Di!vjsor) tsosigned char HeldJiMvidesdJD'ivlsor, I if ((DsvSdeod •— 0) 1 (Divisor «—<0)) retomOJX if CHsM — 0} ©£•¥250? « oS-L^HcToilEdirOICD'i^isorJ else Divisor - .255-L^EaeToIia<^I JDlvisorJ; rstsrss '(L^Jfc.tfTiaESeTrieMJL^EJeTelsdijrssHdlDsvidesdl 4- Divisor]); 8 5 *1 CD ffi ■S % * ft a m a fi a a P B n lis *»* s1 £>•■1 a r» n fi r« tS 8 C\ W */i BJ ■o 0 K* o 0 1 a a lis |r* R < g 1 < s *!r « s, 6* « cr a B | §.■0' J a •„.. S to J*,' Kb o g". •* I I er 0 n n CMM &-• ■a S ? S EL n Z, ° ?; |S e. R* S, o VJ.83 S'vT 03 ^ri" S.j I pi II g. 0 H a. 0 S S CO £ ft > £h L l»3 w ;i 63 3. a Sbsafiaaes;l++) C L__HelMEdSF3eIdl£| - ft for CJ'"c0yJ. ,J. ei. >i. a. til "f! lil'S If "" - o O ir K p o' n ki3 B ■2 6, tmiS r WITT1 k - kkl; WecdcdRows - JdnfoSyoabolsl; ) GPolyfOJ - I; for (i-l;2<-2*t^H-i-) GPoiy(i] - 0; r priatf("\a Geaerator Ftilycoaii&l for R__S Code; GF(%d) S-%d".a+l,t); priasffVa Coeffs. of x^O^s, ,„5r%d™„2*s): V for (i-"!yOy--) GPoIyfj] - (GPoly£HJ A GFMaEadEle(FieldJ,GPolyCj1)): GPolyfO] - GFMcIXad£le(Field.i.GPoSy(0]); ) /* pristfC\a "): for ■priattffSXa "VGPoIyOD: V /"Compose cbs geaerator xnatrix */ for (Row>-03&QW« 2*t) C QIadex - Degree - 2*^ /"Degree of the quotient*/ QCceff « DavadeadJDegreeE: /* priatfr\aDeg.%a Qiadex%o QCbeff%a\a\Degree,QIadex,QCoeff); */ for (Hfc*»-Z*«£4+) C ' ' (DmdteadgQIadex ^ GFMt2%FidkX.GI^yfx].QD)eff)): J /*New rogoaiadkr eaaapnted •/' wHIe (CDIvidea®—jDsgiseJ — 0) &&. (Degree >- 2*1)),*; 3/*3>egrca xedossd to fes lisaa th*£ of polynoaasaJ */ /* pris;a*f\aR0w w». %c\a",Rew); fcc (WCi<2*t3W-»-) prifeiJ\DSv5s5es<£a3); '7 /* Copy the rsssaiader to fee G-Maasix */ for (W53<2*S3++) If (Held — 0) GMatQfRowf IJ - Dra&std££ dbes GifctSl|Row|I| - IMvideadJaJ; |/* AS tows doae */ praeeECVa Geacaaesr Matrix for RJ5 Code: GF(%d) «-%d cosap*:£ed\a+l,t); ) /"Both fields doaas "/ OS ©File - 0pea(wRSJLUT".0_WR0KLY 10_CREAT| 0_TRUNC 10_BmAR Y3 J5WRHT); *rat^o]F31e.GM&t0^itzsof(GMat0)); write(oFiie,GM3tl ,»3»af(GMati )); Glose(aFile); "Z 3© 13 r-. 1/1 c-o ■a |Q .2 r-« > ^ o O a s I •3 ►-"J « cwis g.4 * E»3 J3 ,8 I !3 a * # r>} * I a ^l4| ., illl 'i 1 fill illl Liiil 111.1 b » % % t f. f 1: * f I S nf 1 I I 2 § 3 M o o fputc(*pCurrSym & 1 stream); ■*pCurr5yta } pCunSysa—r ) fc!oso(strcam); 1 r-———— ——————_ IxxitSLSO c iat sFSle; sFile - opca(-RS.LUT".0_3LDONLY | 0_BBNfARY); read(5KIc,GMat0^1zcof(GMat0)): rcad(IJr3e„GMaii ^£zoof(GMa?iI)): eIose(iHle): J 1—1—""w—ii—t—n—n—.i-n-wwwBwHwii»cii;i-tMigti"twi»t«iwnM;inMtn ErrCode(F5d!d^iwI>ata) csmigned ehss Held; EssagEsd c&ar ItowDat£f> C iat 2i^jotcCbaiitJLt.TwoT,CfcSyacifaoa^o: nasigacd char QUSyssbol; if (Held «— 3) c XnpotCoaac - klnfoSymbolsO; •$ - fecQ; l else c • EapssComs « klnfoSysnfooIsI; i-Ml: } TwaT - 2*s; for CC^y®l>osN#«0:GsSwsab'O!IH®-e2*cCkSira,iK9lNo+4*J c CftSysabe! -> 0~ fee (aMW<2ap«tCcmt3W-*) f If ( F i as I d - - ©| C k S y s b s 2 efas C^fsibei GrMeS(I .RawDataJtfrTwoTJ.GMatll ([SJCkSysaboENoJ); | /*C£seck sysabol carapBted*/ R*wEtoo|OcSysBi3o!No5 - OSyabofc }/* All c&s dbed syaabols fsaro fesca carapsased */ -2 I'fi oa ft B'n P. A © w t'lSB a. w ir if =s r-/ & s * ft * % % r r B" s* B' a a a a a ill!! i 8s »» T & U Oa P * v tr r % % % % B* Si' B' B* a a a a 13 (3 B a a a o. ft « a a r£ad($HleXTJTOrder,440); ctosc^lrik): r */ BltesC^Evgrt^ - 0; LoadHexMapQ; AvailableBtegfons - L«^8Legio®Map(jR£gaonMs|j); - for C€elNa^C^aNo<110;C^IIN»«^ C i - Cfe2IO?d«0;B^o«—} f foy(CoS-«0;GBJ<30;Col++) C sprites (BLqjstossMappfll^lCdB C case ft OsfiChar « *W*;bseak; case 1: QvSChzr « *G*;bstsak; ease > OstCEaar - "B^breafc; defaslfc OatOssr - *3C^ } fprfctf(srtseaa^"%c^,CtoCSsarX priaiEfif,%c"^OsiCihar5: ) fpraBtfCsnwam/Va"): Fris£LafesSflles,,RegiC'BA&p); prsntfCVkCd&sisK: dxttrifaseiois\^ for (l"t0;i-fkR,egaoBRows-I «. 0; RegaonMiapIkBLegkiissRiOws-SIl| « 2; fpr^sfCstderr/XsEBoisig hcxsgoss"); RegaoaRow - 0; f* do feagtfe 30 rs^s */ for (a -ft; I < 300; i «t- IS) {RegionCol - fit for 0 ™ ft: j < SCMt j +-« 10) C for (k - 0; k < 12; k+*) for CI - 0; I < 10c *«■) if — 1) fssapfi-rftlJ^IIOS - ReglffiaEo^ - RegaonCol; 1 • E«gioiAfeppl^ie)£^ciw]JK.egi©a03iI) - Q; RegSonCotH-; 1 RegsosaRow 4-. 2; 9 6 } RegioaRow - J; /* do Ifeagth 29 sows */ for (j $; 5 < 295; I +~ jg) {RegiossCol - 0; for (J - 5; j < 300 - 5; j 4- SO) t. for (fc - 0; k < 12; Sc++) for (I - 0; I < Id; 3-h-) If (hezpsfkJIJ — I) {iasp{2+l:|j4j)[0] - RcgioaRow; - RegionCol; 1 ReasoaMap{RegaoaaRowIReg3oftCoH3 - 0; RegaoaCoI-M-; I RegionRow ■*— > ) fpxmtf(safierr»"VeDosr^ finsler csxdcsTX for (tfcusta - Q*; tfaeta < 3.14159 / 2,4 tiaeta .©15) /*.005 worked*/ { c « c®s(sheta); s « sais(tfceta); for (r - 0; r < HaRaass; «+) C RaagGsSorGal - (r & 1); /*0 for wfefes. J for black *7 RiagWjdsh; ffifee Tmd& * RimgWidtb/2^ for (rl - ©4 rl < rwidtfa; rl ■*« *2} ( x ■» jS + (((r "SI* zwwM£$ rl) * c; ■ y - JS + (C(r -4)* rwktak) + rl) * s; pi - &soapC150+xIl5«k.yI0S: if (*pi <4asgk«Rw^I) EegisaMapfspII*(pI+l)] «■ 3; *pik«+.«- kRegioaiRows-l; *pl •« RIagCdarCol; > pi m if C*pl 0^dcSegioaKo«s-l^H) for 0—% j-gkfcRe^gottOo8s^f-aO) prntfC^Ud "J/10); ) /*_ — — 9 8 u UO^II CoJOffset - CdICor3; /* triad die num.bsr of allowed hexes '*/ AvailablcHcses « 0; for (ii-0y-<3;i++) forr^-Orj-cS'j-H-) if (RegiooMap(RowOffset + HColOffsct + j] <- 2) AvailableHexes+t; /*pri3£f('J available: %d",aAmUablcHexes): «/ BsaVadtac - 0; if (AvailabkHcses >~ 7) "" for (i-0;iiMHHMnnKMS * y if (A vailablcHcxcs «- 9) c for (1-j0;I<6°14+) { RswRow Ro-sOffseS + (2-1/3); RawCo! - CoJOffset 4- (J%3); RsgM>nMap[Rawltow2RawCol] - HexValue % 3; HtetYalnc - HcsValoe/3; } Reglo^Ma^EowOffteSlCoIOffsei+I] - HesValoc; Re$ia«M2p{Ro■« 7) C while (FixedHexes <7) RawRow - RcwOffses + (2-Cdliadex/3): Ra-wCoI - CoJOffset + (CeJUIndex%3); if (RegiooMapfRawRowgRawCol] <- 2) i RegiooMap{RawRow{R&v I) 1 0 0 Bin Value « (BiaData[Ind£S4-?] « 2) I (3iaData(Isdex-M-] « 1) | HexValuc - LUTBH32(Bia Value J; r priatff"l;aVsJ,!je.-%-d HesVaIuc% I) { raJodHexes «* 0; while (KxedKexss < 2) c RffsrSov -< StowOffset + (2-CdQQadex/3): RawGol - CoIOffses + (CelHsoicx%3); if (Regk>«i^ap{RawH1owJRawCcI] 2) C RcgionMa|JlRawRow]IRawCoilJ - {(3mData(indes++l) « 1): FlxedKexes++; ) CcIKcdex++; /* printfrVfiosOfftKd ColO£G%d dRo«c%d dCoL-%d% RowOffsst,Co!Of£sstvdRo«',dCol): */ 1 Bi«sOoB«esited+4j } ■ rersm (BiesOetoverged); } 101 I* Filename: ORDER.C " Author Boss&ld G. Chandler, FA Technology * Date: October 24, 198/ " Purpose: Generates the ORDER.LUT look up sable 191 * Modifications after November 15 release: "include * include #include sss£a() { static int ordeal IJ10J -{ 107, 38, *7. 86, 85, 84, S3, S2„ 81. 110, 89, 46, 45, <441,3 43, 42. 41. 40, 39, 106, 90, Hi, 22, , 21. 9, , 8, 19, 105, 91. 23, . 57. 56, 55. $4, 29, 7, 104, 92, 12, 58. 39„ 68, 67. 66. 53. 18, 103. 93. 24. 59, 70. **5 9 8 1* 72, 65, 52, 6, 102, 94, , 60, 61. 02, 63. 64, 51. 17. 101. 95. 26., 27, 47. 48, 49, 50, 28, , 100, 96, 9 « o 13. 2. 14, 3, . 4, 16, 99, 97„ 31, 32, 33. 34„ , 36, 37, 38. 98, 108, 73,, 74. 75. 76, 77, 78, 79, 80. 109 }; static iat ordcrlutjl I0J2J; int L X iat file; for (a - 0; I < II; a++) for U - 0; j < no: J-H-) tarderisiCostlerCsUi - 110] » i; • orderiatjordcrplij - III] - j: ) fSe - opeaCopSerJBr.O_WRONLY" j 0_CREAT | 0_TRUNC OJMNARYJSJWRITE): wei8e(fiIle.orderll«6,44IO); dtose{£rle); ) *2 102 /"Label.h "7 #deflnc kRcgioaRows 34 /"extra row for regioas fixed black and whise wdefioe kRcgioaCols 30 ffdefiae kNoBits 1292 JL © 3 iat LoadRegioaMsp(RegioaMap) la? RegiosMapf kRcgioaRows IptRegiosaCols]; { iat AvailableRcgioits; fpriacf(sftdcCT.^itfaad£&g regies isap"); ofik - mt:nC"c^iomJnr',Q_KDQWLY | O BINARY); i - nisd(oH,let,RegjossMap,^Regio0Ro,»s'i,kRegjooCo!s"2); closc(anie); fpmtf(stdoTAiiR^iibn'iasp bytes read:% 2} level - ©: •.swisch (level) & «se 0: level ■ ffi; break; case 2: sf C((i + j + It) % 5) — 0) level - I; else level - 0; bnak; f fcalf tceisg for 'gray bsxes"/ esse 2: SeveJ - I; feesssk; 3 byte - byfie * 2 + level; % A' lpI©tlr|teCbfte); ) 1 5 lcadgraphics(); lejcetO* } l£sis(res) iat res; C fprintf(bitmap/'%c*t%dR\27,jres): ) IgrapiucsQ C fpriatf(biimap,,"%c*rl A" J27); } !cject() C fpriatf(bisaauap,"%cF,J27); } £> kndgraohicsO c fprSatf(bi,iasap„*!%c*rS",J27); I Ip!o£byte(byte) easlgnsd tiaar byte; C pii3tc(bYte.ba£ZQap); > Hme{bytecoum) mt bytecotmt; f % fp7U£ef(bstmap,"%c*b%dWHt27,bycecouai); i 0 s r Filename: DTENTT.C * Author: Donald G. Chandler, PA Technology * Date: August I, 1987 * Purpose: Initializes she DT2803 mage capture board * * Modification after November 15 release: m ./ #iacfade #indude <\iaps\deasiEy2\dt2803Ji> malaQ F* program DUNXT iahiato the PT2803 by clearing It end then loading the BT28Q3 output color lookup able according so: 0 - €3 monochrome intensity values 0-63 64 - 127 red intensity 'raises 0-63 128 - 191 jsreen intensity values 0 - 63 192 - 255 blue intensity values 0-63 7 ( iat i j; 'oassgaed -char far *sp; f* check if DT28Q3 is pressss */ If «iap(DQnSTAT) & 0x70) I- OaSQ) ( fp*ratf(stderrH"\aA,tiere is so DT2803 installed at base 0x2E0\aw): zxk(l); } else priatfr\aDT2803 Is present at 0x2E(T); clr2803{); /'* sead the REAE» CONFIGURATKON command 7 wcozmb(3); , priatfrXsTiiis DT2S03 devise Id is %x"^rdataO); swipes CsndassQ) / 1 esse flc pRMS^VaTfe DT2803 device Is sot eanfigrared for insemapis'); break; case I: praafifTVa'nie 3DflT2803 device Is ceafigored for aattncrtspt ERQ2"); fecealq; case 2: pna£ff\fiT1k« DT2803 device 5s coafigtsred for iafierrept IRQ3™}; break; ease 3c pri3£fC*\aThe DT2S03 device is ooafigured for iasefrepss IRQ2 rnqs-); fesreaiq defante fpffi&£f(ssdcCTAi^TCS03 satesrupe coafsgaratioffl sot expected\n~); break; I ±07 pristf('"\a i, he DT2803 zs&zao'sy buffer bcgi&s sit %x".rdata() * 0x1000); F set ap color lootep sable 0 */ wcomaa(0xl9); /* scad write output lookup table command "/ wteta(0); /* ©atpm lookup able 0 */ for (I ■■ 0; i < 256; i++) c wdaca(i % 64); v«itch(i / 64) C case 0: wdata(63X break; ease 1: wdata{4§); break: case 2: wdata(s2); break: case 3: •wdamCS): fecaSq default; fprxBtf(stdesT.^U&expected case is dtinit\n"): cxit(l); break: ) } printfT\aIssuing SET INTERNAL TIMING mmmsMxT'): wco=sxn(0xl2): prfatf{"\nlssmng PZSFLAY ON c®3unaa«r): wcosbxo(0x20); f* write a test isse tbs video aaesaory and caeck It */ sp « QxaOQOOGOO; few (1 - 0; 1 < 240; *»•»■) for (j « 0; j < 256; j++) C •sp - j; if CspJ-J) C ffprsatflC"\nMeiaory esror la J7X2S03 video iseiaory Socstte %x\a",i): 1 sim: I /* sorssM exit */ priatf^nTessiag sad color itooksp table 9 ixutializatiou ©Dssplete\a"!); I 8 r 03 O *■< r Hlesasas: DTGRA3.C * Antbon DooaJd G. Chandler, FA Technology * Dais; Aragoss 1. 1987 (ft! * Modificatioas after November 15 release: 7 *iaclade *sacScde <\t^»\desisssy2\ /*' programs DTGRA3 grabs aa image *ad on the display */ ? wcoauc(Oxic); /* sdect isapat feok ;ep table */ /* aiiiBifoer 0 (mpust is range 0 - 63) */ wcous2u(0x13): /* set to external video synch */ wcsomra(Os22); f* execute acquire frame command */ <*Z 1 J 0 r Filename: DTSAVE.C "" Author: Dooald G. Chandler, FA Technology * Dase: Anglian 1Q„ 1987 Purpose: Saves the DT2803 istags caprare board lavage to a disk file IW " Modifications November 115 release: IV 7 compile with COMPACT sac-del • -(MCCC) •iacWe «®tdSoJs> ■^iadiade «eiadade «ftboe!ade •isciad® wjbclaade <\3ps\deasity2\dt2803.h> r EflfiSAVE sa«s as image file onto a disk * tkc image £3e format as jast 61440 consecutive bytes, an es^ct * repSica of the screen saeaaory 7 . cea£s U §6 o y fl Veil o s fJ n E<5 «■ . e VI i i aia | g 1 frill fiflfi t < c 'SI 6 V 3 ®- w,« o o*« ^>4 'a H .9 H < /* Fileaauae: NORM.C * Author: Dosald G. Cbsadler, PA Technology * Date: August 10, 1987 * Purpose: Normalizes iiS (SI jsc DT2303 screen * * Modifications after Novesaber 15 release: * mI *£aclade <5ffldi©Js> •ilaclisde «wnioJb» #5sclssde <\aps\deas:ty2\dt2E03i»' wsmMQ C static oasigmed char tar xajT240g256£ slade CTflagwcd ebar far saax) max - pixel: ST #ixe! < mis) assia - pixel; i II 3 ) f * aotssdizc centered bSock according so wax asid ssia values *'/ "S& « 255. /{!-<- (saax - snan}); for (i -i Sfc 1 < 10; w+) for 0 - 0; j < 16; J++) sssa'rs'sf ■*• ijoo! + j] «• (sa * (in(row 4- i^col ■+• j] - mis)) / 4; ) f* copy dam bask ao screen */ puEuare«s(out); I 1 4 r scad am the screea m/ printf(^aRsadiag xs the screen"); getscreea(isi); if (SAEeerld^odfilter)) C priatf("\nNo valid ccntcr foaad\n"); csitCl); Tfi j cs&rk(2mazJmax,GR££N); priasfCXsRcssallMg-X rescaieQ; patscrex2(oatX float £3ltez2d(tdfilfiexJlenJleiiJceiiterJcenter«iextcatJextent,color) float MeterpFIJEr^flrLBN^ iaj Sen. lesffl&er* jjceater, aexteat, jextcat, colors c sat i j. k. t ifitoat m&SL, jsas -• -JjsIO; fer (I « lossfsr - iextesE; s ac2x) C . etas - sses: issax - s; liiBSX « fe lV<« 1 > > priatff\aMax - %fjsaax); recasaCisaix): I Sal filssrldCodsaltsr) floax odf2tes(F£JE!N3; c set i, j, fc; i I 6 float sa&, sm.c*atb; sraooth - 0^ fer (a - 32; i < VHX - 32; I +- 2) f i£SErk(L32,GEEENX awrk(iLH?XX: - 32.GREEN); for 0 - 32: j < H?DC - 32: »++) C areas - O4 for (k • 0; k < FLEH; k+*) stsn odfilterfk] * infiU + k - FLEH / 2£ ssmooth « smooch * .95 + MS * sum * sssa; if (sznooth > 6.0) C if (filtcr2d(&tdf3lterf(FLEN - SLEN) / 2J(FLEN -SLEN) / 2j, SLEN,SLEN,ij.5v20,3L'JE) » 10.0) if (ffllter2d(tdfiltcr,FL.EN,FLEN,iinaxJmsLX^^RED) > 50.0) recsrs{0): ssaooth « 3.0; } n * 1 $ xcssr&(lX PFLEN) tdfiheriiXj] - 0^ else tdfUteqiJj] - (L - fracpos) * pfllterfipos] 4- " fracpos * pfiltcrflpos + 1J; > } Ts rcscsdsQ { float al, a2, bl, b2; static rat srow{220]; static 1st *,c©Ip20JL° ssatic float fr©wp2Q)jj; static float foa^220]* iat i, j; pixel; M ~ VMAG / 1504 al - Isaac: - bl * IIO4 b2 - HMAG / 150.; a2 - jmax - b2* 110.; for (1#■» 0; I < 220; i++) C frowflj « al; Irowpji w frawp]; ftwpj —•ieowjij fcofi] - a> icoUJa] « fcofij feolfi| — loolfij-al +- bl;. a2 «*•—> h2; 1 for (1 - 0: i < 220; *♦+) Cor 0 ■ G; j < 220; j++) f % pixel - lHtsip2d(fie''®TIJsfajly],KO'wfi),isol£l3); BSSBoricO + 10J * lS„pkeI>; oo«(l * I®JTj IS] » pixel; ? 6- } float 5Eterp2d(yf1^f,yajd) fleas xf, yf; iat xs, yt i 1 8 { f* biliaear mtsrp-afetioa in 2 dimensions for positive x, y "/ /* formula courtesy Go vied Shah */ rat iO, 51, iZ, 53; /* aeaghlxsnag points */ /* get she fcraur pixels of interest */ sO - 5sa|fyslxij; II - Esfyilx! + IJ; ■ £2 « iafyi ■* ijxs ■*• IJ;.. 53 - iaffi + ilxi]; /* rensra Sstc^wiased vafce */ sesum((flioat) (10 + (£1 - 10) * xf + (S3 - 10) * yf 4-00 - 21 + 12 - 13) " xf * yf)); ) *Z 1 1 B r Filename: CLOCK.C Author. Donald G. Chandler, PA Tschssology * Date: Ocxobcr 20, 1987 * Purpose: regenerates the bexagos clock from incomplete hexagon edge * Information w Modifications after November 15 release: * V •iaclKde #isaclaadc #defme MEMSEG OxaOOO *dsfias P! 3.1415926535 float huge reapSapSSJ; float huge 2.117425612381; extern void far fonrsus r2dfft(); extern void far foreran r2dift(); static long far fftrowarg » 8; static feag far ffccolsrg <« 8; static float far fftscslearg - L0; sialic teg fsr ffsdixnarg - 258; dowbJe Hlter25^); njaaa(argc»argv) iat argc; tihar *argvQ; C iat a. J: long ir« e, d2; .double asagSe; f Read M she hs&gs '*'/ get256(real); /* Fosna the standard deviation map */ sd256(rcadLatsx); pcs256{f«att f* 2-D FFT the wiadtowed siaadud deMm sap */ r2dfftD(re!^,^ft^w^,&ffEC0larg,^^teC3dearg^8fc£ftdaiBairg); /* Remove cosspooeat: of wroag fsaqwaacy or direction */ xsgle « fillter25$Cr£aS); /* provided by Micro way, lac */ /* use library sssslfftlib '"/ 12© /* Inverse 2-D FFT */ r2dift(real,&fftrowarg,&fftcolarg,&fftscalearg,^ftdimarg); f* Determine major axis */ major(rcaJ^angic); /* convert valleys so peaks */ for (I - 0; a < 256; i++).
Cor (j - 0; j < 256; j-h-) if (real[iX)] >-■ 0) realtfXi] - 0^ else reslpiljj - Hrealplj]; pmi2S6(rmil): sd256(&,b) /* This routine computes the standard deviation snap of a 256 s 256 array */ /'" Array a as the input, and output, array b as wsed as a temp */ /* This routine computes 3x3 window s.d."s using the separability trick */ float huge a(256X258]; float huge b(256|258]; C ant 3. j; /* square a into b */ for (S « 0; a < 256; i-H-) for (j - 0; j < 256; j++) tspu] - spin * mil /* do the sow sssxs for a asd b */ Cor (I 0; £ < 256; a-H-) for (j - J; j < 255: j++) C aC£30 - IJ 4- apKj] 4- aflWj 4- i> b(i|j - Ij 4- bpUl 4- Mali + i fm do the column sssas for a and b */ .for (i - 0; a < 254; i-H-} for (s - 1; j < 255; jh-*5 a[j - 2II] 4- aUJiJ + alfj + IJaJ brj - jjsj 4- btilaj + M3 * ijPJ: } /* sqsare a Saao itself '*/ for (1 - 0; i < 254; *h) for (jj - 6; j < 254; j-H-} splij *- 4mi f* compare sssadasrd deviation */ for (I - 254; I >— 0; I-—) '"Vfl* W* IJ -^(dota&Se) CC9. * Mi® - *PE1 / 72.)); 121 r zero oat the edges */ for (I « 0; 1 < 256: in-) a|jj[0] -• MIJ255] - rfOIi] - af253|i] « O4 } wiisdow256(reaJ) fio&S huge rea][256I25Sl; C iat i j; float s; /'*' perform radius based wiadowiag */ for (i - 1: a < 255; S++) for G - J: j < 255: J++) C r - sqri((dosbie) (J - 120) * (I - 120) + (j - 128) * G - 128)); If (r > 127.) realfilj] - O4 else if (r < 22.) rsal[s|j] *" G-J else if (r < 304 seal[iKi] *- (r - 22.) / 8: else seaVili] ■- S4 ~ .45 * cos(r * 2 * PI / 255); } 1 gct256{array} fleas Stage assayJ256525SJ: f \ 1st re®* col; essigaed ciaar far *sp: /* copy pixels from screes So mcm.azy mf sp « (wasagssed dbar far*) (OzlOOOOL * MEMSEG); for (tow - C; row < 240; row«f-t-) for (osl w 0; co8 < 25o; cohn-) sr?ay|r©wjiCQlJ ™ for (row m 249; row < 256: row++) for (eoi « ffc-cwl < 256,: 00I++) a£raff»wj[c^l] - §4 I poS256Carray) float huge ayrrayp56]E25S£ < iat row, at esssigaed saar far "spj float max, scafe; /* wasoscale */ asax - Sjc-30; for (row - O; row « 256; row**) for (eel - ft col < 256; c©3k-*$ 122 If (anray[ro^]|[eoI] > max) mas » amty{ro^IcoI> scale « 63.999 / max; /* espy so screen '*/ «p - (unsigned char fai*) (OxlOOOOL * MEMSEG): far (row -i 0; row < 256; nssw-H-) for (col »' 0; col < 256; col++) *sp++ "« scale * wray{r0w{colj; \ i pu&3&g256(coaiplex) float huge comp!ex[256X129J2t ! iat sasnow, row, col; assigned char far *sp; flb®£ assx, scsle; float r2; /*' atttoscale "/ isas: ™ Sx-IO; for (row « 0; tow < 256; t9W+) for (col * 0; eoi! < 123: col+r) if ((?2 ■« (complex^trevJcolJO] * complexCrowXcal]P] * cosoqpfcssfsowjcolll] * eomptesfaiowJcoSII])) > .mx) lasax «,r2; scads - 63399 / sqrtfasaax); /* e»py to screen */ ,*p (unsigned char far*} (OxlOOOOL * .MEMSEG): for (rarow « 0; jshww < 256; scdwh-) C row - (128 <* asow) % 256; for (col - 0; coi < 129; c©!++) if i sp <- (unsigned cfasr fas*} ((MEMSEG * OxlOOOOL) + ((long) aonqw « S) + col); *sp -.scale * -sqit(coiHsplex(?owI®sSIO] * ewplexJrowIcoHO] + .cosnpfcofinowKcoIIl] * MBBpte^[«swIcoEIlD; 1 1 1 doable Oteer256(caaptex) Hoax hnge eS'S,piexp5®I12S'I2> C iat S» ins, j, jij doable issgfe^, slope; dsefcte towO, highQ; dsefcfe SEowl, highl; doable ksw2, Kgs2: doable tzzsz doable r2; iat rsux. csax: 123 • r o M. ?slf ^>11 i 8 8 U ~ P in jr, •SP If ( f\' H ii £ ,13 « i M £sis % *stf •Q II SN 1 EE u j. + +■ «*| , , I S9 M to £S S tS *4 FS| '*=€ M _. 1S E K ® ® ® Jf « , + + + 3s J# S3 2r*? J 4 *5* I 4 BO s m ???1: *r CM c i - (256 * am) % 256; af 0) xtope - (doable) (ka) / (doable) 0). stes dope - I.elO; if {idgikO < i0«O) I if {((slops < fcswfl) <&& (sltopss > highO)) && ((slope < lewl) 1 (slope > bSgil)) && C($ISep«- <• tew2) 1 (slope » Hgb2))) csiapfesflUJO^ - ccsmptefilillj - O4 ■ else if (higal < Jowl) C if {({slops < low©) | (slope > fc£g&0)) && ((slope < towl) && (slope > high!)) &Jk {{slope < toiw2) I (sHope > Wgh2») conaplesJajjjXQJ " cosapfescJaljXl] - O4 | else H (!dgh2 < lsw2) c if CCPope < lowO) B (slope > high©)) ((slfepe < towl) | (slope > high!)) &&, ((slope < l(m2) && -(slope > &igh2))} cfimpIe^UXO] - eaaptaflljll] « O4 * else if (((slope < lowG) I (slope > aigaO)) £b& (($lepe < towl) 1 Csl©ps > hlgM)) && ((slope < tow2) | (slope > 6ag]h2))} coE^>les[a|jI03 » coaaplexpljll] « O4 Is d< paaaag256(conaples); re?an«{a3g!®^ I ss&josfosaiUsagle) Scat 'r 1x2) frta¥ljO| — 2js2; brtsik;} r scan fsr rightmost booxadaxy */ Cor fjl - 235; jjl x* x jtf—) if (KaIpJjS| > 1x2} (nad^Oi] —> 2x2; break;} far £|2 - je J2 «- jl; j2w-) C if Crsalplj2]> Sjs2) i^fi|j21 — srasa 4- fabsKdoable) rss^IjUZft; f* priaa^ni.aTria! %d a£ aagk %f has s®« « %r,triai,t£QgIersma); */ If (sb® > isaasEEs) C isaxiagle - f*sgls; I 1 pria^T 0; i < 35; •«+) Car G - 0: j < 32: j++) C If j> — 0) flag « 0; if-(cwallljl > saax) C jetax «* «x ■> i; JE33X - jfe 1 } if (fll&g} goto faJSgrid; c^aiTfesaxljsaiXi « -o^iaaaxgjnsaxj; /* pransfCV&On grid (ftaaxjmax) - (%d,%d) located at (%d,%d)", I /* jasert dtocfc, grey. and (SJ) vataes of «ay' aeighboss noc psevaotsly i&serted */ »BS5rt(iES3xJiaax); /* tesp •/ ®oee> loop; fnHgrafc fah%o$xs-Q£ priafSBiE^ coKsqgeiaO; SfisertCJ) is!£ i jfc < «tasa iat ipicsj®} - 129 static 1st oddjpkisfoj - (1.0,-1,-1,-1,0); static in* cveajplus{6] - {3,1,0,-1,0,1); iat pos; sat ip. jp; isg r, c iat rl. cS; mt ssas; iat s*earch, esesrdh^ ■ /*' xcxrehes x hexagons eeighbors */ r if (Ci * j) A 1) ^x(iml|i|j],,i'vaiJiij]„GREEN); else E^IvafjU]Jval[iXjyUED); */ ip - ivsaXCIXil; jp - jvaJftjjj: nark(ipJp,GB£EN); /* check for coadltioss which terminate iteration "'/ for (pos - 0; pos < 6; pos++) vt I ip - 1 + iplEsJposj: H* (1 & I) jp - j * oddjplusfpos}; else jp « j + cvenjplusfpos); if (Sp > 34) caatsaiss; If (Ip < ©) coatraEe; If Op > 31J coatiase; if Gp < 0) caatjsuDue: If (evaHspXjp] «- 0) C f* coasspuate expsctsd position of neighbor */ r « rpIiBisJpos] + ivalfijj]; c - cplesfposj /*' do first step of gradieat search */ rl - r; cl « c; snas « Qi r princft'VaStart search for pos « %d at (%d„%d) - %d"j)os»r,c,ck{rIcJ);*/ for (seudi ~ r - I; sseareh <« r + 1; rsearch++) for (cseaorda - c - 1; cseartih <« e + 1; csearch++) if (eScfrsearchScsearchT! > sax) C * ■ jjsax « ckjesearchJcsearchJ; rl - xsearsls; c2 - sssarda; ) /* do sscssd sssp of gradbess search */ r - rl; c i- cl; 1* pRntfT\pB«3« aep 1 for pos - %d is (%d,%d) - %d"jposjr,c.cicIrIcD:*/ for '(raeasca - rl - 1: rsssardi <- rl + I; ssearch-H-) for (cseadh - cl - I; cseasda <■ c! + 1; cseasdfrH) if (odfsseasdajcseaardb] > asax) c max - cl^rseardklcscarchj; 130 r I- xsearch; c - cssarch; } f pnatffV&Bess step 2 for pos « %d, grid(%-d,%d) is (%d,%d) « %d", poaMpJp^,c,ck(rIe]D; */ /* cqpdass cwsi, gvaj, iwal. sad jval */ evaflpPliPl -1+8* skfrfe] - (c&[r - lie - 1] + cfcjr - lie] + ck(r - IJc + 1) + cMj£c - 11 + ckjrje «• I] + ckj[r ljc - IJ + ck(r + JJeJ + ck(r +• He + >1): ivaJfipj^p] s; jvalgipljp] - c; gvslppljpj - greytrlc); £ussogxam() C iat 5. j; las scia, low, Mgk; static iat banj[64); /* crease grey Jewel histogram of-gwal carries */ for (1 " 0; I < 35; I++) for Cl 0; j < 32; ]■*■+) bsaSsr^XillH-; /* plot •/ for (i - 0; 1 < 64; *♦+) 1^0 M»Rl / 2; j4+) priotirT: /* determine slaciag fcveis */ ems - '-10000; fer (I - 10; £ < 32; -k+) if (hlslij < ah) f caa - bsajij; tew - i; I mm - 1000#; for (1 ■ 32; 1 < 54; t++) . If (IsiEflij < sssa) fe«rr*! « Mgifa * s; I /* afe */ for (i«fl|;i< 35; **♦) 1 3 i for (j - 0; j < 32; j++) if (gv&!jijj] «►» low) { sssrk(j^iM'llj]J'!ral4lIj35,GREEN); ffvaJfllfl - 0; 1 else if (g"vsiffl|jl taiga) { nxerk(lvsI(i]U]Jva]{i|j]^l£D); gvaJpIj] - 1: ) else c gvaltijj] - 2; ) prmttmtQ a \ iat L, j: static eissar ibg'^striagO ■" *BGW; prisSf(*\3\sgrsf "valcess"); fsr (j « 0; 1 < 35; w+) C peis£f(*\n%2«t"^X for (J « 0; j < 32; j+*) prIat£C%e ^bgwstriag^gvalTiliJj); S /* pnrisfffXaXm va3ncs"3c for (i ■ j < 35: J++) C prlntfT\s%2d^i); fc«r (j - 0: j < si J4+) prfatfC %3cTi'¥2jriSjj): pristfC\a\«j vaSoes"); for (I ■■ fci; 1 < 35; «+) ii? I priaifC*\sflfe2di*3J.}c for (| -< ft; j < 32: j*+) pestfC™ %3d", 1 */ ) doable tSwtac C iat i j. k, I: las sses isat msc, inauc, jpaax; docble fesaa,, f jsaax. naax* slrefi&saax; 132 int iscrt. jsest; F frnd SecKtlou of largest poibat aeax center "' / saax - 0; for (i - 96; I < S44; J-*-*-) for (j - I©4; j < 152^ j++) ff c soon ■ 0; -- ■ for (k - ~1; k <- l; k-n-) for i(i — —H: I "j™1 !"*-*•) if (k | 1) $ss — efc[i + kjj 1% else suaa •»-« S * ekfi *■ kjj ■*■ IJ If (30m > 232X) C max - saca; iu *)* rpfef4] - -fpfepfc epfc£![4j «- -cpies{!]t rptefSjJ - -splnspj qptasgS]« -cplaspj 1 3 3 coarssgridO { ia: s, j„ k. I; iaz saax, imax, jssax; iat asaiaa; is$ inverse; FILE ""taresra; static ciaar bgwfl « "3GW"; /* test for laltld row determination off by one either way */ fbcrowQ; /* geaerate left/right difference map for right side up read */ for (I - 0; I < 35; i-f+) for (J - 0; j < 31; j-H-) if (gvaqixn 1- g^rilj + 1]) - 1; else diffpjjjl « 0; MISlT- mi satvesac -1 0; for (5 « -1; I <- 1; s++) for 0 - -I; j <- J; J-h-) c soieb ™ 0; for (k - 1; k o- 3!; Se +- 3) fer (1*» 1; 1 <™ 28; 1 4*« 3) soon 4— dlfx[£ + kjy + IJ + diffjfl + kjj 4-It S]; 3&&X) c sscax - I; jsasatx - j; S3ax srasa; I prittt^saigfet side «p (1 j) - (%d,%d); sum - %d; max - %d;", Ij,jE.nx,sssx); } " j /* geaessss Bp side down grey valsse ^ap */ £©r (I »- 0; I «e 35; I-f+J £f (i & 1} for Cl - G; j < 32; j++) gvsdisv{34 - IJ3I - j| <-> gwlfiljlj; ©fas for CJ « 0; j < 31; j-H-) gfsli&i{34 - 1130 - j] - gvafptjjj: /* geararafie teffs/rig&f diffferoscc for apside down read "/ for CI — ft i < 35; **-»•) for Cl ■ ft j < 31; j++) If ^afev|I]0]j!- gwaisw|I]£J + I]) dlffpjjjl - 1; easag dKiPEj' — 0; fsr (a — -1; x o-' 1; i«*) 134 w w ftn% Mi : o t t 1 ' t | 1 i H*M* He W ;iiiisi: , 1 « • • p- #« wr* printf("\2aRow « %d; y - %Lf:" j,y): if (fab$(y - 120.) < aoin) C bcstrow - j; so.ia <-■ fabs(y - 120.)," i } iwjsl (bessrow) C case 16: for (I - 32; 5 >— Or, a—) if (s. &. 1) for (j - 32; j >- 1: j™-} gvaltf + 2Ii - IJ - gvalTiliJ; else for G - 0; j < 32; j~) gvaltfi + SUI - gvalfljQ]; break; case IS: for (a -« 2; 1 <~ 34; !•#+} If (a & 3) for 0 ■ 32; j »«-> J; j—) gvalp - m - I] - gvalpljt else for Q"C;j < 32; j++) gvafi — IjCIj g^SUl: case 17: piricatf(^®Fatai sr?o? ss fassow-); cs£«(3); 136 i I- f, III nil- e a n i forfCo«-0;Co?<3O.;Col-M-) { if (RcgioxxMapfRowJCol] <-?.) switch (U.ae{CoI]) ( esse *W: Re8ionMap{RowlCoq - (fcbreak; esse t?J: Reg«oaMap[RowXCoq - l;break; ease TP: RegionMap{Row|;Coq - 2;bmcak; default: RegioaMapfRowICol] - 3; * Ji' /* generate binary bit stress "*/ Bi£sCoavertcd -« 0; for (CsENo^CcUNG{a}t+; ca©vesnedt%d %d"J.3sssCo&vcrted): I prsxitfC^nBits d«»ded^r3xssCoiaverted); pdntfCVaBxsssibctioia: "5; for printf(,^fcdb%d streasa « fopesjC2rrDccJfa",'"wb"); for (i^rckNoBitp-s-O fpKtc(Bia3Da£alSl^tregaa); 133 rCelLDec.c Gcmssd Shah 10/26/87 Coavests 3 level dara for available hexes ia she jffldicaied 3x3 cell iaso fais&ry bite stored is so 3inDa(s biutream. Returns suesbsr of bits generated.
Routine called with pointer to a 3x3 celS ia RcgioaMzp, and isdes to the bissry bit stream; 3 le^el to binary conversion is dome usasag HexB»n.LUT generated by MkHesLUT.
Number of bis ?jsed is a. function of the ausber of hexes available In she ladieated cell (See Page 28 Sab book). mJ tieicchsde *aaclade #aascS»de «sys\stsiij2> «saelade #sadiKde •cEsdsajo ■*iacSsKJs -cgKil!ab.fc.> #aiacs®d!s . ^jswdade #fed!sd® <\s,ps\«§de\)iab«Lis> • si^.-yiw __ It!*)*? *W4U| MM im LtnHesBin£2S S7JJLUTHB23I9J; csacra lot E.egicalvlappcEeglosB.O'^sJCIcS.egsoaCelsJ; sstscnoi sat BisbatspSQOJ; laitCeSHDecO if? * sKSe « ope<13^iaJLUT",OJRJX>NLY|OJ8INARY): ■ read ^iSeXUTSe^ijajsi»sof(LUTKcatBia)); Fssnd CSKIeXUTSB23«^is!gofiJLUTHB23)}° dtosC&r^sfe , 1 ml OdIS««CIad!exXHIEsw„C3lICoI) /*R,eaass atusaber'isff fcfe gcacsrasod fuosa bexes"/ iax iadd^OsSQRow.CdCiCot; C Iat Eo«aiw«wii>iMWMMiiiii^H|.{ i-j1*' ^ If (Av&iliableHcxcs — 9) { HesVslue - RcgionMap{RowOffseXlColOffset-t-l J; for (s-5;i>-0:I—) . c RewRow « RowOffsct + (2-1/3): Ra,»CoI - ColQfisct •+• (i,%3); Hex Value - HexValue'"3 + RcgioaMa.p{RawRowjRawCol]; } BinValue « LUTHcxBmfHexValoeJ: r printf("\nHex Valus~ 1; \ Jf Index +-'11; BinDats(Index++] - ((RcgIo^MapplO'MOffset]5C0l0ff$e83 + 2 - RcgioaMapCRo'^OCfsetJColOffset-r 1 ]) % 3) & i; BiaDat2(Xndex++] « ((Reglo^Msp[Eo"j«»« 7} ( EexVaSse - 0; w«uac (FaxedHexes < 7} c RawRow - RowO£3Fses +• p 0; Wffllgss« I; wisBs (FIxedHexes < 2) f % RawRow «* RcrwOffses + (2~CelMdex/3); RzwGol - OoHOffset -r (CeHJndex%3): if (Region^qpJRawRow^RawOoI] <« 2) C KexVaStae — Hex Value ■*■ Wd^fRe^(«Map(R2wR(w|RawQ)It HxffidHexes-H-; Weigas •« 3; 1 Cdlladex-w; BIsYafee - LOTHB23[HffisVs?sel Bsa^taptodtes++] ■» (BinVatae » 2) Sc. 1; 3iaDaca{is!dcx++] « (BiaYalw: » 1) & S; BiaD^fflapwSeX'H'l « BiaVatoe & 0x1; AvaJMileHssces — 2; BissQanverted 4- 3; I /•Covers fee tasssasag sex, if at all "/ If (AvaulabldHbxes —I) C HxsdHsxes - 0; while (rSxedHexss < 1) c RswRow - RowOflfsee + p-OsMsdex/S): RawCsl « ColOff^s + (CeH13adex%3); if ^gfejaMart^wRowJRawCoSJ <- 2) I 14 1.
BiaDatz(Indcx++j - RcgionMapfRa's'Rov/gRavwCol] » FixcdKexes-M-; } Cslltodex-Hf-; } 3itsCoavcrted++; } return (BitsConvcrted);' } 14 2 f* ErrDcc.e Goviad Shah /28/H7 Program So decode for error correction Reads bit stress?- gcaer&Scd by RdLabel frosa file ERRDEC.IN; Output error corrected bitstre&xn into TEXTOUT.IN.
For error decoding algorithm. Re£P&gc 16-26 of Lab book. */ «piaelssdc -doJh> #inciude #melade #iaclside #mclude #include ^include #iiac!adc <\cps\c9de\gf Ja> exScrsa aasigssd dbar H ErrDec(0,RawDaca0); NoErrorsI - ErrDcc( 1 yRawDatal); printf(~\aHPM crrone%d LPM Errors: %dtaSnv,t^kt]+l}JLam&da(ktl+l ].Syn[2*kt] ♦! ],Hktl+1 J; ins TwoT.s.JurJxSsgCoBat^yaNo; ant nJ«ELPDcgree^oR©oes; wnsigncd dbar ReseiltJ^2*ac[ktIJ,Cfcaea^*ks2JJirrM^.EreNo: int SystfndexJLamfcMndcx; If (Head — 0) C c « ktO; a - iraO; TwoT - 2*kt0; MsgCount klnfoSyroboIsO TwoT; ) else C t « ktl; a « fcnl; TwoT -,2*kti; MsgCowac -« klnfoSymbotsS + TweT; ) r 7—~~~ — V f* CsspEie the sysoSsresses osing Hossiert &"iu>40 ' f S^a? « &5ya[££ fsr (SyaN© -> I^SyaNo <- TwoTE; SynN©++) C *SyaP-H-- Horse^asL,M:gCos3iLSfaMo); RawDataP -» RawData + Msgpema - 1; *SyaF - 0; for pi-®ri€tt~~) C Bp3 - Bp-It LacabdaTiJ - I BR)i- fi: 145 Lamb-da(0] « A|0J; } } /* display the state */ /* printfC"\n\nn%d Deiita.-%d L:%d",r,D«3te,L); printf("\n T:"*);. . „ for pristf ("%3b ",11a]): pria£f("\ss B:"); for printf ("%3u . prinsf(^BLainb«Sa:"): for (i«0;i<™t;i++) printf C%3u "Xambdaf!]); */ }/* Error Locator Polynomial computed */ /* prlatfQELsimMa:"); for printf C%3» "JLambda(i]); */ r *i /* Compute the degree of the EL? "/ HLPDegree « % wHIe ((LambdafELFDegree] — 0) && (ELFDegree > 0)) ELFDegree—: /*prmtf("\nELP ELFDsgrras%dw,EL?Dsgrcs): V if (ELPEtesgirse I- L) « /* printf("\nToo many errors (L « %d„ EL? ELPDegree « %d)"X»EL?Dcgrec); */ ELFDegree w t+1; } /* Find the ELP roots */ if ((ELPDcgreoO) && (ELPDegrec<-t)) { NoRoots - 0; for (Mp>0"jl—) f /* Check If Alpha*"# is a root of the ELF */ Resait - 0; for (j-,ELPI^gsiecy>-»(JU—) Eesfflls - GFMallsdHe(HsMXResalt} A LambdaU£ if (Resols •— 0) 3BirL€K|NoRootts++J - u-j; if '{Horaer{HeMXaislb±^LP]DesifeH.L2)-— 0) ErrLocINoRooa-H-J - s~ic '} /*AII SocaSaoa checked for fesisg roots*/ f* prictfTNa Detected %d looerjNWRoottk "/ if CNoEoess —« ELFPsgrcs) for (y-^sNoRoocsy-H*) I /* RawDatapErrLocOil 88 Osde; 146 prmtf ("%-d *,ErrL&c|j3); ./ } else ELFDegree - s-s-J; } /"■Correctable error locations found */ if (ELFDegree > i) return 99: f* Cbmpuzc error magnitudes (rcf. Lab Book Page 25) "/ /* Compose Osacga(^) */ for (i«0:iH-) C '■Das.e32.fij «« 0; Synlndcx ~ i+I; Lsmbdalndex - 0; while ((SyaXadcs > 0) Jbii (Lambdaladcx <- ELFDegree)) Osaeg2|i] GHvI«3(Fle!d,0SysifSy,^Isde.t—],LaiabdarLambdaIades4-4.]); } /•priatff^aOmega:"): for (5-0;I«(&<&L?Degree>H-) C LasabdapJ ««LsmbdaJS+lJ; .Lassfa-^sf-iH-il - 0: .J , for priatf f%3« "JLaabdlapJ); 7 f* Oiaapate the error nagniSKte wring Omcssa(XlA-B)/Lambda(XlA~l) */ for (En-No^EirNo - EnrLoctErrNoJ)), (j-Hojnacr(ricld.Laxabda^]LPDcgreejs ErrLoc^ErrNQ]))); RawDasatErrLodTErrNo]],A|- ErrMag^ .priatfC\nErxNortW Loc%d Mag."%02J2X Omcga(Xl-l)ftd Lassbda(Xl-i)^bd". EsrNoJErrLoc^nrNoJ^rMagJJ); *1 '■ J1* 4 t rccara (EUPDegros); "Z 147 Static Name Aliases TITLE : NAME ; Optimized bomsr horner.c Goviuad Shah SEGMENT BYTE PUBLIC "CODE" ENDS SEGMENT WQRJ3 PUBLIC "DATA* ENDS SEGMENT WORD PUBLIC 'CONST ENDS WORD PUBLIC *BSST JZ&Sc J2S7 _TEXT _TEXT JDATA JDATA CONST CONST _BSSSEGMENT _BSSENDS DGROU? GROUP CONST, _BSS, mDATA ASSUME CS: _THXT; DS: DGROUP. SS: DGROU?, ES; DGROUP EXTRN chkttlcNEAR EXTRN _lir6503YTE EXTRN JtTdEl-BYTE EXTRN EXTRN _EToIl:BYTE _TEXT SEGMENT ; lime 10 PUBLIC JSswner JKoraer FROC NEAR pest hp E2©¥ bp,sp saov ax,6 call dakstk pesfc #i «*i iw w i« ian nil * w w i*ti* * i*r ai; lac sa jsap SHORT SF144 Joop SHORT SF!44 jzap SHORT SF3I53 SI1S43; June 29 ■ ssb sisl SFI51: ; css0 p>p+8]^£ ;Coust ; jle SFB153 w " I Liac 30 ; Lias 31 crap WORD PTE rDp-2],0;Resmlt jwmmm cmp si.0 je $1155 Lias 32 --*•* mov teObp-2] Jesuit --*** ■ saov SbLBYIs FIR _ET©ll[bs] SOW bajBYIE PTR. _SrroII[sa3 ■ tt sab bih,ba add bxjbp*30] :Isde^ nrav zlJETTE PTR JTIoElphx] sab »»»«fe dec di' ss®v cSjda+lJ sab sc&„efa xor .ax,CK aw Ujdi*!] sab bhjbh xor ax,bx jmp SHORT SL20002 SI 155: dteo 'di mm safe ajbuab SLMmXt .._***• rop-2X3jc tResoIt saov sJy&x Liae 34 #u|RV>j*BiAMafeiyi^ipi^i#Ai«oiRi##a|o iss si 1 5 0- ; jmp SHORT SF15! Joop SHORT SF151 SFBI53: ; Line 35 ;—**** Jnov ax^bp-Z] ;Rcsult saov as^si ;Res&U pop si pop di leave net _Honser END? _JEXT ENDS END *Z u sill u » 1 ■■ * * * « 8fN J> Jf O M JJ SJ « U ■g °q T3 -o *D =0 "O T3 a a a 3 a ss a gs UU u ouu IS u .9 if.11 .S .9 .9 .9 .9 * * * # f ft ft ft u u u ill if E.v 1/« a a a gi 1^' 60 " «ici: J3 O O O U o 3 *a "3 -a 1?||| p'i.&lil i-iiti k*i t» u « Ift - Ippsek[3 * i + 2J A 0x3f; eharcnt +- 4; } /* print the LPM characters */ printf("\n\n\x Ibfl m'"); for (I - 0; S < LPCHAKS; 1-H-) C c - IplafcpJ if (c < 0x20) c 0x40; if (q «-> 0x5®) else pstcaar(c); ) printf("\a\zroEm"); /* asmdl© tic repeated HPM das is she LFM message */ ssparazeQt priafifl^aRqsHMKsd data k LPM Is as foSSo^"); zip « 0c for (a - LPSHifMS - 1; I >- LPSYMS - HFCOPY; 3—) sip « (zap * 256.) + IppackflJ doznpOdip); sqpasateQ; separate© C prsofif( "\a-—■— 3 i IP§81- f| It Mlt■ ■ m.S- ll\>n tr§ *' Bi?§ 81 6- b >?

Claims (9)

1. An optically readable article storing encoded information comprising a multiplicity of information-encoded polygons having the same shape and more than six sides, said polygons having one 5 of at least two different optical properties, characterised in that the said polygons are arranged with the geometric centres of adjacent polygons lying at the vertices of a predetermined two-dimensional grid, and in that each polygon is substantially in the shape of a hexagon. 10
2. An article according to claim 1, characterised in that the grid is a hexagonal array.
3. An article according to claim 2, characterised in that the hexagonal array has three axes spaced SO degrees apart.
4. An article according to claim 1, characterised in that the 15 said optical properties are the colours black, white and grey.
5. An article according to claim 1, characterised in that the polygons are irregular polygons.
6. An article according to claim 1 or 2, characterised by further comprising an acquisition target in the form of a 20 plurality of Concentric Rings (372,373,374,375,37s) occupying an area on said article separate from the area occupied by said information-encoded polygons, each Concentric Ring having one of at least two different optical properties in alternating sequence.
7. An article according to claim 6, characterised in that the 25 Concentric Rings are centrally located on said article. 155
8. An article according to any preceding claim, characterised in that the polygons (340) are totally cont iguous.
9. An optically readable article storing encoded information, substantially as herein described with reference to the accompanying drawings. F. R. KELLY & CO., AGENTS FOR THE APPLICANTS. 1 s s
IE960903A 1988-04-08 1989-04-07 Polygonal information encoding article IE80888B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US07/178,600 US4874936A (en) 1988-04-08 1988-04-08 Hexagonal, information encoding article, process and system
US07/330,111 US4896029A (en) 1988-04-08 1989-03-31 Polygonal information encoding article, process and system
IE112689A IE75212B1 (en) 1988-04-08 1989-04-07 Polygonal information decoding process and apparatus

Publications (2)

Publication Number Publication Date
IE960903L true IE960903L (en) 1989-10-08
IE80888B1 IE80888B1 (en) 1999-05-19

Family

ID=27270354

Family Applications (1)

Application Number Title Priority Date Filing Date
IE960903A IE80888B1 (en) 1988-04-08 1989-04-07 Polygonal information encoding article

Country Status (1)

Country Link
IE (1) IE80888B1 (en)

Also Published As

Publication number Publication date
IE80888B1 (en) 1999-05-19

Similar Documents

Publication Publication Date Title
EP0573129B1 (en) Polygonal information encoding article
US4998010A (en) Polygonal information encoding article, process and system
EP0336769B1 (en) Hexagonal information encoding article, process and system
US5223701A (en) System method and apparatus using multiple resolution machine readable symbols
US5153418A (en) Multiple resolution machine readable symbols
EP0484132B1 (en) Multiple resolution machine readable symbols
US6685095B2 (en) Apparatus and method for decoding damaged optical codes
KR890002473B1 (en) Character discirminating method
IE960903L (en) Polygonal information encoding article, process and system
RU2081453C1 (en) Scanning device which reads and decodes label and label to be read by said device
DK175743B1 (en) Polygonal information encoding article, process and system - optically scans data array of information encoded polygons to retrieve information
JPH0431436B2 (en)
NZ260173A (en) Optically readable label with information encoded polygons: optical and computer system for decoding
JP2710280B2 (en) Optical character reader
JPS6278685A (en) Optical character reader
JPS5878270A (en) Optical character reader
JP2000155800A (en) Optical information reader and storage medium
JPS594064B2 (en) character reading device
JPH0198091A (en) Character positioning system

Legal Events

Date Code Title Description
MK9A Patent expired