Patent Publication Number: US-6912320-B2

Title: Data decompressing method, data decompressing unit, and computer-readable storage medium storing data decompressing program

Description:
BACKGROUND OF THE INVENTION 
   1) Field of the Invention 
   The present invention relates to a technique for decoding and decompressing compressed data obtained, for example, by modified-modified READ (MMR) coding (where READ is an acronym for relative element address designate). 
   2) Description of the Related Art 
   Still images, such as text images, etc., which are dealt with by a facsimile apparatus are basically images expressed with two levels, a white level and a black level. The still images are constructed of binary image data. In the binary text images to be dealt with by a facsimile apparatus, consecutive white pixels or black pixels often appear. 
   Hence, for a large quantity of binary image data, a data compression process is performed by coding consecutive white or black pixels at a place where they change to a black or white pixel, using MMR coding. 
     FIG. 27  schematically shows a general data compressing unit for carrying out such a data compression process by MMR coding. 
   As shown in the figure, the input side of the data compressing unit  1  is connected with an uncompressed data storage section  2 , while the output side is connected to a compressed data storage section  3 . 
   The data compressing unit  1  is constructed of an input buffer  4 , a compressing section  5 , an output buffer  6 , and a reference table holding section  7 . 
   The uncompressed data storage section  2  stores, for example, binary image data (uncompressed data; data to be compressed) read for document transmission. The compressed data storage section  3  stores image data (compressed data) coded by the data compressing unit  1 . 
   In the compression process within the data compressing unit  1 , binary image data sampled at 8 bits per 1 mm, for example, are input to the input buffer  4  and sent to the compressing section  5 . The compressing section  5  refers to the modified Huffman (MH) code table or modified READ (MR) code table held in the reference table holding section  7 , and codes the input image data. The coded data (compressed data) are sent to the output buffer  6  and stored in the compressed data storage section  3 . 
   Now, the process of coding and compressing binary image data will be described with reference to  FIGS. 28  to  31  and Table 1 (two-dimensional code table). Table 1 is stored as an MR code table in the reference table holding section  7 . 
   
     
       
         
             
             
             
             
           
             
               TABLE 1 
             
             
                 
             
             
               Mode 
               Pixel to be coded 
               Symbol 
               Code 
             
             
                 
             
           
          
             
                 
             
          
         
         
             
             
             
             
          
             
               Pass 
               b1, b2 
               P 
               0001 
             
             
               Horizontal 
               A0, a1, a2 
               H 
               001 + M(a0a1) + M(a1a2) 
             
          
         
         
             
             
             
             
             
          
             
               Vertical 
               a1 just 
               a1b1 = 0 
               V(0) 
               1 
             
             
                 
               under b1 
             
             
                 
               a1 to the 
               a1b1 = 1 
               Vr(1) 
               011 
             
             
                 
               right of b1 
               a1b1 = 2 
               Vr(2) 
               000011 
             
             
                 
                 
               a1b1 = 3 
               Vr(3) 
               0000011 
             
             
                 
               a1 to the 
               a1b1 = 1 
               V1(1) 
               010 
             
             
                 
               left of b1 
               a1b1 = 2 
               V1(2) 
               000010 
             
             
                 
                 
               a1b1 = 3 
               V1(3) 
               0000010 
             
             
                 
             
          
         
       
     
   
     FIGS. 28  to  31  schematically show the bit sequence of the binary image data input from the uncompressed data storage section  2  to the input buffer  4 , a single square denoting a single 1-bit pixel. A white square denotes a white pixel and a shaded square denotes a black pixel. The top line is the reference line, while the bottom line is the coding line. The reference line is the immediately prior image data bits, coded and transmitted from the output buffer  6  to the compressed data storage section  4 . The coding line is the current image data bits input from the uncompressed data storage section  2  to the input buffer  4 . 
   In MMR coding, a change in the color of a pixel on the coding line is judged from left to right in  FIGS. 28  to  31 . When a change from a white pixel to a black pixel is made, the position of the black pixel (color-changed pixel) is coded and the distance between the position of the black pixel and the position of a color-changed pixel on the reference line is coded. Similarly, when a change from a black pixel to a while pixel is made, the position of the white pixel (color-changed pixel) is coded and the distance between the position of the white pixel and the position of a color-changed pixel on the reference line is coded. Therefore, there is a need to detect the positions of color-changed pixels a 0 , a 1 , and a 2  on the coding line and the positions of color-changed pixels b 1  and b 2  on the reference line. The color-changed pixel refers to a pixel that differs in color from its left neighbor on the same scanning line. 
   In the coding line, a 0  is a pixel designated as a start color-changed pixel, a 1  is the first color-changed pixel which is to the right of the start color-changed pixel a 0 , and a 2  is the first color-changed pixel which is to the right of the color-changed pixel a 1 . At the head of the coding line, a virtual white pixel that is positioned to the left of the first pixel is assumed to be a 0 . In the reference line, b 0  is a pixel (start color-changed pixel) which is located right above the start color-changed pixel a 0 , b 1  is the first color-changed pixel that is to the right of the start color-changed pixel a 0 , and is of color opposite to a 0 , and b 2  is the first color-changed pixel that is to the right of the color-changed pixel b 1 . 
   Next, a description will be given of the coding of the coding line based on the reference line. In the coding, a pass mode, a vertical mode, or a horizontal mode is employed depending on the positional relationship between the start color-changed pixel a 0  and the reference color-changed pixel a 1 , a 2 , b 1 , or b 2 . 
   The pass mode is a mode that is selected when the pixel b 2  is to the left of the pixel a 1 . In this pass mode, the pixel a 0  is repositioned to the pixel just under the pixel b 2 . In this case, symbolic code P (code 0001), which is listed in Table 1, is transmitted. 
   In  FIG. 28 , the immediately prior coding is performed in the pass mode, and the pixel a 0  is repositioned to the pixel just under the pixel b 2  positioned during the previous coding. An example of pass-mode coding is shown in FIG.  29 . Since the pixel b 2  during the current coding is to the left of the pixel a 1 , the current coding (of the pixels b 1  and b 2 ) is performed in the pass mode. That is, code P (code 0001) is transmitted to the output buffer  6 . Following the processing of this code, the pixel just under the pixel b 2  is set as the start pixel a 0  for the next coding. 
   The vertical mode is a mode that is selected when the pixel b 2  is at the same position as the pixel a 1  or to the right of the pixel a 1  and the relative distance |a 1 b 1 | between the pixels a 1  and b 1  is less than or equal to 3 pixels. When it arises, coding with respect to the pixel a 1  is performed with the relative distance |a 1 b 1 | corresponding to one of seven values (codes 1, 011, 000011, 0000011, 010, 000010, and 0000010) denoted by symbolic codes V( 0 ), Vr( 1 ), Vr( 2 ), Vr( 3 ), Vl( 1 ), Vl( 2 ), and Vl( 3 ), as listed in Table 1. After the coding, the start pixel a 0  for the next coding is repositioned to the pixel a 1  positioned during the current coding. The letter “r” in the symbolic code indicates that the pixel a 1  is to the right of the pixel b 1  . The “l ” in the symbolic code indicates that the pixel a 1  is to the left of the pixel b 1  . The numeral within the parenthesis indicates the relative distance (number of pixels). 
   In the example shown in  FIG. 28 , the pixel b 2  is to the right of the pixel a 1 , also the pixel a 1  is to the left of the pixel b 1 , and the relative distance |a 1 b 1 | is 1 pixel. Therefore, MMR coding is performed in the vertical mode, and the code 010 corresponding to the symbolic code Vl( 1 ) is transmitted to the output buffer  6 . Thereafter, the pixel a 1  during the current coding is set as the start pixel a 0  for the next coding, and the pixels a 2  and b 2  are set as the pixels a 1  and b 1  for the next coding, respectively. If the pixels a 0 , a 1 , and b 1  are repositioned in this manner, the pixel b 2  is to the right of the pixel a 1  and the relative distance |a 1 b 1 | is 0, as shown in FIG.  31 . Thus, the next coding is similarly performed in the vertical mode. The code 1 corresponding to the symbolic code V( 0 ) is transmitted to the output buffer  6 . 
   Another example of vertical mode coding is shown in FIG.  30 . In the example shown in the figure, the pixel b 2  is to the right of the pixel a 1 , also the pixel a 1  is to the right of the pixel b 1 , and the relative distance |a 1 b 1 | is 2 pixels. Thus, MMR coding is performed in the vertical mode, and the code 000011 corresponding to the symbolic code Vr( 2 ) is transmitted to the output buffer  6 . 
   On the other hand, the horizontal mode, as shown in  FIG. 31 , is a mode that is selected when the pixel b 2  is at the same position as the pixel a 1  or to the right of the pixel a 1  and the relative distance |a 1 b 1 | between the pixels a 1  and b 1  is greater than or equal to 3 pixels. In  FIG. 31 , the relative distance |a 1 b 1 | is 4 pixels. As listed in Table 1, the distance a0a 1  between the pixel a 0  and the pixel a 1  and the distance a 1 a 2  between the pixel a 1  and a 2  are obtained, then the values M(a 0 a 1 ) and M(a 1 a 2 ) corresponding to these distances a0a 1  and a 1 a 2  are read out from the MH code table held in the reference table holding section  7 , and coding with respect to the pixels a 0 , a 1 , and a 2  is performed by symbolic code H (code 001+M(a 0 a 1 )+M(a 1 a 2 )). After the coding, the start pixel a 0  for the next coding is repositioned to the pixel a 2  positioned during the current coding. 
   An example of horizontal mode coding is shown in FIG.  31 . In the example shown in the figure, the pixel b 2  is to the right of the pixel a 1 , and the relative distance |a 1 b 1 | is 4 pixels. Thus, coding is performed in the horizontal mode. That is, because a 0 a 1 =8 and a 1 a 2 =4, the code=001+M(8)+M(4) corresponding to the symbolic code H is transmitted to the output buffer  6 . The pixel a 2  is repositioned to the start pixel a 0  for the next coding. 
   In this manner, the image data shown in  FIG. 28  is coded like “. . . 00010101 . . . .” That is, image data is coded based on the position of a color-changed pixel on the coding line, the position of a color-changed pixel on the reference line, and the distance between the two pixels. 
   The above-mentioned coding procedure (operation of the compressing section  5 ) will be described according to a flowchart (steps S 11  to S 28 ) shown in FIG.  32 . First, suppose the pixels on the reference line are all white (step S 11 ). Then, the first coding line is set (step S 12 ) and the start pixel a 0  is positioned as a virtual white pixel to the left of the first pixel (step S 13 ). 
   Thereafter, pixels a 1 , b 1 , and b 2  are detected (steps S 14  to S 16 ) and it is judged whether or not the pixel b 2  is to the left of the pixel a 1  (step S 17 ). If it is to the left (route “YES” in step S 17 ), the above-mentioned pass-mode coding is performed (step S 18 ) and the pixel just under the pixel b 2  is set as the start pixel a 0  for the next coding (step S 19 ). 
   When the pixel b 2  is at the same position as the pixel a 1  or to the right of the pixel a 1  (route “NO” in step S 17 ), it is judged whether or not the relative distance |a 1 b 1 | is less than or equal to 3 pixels (step S 20 ). 
   When the relative distance |a 1 b 1 | is 3 pixels or less (route “YES” in step S 20 ), the above-mentioned vertical mode coding is performed (step S 21 ) and the pixel a 1  during the current coding is set as the start pixel a 0  for the next coding (step S 22 ). 
   On the other hand, when the relative distance |a 1 b 1 | is 4 pixels or greater (route “NO” in step S 20 ), a pixel a 2  is detected (step S 23 ) and the above-mentioned horizontal mode coding is performed (step S 24 ). The pixel a 2  during the current coding is set as the start pixel a 0  for the next coding (step S 25 ). 
   Next, it is judged whether or not the coding process has been executed up to the last pixel on the coding line. That is, it is judged whether or not the coding position has reached end-of-line (EOL) (step S 26 ). If it has not reached (route “NO” in step S 26 ), the process returns to step S 14  and repeatedly carries out the above-mentioned steps S 14  to S 26 . 
   If it has reached EOL (route “YES” in step S 26 ), it is judged whether or not the coding process has been executed up to the end of image data to be coded. That is, it is judged whether or not the coding position has reached end-of-data (EOD) (step S 27 ). If it has not reached EOD (route “NO” in step S 27 ), the process returns to step S 12  and repeatedly carries out the above-mentioned steps S 12  to S 27 . When it arises, in step  12  the next coding line is extracted and the previous coding line is set as the reference line. If it has reached EOD (route “YES” in step S 27 ), the coding process ends. 
   When decompressing the image data compressed as described above, the coded data corresponding to each line (coding line) is serially read out from the head thereof, and the decoding process is carried out according to a recognized mode. 
     FIG. 33  schematically shows a general data decompressing unit for carrying out such a decoding process. 
   As shown in the figure, the input side of the data decompressing unit  11  is connected with a compressed data storage section  12 , while the output side is connected to a decompressed data storage section  13 . 
   The data decompressing unit  11  is constructed of an input buffer  14 , a decompressing section  15 , an output buffer  16 , and a reference table holding section  17 . 
   The compressed data storage section  12  stores image data coded (or compressed), for example, by the above-mentioned data compressing unit  1 . The decompressed data storage section  13  serially stores image data decoded (or decompressed) by the data decompressing unit  11 . 
   In the decompression process within the data decompressing unit  11 , compressed data are input to the input buffer  14  and sent to the decompressing section  15 . The decompressing section  15  recognizes a mode by the code of the input data, refers to the modified Huffman (MH) code table or modified READ (MR) code table (see the two-dimensional code table in Table 1) held in the reference table holding section  17 , and decodes the input data according to the recognized mode. The decoded data (decompressed data) are sent to the output buffer  16  and stored in the decompressed data storage section  13 . 
   The decoding procedure in the decompressing section  15  will be described according to a flowchart (steps S 31  to S 47 ) shown in FIG.  34 . First, suppose the pixels on a reference line are all white (step S 31 ) Then, the first decoding line is set (step S 32 ) and the start pixels a 0  and b 0  are positioned as virtual white pixels to the left of the first pixel of the reference line and the left of the first pixel of the decoding line (step S 33 ). 
   The coded data corresponding to the decoding line is serially read out from the head thereof, and the coding mode is recognized according to both the code in the coded data and the two-dimensional code table (see Table 1) held in the reference table holding section  17  (step S 34 ). 
   When, in step S 34 , the mode is recognized to be a pass mode (code 0001; route “PASS”), a pixel b 2  on the reference line relative to a start pixel b 0  is first detected (step S 35 ). If the pixel b 2  is detected, pixels of the color of a 0  are laid down on the decoding line up to the position of the pixel b 2 , whereby a decoding process corresponding to the pass mode is carried out (step S 36 ) Next, on the decoding line, the pixel just under the pixel b 2  is set as the next start pixel a 0  (step S 37 ). The color of the next start pixel a 0  is set to the color of the pixel b 2  (step S 38 ). 
   When, in step S 34 , the mode is recognized to be a horizontal mode (code 001; route “HORIZONTAL”), a one-dimensional decoding process is carried out by both the code M(a 0 a 1 )+M(a 1 a 2 ) following the code 001 and the MH code table stored in the reference table holding section  17  (step S 39 ). Next, a pixel a 2  on the decoding line is detected and the pixel a 2  is set as the next start pixel a 0  (step S 40 ). The next start pixel a 0  employs the color of the previous start pixel a 0  (step S 41 ). 
   When, in step S 34 , the mode is recognized to be a vertical mode (route “VERTICAL”), a pixel b 1  on the reference line relative to the start pixel b 0  is first detected (step S 42 ). If the pixel b 2  is detected, a decoding process corresponding to the recognized code is carried out (step S 43 ). More specifically, when the recognized code is 1 (V( 0 )), pixels of the color of a 0  are laid down up to but not including the pixel b 1  . When the recognized code corresponds to code Vx(n) (where x=r or l and n=1, 2, or 3), pixels of the color of a 0  are laid down up to the n th  pixel on the x-side (where x=r denotes the right and x=l denote the left) of the pixel b 1  . Similarly, then  th  pixel is not included. Next, the pixel a 1  on the decoding line is set as the next start pixel a 0  (step S 44 ). The next start pixel a 0  employs the color opposite to the color of the previous pixel a 0  (step S 45 ). 
   After step S 38 , S 41 , or S 45 , it is judged whether or not the decoding process has been carried out up to the end of the decoding line (coded data corresponding to this line). That is, it is judged whether or not the decoding position has reached end-of-line (EOL) (step S 46 ). If it has not reached EOL (route “NO” in step S 46 ), the process returns to step S 34  and repeatedly carries out the above-mentioned steps S 34  to S 46 . 
   If it has reached EOL (route “YES” in step S 46 ), it is judged whether or not the decoding process has been executed up to the end of the image data to be decoded. That is, it is judged whether or not the decoding position has reached end-of-data (EOD) (step S 47 ). If it has not reached EOD (route “NO” in step S 46 ), the process returns to step S 32  and repeatedly carries out the above-mentioned steps S 32  to S 47 . When it arises, in step  32  the next decoding line is set and the coded data corresponding to the line is read out. In addition, the previous decoding line, as it is, is set as the reference line. If it has reached EOD (route “YES” in step S 47 ), the decoding process ends. 
   Problems to be solved by the present invention will occur in the case in which data compressed by the above-mentioned MMR coding is decoded and decompressed according to the procedure shown in FIG.  34 . 
   In the case of high-resolution image data, the distance from the start pixel b 0  on the reference line to the pixel b 1  (or distance from the pixel b 1  to the pixel b 2 ) is long, as shown in FIG.  35 . The number of bits between these pixels b 0 , b 1 , and b 2  is considerably increased. 
   In the conventional data decompressing technique, a processing section, such as a CPU, etc., judges the color of the start pixel b 0  and continues to judge each pixel (each bit) until the pixel b 1  is detected. If the pixel b 1  is detected, the number of judged pixels is calculated as the distance between the pixel b 0  and the pixel b 1  (see step S 42  in FIG.  34 ). 
   This procedure will be described in detail with reference to FIG.  35 . Note in the figure that a white square denotes a white pixel and a shaded square denotes a black pixel. 
   First, a bit at which the start pixel b 0  is positioned is taken out and the color is judged. In the example shown in  FIG. 35 , the pixel is judged to be a white pixel. Next, the processing section judges the color of the pixel that is to the right of the pixel b 0 , and continues to judge the color of each pixel until a black pixel is detected. The pixel at the position where the black pixel is detected becomes the pixel b 1  . In the example shown in  FIG. 35 , the number of pixels (bits) judged to detect the position of the pixel b 1  is 20, which denotes the distance between the pixel b 0  and the pixel b 1 . 
   When detecting not only the pixel b 1  but also the pixel b 2  (see step S 35  in FIG.  34 ), or when detecting the pixel a 1  or a 2  from the position of the start pixel a 0  after decoding (see step S 44  or S 40  in FIG.  34 ), the pixels b 2 , a 1 , and a 2  are similarly detected while the color of each pixel (bit) is being judged. 
   Therefore, as the resolution of still image becomes higher, the distance (number of pixels) between pixels b 0 , b 1 , and b 2  on the reference line, or the distance (number of pixels) between a 0 , a 1 , and a 2  on the line decoded in the horizontal mode, becomes considerably longer. Because of this, the number of judged bits is increased and the decoding process (decompressing process) is extremely time-consuming. 
   In step  34  of  FIG. 34 , when recognizing a coding mode from the code contained in the compressed data, there is also a need to detect the number of consecutive zeros (white pixels) that are present in the data bits of compressed data (coded data). For instance, in the case of 3 consecutive 0s, the coding mode is recognized to be a pass mode. In the case of 2 consecutive 0s, the coding mode is recognized to be a horizontal mode. In the case of 0, or in the case of 4 or 5 consecutive 0s, the coding mode is recognized to be a vertical mode. Thus, when recognizing a coding mode, the number of 0s is detected by judging the color of each bit, as with the case when detecting a color-changed pixel. Therefore, the process of recognizing a coding mode (code) is time-consuming and results in an increase in the time required for the decoding process (decompressing process). 
   SUMMARY OF THE INVENTION 
   The present invention has been made in view of the problems mentioned above. Accordingly, the primary object of the present invention is to efficiently detect color-changed pixels on a reference line or coding line and efficiently recognize a coding mode (code), in order to realize the speedup of the process of decompressing binary data compressed, for example, by MMR coding. 
   To achieve the object of the present invention mentioned above, there is provided a method for decompressing compressed data obtained by coding binary data, which comprises a plurality of data bit lines acquired from an image, for each data bit line, based on both a position of a color-changed pixel on the data bit line and a position of a color-changed pixel on a reference line adjacent to the data bit line. The method comprises the steps of: preparing a table in which, for all bit patterns represented by a predetermined number of data bits, the number of bits, consecutively present to the right or left of a certain bit in each bit pattern and having the same color as the certain bit, is listed; serially taking the predetermined number of reference data bits at a time from a bit sequence forming the reference line; searching the table with both the reference data bits and a position of an attentional bit in the reference data bits, and thereby detecting the number of bits of the same color as the attentional bit which are consecutively present to the right or left of the attentional bit; finding a pixel, right or left away from the attentional bit by a distance equal to the addition of 1 and the detected number of bits, as a color-changed pixel on the reference line; and decoding the compressed data, based on a position of the found color-changed pixel on the reference line. 
   In a preferred form of the present invention, the compressed data is data coded by modified-modified READ (MMR) coding. Also, the predetermined number of coded data bits is serially taken at a time from a bit sequence forming the compressed data. The aforementioned table is searched with both the coded data bits and a position of an attentional bit in the coded data bits, whereby the number of 0s consecutively present to the right or left of the attentional bit is detected. According to a code corresponding to the detected number of 0s, a coding mode is recognized, and according to the recognized coding mode, the compressed data is decoded. 
   In another preferred form of the present invention, a bit position in the reference data bits, which corresponds to a position of a start color-changed pixel present on a decoding line obtained by decoding the compressed data, is employed as a position of the attentional bit. 
   In still another preferred form of the present invention, the predetermined number of decoded data bits is serially taken at a time from a bit sequence forming the decoding line. Also, the aforementioned table is searched with both the decoded data bits and a position of an attentional bit in the decoded data bits, whereby the number of bits of the same color as the attentional bit, which are consecutively present to the right or left of the attentional bit, is detected. The pixel, right or left away from the attentional bit by a distance equal to the addition of 1 and the detected number of bits, is found as a color-changed pixel on the decoding line. The found color-changed pixel on the decoding line is employed as a start color-changed pixel when decoding is performed according to the next code contained in the compressed data. 
   In accordance with the present invention, there is provided a unit for decompressing compressed data obtained by coding binary data, which comprises a plurality of data bit lines acquired from an image, for each data bit line, based on both a position of a color-changed pixel on the data bit line and a position of a color-changed pixel on a reference line adjacent to the data bit line. The unit comprises a table holding section for storing a table in which, for all bit patterns represented by a predetermined number of data bits, the number of bits, consecutively present to the right or left of a certain bit in each bit pattern and having the same color as the certain bit, is listed; a reference line holding section for holding a reference bit sequence forming the reference line; and a compressed-data holding section for holding a data bit sequence forming the compressed data. The unit further comprises a decompressing section for serially taking the predetermined number of reference data bits at a time from the reference bit sequence, also taking in the data bit sequence from the compressed-data holding section, and decoding the compressed data; and a decoding-line holding section for holing a decoding bit sequence which forms a decoding line obtained by decoding the compressed data with the decompressing section. The decompressing section searches the table with both the reference data bits and a position of an attentional bit in the reference data bits, and thereby detects the number of bits of the same color as the attentional bit which are consecutively present to the right or left of the attentional bit. The decompressing section also finds a pixel, right or left away from the attentional bit by a distance equal to the addition of 1 and the detected number of bits, as a color-changed pixel on the reference line. Furthermore, the decompressing section decodes the compressed data, based on a position of the found color-changed pixel on the reference line, and stores the decoded data in the decoding-line holding section. 
   According to the present invention, when decompressing binary data compressed by MMR coding, the process of detecting a color-changed pixel on the reference line or decoding line is performed in units of a predetermined number of bits (e.g., 1 byte=8 bits) by employing the aforementioned table. Therefore, the present invention is capable of efficiently detecting color-changed pixels. In addition, the process of recognizing a coding mode (code) is similarly performed in units of a predetermined number of bits (e.g., 1 byte=8 bits) by employing the aforementioned table. Thus, the coding mode can be efficiently recognized. 
   Thus, the present invention is capable of considerably speeding up the process of decompressing binary data compressed and also considerably shortening the time required for the decompressing process. Particularly, the present invention is extremely effective when employed in the case where image data has high resolution and the space between color-changed pixels is long. Thus, the present invention is capable of considerably shortening the data decompressing time. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The present invention will be described in further detail with reference to the accompanying drawings wherein: 
       FIG. 1  is a block diagram showing a data decompressing unit constructed according to a preferred embodiment of the present invention; 
       FIG. 2  is a diagram showing a portion of the first table in which the number of white pixels consecutively present to the right of the pixel of the x th  bit in 1 byte of bit sequence is listed for each bit pattern; 
       FIG. 3  is a diagram showing a portion of the second table in which the number of black pixels consecutively present to the right of the pixel of the x th  bit in 1 byte of bit sequence is listed for each bit pattern; 
       FIG. 4  is a diagram showing a portion of the third table in which the position of a white pixel appearing first in 1 byte of bit sequence is listed for each bit pattern, and a portion of the fourth table in which the position of a black pixel appearing first in 1 byte of bit sequence is listed for each bit pattern; 
       FIG. 5  is a diagram showing a portion of the fifth table in which the color (white or black) of the pixel of the x th  bit in 1 byte of bit sequence is listed for each bit pattern. 
       FIG. 6  is a flowchart used to explain a decoding procedure (decompressing procedure) that is performed by the unit shown in  FIG. 1 ; 
       FIG. 7  is a flowchart used to explain a detecting procedure for a color-changed pixel b 1  that is performed in step S 62  of  FIG. 6 ; 
       FIG. 8  is a flowchart used to explain a detecting procedure for a color-changed pixel b 2  that is performed in step S 55  of  FIG. 6 ; 
       FIG. 9  is a flowchart used to explain a detailed procedure that is performed in step S 73  of  FIGS. 7 and 8 ; 
       FIG. 10  is a flowchart used to explain a detailed procedure that is performed in step S 74  of  FIGS. 7 and 8 ; 
       FIG. 11  is a flowchart used to explain a detailed procedure that is performed in step S 75  of  FIGS. 7 and 8 ; 
       FIG. 12  is a flowchart used to explain a detailed procedure that is performed in step S 77  of  FIGS. 7 and 8 ; 
       FIG. 13  is a flowchart used to explain a detailed procedure that is performed in step S 78  of  FIGS. 7 and 8 ; 
       FIG. 14  is a flowchart used to explain a detailed procedure that is performed in step S 79  of  FIGS. 7 and 8 ; 
       FIG. 15  is a flowchart used to explain a detailed procedure that is performed in step S 80  of  FIG. 8 ; 
       FIG. 16  is a flowchart used to explain a detailed procedure that is performed in step S 81  of  FIG. 8 ; 
       FIG. 17  is a flowchart used to explain a detecting procedure for a color-changed pixel a 2  that is performed in step S 60  of  FIG. 6 ; 
       FIG. 18  is a flowchart used to explain a detailed procedure that is performed in step S 92  of  FIG. 17 ; 
       FIG. 19  is a flowchart used to explain a detailed procedure that is performed in step S 93  of  FIG. 17 ; 
       FIG. 20  is a flowchart used to explain a detailed procedure that is performed in step S 94  of  FIG. 17 ; 
       FIG. 21  is a flowchart used to explain a detailed procedure that is performed in step S 95  of  FIG. 17 ; 
       FIGS. 22  to  25  are diagrams showing examples of pixel sequences used to explain a decoding process (decompressing process) that is carried out by the preferred embodiment; 
       FIG. 26  is a flowchart used for explaining a recognizing and selecting procedure for a coding mode that is carried out in step  54  of  FIG. 6 ; 
       FIG. 27  is a block diagram showing a general data compressing unit for executing a data compression process by MMR coding; 
       FIG. 28  is a diagram showing two pixel lines used for explaining MMR coding; 
       FIG. 29  is a diagram showing two pixel lines used for explaining MMR coding (pass mode); 
       FIG. 30  is a diagram showing two pixel lines used for explaining MMR coding (vertical mode); 
       FIG. 31  is a diagram showing two pixel lines used for explaining MMR coding (horizontal mode); 
       FIG. 32  is a flowchart used to explain an MMR coding procedure (compressing procedure) that is carried out by the unit shown in  FIG. 27 ; 
       FIG. 33  is a block diagram showing a general data decompressing unit for carrying out the process of decompressing (decoding) data compressed by MMR coding; 
       FIG. 34  is a flowchart used for explaining a decoding procedure (decompressing procedure) that is performed by the unit shown in  FIG. 33 ; and 
       FIG. 35  is a diagram showing pixels on a reference line in the case of high-resolution image data. 
   

   DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
   The present invention will hereinafter be described in detail with reference to the drawings. 
     FIG. 1  schematically shows a data decompressing unit  21  constructed according to a preferred embodiment of the present invention. As shown in the figure, the data decompressing unit  21  of the preferred embodiment is nearly the same as the data decompressing unit  11  shown in FIG.  33 . The input side of the data decompressing unit  21  is connected with a compressed data storage section  22  similar to the compressed data storage section  12  shown in FIG.  33 . The output side of the data decompressing unit  21  is connected to a decompressed data storage section  23  similar to the decompressed data storage section  13  shown in FIG.  33 . 
   The compressed data storage section  22 , as with the compressed data storage section  12  shown in  FIG. 33 , stores image data coded (or compressed) by MMR coding. The decompressed data storage section  23  serially stores image data decoded (or decompressed) by the data decompressing unit  21 . 
   The data decompressing unit  21  is used to expand compressed data (more specifically, data compressed by MMR coding) obtained by coding binary data, which consist of a plurality of lines acquired from an image, based on both the position of a color-changed pixel on each coding line and the position of a color-changed pixel on a reference line adjacent to the coding line. The data decompressing unit  21  is constructed of an input buffer  24 , a decompressing section  25 , an output buffer  26 , and a reference table holding section  27 . 
   The input buffer  24  corresponds to the input buffer  14  shown in  FIG. 33 , and functions as a compressed-data holding section that temporarily holds a bit sequence that forms compressed data read out from the compressed data storage section  22 . 
   The output buffer  26  corresponds to the output buffer  16  shown in  FIG. 33 , and functions as a decoding-line holding section which temporarily holds a bit sequence which forms a decoding line obtained by decoding compressed data output from the decoding section  25 . The data held in the output buffer  26  is stored in the decompressed data storage section  23  as the decompressed data. The output buffer  26  also functions as a reference line holding section in which a result of the decoding of the line above a decoding line is held as a bit sequence for a reference line. 
   The reference table holding section  27  corresponds to the reference table holding section  17  shown in FIG.  33 . The reference table holding section  27  of the preferred embodiment, in addition to holding an MR code table (two-dimensional code table shown in Table 1) and an MH code table, holds five kinds of tables that are to be described later. Particularly, the first table and the second table are tables in which, for all bit patterns represented by a predetermined number of data bits (in the preferred embodiment, 1 byte or 8 bits), the number of bits, consecutively present to the right of one bit in each bit pattern and having the same color as the one bit, is listed. 
   The decompressing section  25  corresponds to the decompressing section  15  shown in FIG.  33 . The decompressing section  25  of the preferred embodiment serially takes in a predetermined number of reference data bits (1 byte of reference data or 8 bits of reference data) at a time from a bit sequence which forms a reference line held in the output buffer  26 ; serially takes in a predetermined number of coded data bits (1 byte of coded data or 8 bits of coded data) at a time from a bit sequence forming the compressed data output from the input buffer  24 ; and decodes the compressed data. 
   The decompressing section  25  of the preferred embodiment searches the first through the fifth tables held in the reference table holding section  27  with both the reference data bits and the position of an attentional bit (b 0  or b 1 ) in the reference data bits; detects the number of bits of the same color as the attentional bit which are consecutively present to the right of the attentional bit; finds the pixel, which is right away from the attentional bit by a distance equal to the addition of 1 bit and the detected number of bits, as a pixel b 1  or b 2  on the reference line; decodes compressed data, based on the position of the found pixel b 1  or b 2 ; and stores the decoded data in the output buffer  26 . 
   The decompressing section  25  also recognizes a coding mode according to a code contained in the compressed data, and decodes the compressed data according to the recognized mode (pass mode, horizontal mode, or vertical mode). More specifically, the decompressing section  25  of the preferred embodiment serially takes 1 byte (8 bits) of coded data at a time from a bit sequence forming the compressed data; searches the first table held in the reference table holding section  27  with both the taken data bits and the position of an attentional bit in the coded data bits; detects the number of 0s which lie consecutively to the right of the attentional bit; and recognizes a coding mode according to a code which corresponds to the detected number of 0s. 
   The decompressing section  25  detects the position of a bit in reference data bits (i.e., a start pixel b 0  on a reference line), taken from the reference line, which corresponds to the bit position of a start pixel a 0  on a decoding line which is obtained by decoding compressed data. The decompressing section  25  employs the detected bit position as the position of the aforementioned attentional bit. 
   Furthermore, the decompressing section  25  serially takes a predetermined number of coded data bits (1 byte of coded data or 8 bits of coded data) at a time from a bit sequence forming a decoding line held in the output buffer  26 ; searches the first through the fifth tables held in the reference table holding section  27  with both the taken data bits and an attentional bit (pixel a 0  or a 1 ) in the taken data bits; detects the number of bits of the same color as the attentional bit which are consecutively present to the right of the attentional bit; finds the pixel, which is right away from the attentional bit by a distance equal to the addition of 1 bit and the detected number of bits, as a pixel a 2  on the decoding line; and employs the found pixel a 2  as a start pixel a 0  when decoding is performed based on the next code contained in the compressed data. 
   The above-mentioned decompressing section  25  is realized by dedicated software (data decompressing program). 
   This data decompressing program is recorded on a computer-readable storage medium such as a flexible disk, a CD-ROM, etc. In the preferred embodiment, the data decompressing program is previously stored in a read-only memory (ROM; not shown) which forms a portion of the data decompressing unit  21 , and is read out and carried out by a central processing unit (computer; not shown) forming a portion of the data decompressing unit  21 . In this manner, the above-mentioned functions of the decompressing section  25  are realized. 
   The first through the fifth tables to be described later are provided in a data decompressing program and read out from the data decompressing program to the reference table holding section  27 . In this manner, the first through the fifth table are used. 
   Note that a contents-delivery program may be stored in a storage unit (storage medium) such as a magnetic disk, an optical disk, a magneto-optic disk, etc., and may be delivered from the storage unit to a computer via a communication line. 
   In addition, the above-mentioned input buffer  24 , output buffer  26 , and reference table holding section  27  are realized by a random access memory (not shown) forming a portion of the data decompressing unit  21 , or by a storage unit such as a hard-disk drive (or an external storage unit). 
   In the conventional data decompressing method, as described in  FIG. 35 , the positions of pixels a 1 , a 2 , b 1 , and b 2  on the decoding line and reference line are detected by judging the color of each bit (pixel) on the two lines. 
   On the other hand, in the data decompressing method of the preferred embodiment, the search for pixels a 1 , a 2 , b 1 , and b 2  is not performed in units of 1 bit. That is, a pixel line (decoding line or reference line), consisting of white bits (0s) and black bits (1s), is divided into blocks of 1 byte. Each block consisting of white and black bits (i.e., each bit pattern) is detected, and based on the detected bit pattern, the bit-pattern tables (the first through the fifth tables) held in the reference table holding section  27  are searched. In this manner, the search for pixels a 1 , a 2 , b 1 , and b 2  is performed in units of 1 byte. 
   When a pixel line is divided into blocks of 1 byte (8 bits), patterns consisting of white and black pixels can be obtained. When it arises, there are 256 patterns consisting of white and black pixels. For example, assuming that 1 pixel is 1 bit and that a white pixel is 0 and a black pixel is 1, 256 8-bit patterns can be generated. 
   The preferred embodiment employs five tables to find the position of a color-changed pixel. The five tables are: 
   (a) the first table W[8] [256] in which the number of white pixels consecutively present to the right of the pixel of the x th  bit (attentional bit) in 1 byte of bit sequence is listed for each bit pattern; 
   (b) the second table B[8] [256] in which the number of black pixels consecutively present to the right of the pixel of the x th  bit (attentional bit) in 1 byte of bit sequence is listed for each bit pattern; 
   (c) the third table LW[256] in which the position of a white pixel appearing first in 1 byte of bit sequence is listed for each bit pattern; 
   (d) the fourth table LB[256] in which the position of a black pixel appearing first in 1 byte of bit sequence is listed for each bit pattern; and 
   (e) the fifth table CLR[8] [256] in which the color (white or black) of the pixel of the x th  bit in 1 byte of bit sequence is listed for each bit pattern. 
     FIG. 2  shows a portion of the first table W[8] [256]. Since the number of 8-bit patterns of 0s and 1s is 256 in all, the first table W[8] [256] lists 256 bit patters in the vertical direction thereof, as shown in FIG.  2 . In the lateral direction of the first table W[8] [256], the number of white pixels consecutively present to the right of the pixel of the x th  bit in 1 byte of bit sequence is listed for each bit pattern. 
   Note that the first column (NO.) of the first table W[8] [256] lists the decimal numbers 0 through 255 equivalent to binary numbers representing bit patterns. 
   In addition, in the first table W[8] [256], the positions of the 8 bits in each bit pattern are represented from left to right by 0, 1, 2, 3, 4, 5, 6, and 7, respectively. That is, the first pixel in each bit pattern corresponds to the pixel of the 0 th  bit (x=0) and the eighth pixel corresponds to the pixel of the 7 th  bit (x=7). 
   For the number of white pixels in the first table W[8] [256], the pixel of the x th  bit is not counted. For example, in the bit pattern NO. 0, the number of white pixels consecutively present to the right of the pixel of the 0 th  bit (x=0) is 7 (=W[0] [0]) and the number of white pixels consecutively present to the right of the pixel of the 3 rd  bit (x=3) is 4 (=W[3] [0]). In the bit pattern NO. 4, the number of white pixels consecutively present to the right of the pixel of the 4 th  bit (x=4) is 0 (=W[4] [4]) because there is no white pixel, and the number of white pixels consecutively present to the right of the pixel of the 3 rd  bit (x=3) is 4 (=W[3] [0]). The pixel of the 5 th  bit (x=5) is black, but one white pixel is present to the right of this pixel. Therefore, the number of white pixels in this case is 1 (=W[5] [4]). 
     FIG. 3  shows a portion of the second table B[8] [256]. The second table B[8] [256] is generated in the same manner as the first table W[8] [256] except that, in the lateral direction of the second table B[8] [256], the number of black pixels consecutively present to the right of the pixel of the x th  bit in 1 byte of bit sequence is listed for each bit pattern. Since the second table B[8] [256] is employed in the same manner as the first table W[8] [256], a detailed description thereof is omitted. 
     FIG. 4  shows a portion of the third table LW[256] and a portion of the fourth table LB[256]. In the third table LW[256], the position of a white pixel that appears first in 1 byte of bit sequence is listed for each bit pattern. In the fourth table LB[256], the position of a black pixel that appears first in 1 byte of bit sequence is listed for each bit pattern. In these tables LW[256] and LB[256], as with the first table W[8] [256] and the second table B[8] [256], 256 bit patterns are listed in the vertical direction. 
   However, the third table LW[256] and the fourth table LB[256] differ from the first table W[8] [256] and the second table B[8] [256] in that the positions of 8 bits in each bit pattern are represented from left to right by 1, 2, 3, 4, 5, 6, 7, and 8. That is, in the third table LW[256] and the fourth table LB[256], when the position of the first white pixel or black pixel is 1, the pixel is positioned at the first bit on the bit pattern. When the pixel position is 8, the pixel is positioned at the 8 th  bit. 
   For instance, in the bit pattern NO. 0, all the 8 bits are white pixels and the first bit is a white pixel. Therefore, the value of the third table LW[256] corresponding to the bit pattern NO. 0 is 1 (=LW[0]). On the other hand, the value of the fourth table LB[256] corresponding to the bit pattern NO. 0 is 0 (=LB[0]) because there is no black pixel. Furthermore, in the bit pattern NO. 4, only the pixel of the 5 th  bit (the sixth bit from left) is black. Therefore, the value of the third table LW[256] corresponding to the bit pattern NO. 4 is 1 (=LW[4]), while the value of the fourth table LB[256] corresponding to the bit pattern NO. 4 is 6 (=LB[4]). 
     FIG. 5  shows a portion of the fifth table CLR[8] [256]. In the fifth table CLR[8] [256], as shown in the figure, 256 bit patterns are listed in the vertical direction, and in the lateral direction, the color (white (0) or black (1)) of the pixel of the x th  bit in 1 byte of bit sequence is listed for each bit pattern. 
   For example, in the bit pattern NO. 0, all the 8 bits are white pixels, and the value of the fifth table CLR[8] [256] is 0 (=CLR[x] [0]) because all the bits are white (0). In addition, in the bit pattern NO. 4, only the pixel of the 5 th  bit is black and therefore the value of the fifth table CLR[8] [256] corresponding to the bit pattern NO. 4 is 1 (=CLR[5] [4]) at the 5 th  bit (x=5) and 0 at the other bit positions (x=0, 1, 2, 3, 4, 6, and 7). 
   In the preferred embodiment, the first through the fifth tables are previously stored in the reference table holding section  27 . In the decompressing section  25 , in order to detect the positions of pixels a 1 , a 2 , b 1 , and b 2 , one of the tables is properly used depending on whether an attentional bit (attentional pixel) is white or black. 
   Now, an example of a pixel detecting method in the preferred embodiment will be described with reference to  FIGS. 28 and 35 . 
   First, a description will be given in the case where the pixel b 1  on the reference line shown in  FIG. 28  is detected. On the reference line, b 0  and b 1  are present in the first 1 byte. The bit pattern of the first 1 byte is 10000011 and the start pixels a 0  and b 0  are white pixels (0). 
   Hence, the bit pattern 10000011 is searched for by using the first table W[8] [256]. Since this bit pattern 10000011 is equivalent to a decimal number 131, reference is made to the NO. 131 of the first table W[8] [256]. Next, since the start pixel b 0  is present at the first bit in  FIG. 28 , reference is made to the column of the first bit at the row of the NO. 131 of the first table W[8] [256]. As a result, 4 (=W[1] [131]) is obtained as the number of white pixels in 1 byte which are consecutively present to the right of the pixel b 0  (see step  131  of FIG.  11 ). 
   Because the start pixel b 0  in 1 byte is positioned to the second bit from left, 2+4=6 is obtained, if this position is added to the number of consecutive white pixels obtained from the first table W[8] [256]. Thus, it is found that the pixel b 1  is present in this 1 byte of data (see the route “NO” in step S 132  of FIG.  11 ). The pixel of the seventh bit (6+1=7) from left in this 1 byte is the pixel b 1  that changes from white to black. That is, in 1 byte, the pixel next to the position of the addition of the position of the pixel b 0  and the number of consecutive white pixels is employed as the position of the pixel b 1  (see step S 135  of FIG.  11 ). 
   Note that when the start pixels a 0  and b 0  are both black pixels (1), reference is made to the second table B[8] [256], not the first table W[8] [256]. 
   Next, a description will be given in the case where the position of the pixel b 1  is found when the pixels b 0  and b 1  are present in different bytes, as shown in FIG.  35 . Assume that the start pixels a 0  and b 0  are both white pixels (0). Also, assume that the pixel b 0  is positioned to the second pixel from left in the first 1 byte. That is, the pixel b 0  is the pixel of the 1 st  bit (x=1). 
   In this case, the number of white pixels consecutively present to the right of the start pixel b 0  in the first 1 byte is first found by employing the first table W[8] [256]. Since the 8 bits in the first 1 byte are all white, bit pattern NO. 0 is employed. If reference is made to the column of the 1 st  bit (x=1) at the row of NO. 0 of the first table W[8] [256], the number of white pixels consecutively present to the right of the pixel b 0  is 6 (=W[1] [0]) (see step S 131  of FIG.  11 ). 
   Since the pixel b 0  is the second bit from left, 2+6=8 is obtained, if the position of the pixel b 0  is added to the number of consecutive white pixels obtained from the first table W[8] [256]. Therefore, it is found that the pixel b 1  is not present in the first 1 byte (see the route “YES” in step S 133  of FIG.  11 ). 
   Thereafter, for the next 1 byte, the fourth table LB[256] is searched. However, since the 8 bits of the next 1 byte are all white, bit pattern NO. 0 is employed. If reference is made to the row of the bit pattern NO. 0 of the fourth table LB[256], 0 (=LB[0]) is obtained and therefore it is found that there is no black pixel. That is, there is no color-changed pixel in this 1 byte. 
   Hence, for the third 1 byte, the fourth table LB[256] is searched. It is found that the bit pattern for the third 1 byte corresponds to bit pattern NO. 7. If reference is made to the row of the bit pattern NO. 7 of the fourth table LB[256], 6 (=LB[7]) is obtained and it is found that a black pixel (color-changed pixel) is present at the sixth position (the 5 th  bit position (x=5)) in this byte (see steps S 133  and S 134  in FIG.  11 ). 
   In this way, until the first black pixel is detected after consecutive white pixels, the reference line is divided into blocks of 1 byte and a search for a bit pattern is made with the first table W[8] [256] and the fourth table LB[256]. If the first black pixel is detected, it is employed as pixel b 1  . Therefore, the pixel b 1  is present at the sixth position from the head of the third 1 byte. In other words, the number of white pixels consecutively present to the right of the start pixel b 0  is 6+8+(6−1)=19 and the pixel b 1  is the 20 th  pixel from the right of the start pixel b 1 . In the preferred embodiment, the position (6) of the first black pixel in 1 byte is obtained with the fourth table LB[256], so the position of the pixel b 1  relative to the start pixel b 0  is obtained as 6+8+6=20. 
   The present invention has been described with reference to the case in which both of the start pixels a 0  and b 0  are white (0). However, when the start pixels a 0  and b 0  are both black (1), reference is made to the second table B[8] [256] and the third table LW[256], not first table W[8] [256] and the fourth table LB[256]. 
   As described above, the preferred embodiment refers to each table according to a bit pattern for each 1 byte, to detect the positions of pixels a 1 , a 2 , b 1 , and b 2 . Therefore, the preferred embodiment is capable of considerably shortening the processing time, compared with the case in which the detection of a color-changed pixel is performed for each bit. 
   Next, the decoding procedure (decompressing procedure) in the decompressing section  25  of the data decompressing unit  21  of the preferred embodiment will be described according to a flowchart (steps S 51  to S 67 ) shown in FIG.  6 . The decoding procedure in the preferred embodiment is performed basically in the same manner as the decoding procedure in the decompressing section  15  shown in FIG.  34 . Steps S 51  to S 67  in  FIG. 6  correspond to steps S 31  to S 47  shown in  FIG. 34 , respectively. 
   First, suppose the pixels on a reference line are all white (step S 51 ). Then, the first decoding line is set (step S 52 ) and the start pixels a 0  and b 0  are positioned as virtual white pixels to the left of the first pixel on the decoding line and the left of the first pixel on the reference line (step S 53 ). 
   1 byte of coded data (compressed data) corresponding to the decoding line is serially read out at a time from the head thereof, and the coding mode is recognized and selected according to both the code in the coded data bits and the two-dimensional code table (see Table 1) held in the reference table holding section  27  (step S 54 ). 
   As described later with reference to  FIGS. 22  to  25 , the number of 0s consecutively present to the right of an attentional bit is detected by searching the first table W[8] [256] and the fifth table CLR[8] [256], using both the coded data bits and the position of the attentional bit in the coded data bits. The coding mode is recognized according to a code that corresponds to the detected number of 0s. 
   For instance, when it is recognized by the fifth table CLR[8] [256] that an attentional bit is 0, and the number of 0s consecutively present to the right of the attentional bit is 0, it is judged that the number of 0s consecutively present from the position of the attentional bit is 1 and it is recognized that the coding mode is a vertical mode corresponding to either symbolic code Vr( 1 ) or symbolic code Vl( 1 ). Then, by recognizing by the fifth table CLR[8] [256] whether the two bits following 0 is 11 or 10, the coding mode is specified to either symbolic code Vr( 1 ) or symbolic code Vl( 1 ). The bit next to the currently recognized code 011 or 010 is set as the next attentional bit. 
   In addition, when it is recognized by the fifth table CLR[8] [256] that an attentional bit is 0, and the number of 0s consecutively present to the right of the attentional bit is 3, it is judged that the number of 0s consecutively present from the position of the attentional bit is 4 and it is recognized that the coding mode is a vertical mode corresponding to either symbolic code Vr( 2 ) or symbolic code Vl( 2 ). Then, by recognizing by the fifth table CLR[8] [256] whether the two bits following 0 is 11 or 10, the coding mode is specified to either symbolic code Vr( 2 ) or symbolic code Vl( 2 ). The bit next to the currently recognized code 000011 or 000010 is set as the next attentional bit. 
   Similarly, when it is recognized by the fifth table CLR[8] [256] that an attentional bit is 0, and the number of 0s consecutively present to the right of the attentional bit is 4, it is judged that the number of 0s consecutively present from the position of the attentional bit is 5 and it is recognized that the coding mode is a vertical mode corresponding to either symbolic code Vr( 3 ) or symbolic code Vl( 3 ). Then, by recognizing by the fifth table CLR[8] [256] whether the two bits following 0 is 11 or 10, the coding mode is specified to either symbolic code Vr( 3 ) or symbolic code Vl( 3 ). The bit next to the currently recognized code 0000011 or 0000010 is set as the next attentional bit. 
   When it is recognized by the fifth table CLR[8] [256] that an attentional bit is 0, and the number of 0s consecutively present to the right of the attentional bit is 2, it is judged that the number of 0s consecutively present from the position of the attentional bit is 3 and it is recognized that the coding mode is a pass mode. The bit next to the currently recognized code 00001 is set as the next attentional bit. 
   When it is recognized by the fifth table CLR[8] [256] that an attentional bit is 0, and the number of 0s consecutively present to the right of the attentional bit is 1, it is judged that the number of 0s consecutively present from the position of the attentional bit is 2 and it is recognized that the coding mode is a horizontal mode. The bit next to the currently recognized code 001+M(a 0 a 1 )+M(a 1 a 2 ) is set as the next attentional bit. 
   When it is recognized by the fifth table CLR[8] [256] that an attentional bit is 1, it is recognized that the coding mode is a horizontal mode corresponding to code V( 0 ). The bit next to the currently recognized code 1 is set as the next attentional bit. 
   Note that the aforementioned coding-mode recognizing-selecting procedure will be described later with reference to FIG.  26 . 
   When, instep S 54 , the coding mode is recognized to be a pass mode (code 0001; route “PASS”), a pixel b 2  on the reference line relative to a start pixel b 0  is first detected (step S 55 ). The procedure of detecting the pixel b 2  in step S 55  will be described later with reference to  FIGS. 8  to  16 . If the pixel b 2  is detected, pixels of the color of a 0  are laid down on the decoding line up to the position of the pixel b 2 , whereby a decoding process corresponding to the pass mode is carried out (step S 56 ). Next, the pixel on the decoding line that is just under the pixel b 2  is set as the next start pixel a 0  (step S 57 ). The color of the next start pixel a 0  is set to the color of the pixel b 2  (step S 58 ). 
   When, in step S 54 , the decoding mode is recognized to be a horizontal mode (code 001; route “HORIZONTAL”), a one-dimensional decoding process is carried out by both the code M(a 0 a 1 )+M(a 1 a 2 ) following the code 001 and the MH code table stored in the reference table holding section  27  (step S 59 ). Next, a pixel a 2  on the decoding line is detected and the pixel a 2  is set as the next start pixel a 0  (step S 60 ). The procedure of detecting the pixel a 2  in step S 60  will be described later with reference to  FIGS. 17  to  21 . The next start pixel a 0  employs the color of the previous start pixel a 0  (step S 61 ). 
   When, in step S 54 , the decoding mode is recognized to be a vertical mode (route “VERTICAL”), a pixel b 1  on the reference line relative to the start pixel b 0  is first detected (step S 62 ). The procedure of detecting the pixel b 1  in step S 62  will be described later with reference to FIG.  7  and  FIGS. 9  to  16 . If the pixel b 1  is detected, a decoding process corresponding to the recognized mode is carried out (step S 63 ). More specifically, when the recognized code is 1 (symbolic code V( 0 )), pixels of the color of a 0  are laid down up to but not including the pixel b 1  . When the recognized code corresponds to symbolic code Vx(n) (where x=r or l and n=1, 2, or 3), pixels of the color of a 0  are laid down up to the n th  pixel on the x-side (where x=r denotes right and x=l denotes left) of the pixel b 1  . Similarly, the n th  pixel is not included. Next, the pixel a 1  on the decoding line is set as the next start pixel a 0  (step S 64 ). The next start pixel a 0  employs the color opposite to the color of the previous pixel a 0  (step S 65 ). 
   After step S 58 , S 61 , or S 65 , it is judged whether or not the decoding process has been carried out up to the end of the decoding line (coded data corresponding to this line). That is, it is judged whether or not the decoding position has reached end-of-line (EOL) (step S 66 ). If it has not reached EOL (route “NO” in step S 66 ), the process returns to step S 54  and repeatedly carries out the above-mentioned steps S 54  to S 66 . 
   If it has reached EOL (route “YES” in step S 66 ), it is judged whether or not the decoding process has been executed up to the end of the image data to be decoded. That is, it is judged whether or not the decoding position has reached end-of-data (EOD) (step S 67 ). If it has not reached EOD (route “NO” in step S 67 ), the process returns to step S 52  and repeatedly carries out the above-mentioned steps S 52  to S 67 . When it arises, in step  52  the next decoding line is set and the coded data corresponding to the line are read out. In addition, the previous decoding line, as it is, is set as the reference line. If it has reached EOD (route “YES” in step S 67 ), the decoding process ends. 
   Now, an example of the data decompressing procedure in the preferred embodiment will be described with reference to  FIGS. 22  to  25 . Note that  FIGS. 22  to  25  show examples of pixel sequences used to explain the decoding process (decompressing process) of the preferred embodiment.  FIGS. 22  to  25  show the situations in decoding compressed data (coded data) “000101010001 . . . ” by employing the reference data bits (reference line shown in each figure). The compressed data (coded data) “000101010001 . . . ” is separated into 4 coding modes: pass mode 0001, vertical mode 010 (symbolic code Vl( 1 )), vertical mode 1 (symbolic code V( 0 ) and pass mode 0001. 
   In the preferred embodiment, 1 byte of compressed data is taken in at a time. First, compressed data 00010101 is input to the decompressing section  25 . Then, the head bit is set as an attentional bit. In step S 54  of  FIG. 6 , as noted before, a coding mode corresponding to each code is recognized. 
   A bit pattern for the compressed data 00010101 corresponds to NO. 21, and the current attentional bit is at the 0 th  bit position (x=0). Therefore, if reference is made to the column of the 0 th  bit at the row of NO. 21 of the fifth table CLR[8] [256] (CLR[0] [21]), the pixel color of the 0 th  bit is white (0). Next, if reference is made to the column of the 0 th  bit at the row of NO. 21 of the first table W[8] [256] (W[0] [21]), the number of 0s consecutively present to the right of the current attentional bit (white) is 2. Therefore, it is judged that 3 consecutive 0s are present from the position of the attentional bit, and it is recognized that the coding mode is a pass mode. Next, the bit next to the currently recognized code 0001, that is, the bit at the fifth position (4 th  bit position) is set as the next attentional bit. 
   Since the set attentional bit is at the 4 th  bit position, the pixel color at the 4 th  bit position is white (0), if reference is made to the column of the 4 bit at the row of NO. 21 of the fifth table CLR[8] [256] (CLR[4] [21]). Next, if reference is made to the column of the 4 th  bit at the row of NO. 21 of the first table W[8] [256] (W[4] [21]), the number of 0s consecutively present to the right of the current attentional bit (white) is 1. Therefore, it is judged that the bit next to the current attentional bit is 1 and that the number of 0s is only 1 (attentional bit). Also, it is recognized that the coding mode is a vertical mode corresponding to either code Vr( 1 ) or code Vl( 1 ). Next, whether the bit two away from the attentional bit (i.e., the 6 th  bit position) is 0 or 1 is judged by the fifth table CLR[8] [256]. That is, if reference is made to the column of the 6 th  bit at the row of NO. 21 of the fifth table CLR[8] [256] (CLR[6] [21]), the pixel color of the 6 th  bit is white (0). As a result, it is recognized that the coding mode is a vertical mode corresponding to symbolic code Vl( 1 ) (code 010). Next, the bit next to the currently recognized code 010, that is, the bit at the eighth position (7 th  bit position) is set as the next attentional bit. 
   Since the set attentional bit is at the 7 th  bit position, the pixel color of the 7 th  bit is black (1), if reference is made to the column of the 7 th  bit at the row of NO. 21 of the fifth table CLR[8] [256] (CLR[7] [21]). Therefore, it is recognized that the coding mode is a vertical mode corresponding to symbolic code V( 0 ). Next, the bit next to the currently recognized code 1 is set as the next attentional bit. At this stage, the process of recognizing 1 byte of compressed data is completed. Thereafter, the next 1 byte of compressed data “0001 . . . ” is read in and the head bit of the compressed data bits is set as an attentional bit. Next, in the same manner as the aforementioned, the coding mode is recognized to be a pass mode. 
   As shown in  FIG. 22 , the first start pixel b 0  on the reference line is set as a virtual white pixel to the left of the first pixel. Similarly, the first start pixel a 0  on the decoding line is set as a virtual white pixel to the left of the first pixel. Because the first code is 0001, the coding mode is recognized to be a pass mode. As shown in  FIG. 22 , the start pixels b 0  and a 0  are white. Therefore, the position of the pixel b 2  in the first byte B 1  on the reference line (the fifth bit from the left of the first byte B 1 ) is detected according to steps S 75  and S 80  of  FIG. 8  (i.e., flowcharts shown in FIGS.  11  and  15 ), and pixels of the color (white) of the start pixel a 0  are laid down up to the position of the pixel b 2 . Thereafter, the pixel on the decoding line which is just under the pixel b 2  is set as the next start pixel a 0 , and the color of the start pixel a 0  is set to the color (white) of the pixel b 2 . 
   Since the second code is 010, the coding mode is recognized to be a vertical mode corresponding to symbolic code Vl( 1 ). As shown in  FIG. 23 , the current start pixels b 0  and a 0  are both white. Therefore, the position of a color-changed pixel b 1  in the second byte B 2  on the reference line (the second bit from the left of the second byte B 2 ) is detected according to step S 75  of  FIG. 7  (i.e., a flowchart shown in FIG.  11 ), and pixels of the color (white) of the start pixel a 0  are laid down up to the position immediately before the pixel on the left side (x=1) of the pixel b 1  (i.e., the position of the rightmost bit of the first byte B 1 ). Thereafter, a color-changed pixel a 1  (the leftmost pixel in the second byte B 2 ) on the decoding line is set as the next start pixel a 0 . The color of the start pixel a 0  is set to the color opposite to the color of the previous start pixel a 0 , that is, black. 
   Since the third code is 1, the coding mode is recognized to be a vertical mode corresponding to symbolic code V( 0 ). As shown in  FIG. 24 , the current start pixels b 0  and a 0  are white and black, respectively. Therefore, the position of a color-changed pixel b 1  in the second byte B 2  on the reference line (the fifth bit from the left of the second byte B 2 ) is detected according to steps S 77  and S 78  of  FIG. 7  (i.e., flowcharts shown in FIGS.  12  and  13 ), and pixels of the color (black) of the start pixel a 0  are laid down up to the position immediately before the pixel b 1  (i.e., the fourth bit of the second byte B 2 ) Thereafter, a color-changed pixel a 1  (the fifth pixel from the left of the second byte B 2 ) on the decoding line is set as the next start pixel a 0 . The color of the start pixel a 0  is set to the color opposite to the color (black) of the previous start pixel a 0 , that is, white. 
   Since the fourth code is 0001, the coding mode is recognized to be a pass mode. As shown in  FIG. 25 , the current start pixels b 0  and a 0  are both white. Therefore, the position of a color-changed pixel b 2  in the fourth byte B 4  on the reference line (the third bit from the left of the fourth byte B 4 ) is detected according to steps S 75  and S 80  of  FIG. 8  (i.e., flowcharts shown in FIGS.  11  and  15 ), and pixels of the color (white) of the start pixel a 0  are laid down up to the position of the pixel b 2 . Thereafter, the pixel on the decoding line that is just under the pixel b 2  is set as the next start pixel a 0 . The color of the start pixel a 0  is set to the color (white) of the pixel b 2 . 
   Now, the detecting procedure for the pixel b 1  in step S 62  of  FIG. 6  will be described according to a flowchart (steps S 71  to S 79 ) shown in FIG.  7 . 
   When detecting the pixel b 1 , it is first judged whether or not the start pixel a 0  on the decoding line is white (step S 71 ). When the start pixel a 0  is white (route “YES” in step S 71 ), it is judged whether or not the start pixel b 0  on the reference line is black (step S 72 ). 
   When the start pixel b 0  is black (route “YES” in step S 72 ), the position of a white pixel that appears first to the right of the start pixel b 0  is found according to the procedure to be described later with reference to  FIG. 9  (step S 73 ). Based on the position of the white pixel found in step S 73 , the position of the pixel (black pixel) b 1  is found according to the procedure to be described later with reference to  FIG. 10  (step S 74 ). On the other hand, when the start pixel b 0  is white (route “NO” in step S 72 ), the position of the pixel (black pixel) b 1  is found according to the procedure to be described later with reference to  FIG. 11  (step S 75 ). 
   When the start pixel a 0  is black (route “NO” in step S 71 ), it is judged whether or not the start pixel b 0  on the reference line is white (step S 76 ). 
   When the start pixel b 0  is white (route “YES” in step S 76 ), the position of a black pixel that appears first to the right of the start pixel b 0  is found according to the procedure to be described later with reference to  FIG. 12  (step S 77 ). Based on the position of the black pixel found in step S 77 , the position of the pixel (white pixel) b 1  is found according to the procedure to be described later with reference to  FIG. 13  (step S 78 ). On the other hand, when the start pixel b 0  is black (route “NO” in step S 76 ), the position of the pixel (white pixel) b 1  is found according to the procedure to be described later with reference to  FIG. 14  (step S 79 ). 
   Next, the detecting procedure for the pixel b 2  in step S 55  of  FIG. 6  will be described according to a flowchart (steps S 71  to S 81 ) shown in FIG.  8 . After the pixel b 1  has been detected according to the procedure shown in  FIG. 7 , the pixel b 2  is detected by employing the detected pixel b 1  . Therefore, the flowchart of  FIG. 8 , in addition to the aforementioned steps of  FIG. 7 , includes only steps S 80  and S 81 . 
   That is, when the color-changed pixel (black pixel) b 1  is detected according to step S 74  or S 75 , the color-changed pixel (white pixel) b 2  is found according to the procedure to be described later with reference to  FIG. 15  (step S 80 ). On the other hand, when the color-changed pixel (white pixel) b 1  is detected according to step S 78  or S 79 , the color-changed pixel (black pixel) b 2  is found according to the procedure to be described later with reference to  FIG. 16  (step S 81 ). 
   Note that the judgement of color in steps S 71 , S 72 , and S 76  of  FIGS. 7 and 8  is made by using the fifth table CLR[8] [256]. 
   A detailed procedure in step S 73  of  FIGS. 7 and 8  will be described according to the flowchart (steps S 111  to S 115 ) shown in FIG.  9 . First, for 1 byte in which the start pixel b 0  is present, the number of black pixels (1s) consecutively present to the right of b 0  is found by use of the second table B[8] [256] (step S 111 ). Next, it is judged whether or not the addition of the position of b 0  in the 1 byte and the number of consecutive black pixels obtained in step S 111  is 8 (step S 112 ). When it is 8 (route “YES” in step S 112 ), a search for a white pixel that is present to the right of the byte having the start pixel b 0  is made by taking 1 byte of data (8 data bits) from the reference line at a time until the end of 1 line (step S 113 ). When a white pixel is not detected even after the search reaches the end of the reference line, a white pixel is positioned to the head of the next line. On the other hand, when a white pixel is detected, the position of a white pixel that appears first when viewed from the head of the 1 byte (i.e., the position of a white pixel that appears first to the right of the pixel b 0 ) is found by use of the third table LW[256] (step S 114 ). When, in step S 112 , it is judged that it is not 8 (route“NO”), the position next to a position corresponding to the addition of the position of b 0  in 1 byte and the number of consecutive black pixels obtained in step S 111  is set as the position of a white pixel that appears first to the right of the start pixel b 0  (step S 115 ). 
   A detailed procedure in step S 74  of  FIGS. 7 and 8  will be described according to the flowchart (steps S 121  to S 127 ) shown in FIG.  10 . First, it is judged whether or not the position of the white pixel obtained according to step S 73  (i.e., the flowchart shown in  FIG. 9 ) is at the head of the next line (step S 121 ). When it is at the head (route “YES” in step S 121 ), the position of the white pixel obtained in step S 73  is set as the position of the pixel b 1  (step S 122 ). On the other hand, when it is not at the head (route “NO” in step S 121 ), the number of white pixels (0s) consecutively present to the right of the aforementioned white pixel is found for 1 byte in which the white pixel is present, by use of the first table W[8] [256] (step S 123 ). Next, it is judged whether or not the addition of the position of the white pixel in the 1 byte and the number of consecutive white pixels obtained in step S 123  is 8 (step S 124 ). When it is 8 (route “YES” in step S 124 ), a search for a black pixel that is present to the right of the byte having the white pixel is made by taking 1 byte of data (8 data bits) from the reference line at a time until the end of 1 line (step S 125 ). When a black pixel is not detected even after the search reaches the end of the reference line, the pixel b 1  is positioned to the head of the next line. On the other hand, when a black pixel is detected, the position of a black pixel that appears first when viewed from the head of the 1 byte is found as the position of the pixel b 1  by use of the fourth table LB [256] (step S 126 ). When, in step S 124 , it is judged that it is not 8 (route “NO”), the position next to a position corresponding to the addition of the position of the aforementioned white pixel in 1 byte and the number of consecutive white pixels obtained in step S 123  is set as the position of the pixel b 1  (step S 127 ). 
   A detailed procedure in step S 75  of  FIGS. 7 and 8  will be described according to the flowchart (steps S 131  to S 135 ) shown in FIG.  11 . First, for 1 byte in which the start pixel b 0  is present, the number of white pixels (0s) consecutively present to the right of b 0  is found by use of the first table W[8] [256] (step S 131 ). Next, it is judged whether or not the addition of the position of b 0  in the 1 byte and the number of consecutive white pixels obtained in step S 131  is 8 (step S 132 ). When it is 8 (route “YES” in step S 132 ), a search for a black pixel that is present to the right of the byte having the start pixel b 0  is made by taking 1 byte of data (8 data bits) from the reference line at a time until the end of 1 line (step S 133 ). When a black pixel is not detected even after the search reaches the end of the reference line, the pixel b 1  is positioned to the head of the next line. On the other hand, when a black pixel is detected, the position of a black pixel that appears first when viewed from the head of the 1 byte is found as the position of the pixel b 1  by use of the fourth table LB[256] (step S 134 ). When, in step S 132 , it is judged that it is not 8 (route “NO”), the position next to a position corresponding to the addition of the position of b 0  in 1 byte and the number of consecutive white pixels obtained in step S 131  is set as the position of the pixel b 1  (step S 135 ). 
   A detailed procedure in step S 77  of  FIGS. 7 and 8  will be described according to the flowchart (steps S 111 ′ to S 115 ′) shown in FIG.  12 . First, for 1 byte in which the start pixel b 0  is present, the number of white pixels (0s) consecutively present to the right of b 0  is found by use of the first table W[8] [256] (step S 111 ′). Next, it is judged whether or not the addition of the position of b 0  in the 1 byte and the number of consecutive white pixels obtained in step S 111 ′ is 8 (step S 112 ′). When it is 8 (route “YES” in step S 112 ′), a search for a white pixel that is present to the right of the byte having the start pixel b 0  is made by taking 1 byte of data (8 data bits) from the reference line at a time until the end of 1 line (step S 113 ′). When a black pixel is not detected even after the search reaches the end of the reference line, a black pixel is positioned to the head of the next line. On the other hand, when a black pixel is detected, the position of a black pixel that appears first when viewed from the head of the 1 byte (i.e., the position of a black pixel that appears first to the right of the pixel b 0 ) is found by use of the fourth table LB[256] (step S 114 ′). When, in step S 112 ′, it is judged that it is not 8 (route “NO”), the position next to a position corresponding to the addition of the position of b 0  in 1 byte and the number of consecutive white pixels obtained in step S 111 ′ is set as the position of a black pixel that appears first to the right of the start pixel b 0  (step S 115 ′). 
   A detailed procedure in step S 78  of  FIGS. 7 and 8  will be described according to the flowchart (steps S 121 ′ to S 127 ′) shown in FIG.  13 . First, it is judged whether or not the position of the black pixel obtained according to step S 77  (i.e., the flowchart shown in  FIG. 12 ) is at the head of the next line (step S 121 ′). When it is at the head (route “YES” in step S 121 ′), the position of the black pixel obtained in step S 77  is set as the position of the pixel b 1  (step S 122 ′). On the other hand, when it is not at the head (route “NO” in step S 121 ′), the number of black pixels (1s) consecutively present to the right of the aforementioned black pixel is found for 1 byte in which the black pixel is present, by use of the second table B[8] [256] (step S 123 ′). Next, it is judged whether or not the addition of the position of the black pixel in the 1 byte and the number of consecutive black pixels obtained in step S 123 ′ is 8 (step S 124 ′). When it is 8 (route “YES” in step S 124 ′), a search for a white pixel that is present to the right of the byte having the aforementioned black pixel is made by taking 1 byte of data (8 data bits) from the reference line at a time until the end of 1 line (step S 125 ′). When a white pixel is not detected even after the search reaches the end of the reference line, the pixel b 1  is positioned to the head of the next line. On the other hand, when a white pixel is detected, the position of a white pixel that appears first when viewed from the head of the 1 byte is found as the position of the pixel b 1  by use of the third table LW[256] (step S 126 ′). When, in step S 124 ′, it is judged that it is not 8 (route “NO”), the position next to a position corresponding to the addition of the position of the aforementioned black pixel in 1 byte and the number of consecutive black pixels obtained in step S 123 ′ is set as the position of the pixel b 1  (step S 127 ′). 
   A detailed procedure in step S 79  of  FIGS. 7 and 8  will be described according to the flowchart (steps S 131 ′ to S 135 ′) shown in FIG.  14 . First, for 1 byte in which the start pixel b 0  is present, the number of black pixels (1s) consecutively present to the right of b 0  is found by use of the second table B[8] [256] (step S 131 ′). Next, it is judged whether or not the addition of the position of b 0  in the 1 byte and the number of consecutive black pixels obtained in step S 131 ′ is 8 (step S 132 ′). When it is 8 (route “YES” in step S 132 ′), a search for a white pixel that is present to the right of the byte having the start pixel b 0  is made by taking 1 byte of data (8 data bits) from the reference line at a time until the end of 1 line (step S 133 ′). When a white pixel is not detected even after the search reaches the end of the reference line, the pixel b 1  is positioned to the head of the next line. On the other hand, when a white pixel is detected, the position of a white pixel that appears first when viewed from the head of the 1 byte is found as the position of the pixel b 1  by use of the third table LW[256] (step S 134 ′). When, in step S 132 ′, it is judged that it is not 8 (route “NO”), the position next to a position corresponding to the addition of the position of b 0  in 1 byte and the number of consecutive black pixels obtained in step S 123 ′ is set as the position of the pixel b 1  (step S 135 ′). 
   A detailed procedure in step S 80  of  FIG. 8  will be described according to the flowchart (steps S 141  to S 147 ) shown in FIG.  15 . First, it is judged whether or not the position of the pixel b 1  obtained according to step S 74  or S 75  (i.e., the flowchart shown in  FIGS. 10  or  11 ) is at the head of the next line (step S 141 ). When it is at the head (route “YES” in step S 141 ), the position of the pixel b 1  obtained in step S 74  or S 75  is set as the position of the pixel b 2  (step S 142 ). On the other hand, when it is not at the head (route “NO” in step S 141 ), the number of black pixels (1s) consecutively present to the right of the pixel b 1  is found for 1 byte in which the pixel b 1  is present, by use of the second table B[8] [256] (step S 143 ). Next, it is judged whether or not the addition of the position of b 1  in the 1 byte and the number of consecutive black pixels obtained in step S 143  is 8 (step S 144 ). When it is 8 (route “YES” in step S 144 ), a search for a white pixel that is present to the right of the byte having the pixel b 1  is made by taking 1 byte of data (8 data bits) from the reference line at a time until the end of 1 line (step S 145 ). When a white pixel is not detected even after the search reaches the end of the reference line, the pixel b 2  is positioned to the head of the next line. On the other hand, when a white pixel is detected, the position of a white pixel that appears first when viewed from the head of the 1 byte is found as the position of the pixel b 2  by use of the third table LW[256] (step S 146 ) When, in step S 144 , it is judged that it is not 8 (route “NO”), the position next to a position corresponding to the addition of the position of b 1  in 1 byte and the number of consecutive black pixels obtained in step S 143  is set as the position of the pixel b 2  (step S 147 ). 
   A detailed procedure in step S 81  of  FIG. 8  will be described according to the flowchart (steps S 141 ′ to S 147 ′) shown in FIG.  16 . First, it is judged whether or not the position of the pixel b 1  obtained according to step S 78  or S 79  (i.e., the flowchart shown in  FIGS. 13  or  14 ) is at the head of the next line (step S 141 ′). When it is at the head (route “YES” in step S 141 ′), the position of the pixel b 1  obtained in step S 78  or S 79  is set as the position of the pixel b 2  (step S 142 ′). On the other hand, when it is not at the head (route “NO” in step S 141 ′), the number of white pixels (0s) consecutively present to the right of the pixel b 1  is found for 1 byte in which the pixel b 1  is present, by use of the first table W[8] [256] (step S 143 ′). Next, it is judged whether or not the addition of the position of b 1  in the 1 byte and the number of consecutive white pixels obtained in step S 143 ′ is 8 (step S 144 ′). When it is 8 (route “YES” in step S 144 ′), a search for a black pixel that is present to the right of the byte having the pixel b 1  is made by taking 1 byte of data (8 data bits) from the reference line at a time until the end of 1 line (step S 145 ′). When a black pixel is not detected even after the search reaches the end of the reference line, the pixel b 2  is positioned to the head of the next line. On the other hand, when a black pixel is detected, the position of a black pixel that appears first when viewed from the head of the 1 byte is found as the position of the pixel b 2  by use of the fourth table LB[256] (step S 146 ′). When, in step S 144 ′, it is judged that it is not 8 (route “NO”), the position next to a position corresponding to the addition of the position of b 1  in 1 byte and the number of consecutive white pixels obtained in step S 143 ′ is set as the position of the pixel b 2  (step S 147 ′). 
   The detecting procedure for the pixel a 2  in step S 60  of  FIG. 6  will be described according to the flowchart (steps S 91  to S 95 ) shown in FIG.  17 . 
   When detecting the pixel a 1 , it is first judged whether or not the start pixel a 0  on the decoding line is white (step S 91 ). When the pixel a 0  is white (route “YES” in step S 91 ), the position of a black pixel a 1  is found according to the procedure to be described later with reference to  FIG. 18  (step S 92 ). Then, the position of a white pixel a 2  is found according to the procedure to be described later with reference to  FIG. 19  (step S 93 ). On the other hand, when the pixel a 0  is black (route “NO” in step S 91 ), the position of a white pixel a 1  is found according to the procedure to be described later with reference to  FIG. 20  (step S 94 ). Then, the position of a black pixel a 2  is found according to the procedure to be described later with reference to  FIG. 21  (step S 95 ). 
   Note that the judgement of color in step S 91  of  FIG. 17  is made by using the fifth table CLR[8] [256]. 
   A detailed procedure in step S 92  of  FIG. 17  will be described according to the flowchart (steps S 151  to S 155 ) shown in FIG.  18 . First, for 1 byte in which the start pixel a 0  is present, the number of white pixels (0s) consecutively present to the right of a 0  is found by use of the first table W[8] [256] (step S 151 ). Next, it is judged whether or not the addition of the position of a 0  in the 1 byte and the number of consecutive white pixels obtained in step S 151  is 8 (step S 152 ). When it is 8 (route “YES” in step S 152 ), a search for a black pixel that is present to the right of the byte having the start pixel a 0  is made by taking 1 byte of data (8 data bits) from the decoding line at a time until the end of 1 line (step S 153 ). When a black pixel is not detected even after the search reaches the end of the decoding line, the pixel a 1  is positioned to the head of the next line. On the other hand, when a black pixel is detected, the position of a black pixel that appears first when viewed from the head of the 1 byte is found as the position of the pixel a 1  by use of the fourth table LB[256] (step S 154 ). When, in step S 152 , it is judged that it is not 8 (route “NO”), the position next to a position corresponding to the addition of the position of a 0  in 1 byte and the number of consecutive white pixels obtained in step S 153  is set as the position of the pixel a 1  (step S 155 ). 
   A detailed procedure in step S 93  of  FIG. 17  will be described according to the flowchart (steps S 161  to S 165 ) shown in FIG.  19 . First, for 1 byte in which the pixel a 1  obtained in step S 92  (i.e., the flowchart shown in  FIG. 18 ) is present, the number of black pixels (1s) consecutively present to the right of a 1  is found by use of the second table B[8] [256] (step S 161 ). Next, it is judged whether or not the addition of the position of a 1  in the 1 byte and the number of consecutive black pixels obtained in step S 161  is 8 (step S 162 ). When it is 8 (route “YES” in step S 162 ), a search for a white pixel that is present to the right of the byte having the pixel a 1  is made by taking out 1 byte of data (8 data bits) from the decoding line at a time until the end of 1 line (step S 163 ). When a white pixel is not detected even after the search reaches the end of the decoding line, the pixel a 2  is positioned to the head of the next line. On the other hand, when a white pixel is detected, the position of a white pixel that appears first when viewed from the head of the 1 byte is found as the position of the pixel a 2  by use of the third table LW[256] (step S 164 ). When, in step S 162 , it is judged that it is not 8 (route “NO”), the position next to a position corresponding to the addition of the position of a 1  in 1 byte and the number of consecutive black pixels obtained in step S 163  is set as the position of the pixel a 2  (step S 165 ). 
   A detailed procedure in step S 94  of  FIG. 17  will be described according to the flowchart (steps S 151 ′ to S 155 ′) shown in FIG.  20 . First, for 1 byte in which the start pixel a 0  is present, the number of black pixels (1s) consecutively present to the right of a 0  is found by use of the second table B[8] [256] (step S 151 ′). Next, it is judged whether or not the addition of the position of a 0  in the 1 byte and the number of consecutive black pixels obtained in step S 151 ′ is 8 (step S 152 ′). When it is 8 (route “YES” in step S 152 ′), a search for a white pixel that is present to the right of the byte having the start pixel a 0  is made by taking 1 byte of data (8 data bits) from the decoding line at a time until the end of 1 line (step S 153 ′). When a white pixel is not detected even after the search reaches the end of the decoding line, the pixel a 1  is positioned to the head of the next line. On the other hand, when a white pixel is detected, the position of a white pixel that appears first when viewed from the head of the 1 byte is found as the position of the pixel a 1  by use of the third table LW[256] (step S 154 ′). When, in step S 152 ′, it is judged that it is not 8 (route “NO”), the position next to a position corresponding to the addition of the position of a 0  in 1 byte and the number of consecutive black pixels obtained in step S 153 ′ is set as the position of the pixel a 1  (step S 155 ′). 
   A detailed procedure in step S 95  of  FIG. 17  will be described according to the flowchart (steps S 161 ′ to S 165 ′) shown in FIG.  21 . First, for 1 byte in which the pixel a 1  obtained in step S 94  (i.e., the flowchart shown in  FIG. 20 ) is present, the number of white pixels (1s) consecutively present to the right of a 1  is found by use of the first table W[8] [256] (step S 161 ′). Next, it is judged whether or not the addition of the position of a 1  in the 1 byte and the number of consecutive white pixels obtained in step S 161 ′ is 8 (step S 162 ′). When it is 8 (route “YES” in step S 162 ′), a search for a black pixel that is present to the right of the byte having the pixel a 1  is made by taking 1 byte of data (8 data bits) from the decoding line at a time until the end of 1 line (step S 163 ′). When a black pixel is not detected even after the search reaches the end of the decoding line, the pixel a 2  is positioned to the head of the next line. On the other hand, when a black pixel is detected, the position of a black pixel that appears first when viewed from the head of the 1 byte is found as the position of the pixel a 2  by use of the fourth table LB[256] (step S 164 ′). When, in step S 162 ′, it is judged that it is not 8 (route “NO”), the position next to a position corresponding to the addition of the position of a 1  in 1 byte and the number of consecutive white pixels obtained in step S 163 ′ is set as the position of the pixel a 2  (step S 165 ′). 
   Finally, an example of the recognizing and selecting procedure for a coding mode in step S 54  of  FIG. 6  that is performed by the decompressing section  25  will be described according to a flowchart (steps S 201  to S 229 ) shown in FIG.  26 . 
   First, 1 byte (8 bits) of compressed data (coded data bits) is taken in (step S 201 ), and the head bit of the coded data bits is set as an attentional bit (step S 202 ). Then, it is judged by use of the fifth table CLR[8] [256] whether the attentional bit is 0 or 1 (step S 203 ). 
   When the attentional bit is 1 (route “NO” in step S 203 ), the coding mode is recognized to be a vertical mode corresponding to symbolic code V( 0 ) (step S 204 ). It is judged whether or not the attentional bit is the end bit of the current 1 byte (step S 205 ). When it is not the end bit (route “NO” in step S 205 ), the bit next to the currently recognized code 1 is set as the next attentional bit (step S 206 ), and the procedure returns to step S 203 . 
   On the other hand, when the current attentional bit is the end bit (route “YES” in step S 205 ), it is judged whether or not all the compressed data bits have been taken in (step S 229 ). When there are unprocessed compressed data bits (route “NO” in step S 229 ), the procedure returns to step S 201  and the next 1 byte of compressed data is taken in. On the other hand, when all the compressed data bits have been processed (route “YES” in step S 229 ), the procedure ends. 
   When, in step S 203 , it is judged that the attentional bit is 0 (route “YES”), the number of white pixels (0s) consecutively present to the right of the attentional bit in 1 byte having the attentional bit is found by use of the first table W[8] [256] (step S 207 ). Next, it is judged whether or not the addition of the position of the attentional bit in the 1 byte and the number of consecutive white pixels obtained in step S 207  is 8 (step S 208 ). When it is not 8 (route “NO” in step S 208 ), the addition of land the number of consecutive white pixels obtained in step S 208  is found as the number of 0s consecutively present from the position of the attentional bit. Based on the number, the coding mode is recognized in the following manner (step S 209 ). 
   When the number of consecutive 0s is 2 (route “2” in step S 209 ), the coding mode is recognized to be a horizontal mode (step S 210 ). 
   When the number of consecutive 0s is 3 (route “3” in step S 209 ), the coding mode is recognized to be a pass mode (step S 211 ). 
   When the number of consecutive 0s is 1 (route “1” in step S 209 ), it is judged by use of the fifth table CLR[8] [256] whether the two bits following 0 is 10 or 11 (step S 212 ). When the two bits is 10 (route “YES” in step S 212 ), the coding mode is recognized to be a vertical mode corresponding to symbolic code Vl( 1 ) (step S 213 ). When the two bits is 11 (route “NO” in step S 212 ), the coding mode is recognized to be a vertical mode corresponding to symbolic code Vr( 1 ) (step S 214 ). 
   When the number of consecutive 0s is 4 (route “4” in step S 209 ), it is judged by use of the fifth table CLR[8] [256] whether the two bits following 0 is 10 or 11 (step S 215 ). When the two bits is 10 (route “YES” in step S 215 ), the coding mode is recognized to be a vertical mode corresponding to symbolic code Vl( 2 ) (step S 216 ). When the two bits is 11 (route “NO” in step S 215 ), the coding mode is recognized to be a vertical mode corresponding to symbolic code Vr( 2 ) (step S 217 ). 
   When the number of consecutive 0s is 5 (route “5” in step S 209 ), it is judged by use of the fifth table CLR[8] [256] whether the two bits following 0 is 10 or 11 (step S 218 ). When the two bits is 10 (route “YES” in step S 218 ), the coding mode is recognized to be a vertical mode corresponding to symbolic code Vl( 3 ) (step S 219 ). When the two bits is 11 (route “NO” in step S 218 ), the coding mode is recognized to be a vertical mode corresponding to symbolic code Vr( 3 ) (step S 220 ). 
   When, in step S 208 , it is judged to be 8 (route “YES”), the next 1 byte of compressed data (coded data bits) is taken in (step S 221 ). The head bit of the coded data bits is set as an attentional bit (step S 222 ). Next, it is judged by use of the fifth table CLR[8] [256] whether the attentional bit is 0 or 1 (step S 223 ). 
   When the attentional bit is 1 (route “NO” in step S 223 ), the coding mode is recognized according to the addition of 1 and the number of consecutive white pixels obtained in step S 207 , in the same procedure as steps S 210  to S 220  (step S 224 ). 
   On the other hand, when the attentional bit is 0 (route “YES” in step S 223 ), the number of white pixels (0s) consecutively present to the right of the attentional bit in the 1 byte having the attentional bit is found by use of the first table W[8] [256] (step S 225 ). 
   Next, according to the addition of 2, the number of consecutive white pixels obtained in step S 207 , and the number of consecutive white pixels obtained in step S 225 , the coding mode is recognized in the same procedure as steps S 210  to S 220  (step S 226 ). 
   Thus, in steps S 210 , S 211 , S 213 , S 214 , S 216 , S 217 , S 219 , S 220 , S 224 , and S 266 , the coding mode is recognized. Thereafter, it is judged whether or not the end bit of the currently recognized code is the end bit of the currently taken 1 byte (step S 227 ). When it is not the end bit (route “NO” in step S 227 ), the bit next to the currently recognized code is set as the next attentional bit (step S 228 ), and the procedure returns to step S 203 . 
   When it is the end bit (route “YES” in step S 227 ), it is judged whether or not all the compressed data bits have been taken in (step S 229 ). When there are unprocessed compressed data bits (route “NO” in step S 229 ), the procedure returns to step S 201  and the next 1 byte of compressed data is taken in. On the other hand, when all the compressed data bits have been processed (route “YES” in step S 229 ), the procedure ends. 
   Thus, according to the preferred embodiment of the present invention, when decompressing binary data compressed by MMR coding, the pixels b 1 , b 2 , a 1 , and a 2  on the reference line and the decoding line are detected in units of 1 byte (8 bits) by use of the first through the fifth tables. Therefore, the present invention is capable of efficiently detecting the pixels b 1 , b 2 , a 1 , and a 2 . 
   In addition, the process of recognizing the codes contained in compressed data (i.e., coding modes) is performed in units of 1 byte (8 bits) by employing the first through the fifth tables. Therefore, the present invention is capable of efficiently detecting the coding modes. 
   Thus, as compared with the conventional method of recognizing the positions of color-changed pixels and the coding modes, the preferred embodiment is capable of considerably speeding up the process of decompressing compressed binary data and considerably shortening the time required for the decompressing process. Particularly, the present invention is extremely effective when employed in the case where image data has high resolution and the space between color-changed pixels is long. Thus, the present invention is capable of considerably shortening the data decompressing time. 
   While the present invention has been described with reference to the preferred embodiment thereof, the invention is not to be limited to the details given herein, but may be modified within the scope of the invention hereinafter claimed. 
   For example, although the preferred embodiment has been described with reference to the case in which a reference line, compressed data, and a decoding line are divided into blocks of 1 byte (8 bits), the present invention is not to be limited to this case. 
   In addition, the preferred embodiment has been described with reference to the case where data compressed by MMR coding is decompressed. However, the present invention is not limited to MMR coding. The invention is also applicable to the case where data compressed by other coding methods (e.g., MH coding) is decompressed, and is capable of obtaining the same advantages as the preferred embodiment.