Abstract:
An image processing apparatus and method is provided which performs anti-aliasing on input image data. The apparatus and method may be utilized to improve resolution of, for example, images formed by a group of dots and lines, such as characters and marks. The apparatus and method disclosed herein can perform anti-aliasing with a lighter processing load than previously disclosed methods.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to an image processing apparatus which performs anti-aliasing on input image data and an image processing method thereof. 
     2. Description of Related Art 
     Conventionally, there are cases where stair-like jaggies occur at the boundaries of different colors where the different colors are adjacent to each other resulting in degradation of image quality in images (line drawings) formed by a group of dots and lines, such as characters and marks displayed on a monitor or printed by a printer. Jaggies are prone to occur when granularity of pixels which constitute a line drawing is not sufficient. Therefore, techniques to spuriously improve resolution have been devised. Such techniques are referred to as anti-aliasing or smoothing. 
     Among such techniques, for example, U.S. Pat. No. 4,437,122 discloses a technique in which resolution of an image is tripled horizontally and vertically and occurrence of jaggy is judged by using conditional judgment in positional relations of ON/OFF of dots in a viewing window of 3×3 pixels including a focused pixel, and the pixel value of the focused pixel which is divided in to 3×3 pixels is changed according to the matched conditions when a plurality of specific conditions prepared in advance are matched. 
     Moreover, U.S. Pat. No. 4,847,641 discloses a technique to spuriously improve resolution by judging occurrence of jaggy by judging whether the ON/OFF of dots in a viewing window matches a specific pattern referred to as a template and outputting the halftone while the resolution is maintained as it is. However, this technique is difficult because the input pixel is fundamentally constituted of two-bit information of ON/OFF and data processing be complicated when a multi-level image including halftone is applied. 
     In view of such problem, JP H6-139350 discloses a technique to carry out jaggy detection configured of multi-level data and not the conventional jaggy detection by binary pattern in order to perform smoothing on multi-level image which is to be input. According to this technique, smoothing can be performed on characters and line drawings having halftone values. However, a detection pattern is needed for each tone in order to perform appropriate jaggy detection in this technique. Thus, there is a problem that the circuit size and processing cost increase. 
     In view of the above problem, JP 2000-156784 discloses a technique to perform smoothing on color halftone characters and halftone line drawings which are printed on a halftone background such as a photograph. Here, after binarizing the multi-level data, occurrence of jaggy is detected by pattern matching and also smoothing is performed only on a region which includes characters and line drawings indicated by attribute signals to obtain a pixel density which becomes the background from neighboring pixels of the jaggy, and an output pixel value is obtained based on the densities of the character and background. 
     As for binarizing, processing in which edges in an image are detected by using an edge detection operator and intensities of the detected edges are binarized by a certain threshold is described. As for a device for detecting edges, an existing differential operator such as Sobel or Laplacian is used. Then, pixels having edge intensity exceeding the threshold are judged as edge pixels, and binarizing is carried out by converting the pixel values of the edge pixels to 255 and the pixel values of non-edge pixels to 0. Thereafter, pattern matching by using template data is carried out to the binarized edge information. 
     SUMMARY OF THE INVENTION 
     Conventionally, the generally used edge operator calculates differences between a focused pixel and neighboring pixels, or, calculates differences between neighboring pixels in all directions, and such calculation processing is performed for each pixel in a pixel block of a predetermined size. Therefore, in the technique described in the above JP 2000-156784, great amount of calculation needs to be performed to obtain the edge information and this creates a problem that the processing load be heavy. 
     In view of the above problems, an object of the present invention is to provide an image processing apparatus in which anti-aliasing can be performed with lighter processing load and an image processing method thereof. 
     In order realize the above object, an image processing apparatus for performing anti-aliasing on input image data reflecting one aspect of the present invention includes a viewing window setting section which sets a viewing window of a predetermined size which includes a focused pixel, a difference determination section which extracts a plurality of combinations of two predetermined adjacent pixels in the viewing window set by the viewing window setting section and determines a difference between input pixel values of the two extracted pixels for each combination, a determination information obtaining section which obtains combination determination information based on a combination of determination results obtained by the difference determination section, and a pixel value calculation section which obtains an output pixel value of the focused pixel by carrying out a weighted addition of an input pixel value of the focused pixel and an input pixel value of a predetermined neighboring pixel which is adjacent to the focused pixel based on the combination determination information obtained by the determination information obtaining section. 
     Preferably, the determination information obtaining section obtains the combination determination information with lesser number of determination results which are obtained by the difference determination section and which are referred to for obtaining the combination determination information than pixels referred to for obtaining the determination results. 
     Preferably, the image processing apparatus further includes a storage section which stores the determination results obtained by the difference determination section, and the viewing window setting section sets the viewing window so that the focused pixel is located at a predetermined position and changes the setting position of the viewing window every time the output pixel value is obtained so that a pixel which is to be the focused pixel is selected in a predetermined order, and the determination information obtaining section obtains the combination determination information by referring to at least a part of the determination results stored in the storage section. 
     In order to realize the above object, an image processing method for performing anti-aliasing on input image data reflecting one aspect of the present invention includes setting a viewing window of a predetermined size which includes a focused pixel, extracting a plurality of combinations of two predetermined adjacent pixels in the viewing window set in the setting, determining a difference between input pixel values of the two extracted pixels for each combination, obtaining combination determination information based on a combination of determination results obtained in the extracting and the determining, and calculating an output pixel value of the focused pixel by carrying out a weighted addition of an input pixel value of the focused pixel and an input pixel value of a predetermined neighboring pixel which is adjacent to the focused pixel based on the combination determination information obtained in the obtaining. 
     Preferably, in the obtaining, the combination determination information is obtained with lesser number of determination results which are obtained in the extracting and the determining which are referred to for obtaining the combination determination information than pixels referred to for obtaining the determination results. 
     Preferably, the image processing method further includes storing the determination results obtained in the extracting and the determining in a predetermined storage section, and in the setting, the viewing window is set so that the focused pixel is located at a predetermined position and the setting position of the viewing window is changed every time the output pixel value is obtained so that a pixel which is to be the focused pixel is selected in a predetermined order, and in the obtaining, the combination determination information is obtained by referring to at least a part of the determination results stored in the storage section. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The above and other objections, advantages and features of the present invention will become more fully understood from the detailed description given hereinbelow and the appended drawings which are given by way of illustration only, and thus are not intended as a definition of the limits of the present invention, and wherein: 
         FIG. 1  is a diagram showing a functional configuration of a MFP according to an embodiment; 
         FIG. 2  is a diagram showing a functional configuration of an image processing section; 
         FIG. 3  is a diagram which explains a viewing window; 
         FIG. 4  is a diagram which explains targets for edge determination; 
         FIG. 5  is a diagram which conceptually explains about templates; 
         FIG. 6  is a flowchart which explains anti-aliasing; 
         FIG. 7  is a flowchart which explains edge determination processing; 
         FIG. 8  is a diagram which explains an outline of output value conversion processing; 
         FIG. 9  is a flowchart which explains processing A; 
         FIG. 10  is a flowchart which explains processing B; 
         FIG. 11  is a flowchart which explains processing C; 
         FIG. 12  is a flowchart which explains processing D; 
         FIG. 13  is a flowchart which explains processing E; 
         FIG. 14  is a flowchart which explains processing F; 
         FIG. 15  is a flowchart which explains processing G; 
         FIG. 16  is a flowchart which explains processing H; 
         FIG. 17  is a flowchart which explains processing I; 
         FIG. 18  is a flowchart which explains processing J; 
         FIG. 19  is a flowchart which explains processing K; 
         FIG. 20  is a flowchart which explains processing L; 
         FIG. 21  is a flowchart which explains processing for selecting final template data; 
         FIG. 22  is a flowchart which explains processing for selecting final template data; 
         FIG. 23  is a flowchart which explains processing for calculating an output pixel value; 
         FIGS. 24A and 24B  are diagrams which explain a result of the anti-aliasing of the embodiment; 
         FIGS. 25A to 25F  are diagrams which explain results of the anti-aliasing of the embodiment; 
         FIG. 26  is a diagram which explains an outline of another example of the output value conversion processing; 
         FIG. 27  is a flowchart which explains processing M; 
         FIG. 28  is a flowchart which explains processing O; 
         FIG. 29  is a flowchart which explains processing P; 
         FIG. 30  is a flowchart which explains processing Q; 
         FIG. 31  is a flowchart which explains processing R; 
         FIG. 32  is a flowchart which explains processing S; 
         FIG. 33  is a flowchart which explains another example of the processing for selecting final template data. 
     
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Hereinafter, the MFP (Multi Function Peripheral) according to an embodiment of the present invention will be described with reference to the drawings. However, the scope of the invention is not limited to the illustrated examples. Here, the MFP is a composite-type image forming apparatus including a plurality of functions such as a reproducing function and printing function. In the following description, the same reference numeral will be appended to sections which have the same function and configuration, and their description will be omitted. 
     The MFP  100  is connected to an external PC (Personal Computer)  200  as shown in  FIG. 1  and can generate image data from data in the form of PDL (Page Description Language) transmitted from the external PC  200 , process the image, and then perform printing. 
     The MFP  100  is configured by including a controller  20 , an image processing section  10 , a control section  11 , a reading section  12 , an operation section  13 , a display section  14 , a storage section  15 , an image memory  16  and a printing apparatus  17  as shown in  FIG. 1 , for example. 
     The controller  20  generates image data of each pixel by rasterizing processing. 
     For example, document data created in the external PC  200  is converted into the form of PDL by printer driver software and transmitted to the controller  20 . The controller  20  analyzes the PDL commands included in the PDL data which is transmitted, assigns pixels to each image unit to be rendered, and generates the image data wherein a pixel value is set for each of the assigned pixels by the rasterizing processing. The image unit to be rendered may be referred to as an object. An image is generated for each color of C (Cyan), M (Magenta), Y (Yellow) and K (Black). 
     In this embodiment, the controller  20  is built in the MFP  100 . However, the controller  20  may alternatively be provided outside of the MFP  100 . 
     The control section  11  is configured by including a CPU (Central Processing Unit)  11   a , a RAM (Random Access Memory)  11   b , and the like. The control section  11  integrally controls each section of the MFP  100  by executing various processing such as a predetermined calculation and a control of image processing in the image processing section  10  in cooperation with various processing programs stored in the storage section  15 . 
     The reading section  12  includes a scanner which has an optical system or CCD (Charge Coupled Device), and generates image signals (analog signal) by optically scanning documents. The generated image signals are subjected to various correction processing in a processing section which is not shown, and then, the processed image signals are digitized and output to the image processing section  10 . 
     The operation section  13  is for inputting operating instructions of an operator, and the operation section  13  includes various types of keys, a touch panel which is configured integrally with the display section  14 , and the like. The operation section  13  generates an operation signal according to the operation and outputs the generated operation signal to the control section  11 . 
     The display section  14  displays an operation screen and the like on the display according to the control by the control section  11 . 
     The storage section  15  stores parameters, setting data, and the like necessary for processing in addition to various types of processing programs. A non-volatile memory such as a hard disk can be used as the storage section  15 . 
     The image memory  16  is a memory to store image data. A DRAM (Dynamic RAM), hard disk and the like can be used as the image memory  16 . 
     The printing apparatus  17  performs printing based on an image to be printed which is input from the image processing section  10 . The image to be printed is an image which is generated by the image processing section  10  performing image processing to the image generated by the controller  20 . 
     The printing apparatus  17  performs printing by the electrographic method, and is configured by including a paper feeding section, an exposure section, a developing section, a fixing section and the like, for example. When printing, the exposure section irradiates a photosensitive drum with a laser beam based on the image data and forms an electrostatic latent image. The electrostatic latent image is developed by the developing section, and a toner image is formed on the photosensitive drum. A toner image is formed for each color of C, M, Y and K. The toner image in each color is transferred on top of one another on an intermediate transfer belt to form a color image. The color image is transferred onto a paper fed from the paper feeding section by a transferring roller and the like, and is subjected to fixing processing by the fixing section. 
     The image processing section  10  conducts image processing on the image data input from the controller  20  or the image data input from the reading section  12 . The image processing includes scaling processing, resolution conversion processing, tone correction processing, screen processing and the like, for example. Also, the image processing section  10  performs color conversion processing on the image data input from the reading section  12  to convert the RGB to the colors of YMCK. The image processing section  10  performs the above-mentioned image processing and generates the image data to be printed. In this embodiment, the image processing section  10  performs anti-aliasing processing to smooth out the tone between a predetermined pixel and its neighboring pixels in the input image data. 
       FIG. 2  shows component parts of the image processing section  10  which function mainly when the anti-aliasing processing is performed. The image processing section  10  includes an image data input section  101 , a viewing window setting section  102 , an edge determination section  103 , a template matching section  104  and a pixel value calculation section  105  as shown in  FIG. 2 , for example. In this embodiment, anti-aliasing processing is performed on input image data of 1200 dpi constituted of 1 pixel×8 bits in the configuration shown in  FIG. 2 . The anti-aliasing processing executed in the configuration shown in  FIG. 2  is performed with respect to each color of CMYK. The anti-aliasing processing may be conducted only on certain colors, and not on every color of CMYK. 
     The image data input section  101  inputs image data which are output from the controller  20  and the reading section  12 , and holds the data in a predetermined buffer. At this time, the image data input section  101  may input the data to the image data input section  101  after performing the above-mentioned various types of image processing on the data. 
     The viewing window setting section  102  sets image data included within the range of a preset viewing window W among the image data input to the image data input section  101 . 
     This viewing window W is configured in a matrix of height×width: 7×7 pixels as shown in  FIG. 3 , for example. A focused pixel P 1  is set at the center (position [ 25 ] in the drawing) of this viewing window W and its surrounding pixels P 2  are set around the focused pixel P 1  (positions [ 01 ] to [ 49 ] except [ 25 ] in the drawing). Then, the adjacent pixels which are positioned above, below, left and right of the focused pixel P 1  among the surrounding pixels P 2  are respectively set as neighboring pixels P 31  to P 34 . The viewing window is not limited to the form shown in this embodiment and its shape, size and so forth can be set arbitrarily. 
     The viewing window setting section  102  sets the image data which is included within the range of the viewing window W configured as mentioned above so that the pixel which is to be subject to the after-mentioned anti-aliasing is the focused pixel P 1 . For example, the viewing window setting section  102  sequentially shifts the range of the viewing window W from the upper left corner of the image to the lower right corner of the image every time the setting is performed so that all the pixels of the input image data will be sequentially set as the focused pixel P 1 . 
     The viewing window setting section  102  holds the image data in the range set by the viewing window W in a predetermined line memory in 1×7 pixel units. The viewing window setting section  102  outputs the image data thus held to the edge determination section  103  line by line. 
     The edge determination section  103  inputs the image data which is output from the viewing window setting section  102  and performs the edge determination processing. Specifically, the edge determination section  103  performs the edge determination by extracting two predetermined neighboring pixels from the input image data of 7×7 pixels, calculating the difference between the pixel values thereof, determining whether this difference is equal to or more than the preset threshold value and expressing the determination result with a flag. The threshold value set here can be changed arbitrarily according to conditions of the tone and the like of the image. When the edge determination section  103  calculates the difference between the pixel values, the edge determination section  103  does not perform quantization such as binarization of the pixel values, and directly applies the values of 0 to 255 as they are in order to handle the halftone. Combinations of the pixels subject to the edge determination are all of the combinations of two pixels connected by a line as shown in  FIG. 4 , for example. That is, a total of 56 combinations of the pixels of “03” and “10”, “04” and “11”, “05” and “12”, “10” and “17”, “10” and “18”, “11” and “17”, “11” and “18”, “11” and “19”, “12” and “18”, “12” and “19”, “15” and “16”, “16” and “17”, “16” and “24”, “17” and “18”, “17” and “23”, “17” and “24”, “18” and “19”, “18” and “24”, “18” and “25”, “18” and “26”, “19” and “20”, “19” and “26”, “19” and “27”, “20” and “21”, “20” and “26”, “22” and “23”, “23” and “24”, “23” and “31”, “24” and “25”, “24” and “30”, “24” and “31”, “24” and “32”, “25” and “26”, “25” and “32”, “26” and “27”, “26” and “32”, “26” and “33”, “26” and “34”, “27” and “28”, “27” and “33”, “29” and “30”, “30” and “31”, “31” and “32”, “31” and “38”, “31” and “39”, “32” and “33”, “32” and “38”, “32” and “39”, “32” and “40”, “33” and “34”, “33” and “39”, “33” and “40”, “34” and “35”, “38” and “45”, “39” and “46”, and “40” and “47” are subject to the edge determination. The pixels expressed in a pattern in  FIG. 4  indicate the pixels which are subject to the edge determination. 
     The edge determination section  103  outputs the result of the edge determination on each combination thus obtained to the template matching section  104 . 
     The template matching section  104  includes a template determination section  104   a  and a template selection section  104   b . The template matching section  104  selects a corresponding template based on the result of the edge determination output from the edge determination section  103 , and outputs the selection result to the image value calculation section  105 . Specifically, the template determination section  104   a  performs narrowing down of a plurality of types of templates based on the input edge determination results. A specific method for the narrowing down of the templates will be described later. Then, the template selection section  104   b  finally specifies the matching template as the result of the narrowing down of the templates by the template determination section  104   a , and outputs the template data showing the matching template to the pixel value calculation section  105 . In this embodiment, any one is selected from the 16 types of templates as shown in  FIG. 5 . The number shown above each template in  FIG. 5  indicates the template data. Each template is represented by three areas of the first to third areas. The first area is shown in pattern “a”, the second area is shown in pattern “b”, and the third area is shown in pattern “c”. The first area expresses that no edge is generated between any of the pixels as the result of the edge determination. The second area expresses that no edge is generated between any of the pixels as the result of the edge determination. Then, it is indicated that an edge is generated between the first and second areas as the result of the edge determination. The third area shows pixels which are not subject to the edge determination. Templates are not limited to what are shown in  FIG. 5 , and their designs can be changed arbitrarily as long as the edges can be detected effectively. For example, the templates may be set according to the size or the like of the viewing window. 
     The pixel value calculation section  105  performs the anti-aliasing processing on the focused pixel P 1  based on the template data input from the template matching section  104 . Specifically, the pixel value calculation section  105  obtains data of the focused pixel P 1  and the neighboring pixels P 31  to P 34  from the image data output from the viewing window setting section  102 . Then, the pixel value calculation section  105  specifies a pixel to be referred to when performing the anti-aliasing processing from the neighboring pixels P 31  to P 34  based on the input template data. Also, the pixel value calculation section  105  specifies the weighting amounts respectively corresponding to the focused pixel P 1  and the pixels to be referred to based on the input template data. Then, the pixel value calculation section  105  calculates the weighting average of the focused pixel P 1  and the pixels to be referred to, and outputs the calculation result as the output pixel value of the focused pixel P 1 . 
     Subsequently, the anti-aliasing processing executed in the image processing section  10  which is configured as described above will be explained with reference to  FIG. 6 . The anti-aliasing processing is realized by the control section  11  executing an anti-aliasing program stored in the storage section  15  and controlling the image processing section  10 . The anti-aliasing processing is executed when image data is input to the image data input section  101 . 
     The control section  11  performs the setting of viewing windows as described above (step S 101 ). Then, the control section  11  performs the edge determination processing as described above (step S 102 ). Here, the edge determination processing will be explained with reference to  FIG. 7 . 
     First, the control section  11  extracts a combination of pixels which is to be subject to edge determination (step S 201 ). The combination of pixels is extracted from the above-mentioned 56 combinations of pixels in a predetermined order. Then, the control section  11  refers to a predetermined edge determination flag storage area which is set in the RAM 11   b , and determines whether there is a shifted edge determination flag (VAB) corresponding to the extracted combination of pixels (step S 202 ). That is, the control section  11  determines whether there is an edge determination flag which is shifted as described later in step S 105  of the anti-aliasing processing. When the control section  11  does not determine that there is a shifted edge determination flag (VAB) (step S 202 : N), the control section  11  specifies the pixel values (in [A], in [B]) of the pixels which are subject to the edge determination (step S 203 ). 
     The control section  11  determines whether the difference between the pixel values of the extracted combination of pixels is smaller than a threshold value eth (step S 204 ). When the control section  11  determines that the difference between the pixel values is smaller than the threshold value eth (step S 204 : Y), the control section  11  judges that no edge is generated between the pixels, and sets the edge determination flag (VAB) to 0 (step S 205 ). On the other hand, when the control section  11  does not determine that the difference between the pixel values is smaller than the threshold value eth (step S 204 : N), the control section  11  judges that an edge is generated between the pixels, and sets the edge determination flag (VAB) to 1 (step S 206 ). For example, when the combination of pixels which are subject to edge determination is “03” and “10”, the pixel values (in [A], in [B]) are represented as (in [03], in [10]), and the edge determination flag (VAB) is represented as (V 0310 ). Then, when the threshold value eth is 128, for example, the edge determination flag (V 0310 ) is set to 0 if the difference between the pixel values (in [03], in [10]) is less than 128, and the edge determination flag (V 0310 ) is set to 1 if the difference between the pixel values is 128 or more. The edge determination flag (VAB) set as described above is held in the above-mentioned edge determination flag storage area. 
     On the other hand, when the control section  11  determines that there is a shifted edge determination flag in step S 202  (step S 202 : Y), the control section  11  does not execute the processing of step S 203  to step S 206 , and shifts to the processing of step S 207 . 
     The control section  11  determines whether edge determination has been performed to all the determination subjects, i.e. all of the pixel combinations which are subject to edge determination (step S 207 ). When the control section  11  determines that edge determination has been performed to all the determination subjects (step S 207 : Y), the control section  11  terminates the processing. On the other hand, when the control section  11  does not determine that edge determination has been performed to all the determination subjects (step S 207 : N), the control section  11  shifts to the processing of step S 201 . 
     Subsequently, after executing the edge determination processing, the control section  11  executes output value conversion processing as shown in  FIG. 6  (step S 103 ). Here, the output value conversion processing will be explained with reference to  FIGS. 8 to 23 . 
     The control section  11  respectively inputs edge determination flags to C 1  to C 6  as shown in  FIG. 8 , and sequentially executes processing (processing A to L) to respectively obtain template data matching the edge determination flags from C 11 , C 12 , C 21 , C 22 , C 31 , C 32 , C 41 , C 42 , C 51 , C 52 , C 61  and C 62 . Then, the control section  11  inputs the maximum value among template data values obtained from C 11 , C 12 , C 21 , C 22 , C 31 , C 32 , C 41 , C 42 , C 51 , C 52 , C 61  and C 62  to C 1000 . Then, the control section  11  calculates and outputs an output pixel value (Outpix [Center]) of the focused pixel P 1  on the basis of the template data which is input to C 1000  as mentioned above. 
     Here, processing A will be explained in detail with reference to  FIG. 9 . 
     First, the control section  11  determines whether the edge determination flag (V 1824 ) is 0, the edge determination flag (V 2632 ) is 0 and the edge determination flag (V 1826 ) is 1 (step S 301 ). When the control section  11  determines that the flags meet the conditions in step S 301  (step S 301 : Y), the control section  11  determines whether the edge determination flag (V 1819 ) is 0 and the edge determination flag (V 3132 ) is 0 (step S 302 ). When the control section  11  determines that the flags meet the conditions in step S 302  (step S 302 : Y), the control section  11  sets the template data ( 21 ) in match data (Match [C 11 ]) in a predetermined storage area of the RAM 11   b  (step S 303 ). The template corresponding to the template data ( 21 ) is as shown in A of  FIG. 5 . Then, the control section  11  determines whether the edge determination flag (V 2324 ) is 0, the edge determination flag (V 3031 ) is 0, the edge determination flag (V 1920 ) is 0 and the edge determination flag (V 2627 ) is 0 (step S 304 ). When the control section  11  determines that the flags meet the conditions in step S 304  (step S 304 : Y), the control section  11  changes the data set in the match data (Match [C 11 ]) to template data ( 213 ) (step S 305 ), and terminates this processing. The template corresponding to the template data ( 213 ) is as shown in C of  FIG. 5 . On the other hand, when the control section  11  does not determine that the flags meet the conditions in step S 304  (step S 304 : N), the control section  11  terminates this processing without executing the processing of step S 305 . 
     When the control section  11  does not determine that the flags meet the conditions in step S 301  (step S 301 : N) or does not determine that the flags meet the conditions in step S 302  (step S 302 : N), the control section  11  sets template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 11 ]) (step S 306 ), and terminates this processing. 
     Subsequently, processing B will be explained in detail with reference to  FIG. 10 . 
     First, the control section  11  determines whether the edge determination flag (V 1824 ) is 0, the edge determination flag (V 2632 ) is 0 and the edge determination flag (V 1826 ) is 1 (step S 401 ). When the control section  11  determines that the flags meet the conditions in step S 401  (step S 401 : Y), the control section  11  determines whether the edge determination flag (V 1926 ) is 0 and the edge determination flag (V 2431 ) is 0 (step S 402 ). When the control section  11  determines that the flags meet the conditions in step S 402  (step S 402 : Y), the control section  11  sets template data ( 22 ) in match data (Match [C 12 ]) in a predetermined storage area of the RAM 11   b  (step S 403 ). The template corresponding to the template data ( 22 ) is as shown in I of  FIG. 5 . Then, the control section  11  determines whether the edge determination flag (V 1118 ) is 0, the edge determination flag (V 1219 ) is 0, the edge determination flag (V 3138 ) is 0 and the edge determination flag (V 3239 ) is 0 (step S 404 ). When the control section  11  determines that the flags meet the conditions in step S 404  (step S 404 : Y), the control section  11  changes the data set in the match data (Match [C 12 ]) to template data ( 223 ) (step S 405 ), and terminates this processing. The template corresponding to the template data ( 223 ) is as shown in K of  FIG. 5 . On the other hand, when the control section  11  does not determine that the flags meet the conditions in step S 404  (step S 404 : N), the control section  11  terminates this processing without executing the processing of step S 405 . 
     When the control section  11  does not determine that the flags meet the conditions in step S 401  (step S 401 : N) or does not determine that the flags meet the conditions in step S 402  (step S 402 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 12 ]) (step S 406 ), and terminates this processing. 
     Subsequently, processing C will be explained in detail with reference to  FIG. 11 . 
     First, the control section  11  determines whether the edge determination flag (V 1826 ) is 0, the edge determination flag (V 2432 ) is 0 and the edge determination flag (V 1824 ) is 1 (step S 501 ). When the control section  11  determines that the flags meet the conditions in step S 501  (step S 501 : Y), the control section  11  determines whether the edge determination flag (V 1718 ) is 0 and the edge determination flag (V 3233 ) is 0 (step S 502 ). When the control section  11  determines that the flags meet the conditions in step S 502  (step S 502 : Y), the control section  11  sets template data ( 23 ) in match data (Match [C 21 ]) in a predetermined storage area of the RAM 11   b  (step S 503 ). The template corresponding to the template data ( 23 ) is as shown in B of  FIG. 5 . Then, the control section  11  determines whether the edge determination flag (V 1617 ) is 0, the edge determination flag (V 2324 ) is 0, the edge determination flag (V 2627 ) is 0 and the edge determination flag (V 3334 ) is 0 (step S 504 ). When the control section  11  determines that the flags meet the conditions in step S 504  (step S 504 : Y), the control section  11  changes the data set in the match data (Match [C 21 ]) to template data ( 233 ) (step S 505 ), and terminates this processing. The template corresponding to the template data ( 233 ) is as shown in D of  FIG. 5 . On the other hand, when the control section  11  does not determine that the flags meet the conditions in step S 504  (step S 504 : N), the control section  11  terminates this processing without executing the processing of step S 505 . 
     When the control section  11  does not determine that the flags meet the conditions in step S 501  (step S 501 : N) or does not determine that the flags meet the conditions in step S 502  (step S 502 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 21 ]) (step S 506 ), and terminates this processing. 
     Subsequently, processing D will be explained in detail with reference to  FIG. 12 . 
     First, the control section  11  determines whether the edge determination flag (V 1826 ) is 0, the edge determination flag (V 2432 ) is 0 and the edge determination flag (V 1824 ) is 1 (step S 601 ). When the control section  11  determines that the flags meet the conditions in step S 601  (step S 601 : Y), the control section  11  determines whether the edge determination flag (V 1724 ) is 0 and the edge determination flag (V 2633 ) is 0 (step S 602 ). When the control section  11  determines that the flags meet the conditions in step S 602  (step S 602 : Y), the control section  11  sets template data ( 24 ) in match data (Match [C 22 ]) in a predetermined storage area of the RAM 11   b  (step S 603 ). The template corresponding to the template data ( 24 ) is as shown in J of  FIG. 5 . Then, the control section  11  determines whether the edge determination flag (V 1017 ) is 0, the edge determination flag (V 1118 ) is 0, the edge determination flag (V 3239 ) is 0 and the edge determination flag (V 3340 ) is 0 (step S 604 ). When the control section  11  determines that the flags meet the conditions in step S 604  (step S 604 : Y), the control section  11  changes the data set in the match data (Match [C 22 ]) to template data ( 243 ) (step S 605 ), and terminates this processing. The template corresponding to the template data ( 243 ) is as shown in L of  FIG. 5 . On the other hand, when the control section  11  does not determine that the flags meet the conditions in step S 604  (step S 604 : N), the control section  11  terminates this processing without executing the processing of step S 605 . 
     When the control section  11  does not determine that the flags meet the conditions in step S 601  (step S 601 : N) or does not determine that the flags meet the conditions in step S 602  (step S 602 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 22 ]) (step S 606 ), and terminates this processing. 
     Subsequently, processing E will be explained in detail with reference to  FIG. 13 . 
     First, the control section  11  determines whether the edge determination flag (V 2425 ) is 0, the edge determination flag (V 2526 ) is 0, the edge determination flag (V 3132 ) is 0, the edge determination flag (V 3233 ) is 0 and the edge determination flag (V 2532 ) is 1 (step S 701 ). When the control section  11  determines that the flags meet the conditions in step S 701  (step S 701 : Y), the control section  11  determines whether the edge determination flag (V 1516 ) is 0, the edge determination flag (V 1624 ) is 0, the edge determination flag (V 2223 ) is 0, the edge determination flag (V 2331 ) is 0, the edge determination flag (V 2627 ) is 0 and the edge determination flag (V 3334 ) is 0 (step S 702 ). When the control section  11  determines that the flags meet the conditions in step S 702  (step S 702 : Y), the control section  11  sets template data ( 251 ) in match data (Match [C 31 ]) in a predetermined storage area of the RAM 11   b  (step S 703 ), and terminates this processing. The template corresponding to the template data ( 251 ) is as shown in E of  FIG. 5 . 
     When the control section  11  does not determine that the flags meet the conditions in step S 701  (step S 701 : N) or does not determine that the flags meet the conditions in step S 702  (step S 702 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 31 ]) (step S 704 ), and terminates this processing. 
     Subsequently, processing F will be explained in detail with reference to  FIG. 14 . 
     First, the control section  11  determines whether the edge determination flag (V 2425 ) is 0, the edge determination flag (V 2526 ) is 0, the edge determination flag (V 3132 ) is 0, the edge determination flag (V 3233 ) is 0 and the edge determination flag (V 2532 ) is 1 (step S 801 ). When the control section  11  determines that the flags meet the conditions in step S 801  (step S 801 : Y), the control section  11  determines whether the edge determination flag (V 2021 ) is 0, the edge determination flag (V 2728 ) is 0, the edge determination flag (V 2026 ) is 0, the edge determination flag (V 2733 ) is 0, the edge determination flag (V 2324 ) is 0 and the edge determination flag (V 3031 ) is 0 (step S 802 ). When the control section  11  determines that the flags meet the conditions in step S 802  (step S 802 : Y), the control section  11  sets template data ( 252 ) in match data (Match [C 32 ]) in a predetermined storage area of the RAM 11   b  (step S 803 ), and terminates this processing. The template corresponding to the template data ( 252 ) is as shown in F of  FIG. 5 . 
     When the control section  11  does not determine that the flags meet the conditions in step S 801  (step S 801 : N) or does not determine that the flags meet the conditions in step S 802  (step S 802 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 32 ]) (step S 804 ), and terminates this processing. 
     Subsequently, processing G will be explained in detail with reference to  FIG. 15 . 
     First, the control section  11  determines whether the edge determination flag (V 1718 ) is 0, the edge determination flag (V 1819 ) is 0, the edge determination flag (V 2425 ) is 0, the edge determination flag (V 2526 ) is 0 and the edge determination flag (V 1825 ) is 1 (step S 901 ). When the control section  11  determines that the flags meet the conditions in step S 901  (step S 901 : Y), the control section  11  determines whether the edge determination flag (V 2223 ) is 0, the edge determination flag (V 2930 ) is 0, the edge determination flag (V 1723 ) is 0, the edge determination flag (V 2430 ) is 0, the edge determination flag (V 1920 ) is 0 and the edge determination flag (V 2627 ) is 0 (step S 902 ). When the control section  11  determines that the flags meet the conditions in step S 902  (step S 902 : Y), the control section  11  sets template data ( 253 ) in match data (Match [C 41 ]) in a predetermined storage area of the RAM 11   b  (step S 903 ), and terminates this processing. The template corresponding to the template data ( 253 ) is as shown in G of  FIG. 5 . 
     When the control section  11  does not determine that the flags meet the conditions in step S 901  (step S 901 : N) or does not determine that the flags meet the conditions in step S 902  (step S 902 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 41 ]) (step S 904 ), and terminates this processing. 
     Subsequently, processing H will be explained in detail with reference to  FIG. 16 . 
     First, the control section  11  determines whether the edge determination flag (V 1718 ) is 0, the edge determination flag (V 1819 ) is 0, the edge determination flag (V 2425 ) is 0, the edge determination flag (V 2526 ) is 0 and the edge determination flag (V 1825 ) is 1 (step S 1001 ). When the control section  11  determines that the flags meet the conditions in step S 1001  (step S 1001 : Y), the control section  11  determines whether the edge determination flag (V 2728 ) is 0, the edge determination flag (V 3435 ) is 0, the edge determination flag (V 1927 ) is 0, the edge determination flag (V 2634 ) is 0, the edge determination flag (V 1617 ) is 0 and the edge determination flag (V 2324 ) is 0 (step S 1002 ). When the control section  11  determines that the flags meet the conditions in step S 1002  (step S 1002 : Y), the control section  11  sets template data ( 254 ) in match data (Match [C 42 ]) in a predetermined storage area of the RAM 11   b  (step S 1003 ), and terminates this processing. The template corresponding to the template data ( 254 ) is as shown in H of  FIG. 5 . 
     When the control section  11  does not determine that the flags meet the conditions in step S 1001  (step S 1001 : N) or does not determine that the flags meet the conditions in step S 1002  (step S 1002 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 42 ]) (step S 1004 ), and terminates this processing. 
     Subsequently, processing I will be explained in detail with reference to  FIG. 17 . 
     First, the control section  11  determines whether the edge determination flag (V 1825 ) is 0, the edge determination flag (V 2532 ) is 0, the edge determination flag (V 1926 ) is 0, the edge determination flag (V 2633 ) is 0 and the edge determination flag (V 2526 ) is 1 (step S 1101 ). When the control section  11  determines that the flags meet the conditions in step S 1101  (step S 1101 : Y), the control section  11  determines whether the edge determination flag (V 0310 ) is 0, the edge determination flag (V 0411 ) is 0, the edge determination flag (V 1018 ) is 0, the edge determination flag (V 1119 ) is 0, the edge determination flag (V 3239 ) is 0 and the edge determination flag (V 3340 ) is 0 (step S 1102 ). When the control section  11  determines that the flags meet the conditions in step S 1102  (step S 1102 : Y), the control section  11  sets template data ( 261 ) in match data (Match [C 51 ]) in a predetermined storage area of the RAM 11   b  (step S 1103 ), and terminates this processing. The template corresponding to the template data ( 261 ) is as shown in M of  FIG. 5 . 
     When the control section  11  does not determine that the flags meet the conditions in step S 1101  (step S 1101 : N) or does not determine that the flags meet the conditions in step S 1102  (step S 1102 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 51 ]) (step S 1104 ), and terminates this processing. 
     Subsequently, processing J will be explained in detail with reference to  FIG. 18 . 
     First, the control section  11  determines whether the edge determination flag (V 1825 ) is 0, the edge determination flag (V 2532 ) is 0, the edge determination flag (V 1926 ) is 0, the edge determination flag (V 2633 ) is 0 and the edge determination flag (V 2526 ) is 1 (step S 1201 ). When the control section  11  determines that the flags meet the conditions in step S 1201  (step S 1201 : Y), the control section  11  determines whether the edge determination flag (V 3845 ) is 0, the edge determination flag (V 3946 ) is 0, the edge determination flag (V 3238 ) is 0, the edge determination flag (V 3339 ) is 0, the edge determination flag (V 1118 ) is 0 and the edge determination flag (V 1219 ) is 0 (step S 1202 ). When the control section  11  determines that the flags meet the conditions in step S 1202  (step S 1202 : Y), the control section  11  sets template data ( 262 ) in match data (Match [C 52 ]) in a predetermined storage area of the RAM 11   b  (step S 1203 ), and terminates this processing. The template corresponding to the template data ( 262 ) is as shown in N of  FIG. 5 . 
     When the control section  11  does not determine that the flags meet the conditions in step S 1201  (step S 1201 : N) or does not determine that the flags meet the conditions in step S 1202  (step S 1202 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 52 ]) (step S 1204 ), and terminates this processing. 
     Subsequently, processing K will be explained in detail with reference to  FIG. 19 . 
     First, the control section  11  determines whether the edge determination flag (V 1724 ) is 0, the edge determination flag (V 2431 ) is 0, the edge determination flag (V 1825 ) is 0, the edge determination flag (V 2532 ) is 0 and the edge determination flag (V 2425 ) is 1 (step S 1301 ). When the control section  11  determines that the flags meet the conditions in step S 1301  (step S 1301 : Y), the control section  11  determines whether the edge determination flag (V 0411 ) is 0, the edge determination flag (V 0512 ) is 0, the edge determination flag (V 1117 ) is 0, the edge determination flag (V 1218 ) is 0, the edge determination flag (V 3138 ) is 0 and the edge determination flag (V 3239 ) is 0 (step S 1302 ). When the control section  11  determines that the flags meet the conditions in step S 1302  (step S 1302 : Y), the control section  11  sets template data ( 263 ) in match data (Match [C 61 ]) in a predetermined storage area of the RAM 11   b  (step S 1303 ), and terminates this processing. The template corresponding to the template data ( 263 ) is as shown in O of  FIG. 5 . 
     When the control section  11  does not determine that the flags meet the conditions in step S 1301  (step S 1301 : N) or does not determine that the flags meet the conditions in step S 1302  (step S 1302 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 61 ]) (step S 1304 ), and terminates this processing. 
     Subsequently, processing L will be explained in detail with reference to  FIG. 20 . 
     First, the control section  11  determines whether the edge determination flag (V 1724 ) is 0, the edge determination flag (V 2431 ) is 0, the edge determination flag (V 1825 ) is 0, the edge determination flag (V 2532 ) is 0 and the edge determination flag (V 2425 ) is 1 (step S 1401 ). When the control section  11  determines that the flags meet the conditions in step S 1401  (step S 1401 : Y), the control section  11  determines whether the edge determination flag (V 3946 ) is 0, the edge determination flag (V 4047 ) is 0, the edge determination flag (V 3139 ) is 0, the edge determination flag (V 3240 ) is 0, the edge determination flag (V 1017 ) is 0 and the edge determination flag (V 1118 ) is 0 (step S 1402 ). When the control section  11  determines that the flags meet the conditions in step S 1402  (step S 1402 : Y), the control section  11  sets template data ( 264 ) in match data (Match [C 62 ]) in a predetermined storage area of the RAM 11   b  (step S 1403 ) and terminates this processing. The template corresponding to the template data ( 264 ) is as shown in P of  FIG. 5 . 
     When the control section  11  does not determine that the flags meet the conditions in step S 1401  (step S 1401 : N) or does not determine that the flags meet the conditions in step S 1402  (step S 1402 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 62 ]) (step S 1404 ), and terminates this processing. 
     Subsequently, processing to obtain the maximum value among template data values of C 11 , C 12 , C 21 , C 22 , C 31 , C 32 , C 41 , C 42 , C 51 , C 52 , C 61  and C 62  obtained by executing the above-mentioned processing A to L will be explained in detail with reference to  FIGS. 21 and 22 . 
     First, the control section  11  refers to the match data (Match [C 62 ]), and determines whether data other than 0 is set in the match data (Match [C 62 ]) (step S 1501 ). That is, the control section  11  determines whether template data ( 264 ) is set in the match data (Match [C 62 ]). When the control section  11  determines that data other than 0 is set in the match data (Match [C 62 ]) (step S 1501 : Y), the control section  11  sets the template data which is set in the match data (Match [C 62 ]) in match data (Match [C 1000 ]) in a predetermined storage area of the RAM 11   b  (step S 1502 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 62 ]) (step S 1501 : N), the control section  11  refers to the match data (Match [C 61 ]) and determines whether data other than 0 is set in the match data (Match [C 61 ]) (step S 1503 ). That is, the control section  11  determines whether template data ( 263 ) is set in the match data (Match [C 61 ]). 
     When the control section  11  determines that data other than 0 is set in the match data (Match [C 61 ]) (step S 1503 : Y), the control section  11  sets the template data which is set in the match data (Match [C 61 ]) in the match data (Match [C 1000 ]) in the predetermined storage area of the RAM 11   b  (step S 1504 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 61 ]) (step S 1503 : N), the control section  11  refers to the match data (Match [C 52 ]) and determines whether data other than 0 is set in the match data (Match [C 52 ]) (step S 1505 ). That is, the control section  11  determines whether template data ( 262 ) is set in the match data (Match [C 52 ]). 
     When the control section  11  determines that data other than 0 is set in the match data (Match [C 52 ]) (step S 1505 : Y), the control section  11  sets the template data which is set in the match data (Match [C 52 ]) in the match data (Match [C 1000 ]) (step S 1506 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 52 ]) (step S 1505 : N), the control section  11  refers to the match data (Match [C 51 ]) and determines whether data other than 0 is set in the match data (Match [C 51 ]) (step S 1507 ). That is, the control section  11  determines whether template data ( 261 ) is set in the match data (Match [C 51 ]). 
     When the control section  11  determines that data other than 0 is set in the match data (Match [C 51 ]) (step S 1507 : Y), the control section  11  sets the template data which is set in the match data (Match [C 51 ]) in the match data (Match [C 1000 ]) (step S 1508 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 51 ]) (step S 1507 : N), the control section  11  refers to the match data (Match [C 42 ]) and determines whether data other than 0 is set in the match data (Match [C 42 ]) (step S 1509 ). That is, the control section  11  determines whether template data ( 254 ) is set in the match data (Match [C 42 ]). 
     When the control section  11  determines that data other than 0 is set in the match data (Match [C 42 ]) (step S 1509 : Y), the control section  11  sets the template data which is set in the match data (Match [C 42 ]) in the match data (Match [C 1000 ]) (step S 1510 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 42 ]) (step S 1509 : N), the control section  11  refers to the match data (Match [C 41 ]) and determines whether data other than 0 is set in the match data (Match [C 41 ]) (step S 1511 ). That is, the control section  11  determines whether template data ( 253 ) is set in the match data (Match [C 41 ]). 
     When the control section  11  determines that data other than 0 is set in the match data (Match [C 41 ]) (step S 1511 : Y), the control section  11  sets the template data which is set in the match data (Match [C 41 ]) in the match data (Match [C 1000 ]) (step S 1512 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 41 ]) (step S 1511 : N), the control section  11  refers to the match data (Match [C 32 ]) and determines whether data other than 0 is set in the match data (Match [C 32 ]) (step S 1513 ). That is, the control section  11  determines whether template data ( 252 ) is set in the match data (Match [C 32 ]). 
     When the control section  11  determines that data other than 0 is set in the match data (Match [C 32 ]) (step S 1513 : Y), the control section  11  sets the template data which is set in the match data (Match [C 32 ]) in the match data (Match [C 1000 ]) (step S 1514 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 32 ]) (step S 1513 : N), the control section  11  refers to the match data (Match [C 31 ]) as shown in  FIG. 22  and determines whether data other than 0 is set in the match data (Match [C 31 ]) (step S 1515 ). That is, the control section  11  determines whether template data ( 251 ) is set in the match data (Match [C 31 ]). When the control section  11  determines that data other than 0 is set in the match data (Match [C 31 ]) (step S 1515 : Y), the control section  11  sets the template data which is set in the match data (Match [C 31 ]) in the match data (Match [C 1000 ]) (step S 1516 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 31 ]) (step S 1515 : N), the control section  11  refers to the match data (Match [C 22 ]) and determines whether data other than 0 is set in the match data (Match [C 22 ]) (step S 1517 ). That is, the control section  11  determines whether either of the template data ( 24 ) or the template data ( 243 ) is set in the match data (Match [C 22 ]). When the control section  11  determines that data other than 0 is set in the match data (Match [C 22 ]) (step S 1517 : Y), the control section  11  sets the template data which is set in the match data (Match [C 22 ]) to the match data (Match [C 1000 ]) (step S 1518 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 22 ]) (step S 1517 : N), the control section  11  refers to the match data (Match [C 21 ]) and determines whether data other than 0 is set in the match data (Match [C 21 ]) (step S 1519 ). That is, the control section  11  determines whether either of the template data ( 23 ) or the template data ( 233 ) is set in the match data (Match [C 21 ]). When the control section  11  determines that data other than 0 is set in the match data (Match [C 21 ]) (step S 1519 : Y), the control section  11  sets the template data which is set in the match data (Match [C 21 ]) in the match data (Match [C 1000 ]) (step S 1520 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 21 ]) (step S 1519 : N), the control section  11  refers to the match data (Match [C 12 ]) and determines whether data other than 0 is set in the match data (Match [C 12 ]) (step S 1521 ). That is, the control section  11  determines whether either of the template data ( 22 ) or the template data ( 223 ) is set in the match data (Match [C 12 ]). When the control section  11  determines that data other than 0 is set in the match data (Match [C 12 ]) (step S 1521 : Y), the control section  11  sets the template data which is set in the match data (Match [C 12 ]) in the match data (Match [C 1000 ]) (step S 1522 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 12 ]) (step S 1521 : N), the control section  11  refers to the match data (Match [C 11 ]) and determines whether data other than 0 is set in the match data (Match [C 11 ]) (step S 1523 ). That is, the control section  11  determines whether either of the template data ( 21 ) or the template data ( 213 ) is set in the match data (Match [C 11 ]). When the control section  11  determines that data other than 0 is set in the match data (Match [C 11 ]) (step S 1523 : Y), the control section  11  sets the template data which is set in the match data (Match [C 11 ]) in the match data (Match [C 1000 ]) (step S 1524 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 11 ]) (step S 1523 : N), the control section  11  sets template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 1000 ]) (step S 1525 ), and terminates this processing. 
     Final template data is specified eventually by executing the above processing. In this embodiment, a priority order is set for the template data corresponding to each template assuming a case where there are a plurality of matching templates. That is, by the above executed processing, each of template data is set to be selected in descending order of the numeral values indicated by the template data. Template data with larger number of pixels to be referred to is set to have higher priority. By setting template data in this manner, template data can be selected effectively. In this embodiment, template data are referred to for a matching template in descending order of the numeric values indicated by the template data. However, template data may be referred to in ascending order of the numeric values indicated by the template data. 
     In this embodiment, as mentioned above, it is possible to select template data with smaller number of edge determination flags to be referred to than the number of pixels being referred to for obtaining the edge determination flags in any case of template data selecting. Thus, the template data selection can be carried out with lesser amount of data. 
     Subsequently, processing to calculate the output pixel value (Outpix [Center]) of the focused pixel P 1  will be explained in detail with reference to  FIG. 23 . 
     First, the control section  11  refers to the match data (Match [C 1000 ]) and determines whether the template data set in the match data (Match [C 1000 ]) is any one of the template data ( 21 ) to template data ( 24 ) (step S 1601 ). When the control section  11  determines that the template data set in the match data (Match [C 1000 ]) is one of the template data ( 21 ) to template data ( 24 ) (step S 1601 : Y), the control section  11  calculates the sum of the pixel value (in [18]) of the pixel located in [18] (neighboring pixel P 31 ), the pixel value (in [25]) of the pixel located in [25] (focused pixel P 1 ) and the pixel value (in [32]) of the pixel located in [32] (neighboring pixel P 32 ) and then, obtains a value which is one-third of the sum and sets the value as the output pixel value (Outpix [Center]) of the focused pixel P 1  (step S 1602 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that the template data set in the match data (Match [C 1000 ]) is any one of the template data ( 21 ) to template data ( 24 ) (step S 1601 : N), the control section  11  determines whether the template data set in the match data (Match [C 1000 ]) is template data ( 213 ) or template data ( 233 ) (step S 1603 ). When the control section  11  determines that the template data set in the match data (Match [C 1000 ]) is template data ( 213 ) or template data ( 233 ) (step S 1603 : Y), the control section  11  calculates the sum of the twofold value of the pixel value (in [18]) of the pixel located in [18] (neighboring pixel P 31 ), the pixel value (in [25]) of the pixel located in [25] (focused pixel P 1 ) and the twofold value of the pixel value (in [32]) of the pixel located in [32] (neighboring pixel P 32 ) and then, obtains a value which is one-fifth of the sum and sets the value as the output pixel value (Outpix [Center]) of the focused pixel P 1  (step S 1604 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that the template data set in the match data (Match [C 1000 ]) is template data ( 213 ) or template data ( 233 ) (step S 1603 : N), the control section  11  determines whether the template data set in the match data (Match [C 1000 ]) is template data ( 223 ) or template data ( 243 ) (step S 1605 ). When the control section  11  determines that the template data set in the match data (Match [C 1000 ]) is template data ( 223 ) or template data ( 243 ) (step S 1605 : Y), the control section  11  calculates the sum of the twofold value of the pixel value (in [24]) of the pixel located in [24] (neighboring pixel P 33 ), the pixel value (in [25]) of the pixel located in [25] (focused pixel P 1 ) and the twofold value of the pixel value (in [26]) of the pixel located in [26] (neighboring pixel P 34 ) and then, obtains a value which is one-fifth of the sum and sets the value as the output pixel value (Outpix [Center]) of the focused pixel P 1  (step S 1606 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that the template data set in the match data (Match [C 1000 ]) is template data ( 223 ) or template data ( 243 ) (step S 1605 : N), the control section  11  determines whether the template data set in the match data (Match [C 1000 ]) is template data ( 251 ) or template data ( 252 ) (step S 1607 ). When the control section  11  determines that template data set in the match data (Match [C 1000 ]) is template data ( 251 ) or template data ( 252 ) (step S 1607 : Y), the control section  11  calculates the sum of the fourfold value of the pixel value (in [25]) of the pixel located in [25] (focused pixel P 1 ) and the pixel value (in [32]) of the pixel located in [32] (neighboring pixel P 32 ) and then, obtains a value which is one-fifth of the sum and sets the value as the output pixel value (Outpix [Center]) of the focused pixel P 1  (step S 1608 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that the template data set in the match data (Match [C 1000 ]) is template data ( 251 ) or template data ( 252 ) (step S 1607 : N), the control section  11  determines whether the template data set in the match data (Match [C 1000 ]) is template data ( 253 ) or template data ( 254 ) (step S 1609 ). When the control section  11  determines that the template data set in the match data (Match [C 1000 ]) is template data ( 253 ) or template data ( 254 ) (step S 1609 : Y), the control section  11  calculates the sum of the fourfold value of the pixel value (in [25]) of the pixel located in [25] (focused pixel P 1 ) and the pixel value (in [18]) of the pixel located in [18] (neighboring pixel P 31 ) and then, obtains a value which is one-fifth of the sum and sets the value as the output pixel value (Outpix [Center]) of the focused pixel P 1  (step S 1610 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that the template data set in the match data (Match [C 1000 ]) is template data ( 253 ) or template data ( 254 ) (step S 1609 : N), the control section  11  determines whether the template data set in the match data (Match [C 1000 ]) is template data ( 261 ) or template data ( 262 ) (step S 1611 ). When the control section  11  determines that the template data set in the match data (Match [C 1000 ]) is template data ( 261 ) or template data ( 262 ) (step S 1611 : Y), the control section  11  calculates the sum of the fourfold value of the pixel value (in [25]) of the pixel located in [25] (focused pixel P 1 ) and the pixel value (in [26]) of the pixel located in [26] (neighboring pixel P 34 ) and then, obtains a value which is one-fifth of the sum and sets the value as the output pixel value (Outpix [Center]) of the focused pixel P 1  (step S 1612 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that the template data set in the match data (Match [C 1000 ]) is template data ( 261 ) or template data ( 262 ) (step S 1611 : N), the control section  11  determines whether the template data set in the match data (Match [C 1000 ]) is template data ( 263 ) or template data ( 264 ) (step S 1613 ). When the control section  11  determines that the template data set in the match data (Match [C 1000 ]) is template data ( 263 ) or template data ( 264 ) (step S 1613 : Y), the control section  11  calculates the sum of the fourfold value of the pixel value (in [25]) of the pixel located in [25] (focused pixel P 1 ) and the pixel value (in [24]) of the pixel located in [24] (neighboring pixel P 33 ) and then, obtains a value which is one-fifth of the sum and sets the value as the output pixel value (Outpix [Center]) of the focused pixel P 1  (step S 1614 ), and terminates this processing. 
     On the other hand, when the control section  11  does not determine that the template data set in the match data (Match [C 1000 ]) is template data ( 263 ) or template data ( 264 ) (step S 1613 : N), the control section  11  sets the pixel value (in [25]) of the pixel located in [25] (focused pixel P 1 ) as the output pixel value (Outpix [Center]) of the focused pixel P 1  as it is (step S 1615 ), and terminates this processing. 
     In this embodiment, by executing the above processing, the output pixel value of the focused pixel P 1  can be calculated by a calculation method according to the selected template data. In this embodiment, the pixel value of the focused pixel and the pixel values of the surrounding pixels are combined in specific proportions to obtain the output pixel value in a method different from the conventional method which is the anti-aliasing assuming binary input values. Therefore, a processing result close to the resolution conversion can be obtained. 
     After the output value conversion processing is executed in the above described manner, the control section  11  determines whether the processing of steps S 102  and S 103  is carried for all the pixels in the input image data (step S 104 ). When the control section  11  determines that the processing is completed for all the pixels (step S 104 : Y), the control section  11  terminates this processing. On the other hand, when the control section  11  does not determine that the processing is completed from all the pixels (step S 104 : N), the control section  11  shifts the edge determination flags so that the flag values of the edge determination flags (VAB) held in the edge determination flag storage region respectively shift to the left direction (step S 105 ), and proceeds to the processing of step S 101 . That is, the control section  11  shifts the flag value of the edge determination flag (V 0411 ) to the flag value of the edge determination flag (V 0310 ) and shifts the flag value of the edge determination flag (V 0512 ) to the flag value of the edge determination flag (V 0411 ). Further, the control section  11  shifts the flag value of the edge determination flag (V 1118 ) to the flag value of the edge determination flag (V 1017 ) and shifts the flag value of the edge determination flag (V 1219 ) to the flag value of the edge determination flag (V 1118 ). Furthermore, the control section  11  shifts the flag value of the edge determination flag (V 1119 ) to the flag value of the edge determination flag (V 1018 ) and shifts the flag value of the edge determination flag (V 1218 ) to the flag value of the edge determination flag (V 1117 ). Moreover, the control section  11  shifts the flag value of the edge determination flag (V 1617 ) to the flag value of the edge determination flag (V 1516 ), shifts the flag value of the edge determination flag (V 1718 ) to the flag value of the edge determination flag (V 1617 ), shifts the flag value of the edge determination flag (V 1819 ) to the flag value of the edge determination flag (V 1718 ), shifts the flag value of the edge determination flag (V 1920 ) to the flag value of the edge determination flag (V 1819 ), and shifts the flag value of the edge determination flag (V 2021 ) to the flag value of the edge determination flag (V 1920 ). Further, the control section  11  shifts the flag value of the edge determination flag (V 1826 ) to the flag value of the edge determination flag (V 1624 ) and shifts the flag value of the edge determination flag (V 1927 ) to the flag value of the edge determination flag (V 1826 ). Furthermore, the control section  11  shifts the flag value of the edge determination flag (V 1824 ) to the flag value of the edge determination flag (V 1723 ) and shifts the flag value of the edge determination flag (V 2026 ) to the flag value of the edge determination flag (V 1824 ). Moreover, the control section  11  shifts the flag value of the edge determination flag (V 1825 ) to the flag value of the edge determination flag (V 1724 ) and shifts the flag value of the edge determination flag (V 1926 ) to the flag value of the edge determination flag (V 1825 ). Further, the control section  11  shifts the flag value of the edge determination flag (V 2324 ) to the flag value of the edge determination flag (V 2223 ), shifts the flag value of the edge determination flag (V 2425 ) to the flag value of the edge determination flag (V 2324 ), shifts the flag value of the edge determination flag (V 2526 ) to the flag value of the edge determination flag (V 2425 ), shifts the flag value of the edge determination flag (V 2627 ) to the flag value of the edge determination flag (V 2526 ), and shifts the flag value of the edge determination flag (V 2728 ) to the flag value of the edge determination flag (V 2627 ). Furthermore, the control section  11  shifts the flag value of the edge determination flag (V 2432 ) to the flag value of the edge determination flag (V 2331 ) and shifts the flag value of the edge determination flag (V 2634 ) to the flag value of the edge determination flag (V 2432 ). Moreover, the control section  11  shifts the flag value of the edge determination flag (V 2632 ) to the flag value of the edge determination flag (V 2430 ) and shifts the flag value of the edge determination flag (V 2733 ) to the flag value of the edge determination flag (V 2632 ). Further, the control section  11  shifts the flag value of the edge determination flag (V 2532 ) to the flag value of the edge determination flag (V 2431 ) and shifts the flag value of the edge determination flag (V 2633 ) to the flag value of the edge determination flag (V 2532 ). Furthermore, the control section  11  shifts the flag value of the edge determination flag (V 3031 ) to the flag value of the edge determination flag ( 2930 ), shifts the flag value of the edge determination flag (V 3132 ) to the flag value of the edge determination flag (V 3031 ), shifts the flag value of the edge determination flag (V 3233 ) to the flag value of the edge determination flag (V 3132 ), shifts the flag value of the edge determination flag (V 3334 ) to the flag value of the edge determination flag (V 3233 ), and shifts the flag value of the edge determination flag (V 3435 ) to the flag value of the edge determination flag (V 3334 ). Moreover, the control section  11  shifts the flag value of the edge determination flag (V 3239 ) to the flag value of the edge determination flag (V 3138 ) and shifts the flag value of the edge determination flag (V 3340 ) to the flag value of the edge determination flag (V 3239 ). Further, the control section  11  shifts the flag value of the edge determination flag (V 3240 ) to the flag value of the edge determination flag (V 3139 ) and shifts the flag value of the edge determination flag (V 3339 ) to the flag value of the edge determination flag (V 3238 ). Furthermore, the control section  11  shifts the flag value of the edge determination flag (V 394   6 ) to the flag value of the edge determination flag (V 3845 ) and shifts the flag value of the edge determination flag (V 4047 ) to the flag value of the edge determination flag (V 3946 ). 
     In this embodiment, by shifting the edge determination flags in the manner as described above, the edge determination flags can be used again in the edge determination processing of the image data in the viewing window W which is to be set next. In such way, the edge determination result of one pixel combination can be used for maximum of six times. Therefore, there is no need to carry out edge determinations for all the above mentioned 56 pixel combinations, and a template can be specified by practically carrying out minimum of 17 times of edge determinations in one edge determination processing. Thus, efficiency of the processing can be improved. 
     Next, the results of the anti-aliasing processing which is realized by the image processing section  10  configured as described above will be explained with reference to  FIGS. 24 and 25 . 
       FIG. 24  is an enlarged diagram of a part of a character to which the anti-aliasing processing according to this embodiment is performed. Further,  FIG. 25  is a character to which the anti-aliasing processing according to this embodiment is performed, and this is an enlarged diagram of a part of a character having different aspect than the character shown in  FIG. 24 . 
       FIG. 24A  is an image before the anti-aliasing processing is performed, and  FIG. 24B  is an image after the anti-aliasing processing was performed. In the diagrams, the pixels shown in pattern “a” are the pixels which constitute the background before the anti-aliasing processing was performed, and they indicate that smoothing was performed between those pixels and the adjacent pixels thereof which constitute the character. Further, in the diagrams, the pixels shown in pattern “b” are the pixels constitute the character before the anti-aliasing processing was performed, and they indicate that smoothing was performed between those pixels and the adjacent pixels thereof which constitute the background. 
     As shown in  FIG. 24B , jaggies can be eliminated effectively in this embodiment by specifying predetermined pixels on the border of the character and the background in a template-wise edge determination and performing the anti-aliasing processing in the manner as described above. 
       FIG. 25A  is an image before the anti-aliasing processing is performed, and  FIG. 25B  is an image after the anti-aliasing processing was performed. In the example shown in  FIGS. 25A and 25B , the background image is white, and a character is expressed in solid black color. With respect to such image, the smoothing effect similar to the conventional techniques can be obtained in this embodiment as shown in  FIG. 25B . 
       FIG. 25C  is an image similar to the image shown in  FIG. 25A , except the background and the character are expressed in halftone. Further,  FIG. 25E  is also an image similar to the image shown in  FIG. 25A , except the difference in gradation between the background and the character is smaller than that in  FIG. 25C . 
     As shown in  FIGS. 25D and 25F , the anti-aliasing processing can be performed to a halftone image in this embodiment by appropriately setting the threshold value to carry out edge determinations according to the content of the image. 
     As described above, in this embodiment, whether an edge exists or not is detected based on differences in pixel values of neighboring two pixels and pattern matching for selecting a template based on the result of the edge detections is carried out. Then, by taking a weighted average of original pixel values of maximum of five pixels among a focused pixel and neighboring pixels of the focused pixel which are adjacent to the focus pixel in four sides (above, below, left and right) based on the result of pattern matching, the pixel value of the focused pixel after the anti-aliasing processing is performed is obtained. Therefore, in this embodiment, the anti-aliasing processing can be performed even when the pixels values of the pixels constituting the character of background have variety of values including halftone. 
     Moreover, according to the edge detection processing in this embodiment, pattern matching can be carried out with lesser amount of calculation and lesser amount of data comparing to the conventional edge detection method. Thus, an overall calculation cost can be reduced. Further, according to this embodiment, by holding the results of edge detections for a plurality of times of anti-aliasing processing and by reusing the results, the average amount of calculation in one anti-aliasing processing can also be reduced. Furthermore, when realizing the edge detection processing of this embodiment in a hardware configuration, the edge detection can be realized with simpler configuration. 
     For example, in a conventional pattern matching technique, edge detection with Laplacian or Sobel operator needs to be performed to a total of 12 pixels in the first region and the second region in order to specify the template shown in E of  FIG. 5 . In the edge detection using Lapacian, addition/subtraction needs to be executed for 108 times (9×12=108) because addition/subtraction is performed between nine pixels, which are a focused pixel and pixels surrounding the focused pixel. Furthermore, in the edge detection using Sobel operator, addition/subtraction needs to be executed between six pixels around the focused pixel in X axis direction and Y axis direction and Euclidean distance needs to be obtained from the calculation results. Therefore, in the edge detection with Sobel operation, addition/subtraction needs to be executed for at least 144 times (6×2×12=144) and also, multiplication needs to be executed for 2 times, addition needs to be executed for 1 time and square root calculation needs to be executed for 1 time in order to calculate the Euclidean distance. 
     On the other hand, a template can be specified with only 11 times of addition/subtraction between pixels in this embodiment. 
     As described above, according to this embodiment, the viewing window setting section  102  sets the viewing window W of a predetermined size (7×7 pixels) including a focused pixel P 1 . Then, the edge determination section  103  extracts a plurality of combinations of two predetermined pixels adjacent to each other in the viewing window W set by the viewing window setting section  102 . Thereafter, the edge determination section  103  determines the difference between the input pixel values of the two pixels which are extracted for each combination. Further, the template matching section  104  obtains template data based on the combinations of the determination results obtained by the edge determination section  103 . Then, the pixel value calculation section  105  performs a weighted addition on the input pixel value of the focused pixel P 1  and the input pixel values of the predetermined neighboring pixels P 31  to P 34  which are adjacent to the focused pixel P 1  based on the template data obtained by the template matching section  104 . As a result, the amount of calculation and the amount of data for edge detection can be reduced. Thus, anti-aliasing processing which brings out a great smoothing effect by reducing the processing load can be performed. Further, the anti-aliasing can also be performed on a halftone image with reduced processing load. 
     Moreover, according to this embodiment, the template matching section  104  obtains template data with lesser number of edge determination flags to be referred to for obtaining the template data, the edge determination flags being obtained by the edge determination section  103 , than the number of pixels to be referred to for obtaining the edge determination flags. As a result, selection of template data can be carried out by suppressing the amount of data. 
     Moreover, according to this embodiment, the RAM  11   b  stores the edge determination flags obtained by the edge determination section  103 . The viewing window setting section  102  sets the viewing window W so that the focused pixel P 1  be located at a preset position and changes the setting position of the viewing window W every time an output pixel value is obtained so that the pixel which is to be the focused pixel P 1  is to be selected in a predetermined order. Then, the template matching section  104  obtains template data by referring to at least a portion of the edge determination flags stored in the RAM  11   b . As a result, the amount of processing for performing edge detections can be reduced and efficiency in the processing can be improved. 
     Here, the description of the embodiment according to the preset invention is an example of the MFP according to the present invention and the preset invention is not limited to the above described example. The detail configuration and detail operation of each functional section constituting the MFP can be changed appropriately as needed. Further, the present invention can be applied to any computer apparatus other than MFP as long as the computer apparatus performs image processing. 
     Moreover, as described above with reference to  FIG. 8 , edge determination flags are respectively input in C 1  to C 6  and processing is carried out to respectively obtain template data matching the edge determination flags from C 11 , C 12 , C 21 , C 22 , C 31 , C 32 , C 41 , C 42 , C 51 , C 52 , C 61  and C 62 , and then, the template data indicating the maximum value is selected among the template data in this embodiment. However, the processing can be optimized by reducing the routines as described below. 
     That is, as shown in  FIG. 26 , the control section  11  respectively inputs edge determination flags in C 1  to C 6  and sequentially executes the processing (processing M to processing R) to obtain template data which match the edge determination flags from C 11  to C 61 , respectively. Then, the control section  11  inputs the maximum value among the values indicated by the template data respectively obtained from C 11  to C 61 . The control section  11  calculates and outputs the output pixel value (Outpix [Center]) of the focused pixel P 1  based on the template data which is input to C 1000 . 
     Here, processing M will be explained in detail with reference to  FIG. 27 . The processing M is the optimized processing in which the above described processing A and processing B are combined. 
     First, the control section  11  determines whether the edge determination flag (V 1824 ) is 0, the edge determination flag (V 2632 ) is 0 and the edge determination flag (V 1826 ) is 1 (step S 1701 ). When the control section  11  determines that the conditions in step S 1701  are met (step S 1701 : Y), the control section  11  determines whether the edge determination flag (V 1819 ) is 0 and the edge determination flag (V 3132 ) is 0 (step S 1702 ). When the control section  11  determines that the conditions in step  1702  are met (step S 1702 : Y), the control section  11  sets template data ( 21 ) in the match data (Match [C 11 ]) (step S 1703 ). Then, the control section  11  determines whether the edge determination flag (V 2324 ) is 0, the edge determination flag (V 3031 ) is 0, the edge determination flag (V 1920 ) is 0 and the edge determination flag (V 2627 ) is 0 (step S 1704 ). When the control section  11  determines that the conditions in step S 1704  are met (step S 1704 : Y), the control section  11  changes the data which is set in the match data (Match [C 11 ]) to template data ( 213 ) (step S 1705 ), and terminates this processing. On the other hand, when the control section  11  does not determine that the conditions in step S 1704  are met (step S 1704 : N), the control section  11  terminates this processing without executing the processing of step S 1705 . 
     Moreover, when the control section  11  does not determine that the condition in step S 1702  are met in step S 1702  (step S 1702 : N), the control section  11  determines whether the edge determination flag (V 1926 ) is 0 and the edge determination flag (V 2431 ) is 0 (step S 1706 ). When the control section  11  determines that the conditions in step S 1706  are met (step S 1706 : Y), the control section  11  sets template data ( 22 ) in the match data (Match [C 11 ]) (step S 1707 ). Then, the control section  11  determines whether the edge determination flag (V 1118 ) is 0, the edge determination flag (V 1219 ) is 0, the edge determination flag (V 3138 ) is 0 and the edge determination flag (V 3239 ) is 0 (step S 1708 ). When the control section  11  determines that the conditions in step S 1708  are met (step S 1708 : Y), the control section  11  changes the data which is set in the match data (Match [C 11 ]) to template data ( 223 ) (step S 1709 ), and terminates this processing. On the other hand, when the control section  11  does not determine that the conditions in step S 1708  are met (step S 1708 : N), the control section terminates this processing without executing the processing of step S 1709 . 
     Moreover, when the control section  11  does not determine that the conditions in step S 1701  are met (step S 1701 : N) or when the control section  11  does not determine that the conditions in step S 1706  are met (step S 1706 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 11 ]) (step S 1710 ) and terminates this processing. 
     Next, processing N will be explained in detail with reference to  FIG. 28 . The processing N is the optimized processing in which the above described processing C and processing D are combined. 
     First, the control section  11  determines whether the edge determination flag (V 1826 ) is 0, the edge determination flag (V 2432 ) is 0 and the edge determination flag (V 1824 ) is 1 (step S 1801 ). When the control section  11  determines that the conditions in step S 1801  are met (step S 1801 : Y), the control section  11  determines whether the edge determination flag (V 1718 ) is 0 and the edge determination flag (V 3233 ) is 0 (step S 1802 ). When the control section  11  determines that the conditions in step S 1802  are met (step s 1802 : Y), the control section  11  sets template data ( 23 ) in the match data (Match [C 21 ]) (step S 1803 ). Then, the control section  11  determines whether the edge determination flag (V 1617 ) is 0, the edge determination flag (V 2324 ) is 0, the edge determination flag (V 2627 ) is 0 and the edge determination flag (V 3334 ) is 0 (step S 1804 ). When the control section  11  determines that the conditions in step S 1804  are met (step S 1804 : Y), the control section changes the data which is set in the match data (Match [C 21 ]) to template data ( 233 ) (step S 1805 ) and terminates this processing. On the other hand, when to control section  11  does not determine that the conditions in step S 1804  are met (step S 1804 : N), the control section  11  terminates this processing without executing the processing of step S 1805 . 
     Moreover, when the control section  11  does not determine that that the conditions in step S 1802  are met (step S 1802 : N) in step S 1802 , the control section  11  determines whether the edge determination flag (V 1724 ) in 0 and the edge determination flag (V 2633 ) is 0 (step S 1806 ). When the control section  11  determines that the conditions in step S 1806  are met (step S 1806 : Y), the control section sets template data ( 24 ) in the match data (Match [C 21 ]) (step S 1807 ). Then, the control section  11  determines whether the edge determination flag (V 1017 ) is 0, the edge determination flag (V 1118 ) is 0, the edge determination flag (V 3239 ) is 0 and the edge determination flag (V 3340 ) is 0 (step S 1808 ). When the control section  11  determines that the conditions in step S 1808  are met (step S 1808 : Y), the control section changes the data which is set in the match data (Match [C 21 ]) to template data ( 243 ) (step S 1809 ) and terminates the processing. On the other hand, when the control section  11  does not determine that the conditions in step S 1808  are met (step S 1808 : N), the control section terminates this processing without executing the processing of step S 1809 . 
     Moreover, when the control section  11  does not determine that the condition in step S 1801  are met (step S 1801 : N) or when the control section  11  does not determine that the conditions in step S 1806  are met (step S 1806 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 21 ]) (step S 1810 ) and terminates the processing. 
     Next, processing O will be explained in detail with reference to  FIG. 29 . The processing O is the optimized processing in which the above described processing E and processing F are combined. 
     First, the control section  11  determines whether the edge determination flag (V 2425 ) is 0, the edge determination flag (V 2526 ) is 0, the edge determination flag (V 3132 ) is 0, the edge determination flag (V 3233 ) is 0 and the edge determination flag (V 2532 ) is 1 (step S 1901 ). When the control section  11  determines that the conditions in step S 1901  are met (step S 1901 : Y), the control section determines whether the edge determination flag (V 1516 ) is 0, the edge determination flag (V 1624 ) is 0, the edge determination flag (V 2223 ) is 0, the edge determination flag (V 2331 ) is 0, the edge determination flag (V 2627 ) is 0 and the edge determination flag (V 3334 ) is 0 (step S 1902 ). When the control section  11  determines that the conditions in step S 1902  are met (step S 1902 : Y), the control section  11  sets template data ( 251 ) in the match data (Match [C 31 ]) (step S 1903 ) and terminates this processing. 
     On the other hand, when the control section  11  does not determine that the conditions in step S 1902  are met (step S 1902 : N), the control section  11  determines whether the edge determination flag (V 2021 ) is 0, the edge determination flag (V 2728 ) is 0, the edge determination flag (V 2026 ) is 0, the edge determination flag (V 2733 ) is 0, the edge determination flag (V 2324 ) is 0 and the edge determination flag (V 3031 ) is 0 (step S 1904 ). When the control section  11  determines that the conditions in step S 1904  are met (step S 1904 : Y), the control section  11  sets template data ( 252 ) in the match data (Match [C 31 ]) (step S 1905 ) and terminates this processing. 
     Moreover, when the control section  11  does not determine that the conditions in step S 1901  are met (step S 1901 : N) or when the control section  11  does not determine that the conditions in step S 1904  are met (step S 1904 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 31 ]) (step S 1906 ) and terminates this processing. 
     Next, processing P will be explained in detail with reference to  FIG. 30 . The processing P is the optimized processing in which the above described processing G and processing H are combined. 
     First, the control section  11  determines whether the edge determination flag (V 1718 ) is 0, the edge determination flag (V 1819 ) is 0, the edge determination flag (V 2425 ) is 0, the edge determination flag (V 2526 ) is 0 and the edge determination flag (V 1825 ) is 1 (step S 2001 ). When the control section  11  determines that the conditions in step S 2001  are met (step S 2001 : Y), the control section  11  determines whether the edge determination flag (V 2223 ) is 0, the edge determination flag (V 2930 ) is 0, the edge determination flag (V 1723 ) is 0, the edge determination flag (V 2430 ) is 0, the edge determination flag (V 1920 ) is 0 and the edge determination flag (V 2627 ) is 0 (step S 2002 ). When the control section  11  determines that the conditions in step S 2002  are met (step S 2002 : Y), the control section  11  sets template data ( 253 ) in the match data (Match [C 41 ]) (step S 2003 ) and terminates this processing. 
     On the other hand, when the control section  11  does not determine that the conditions in step S 2002  are met (step S 2002 : N), the control section  11  determines whether the edge determination flag (V 2728 ) is 0, the edge determination flag (V 3435 ) is 0, the edge determination flag (V 1927 ) is 0, the edge determination flag (V 2634 ) is 0, the edge determination flag (V 1617 ) is 0 and the edge determination flag (V 2324 ) is 0 (step S 2004 ). When the control section  11  determines that the conditions in step S 2004  are met (step S 2004 : Y), the control section  11  sets template data ( 254 ) in the match data (Match [C 41 ]) (step S 2005 ) and terminates this processing. 
     Further, when the control section  11  does not determine that the conditions in step S 2011  are met (step S 2001 : N) or when the control section  11  does not determine that the conditions in step S 2004  are met (step S 2004 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 41 ]) (step S 2006 ) and terminates this processing. 
     Moreover, processing Q will be explained in detail with reference to  FIG. 31 . The processing Q is optimized processing in which the above described processing I and processing J are combined. 
     First, the control section  11  determines whether the edge determination flag (V 1825 ) is 0, the edge determination flag (V 2532 ) is 0, the edge determination flag (V 1926 ) is 0, the edge determination flag (V 2633 ) is 0 and the edge determination flag (V 2526 ) is 1 (step S 2101 ). When the control section  11  determines that the conditions in step S 2101  are met (step S 2101 : Y), the control section  11  determines whether the edge determination flag (V 0310 ) is 0, the edge determination flag (V 0411 ) is 0, the edge determination flag (V 1018 ) is 0, the edge determination flag (V 1119 ) is 0, the edge determination flag (V 3239 ) is 0 and the edge determination flag (V 3340 ) is 0 (step S 2102 ). When the control section  11  determines that the conditions in step S 2102  are met (step S 2102 : Y), the control section  11  sets template data ( 261 ) in the match data (Match [C 51 ]) (step S 2103 ) and terminates this processing. 
     On the other hand, when the control section  11  does not determine that the conditions in step S 2102  are met (step S 2102 : N), the control section  11  determination whether the edge determination flag (V 3845 ) is 0, the edge determination flag (V 3946 ) is 0, the edge determination flag (V 3238 ) is 0, the edge determination flag (V 3339 ) is 0, the edge determination flag (V 1118 ) is 0 and the edge determination flag (V 1219 ) is 0 (step S 2104 ). When the control section  11  determines that the conditions in step S 2104  are met (step S 2104 : Y), the control section  11  sets template data ( 262 ) in the match data (Match [C 51 ]) (step S 2105 ) and terminates the processing. 
     Moreover, when the control section  11  does not determine that the conditions in step S 2101  are met (step S 2101 : N) or when the control section  11  does not determine that the conditions in step S 2104  are met (step S 2104 : N), the control section  11  sets template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 51 ]) (step S 2106 ) and terminates this processing. 
     Next, processing R will be described in detail with reference to  FIG. 32 . The processing R is optimized processing in which the above described processing K and processing L are combined. 
     First, the control section  11  determines whether the edge determination flag (V 1724 ) is 0, the edge determination flag (V 2431 ) is 0, the edge determination flag (V 1825 ) is 0, the edge determination flag (V 2532 ) is 0 and the edge determination flag (V 2425 ) is 1 (step S 2201 ). When the control section  11  determines that the conditions in step S 2201  are met (step S 2201 : Y), the control section  11  determines whether the edge determination flag (V 0411 ) is 0, the edge determination flag (V 0512 ) is 0, the edge determination flag (V 1117 ) is 0, the edge determination flag (V 1218 ) is 0, the edge determination flag (V 3138 ) is 0 and edge determination flag (V 3239 ) is 0 (step S 2202 ). When the control section  11  determines that the conditions in step S 2202  are met (step S 2202 : Y), the control section  11  sets template data ( 263 ) in the match data (Match [C 61 ]) (step S 2203 ) and terminates this processing. 
     On the other hand, when the control section  11  does not determine that the conditions in step S 2202  are met (step S 2202 : N), the control section  11  determines whether the edge determination flag (V 3946 ) is 0, the edge determination flag (V 4047 ) is 0, the edge determination flag (V 3139 ) is 0, the edge determination flag (V 3240 ) is 0, the edge determination flag (V 1017 ) is 0 and the edge determination flag (V 1118 ) is 0 (step S 2204 ). When the control section  11  determines that the conditions in step S 2204  are met (step S 2204 : Y), the control section  11  sets template data ( 264 ) in the match data (Match [C 61 ]) (step S 2205 ) and terminates this processing. 
     Moreover, when the control section  11  does not determine that the conditions in step S 2201  are met (step S 2201 : N) or when the control section  11  does not determine that the conditions in steps S 2204  are met (step S 2204 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 61 ]) (step S 2206 ) and terminates this processing. 
     Next, processing to obtain the maximum value among values indicated by template data of C 11  to C 16 , which are obtained by executing the above described processing M to processing R, will be explained in detail with reference to  FIG. 33 . 
     First, the control section  11  refers to the match data (Match [C 61 ]) and determines whether data other than 0 is set in the match data (Match [C 61 ]) (step S 2301 ). That is, the control section  11  determines whether template data ( 263 ) or template data ( 264 ) is set in the match data (Match [C 61 ]). When the control section  11  determines that data other than 0 is set in the match data (Match [C 61 ]) (step S 2301 : Y), the control section  11  sets the template data which is set in the match data (Match [C 61 ]) in the match data (Match [C 1000 ]) in a predetermined storage region of the RAM  11   b  (step S 2302 ) and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 61 ]) (step S 2301 : N), the control section refers to the match data (Match [C 51 ]) and determines whether data other than 0 is set in the match data (Match [C 51 ]) (step S 2303 ). That is, the control section  11  determines whether template data ( 261 ) or template data ( 262 ) is set in the match data (Match [C 51 ]). When the control section  11  determines that data other than 0 is set in the match data (Match [C 51 ]) (step S 2303 : Y), the control section sets the template data which is set in the match data (Match [C 51 ]) in the match data (Match [C 1000 ]) (step S 2304 ) and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 51 ]) (step S 2303 : N), the control section  11  refers to the match data (Match [C 41 ]) and determine whether data other than 0 is set in the match data (Match [C 41 ]) (step S 2305 ). That is, the control section  11  determines whether template data ( 253 ) or template data ( 254 ) is set in the match data (Match [C 41 ]). When the control section  11  determines that data other than 0 is set in the match data (Match [C 41 ]) (step S 2305 : Y), the control section sets the template data which is set in the match data (Match [C 41 ]) in the match data (Match [C 1000 ]) (step S 2306 ) and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 41 ]) (step S 2305 : N), the control section  11  refers to the match data (Match [C 31 ]) and determines whether data other than 0 is set in the match data (Match [C 31 ]) (step S 2307 ). That is, the control section  11  determines whether template data ( 251 ) or template data ( 252 ) is set in the match data (Match [C 31 ]). When the control section  11  determines that data other than 0 is set in the match data (Match [C 31 ]) (step S 2307 : Y), the control section  11  sets the template data which is set in the match data (Match [C 31 ]) in the match data (Match [C 1000 ]) (step S 2308 ) and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 31 ]) (step S 2307 : N), the control section  11  refers to the match data (Match [C 21 ]) and determines whether data other than 0 is set in the match data (Match [C 21 ]) (step S 2309 ). That is, the control section  11  determines whether either one of template data ( 23 ), template data ( 24 ), template data ( 233 ) or template data ( 243 ) is set in the match data (Match [C 21 ]). When the control section  11  determines that data other than 0 is set in the match data (Match [C 21 ]) (step S 2309 : Y), the control section sets the template data which is set in the match data (Match [C 21 ]) in the match data (Match [C 1000 ]) (step S 2310 ) and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 21 ]) (step S 2309 : N), the control section refers to the match data (Match [C 11 ]) and determines whether data other than 0 is set in the match data (Match [C 11 ]) (step S 2311 ). That is, the control section  11  determines whether either one of template data ( 21 ), template data ( 22 ), template data ( 213 ) or template data ( 223 ) is set in the match data (Match [C 11 ]). When the control section  11  determines that data other than 0 is set in the match data (Match [C 11 ]) (step S 2311 : Y), the control section  11  sets the template data which is set in the match data (Match [C 11 ]) in the match data (Match [C 1000 ]) (step S 2312 ) and terminates this processing. 
     On the other hand, when the control section  11  does not determine that data other than 0 is set in the match data (Match [C 11 ]) (step S 2311 : N), the control section  11  sets the template data ( 0 ) which indicates that none of the templates is a match in the match data (Match [C 1000 ]) (step S 2313 ) and terminated this processing. 
     Final template data can also be specified by executing the above processing. 
     In this embodiment, an example in which the image processing section  10  is applied in the MFP  100  is described. However, the image processing section  10  can also be applied to image display apparatuses such as LCD (Liquid Crystal Display) and the like. 
     Further, in this embodiment, an example in which the image processing section  10  is applied in the MFP  100  which can perform color printing of CMYK is described. However, the image processing section  10  can be applied in image forming apparatuses which perform printing of any single color of CMYK. 
     Furthermore, in this embodiment, edge detections are performed in advance for all of the pixel combinations which are subject for edge determination in the edge determination section  103 . However, edge detections do not need to be performed in advance, and edge detection may be performed on the pixel combination required for determination every time a condition for an edge is to be determined when narrowing down the templates in the template matching section  104 . In such way, a part of calculations for performing edge detections can be omitted and the amount of calculation can be reduced. 
     Moreover, in this embodiment, final template data having the maximum template data is selected after extracting all the templates which match the conditions based on the edge determination results. However, for example, determination whether a template meets the conditions can be performed in descending order from the maximum template data, and a template can be selected at the time when the conditions are met. 
     Further, in this embodiment, edge determination results are held and the maintained edge determination flags are used again in the next edge determination processing and thereafter. However, edge determination results do not need to be held, and edge determination may be performed every time when edge determination processing is executed. 
     Furthermore, in this embodiment, an example in which a non-volatile memory such as a hard disk or a semiconductor is used as a computer readable medium of the program according to the present invention is disclosed. However, it is not limited to this example. As for other computer readable medium, a portable storage medium such as a CD-ROM can also be applied. Further, a carrier wave can be applied as a medium for providing data of the program according to the present invention through communication circuits. 
     The entire disclosure of Japanese Patent Application No. 2010-287152 fined on Dec. 24, 2010 including description, claims, drawings, and abstract are incorporated herein by reference in its entirety. 
     Although various exemplary embodiments have been shown and described, the invention is not limited to the embodiments shown. Therefore, the scope of the invention is intended to be limited solely by the scope of the claims that follow.