1. Field of the Invention
The present invention relates to a CCD-based bar code scanning system. In particular, the present invention relates to a CCD-based bar code scanning system that provides a plurality of different scan patterns from stored bar code return data from one or more CCD cameras.
2. Description of the Related Art
Bar codes are used in a wide variety of applications for retrieving information, such as price, from objects. In this respect, bar code scanners are of widespread use in grocery stores and department stores, for both inventory control and for point-of-sale (POS) transactions.
A bar code normally includes several bar code characters. A bar code character is a group of lines (bars) and spacings that represent a single number or letter. A bar code symbol is a collection of several bar code characters which represent an identification of a particular object. The lines of the bar code can vary, for example, in a range from about 1/8" to 1" in height, and from about 1 to 50 mils in thickness. The spacings between the lines of the bar code symbol may be of various widths, with the variations in the spacing being one indication of the type of bar code characters making up the bar code symbol.
Typically, bar codes are read by a bar code scanner by illuminating the bars and spacings in a sequential manner, with the bars absorbing light and the background spacings reflecting light. This results in a pattern of reflections and nonreflections that is sensed by a light detecting circuit resident in the bar code scanner. The light detecting circuit provides an input to a digital processor, which interprets this input into a digital word.
A bar code label may be read by a scanner that detects reflected and/or refracted light from the bars and spaces that comprise the bar code characters. One conventional method of illuminating the bar code label is by the use of a scanning laser beam, in which case a beam of light sweeps across the bar code label, and an optical detector (such as a photo-diode detector) detects the reflected light. The detector generates an electrical signal having an amplitude determined by the intensity of the collected light.
Another conventional method for collecting return light from the bar code label is by the use of an array (commonly known as a charge-coupled device or CCD) of optical detectors connected to an analog shift register. In such a method, as with a scanning laser, an electrical signal is generated having an amplitude determined by the intensity of the collected light. In either the scanning laser method or the CCD method, the amplitude of the electrical signal has one level for dark bars and another level for light spaces. As the bar code label is scanned, positive-going and negative-going transitions in the electrical signal occur, signifying transitions between bars and spaces. Techniques are known for detecting edges of bars and spaces by detecting the transitions of the electrical signal. One such technique is described in U.S. Pat. No. 5,382,783, issued to Edward Bremer, assigned to PSC Inc., incorporated in its entirety herein by reference. U.S. Pat. No. 5,298,728, issued to Randy Elliott et al. assigned to Spectra-Physics Scanning Systems (now PSC Scanning, Inc.). Techniques are also known for determining the widths of bars and spaces based on the relative location of the detected edges and decoding the information represented by the bar code.
In order to scan a bar code, the bar coded items may be moved manually in front of the scanner or automatically on a moving conveyor belt. Alternatively, the scanner may be held by an operator and directed at a bar code. Some bar code labels may be "truncated" (that is, have short bars relative to the length of the label). Conventional scanning devices require careful operation to attain a high probability of a successful read and are difficult to use with truncated labels because of the difficulty of attaining proper orientation of the bar code label with respect to the scanner. Randomly oriented items on a conveyor belt must have very long bars relative to the length of the code in order to have a high probability of being read.
Handheld single line scanners, either laser or CCD-based, require that an operator aim and orient the scanner relative to the bar code so that the scan line is substantially perpendicular to the bar code edges. Such operation requires some care on the part of the operator and reduces productivity. Furthermore, these devices are sensitive to label defects, as detection of bar and space edges is typically done along a single narrow scan line. To maximize the productivity of the operator, minimize stresses due to repetitive motions of the operator's body, and minimize sensitivity to label defects, it is therefore desirable to read bar codes that may be positioned at any orientation relative to the scanning device.
Conventional POS scanning systems typically require an operator to handle each item (or handle a portable scanner) in order to orient the item to the scanner for scanning. A conveyor belt system may be used to reduce the amount of effort required. Current conveyor systems, however, have difficulty scanning items that have bar code labels on the bottom surface of objects on the conveyor. Consequently, the operator must position the item so the bar code label is not facing the top surface of the conveyor, or must take each item from a feed conveyor, scan it, and place it on a takeaway conveyor. Conventional systems generally do not allow scanning of all surfaces of the packages, requiring the operator to position the packages so the bar code is on the surfaces that can be scanned.
Various methods have been used to attempt to read a bar code label at any orientation to the scanner in a minimum number of passes. Thus, multi-line or complex-pattern laser scanners exist that can read bar codes over a range of orientations. In general, these devices utilize pattern-forming mirrors or holographic beam deflection elements, and are hence larger than other scanners and require more components as the scan pattern complexity increases. These scanners typically require a complex mechanism to sweep the laser beam in a predetermined pattern and therefore require additional and costly mechanical parts, increasing proneness to wear.
In another type of conventional scanner, a two-dimensional array of CCD elements is used to obtain an entire image of the bar code at one time. However, the drawback of these devices is that large amounts of memory are needed to store the image to be processed, and large amounts of computation are needed to extract the edge location data from the stored image. Further, complicated algorithms are necessary to determine the orientation and characteristics of the bar code label. U.S. Pat. No. 5,446,271, issued to Gerald Cherry et al., and assigned to Spectra-Physics Corporation (now PSC Scanning, Inc.), discloses a technique for creating a plurality of virtual scan lines based on stored image data from a two-dimensional or one-dimensional CCD camera. In this system, an optical sensor has a planar imaging region, which may correspond to an imaging region of a two-dimensional CCD camera, or which may correspond to a one-dimensional CCD camera with the second dimension created by raster input due to relative motion of the optical sensor with respect to a bar code label.
An exemplary bar code that may be scanned by the system as disclosed in U.S. Pat. No. 5,446,271 is shown in FIG. 1, where the bar code label 11 may be comprised of one or more smaller pieces 21 that are the minimum size necessary for decoding (i.e., minimum decodable pieces). A minimum decodable piece 21 of bar code label 11 has a height H.sub.L and a width W.sub.L. When scanned, the bar code label 11 may not necessarily be oriented to the optical sensor at a perfectly flat angle, but may be inclined at an angle A.sub.L with respect to the optical sensor, as shown in FIG. 2. The result may be that the projection of the image of the bar code label 11 (or a minimum decodable piece 21 thereof) is distorted when it hits the imaging region 13. The projection 20 of the label or piece image has a height H (the "apparent height") and a width W (the "apparent width"). If the relative dimensions H.sub.L and W.sub.L of the minimum decodable piece are known, and the angle of inclination A.sub.L is also known, the size of the projection 20 onto the imaging region 13 may be determined. U.S. Pat. No. 5,446,271 describes in detail the manner of determining the size of the projection 20. For example, universal product codes (UPC codes) are "over square" codes, in which the height of the bars in each piece of the code is greater than the width of the piece of the code.
The bar code label 11 also has a minimum element width W.sub.E of the bar and space elements comprising the label 11. The minimum apparent bar code element width W.sub.MIN, which affects the preferred characteristics of the imaging region 13, may be derived from the minimum bar code element width W.sub.E, as described in U.S. Pat. No. 5,446,271. The Cherry patent states that "ten or more pixels per element would be desirable in a UPC code reader."
In the system described in U.S. Pat. No. 5,446,271, when a CCD-based reader reads a particular region that it covers, only values from certain elements in the CCD array are stored in a memory, for later processing to determine if reflections from a bar code have been received. For example, FIG. 3A shows how horizontal scan lines are created, with only the "*" pixels being stored in a memory, and FIG. 3B shows how diagonal scan lines are created, with only the "*" pixels being stored in the memory. By this system, a plurality of different scan lines may be created and stored in the memory (see FIG. 4), with one of those scan lines (hopefully) properly oriented so as to read a bar code that may be positioned in any particular orientation with respect to the laser scanning device and the CCD-based reader. Cherry also discloses an image acquisition unit positioned to receive return light from an object on a conveyor as that object passes over a gap between a first belt and a second belt. The image acquisition unit is positioned in the gap, beneath the belts.
While the above-described Cherry patent is very useful in detecting bar codes at any particular angle, there are still issues with respect to memory size and CCD-based array size that could be improved upon, as well as orientation of the CCD-based reader itself with respect to a bar code being scanned.