Abstract:
In an optical scanner, an optical scanner optically scans a bar code to obtain signal strength of light reflected from black bars and white bars of the bar code, an extracting unit extracts edge data, which includes a plurality of edges and the signal strength of which changes corresponding to a change from a black bar to a white bar and vice versa, an edge-emphasizing unit that emphasizes edge data of an edge that satisfies a predetermined condition, a ternary judgment unit that makes a ternary judgment of each edge based on the edge emphasized to obtain a ternarizing result, and a decoder that decodes bar-code characters from the ternarizing result.

Description:
BACKGROUND OF THE INVENTION  
         [0001]    1) Field of the Invention  
           [0002]    The present invention relates to a bar-code reader, a method of reading a bar code, and a computer program for reading a bar code efficiently and accurately.  
           [0003]    2) Description of the Related Art  
           [0004]    The bar-code system is well known in the field of products distribution. In this system, a product is provided with a bar code in advance and when the product is held up to a bar-code reader (bar-code scanner), the bar code of the product is read. By reading the bar code of a product, information of the product such as product price, product name etc. is obtained and recorded in a register.  
           [0005]    Concretely, in the bar-code unit, the following series of processes is performed.  
           [0006]    (1) A bar code is formed by an array of width information of black bars and white bars. A light beam is irradiated on the bar code, and light reflected from the bar code is received. An electric signal, having amplitude corresponding to an optical power of the reflected light, is generated.  
           [0007]    (2) From the change in the amplitude of the electric signal, boundary signals (edge signals) of boundary from a white bar to a black bar and of boundary from a black bar to white bar are extracted.  
           [0008]    (3) Distance between the edge signals extracted is measured as a bar-width counting value using a clock that has a resolution power from tens to hundreds of times of the bar width.  
           [0009]    (4) From the bar-width counting value measured, the width of each bar that forms the bar code is measured and a ratio of widths of the white bars and black bars is calculated.  
           [0010]    Thus, in the conventional bar-code reader, if the light reflected from the bar code has sufficient optical power and large amplitude, the ratio of widths of the white bars and the black bars can be known accurately. Consequently, the product information obtained with the help of the bar code is more accurate.  
           [0011]    However, there are practical problems in operating a bar-code reader. For instance, if the light reflected from the bar code is insufficient, an error occurs in reading widths of bars of the bar code.  
           [0012]    Sometimes black bars become thicker than desired, particularly, due to spreading of ink when the bar code is printed. Amplitude of reflected light declines due to the presence of a thick black bar or a thick white bar. This results in a misjudgment of a bar being a part of a white bar in spite of being a part of a black bar, and vice versa.  
           [0013]    To describe this concretely, as illustrated in FIG. 3, diameter of a light beam  31  that is irradiated on a bar code is originally set to be smaller that a basic distance between bars (see (a) in FIG. 3). This enables to acquire substantial reflected light, thereby acquiring sufficient value of an edge signal. However, if there is a thick black bar (see (b) in FIG. 3) or a thick white bar, substantial reflected light is not acquired. Therefore, sufficient value of the edge signal is not acquired. This results in errors in reading the white and black bars of the bar code.  
           [0014]    Moreover, if the distance between a reading surface of a bar-code reader and a bar code is large, the scanning speed of the light beam becomes relatively faster than the speed when the distance is less and the diameter of the light beam becomes greater than the basic distance between bars. This also results in an inability to acquire substantial reflected light, thereby leading to errors in reading the white and black bars of the bar code.  
           [0015]    Japanese Patent Application Laid-open Publication No. H7-234913 discloses a technology to compensate the change in a level of a signal received, due to thickness of a black bar or a white bar, by applying an HPF (high pass filter) to an output of light that is received by a light receiving unit and that is reflected from a bar code. However, the disclosure is related only to an absorption of the change in a level of a signal received and does not prevent decline in an accuracy of reading that is caused due to problems such as a thick black bar etc.  
         SUMMARY OF THE INVENTION  
         [0016]    It is an object of the present invention to solve at least the problems in the conventional technology.  
           [0017]    A bar-code reader according to one aspect of the present invention includes an optical scanner that optically scans a bar code to obtain signal strength of light reflected from black bars and white bars of the bar code; an extracting unit that extracts edge data, which includes a plurality of edges and the signal strength of which changes corresponding to a change from a black bar to a white bar and vice versa; an edge-emphasizing unit that emphasizes edge data of an edge that satisfies a predetermined condition; a ternary judgment unit that makes a ternary judgment of each edge based on the edge emphasized to obtain a ternarizing result; and a decoder that decodes bar-code characters from the ternarizing result.  
           [0018]    A method of reading a bar code according to still another aspect of the present invention includes optically scanning a bar code to obtain signal strength of light reflected from black and white bars of the bar code; extracting edge data, which includes a plurality of edges and the signal strength of which changes corresponding to a change from a black bar to a white bar and vice versa; emphasizing an edge from the edge data; making a ternary judgment for each edge based on the edge emphasized to obtain a ternarizing result; and decoding bar-code characters from the ternarizing result.  
           [0019]    A computer program according to still another aspect of the present invention makes it possible to realize the method according to the above aspect on a computer.  
           [0020]    The other objects, features, and advantages of the present invention are specifically set forth in or will become apparent from the following detailed descriptions of the invention when read in conjunction with the accompanying drawings.  
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0021]    [0021]FIG. 1 is a block diagram of a bar-code reader according to an embodiment of the present invention;  
         [0022]    [0022]FIG. 2A is a waveform output from an extractor, FIG. 2B is a waveform output from an narrow-band differential processor, FIG. 2C is a waveform output from a module-point extractor, and FIG. 2D is a waveform output from an edge-emphasizing processor;  
         [0023]    [0023]FIG. 3 is to explain a black bar that is thicker than desired;  
         [0024]    [0024]FIG. 4 is a flow chart of a process executed by a reading processor;  
         [0025]    [0025]FIG. 5 is a block diagram of a transversal filter;  
         [0026]    [0026]FIG. 6 is an example of tap coefficients;  
         [0027]    [0027]FIG. 7 is a waveform of an edge in a case of a thick black bar; and  
         [0028]    [0028]FIG. 8 is an example of calculation in the transversal filter. 
     
    
     DETAILED DESCRIPTION  
       [0029]    Exemplary embodiments of a bar-code reader, a method, and a computer program relating to reading a bar-code according to the present invention are explained in detail below with reference to the accompanying diagrams.  
         [0030]    [0030]FIG. 1 is a block diagram of the bar-code reader according to an embodiment of the present invention. This bar-code reader includes an optical scanner  2 , an analog processor  3 , an AD converter  4 , and a reading processor  5 .  
         [0031]    The optical scanner  2  includes a laser diode (LD)  2   a  and a polygon mirror  2   b . The LD  2   a  emits a light beam. A mirror that reflects the light beam emitted from the LD  2   a  forms the polygon mirror  2   b . The direction of reflection of the light beam is changed by rotating the polygon mirror  2   b  using a motor (not shown in the diagram). Thus, the polygon mirror  2   b  provides a plurality of scanning patterns. Using the optical scanner  2 , the light beam emitted from the LD  2   a  is radiated, due to the rotation of the polygon mirror  2   b , on a bar code  1  that is held on a reading surface. The light beam is irradiated in a direction from a to b in the diagram.  
         [0032]    A light receiving section of the analog processor  3  receives light reflected from the bar code  1 . The analog processor  3  performs opto-electric conversion of the light received and converts it to an electric signal. The amplitude of this electric signal depends on the intensity of the light. The analog processor  3  then amplifies the signal according to the requirement. The AD converter  4  performs digital sampling of the opto-electrical signal amplified by the analog processor  3 , and outputs it as a digital signal.  
         [0033]    The reading processor  5  specifies bar-code characters based on the digital signal that is received from the AD converter  4  and outputs the signal. The reading processor  5  includes an extractor  5   a , a narrow-band differential processor  5   b , a module-frequency extractor  5   c , a module-point extractor  5   d , a module-timing extractor  5   e , an edge-emphasizing processor  5   f , an EQL processor  5   g , a ternary judgment section  5   h , and a bar-code demodulator  5   i.    
         [0034]    The extractor  5   a  extracts, from the opto-electrical signal, only a signal that is apparently a bar code signal, to reduce the load of processing in the latter part. Concretely, the opto-electrical signal is in the form of a wave with time on the vertical axis and amplitude on the horizontal axis. Therefore, the extractor  5   a  extracts a part of the waveform as illustrated in FIG. 2A.  
         [0035]    The module-frequency extractor  5   c  extracts a module-frequency that is equivalent to a basic module of a bar code signal. The narrow-band differential processor  5   b  performs the narrow-band differentiation of the opto-electrical signal based on the module-frequency. Therefore, the narrow-band differential processor  5   b  extracts a waveform of an edge as illustrated in FIG. 2B. Concretely, when a black bar in the bar code  1  is followed by a white bar, a plus (positive) edge is developed and when a white bar in the bar code  1  is followed by a black bar, a minus (negative) edge is developed.  
         [0036]    The module-timing extractor  5   e  extracts timing for extracting a module point, based on the module-frequency extracted by the module-frequency extractor  5   c . The module-point extractor  5   d  extracts a module point according to the timing that is extracted by the module-timing extractor  5   e  as illustrated in FIG. 2C.  
         [0037]    The edge-emphasizing processor  5   f  is a processor peculiar to the present invention and emphasizes amplitude of a module point that fulfils a predetermined condition, among module points that are extracted by the module-point extractor  5   d . The edge-emphasizing processor  5   f  outputs edge-emphasizing output as illustrated in FIG. 2D. The edge-emphasizing processor  5   f  emphasizes amplitude of a module point when a thick black bar or a thick white bar that forms the bar code  1  is detected.  
         [0038]    The reason for performing the edge emphasizing is as follows. A module point has a positive amplitude that changes from a black bar to a white bar of the bar code  1  or a negative amplitude that changes from a white bar to a black bar. In spite of the module point having the positive amplitude or the negative amplitude, the amplitude of the module point decreases due to practical problems like a thick black bar developed due to spreading of ink during printing of a bar code. Edge emphasizing is performed to prevent a case that is not regarded as an edge that changes from a black bar to a white bar or an edge that changes from a white bar to a black bar.  
         [0039]    Concretely, in a case of a thick black bar or a thick white bar of the bar code  1  a beam diameter  31  is smaller than the basic width of a black bar or a white bar (see (a) in FIG. 3). Therefore, substantial amplitude of the signal subjected to opto-electric conversion is acquired and also the amplitude of the module point increases. However, if there is a thick black bar in the bar code  1 , the diameter of the beam becomes greater than the basic width of a black bar or a white bar (see (b) in FIG. 3). Therefore, substantial amplitude of the signal subjected to opto-electric conversion is not acquired and the amplitude of the module point decreases. A similar phenomenon occurs when there is a thick white bar. Therefore, when a thick black bar or a thick white bar is identified, the edge-emphasizing process is performed. In this process, the edge is shifted by the amount of excessive width of a black or a white bar. Thus, by checking the position of the edge it can be judged whether there is a thick black bar or a thick white bar.  
         [0040]    The EQL processor  5   g  automatically equalizes the amplitude of a module point that has undergone edge emphasizing and a module point that has not undergone edge emphasizing. The ternary judgment section  5   h  makes a judgment of whether each module point is a ‘1’ or a ‘0’ or a ‘−1’ using the amplitude of the module point equalized by the EQL processor  5   g . A module point that has a value ‘1’ denotes an edge that is changed from a black bar to a white bar, a module point that has a value ‘0’ denotes an edge that is changed from a white bar to a black bar, and a module point that has a value ‘−1’ denotes an edge without any change (in other words ‘a case of no change’).  
         [0041]    The bar-code demodulator  5   i  specifies the combination of black bars and white bars that forms the bar code  1  and outputs bar-code characters corresponding to the specified combination.  
         [0042]    [0042]FIG. 4 is a flow chart of the process executed by the reading processor  5 . First, the extractor  5   a  extracts, from the signal that is subjected to opto-electric conversion, a part that is apparently a bar-code signal (step S 101 ).  
         [0043]    Then, the narrow-band differential processor  5   b  performs narrow-band differentiation of the signal using the module frequency that is extracted by the module-frequency extractor  5   c  and extracts a waveform of an edge from the signal extracted by the extractor  5   a  (step S 102 ). Moreover, the module-point extractor  5   d  extracts a module point from a waveform of an edge by using the module-timing that is extracted by the module-timing extractor  5   e  (step S 103 ).  
         [0044]    Thus, when a module point is extracted from the waveform of an edge, the edge-emphasizing processor  5   f  detects a thick black bar or a thick white bar, then emphasizes the edge of the corresponding part, and increases the amplitude of the module point (step S 104  and S 105 ).  
         [0045]    Then, the EQL processor  5   g  performs automatic equalization (step S 106 ). Based on the result of the automatic equalization, the ternary judgment section  5   h  makes a judgment of whether the module point is a ‘1’ or a ‘0’ or a ‘−1’ (step S 107 ). Using this judgment, the bar-code demodulator  5   i  demodulates the signal to obtain bar-code characters (step S 108 ).  
         [0046]    Following is a concrete description of the edge-emphasizing processor  5   f  with reference to FIG. 5 to FIG. 8. A transversal filter that has five delays is considered here.  
         [0047]    [0047]FIG. 5 is a block diagram of a transversal filter. The transversal filter is a digital filter in which setting a tap coefficient can set filter characteristics. The transversal filter includes five delays (T), five multiplying units, five tap coefficients (C 1  to C 5 ), and a summing unit (Σ). By passing the amplitude of the module point of the edge waveform through the transversal filter, an output signal (Y 1 , Y 2 , . . . ) that depends on the value of a coefficient (shown in a formula below) can be acquired. The tap coefficients (C 1  to C 5 ) of the transversal filter are assigned while considering a relationship with the thickness. For convenience of description, as illustrated in FIG. 6, the tap coefficients C 1  and C 5  are assumed to be 0, the tap coefficients C 2  and C 4  are assumed to be −0.5, and the tap coefficient C 3  is assumed to be 1.  
         
       Yn=ΣCiXn−i  
     
         [0048]    where Y is the output signal, C is a tap coefficient, X is a delay signal, and n and i are suffixes.  
         [0049]    A case in which the amplitude of the module point is applied to the transversal filter is examined concretely. FIG. 7 illustrates a waveform of an edge in a case of a thick black bar. The amplitude of module points A 1  to A 5  is decreased as compared to the adjacent amplitudes. The decrease in the amplitude is caused by the presence of a thick black bar.  
         [0050]    If we assume that the amplitude of the module point A 1  is 0.04254, the amplitude of the module point A 2  is −0.05176, the amplitude of the module point A 3  is 0.04260, the amplitude of the module point A 4  is −0.04767, and the amplitude of the point A 5  is 0.04688, these amplitude values are set in the delays X 1  to X 5  of the transversal filter as shown in FIG. 8.  
         [0051]    Therefore, according to the calculation formula Y 3 =X 1 ·C 1 +X 2 ·C 2 +X 3 ·C 3 +X 4 ·C 4 +X 5 ·C 5 , Y 3 = 0 . 092315 . Since the output Y 3  is an output corresponding to X 3 , it can be seen that the amplitude is increased as compared to the original amplitude of 0.4260.  
         [0052]    Thus, by using the transversal filter, the edge-emphasizing can be performed to increase the amplitude of the module points having their amplitude decreased due to a thick black bar or a thick white bar. When the excessive width is less than a threshold value  1  or when the amplitude of X 3  is less than a threshold value  2 , the tap coefficients C 1 , C 2 , C 4 , and C 5  are assumed to be 0 and the tap coefficient C 3  is assumed to be 1. When the excessive width is more than the threshold value  1  and the amplitude of X 3  is more than the predetermined threshold value  2 , the tap coefficients that are shown in FIG. 6 may be used. Moreover, by changing the tap coefficients dynamically, in accordance with the thick black bar or a thick white bar, the emphasizing characteristics that emphasize the amplitude of the edge can be changed.  
         [0053]    Thus, in this embodiment, the extractor  5   a  extracts, from the signal that is subjected to opto-electric conversion, a part that is apparently a bar-code signal. The narrow-band differential processor  5   b  performs narrow-band differentiation using the module frequency and forms the edge waveform. Further the module-point extractor  5   d  extracts the module point from the edge waveform. Then, the edge-emphasizing processor  5   f  detects a thick black bar or a thick white bar and emphasizes the edge of the corresponding part, thereby increasing the amplitude of the module point. Due to such structure, even in a case of a thick black bar or a thick white bar, the amplitude of the corresponding part can be emphasized.  
         [0054]    In this embodiment, the edge is emphasized when there is a thick black bar or a thick white bar. However, when an edge that has amplitude greater than the predetermined threshold value is detected, the amplitude of the edge can be emphasized. In this case, in the transversal filter in FIG. 5, if the amplitude of X 3  is less than the predetermined threshold value, the tap coefficients C 1 , C 2 , C 4 , and C 5  are assumed to be 0 and the tap coefficient C 3  is assumed to be 1. And if the amplitude of X 3  is not less than the predetermined threshold value, the tap coefficients that are shown in FIG. 6 may be used.  
         [0055]    Moreover, if an edge for which the frequency of the module is more than the predetermined threshold value is detected, the amplitude of the edge that is included in this module can be emphasized. In this case, in the transversal filter in FIG. 5, when the module frequency is less than the threshold value  1  or when the amplitude of X 3  is less than the predetermined threshold value  2 , the tap coefficients C 1 , C 2 , C 4 , and C 5  are assumed to be 0 and the tap coefficient C 3  is assumed to be 1. When the frequency of the module is not less than the threshold value  1  and the amplitude of X 3  is not less than the threshold value, the tap coefficients that are shown in FIG. 6 may be used. By changing the tap coefficients dynamically, in accordance with the thick black bar and the thick white bar, the emphasizing characteristics that emphasize the amplitude of the edge included in the module can be changed.  
         [0056]    Moreover, in this embodiment, a case of using an optical system that irradiates a bar code by a light beam to acquire reflected light is described. However, the present invention is not restricted to this case only and can also be applied similarly for a case of using an optical system in which extraneous light such as a charged coupled device (CCD) is used.  
         [0057]    Furthermore, while realizing the bar-code reader by a computer program, each section (processor) in the reading processor  5  illustrated in FIG. 1 may be stored in a read only memory (ROM) as a program and each program may be executed by a central processing unit (CPU).  
         [0058]    Thus, the present invention provides a bar-code reader, a method of reading a bar code, and a computer program for realizing the method according to the present invention on a computer that enables efficient and accurate reading of a bar code.  
         [0059]    Although the invention has been described with respect to a specific embodiment for a complete and clear disclosure, the appended claims are not to be thus limited but are to be construed as embodying all modifications and alternative constructions that may occur to one skilled in the art which fairly fall within the basic teaching herein set forth.