Patent Publication Number: US-9842573-B2

Title: Apparatus and method for gaussian filtering

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     This application claims priority to and the benefit of Korean Patent Application No. 2014-0164772, filed on Nov. 24, 2014, and No. 2015-0125771, filed on Sep. 4, 2015, the disclosure of which is incorporated herein by reference in its entirety. 
     BACKGROUND 
     1. Field of the Invention 
     The present invention relates to a filtering technology for an image, and more particularly, to a Gaussian filtering technology for an image. 
     2. Discussion of Related Art 
     An image recognizing system which recognizes an object in an image such as an face and gesture recognizing system is realized based on software not only in the field of an industrial field but also in a variety of application fields including a digital camera, a smart phone, an access control system and a digital door lock. However, recently, image input/output devices are becoming high quality, and systems supporting from a quarter video graphic array (QVGA) grade in a small scale to a high definition (HD) grade in a large scale come into wide use. A process of recognizing an object in an image includes Gaussian filtering. 
     That is, although performing the Gaussian filtering on a high resolution image in real time is required, because the Gaussian filtering is performed based on a processor through software in a general embedded system, there is a limit in processing the Gaussian filtering on a high resolution image in real time. 
     SUMMARY OF THE INVENTION 
     The present invention is directed to an apparatus and method for Gaussian filtering performing Gaussian filtering through hardware. 
     According to an aspect of the present invention, there is provided an apparatus for Gaussian filtering including an image buffer configured to generate mask region data which includes pixel values of pixels located on a mask in an input image, and a Gaussian filter core configured to arrange the mask region data to generate pixel array values referring to an index array corresponding to a size of the mask, and apply Gaussian filtering to the pixel array values to generate Gaussian filtering values. 
     The image buffer may include a plurality of first delay elements serially connected to each other configured to sequentially receive and store the pixel values of the input image, and output the stored pixel values of the input image to the Gaussian filter core, and a plurality of image row storage units serially connected to each other configured to output pixel values corresponding to a single row of the input image to the Gaussian filter core when all the pixel values corresponding to the single row are received, wherein at least one of the plurality of first delay elements outputs the pixel values of the input image to another one of the first delay elements, and at least one of the plurality of image row storage units outputs the pixel values corresponding to the single row to another one of the image row storage units. 
     Each of the plurality of image row storage units may include a plurality of second delay elements serially connected to each other configured to sequentially receive and store the pixel values corresponding to the single row, and output the stored pixel values corresponding to the single row to the Gaussian filter core, and a first-in first-out (FIFO) module configured to sequentially output the pixel values corresponding to the single row to the other image row storage unit, one of the plurality of second delay elements, and the Gaussian filter core when all the pixel values corresponding to the single row from the other image row storage unit or an outside are received, wherein at least one of the plurality of second delay elements outputs the pixel values of the input image to another one of the plurality of second delay elements. 
     The Gaussian filter core may include an index generator configured to generate a row index and a column index referring to the index array corresponding to the size of the mask, a plurality of routers configured to arrange a part of the mask region data based on the row index and the column index to generate the pixel array values, and a filter core configured to apply the Gaussian filtering to a matrix having the pixel array values as one row to generate the Gaussian filtering values. 
     The index generator generates the row index and the column index, each of which includes an index corresponding to a coordinate of a mask center in the index array, the index corresponding to each row. 
     An (int(n/2)+1) th  row of the index array is a row in which values of 0 to n−1 are sequentially arranged, and each of indexes located in an (int(n/2)+1) th  column of the index array has a value of int(n/2), and each of indexes located above the (int(n/2)+1) th  row among indexes of the index array has a value bigger by one than an index adjacent to the right side when an index column is less than (int(n/2)+1-index row), and has a value smaller by one than the index adjacent to the right side when an index column is equal to or greater than (int(n/2)+1-index row), and each of indexes located below the (int(n/2)+1) th  row among indexes of the index array has a value smaller by one than an index adjacent to the left side when an index column is greater than (int(n/2)+(n-index row), and has a value bigger by one than the index adjacent to the left side when an index column is equal to or less than (int(n/2)+(n-index row), wherein n is a horizontal length or vertical length of the mask, and the index column is the column number of the index and the index row is the row number of the index, and the int(n/2) is an integer number of n/2. 
     Each of the plurality of routers arranges a pixel value corresponding to each index included in the row index of the pixel values located in a row corresponding to the row index in the mask region data according to a location on the row index of the index to generate the pixel array values. 
     According to another aspect of the present invention, there is provided a method for performing Gaussian filtering on an input image by an apparatus for Gaussian filtering including an image buffer and a Gaussian filter core, the method comprising generating, by the image buffer, mask region data which includes pixel values of pixels located on a mask in an input image, arranging, by the Gaussian filter core, the mask region data referring to an index array corresponding to a size of the mask to generate pixel array values, and applying, by the Gaussian filter, Gaussian filtering to the pixel array values to generate Gaussian filtering values. 
     The generating by the image buffer of the mask region data which includes the pixel values of the pixels located on the mask in the input image may be performed by the image buffer including a plurality of first delay elements serially connected to each other configured to sequentially receive and store the pixel values of the input image and output the stored pixel values of the input image to the Gaussian filter core, and a plurality of image row storage units serially connected to each other configured to output pixel values corresponding to a single row of the input image to the Gaussian filter core when all the pixel values corresponding to the single row are received, wherein at least one of the plurality of first delay elements outputs the pixel values of the input image to another one of the plurality of first delay elements, and at least one of the plurality of image row storage units outputs the pixel values corresponding to the single row to another one of the plurality of image row storage units. 
     The generating by the image buffer of the mask region data which includes the pixel values of the pixels located on the mask in the input image may be performed by the image buffer that includes a plurality of image row storage units, each image row storage unit including a plurality of second delay elements serially connected to each other configured to sequentially receive and store the pixel values corresponding to the single row and output the stored pixel values corresponding to the single row to the Gaussian filter core, and a first-in first-out (FIFO) module configured to sequentially output the pixel values corresponding to the single row to the other image row storage unit, one of the plurality of second delay elements, and the Gaussian filter core when all the pixel values corresponding to the single row from the other one of the plurality of image row storage units or an outside are received. At least one of the plurality of second delay elements outputs the pixel values of the input image to the other one of the plurality of second delay elements. 
     The arranging by the Gaussian filter core of the mask region data to generate the pixel array values referring to the index array corresponding to the size of the mask may include generating, by an index generator, a row index and a column index referring to the index array corresponding to the size of the mask, arranging, by a plurality of routers, a part of the mask region data based on the row index and the column index to generate the pixel array values, and applying, by a filter core, the Gaussian filtering to a matrix having the pixel array values as one row to generate the Gaussian filtering values. 
     The generating by the index generator of the row index and the column index referring to the index array corresponding to the size of the mask may include generating the row index and the column index, each of which includes an index corresponding to a coordinate of a mask center of the index array, the index corresponding to each row. 
     An (int(n/2)+1)th row of the index array is a row in which values of 0 to n−1 are sequentially arranged, and each of indexes located in an (int(n/2)+1) th  column of the index array has a value of int(n/2), and each of indexes located above the (int(n/2)+1) th  row among indexes of the index array has a value of bigger by one than an index adjacent to the right side when an index column is less than (int(n/2)+1-index row), and has a value smaller by one than an index adjacent to the right side when an index column is equal to or greater than (int(n/2)+1-index row), and each of indexes located below the (int(n/2)+1) th  row among indexes of the index array has a value smaller by one than an index adjacent to the left side when an index column is greater than (int(n/2)+(n-index row), and has a value bigger by one than an index adjacent to the left side when an index column is equal to or less than (int(n/2)+(n-index row). Here, n is a horizontal length or vertical length of the mask, and the index column is the column number of the index and the index row is the row number of the index, and the int(n/2) is an integer number of n/2. 
     The arranging by a plurality of routers of a part of the mask region data based on the row index and the column index to generate the pixel array values may be performed by each of the plurality of routers configured to arrange a pixel value corresponding to each index included in the row index of the pixel values located in a row corresponding to the row index in the mask region data according to a location on the row index of the index to generate the pixel array values. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The above and other objects, features and advantages of the present invention will become more apparent to those of ordinary skill in the art by describing in detail exemplary embodiments thereof with reference to the accompanying drawings, in which: 
         FIG. 1  is a block diagram illustrating an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; 
         FIG. 2  is a diagram illustrating a Gaussian distribution used to Gaussian filtering by an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; 
         FIG. 3  is a diagram illustrating a mask used for an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; 
         FIG. 4  is a diagram illustrating mirroring performed by an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; 
         FIG. 5  is a diagram illustrating an image buffer of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; 
         FIG. 6  is a diagram illustrating an image row storage unit included in an image buffer of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; 
         FIG. 7  is a diagram illustrating a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; 
         FIG. 8  is a diagram illustrating an array of index stored in an index generator of a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; 
         FIG. 9A  is a diagram conceptually illustrating an operating process of a router included in a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; 
         FIG. 9B  is a diagram conceptually illustrating an operating process of a router included in a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention with row index and column index; 
         FIG. 10  is a diagram illustrating a result of mirroring performed according to a column index and a row index by a router included in a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; 
         FIG. 11A  is a diagram illustrating a result of mirroring performed according to a column index and a row index based on coordinate of one mask center by a router included in a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; 
         FIG. 11B  is a diagram illustrating a result of mirroring performed according to a column index and a row index based on coordinate of another mask center by a router included in a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; 
         FIG. 11C  is a diagram illustrating a result of mirroring performed according to a column index and a row index based on coordinate of yet another mask center by a router included in a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; 
         FIG. 12  is a flowchart illustrating a process of performing Gaussian filtering by an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention; and 
         FIG. 13  is a view illustrating a computer system in which the apparatus for transforming image according to an exemplary embodiment of the present invention is implemented. 
     
    
    
     DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS 
     Exemplary embodiments of the present invention will be described in detail below with reference to the accompanying drawings. While the present invention is shown and described in connection with exemplary embodiments thereof, it will be apparent to those skilled in the art that various modifications can be made without departing from the spirit and scope of the invention. 
     Further, in the present invention, when it is mentioned that a first element “transmits” a signal to a second element, the first element may be directly connected to the second element and transmit the signal to the second element, but if there is not a description which has contrary meaning, it will be understood that the first element can transmit the signal to the second element through another element existing between the two. 
       FIG. 1  is a block diagram illustrating an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention,  FIG. 2  is a diagram illustrating a Gaussian distribution used to Gaussian filtering by an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention,  FIG. 3  is a diagram illustrating a mask used for an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention, and  FIG. 4  is a diagram illustrating mirroring performed by an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention. 
     The apparatus for Gaussian filtering according to an exemplary embodiment of the present invention of  FIG. 1  may include an image buffer  110 , a Gaussian filter core  120  and a controller  130 . 
     The image buffer  110  receives input data which is an image received from an external device, e.g. a camera, a device connected through a network and a storage medium, etc., and transmits pixel values, hereinafter referred to as mask region data, corresponding to a mask for Gaussian filtering among the input data to the Gaussian filter core  120 . 
     The Gaussian filter core  120  performs the Gaussian filtering on the mask region data. Here, when mirroring with respect to the mask region data is needed, the Gaussian filter core  120  may apply the mirroring to the mask region data, and perform the Gaussian filtering on the mask region data to which the mirroring is applied. 
     The Gaussian filter core  120  performs the Gaussian filtering using a property of a Gaussian distribution. One-dimensional Gaussian distribution may be defined like Equation 1. 
     
       
         
           
             
               
                 
                   
                     G 
                     ⁡ 
                     
                       ( 
                       x 
                       ) 
                     
                   
                   = 
                   
                     
                       1 
                       
                         
                           2 
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           π 
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           
                             σ 
                             2 
                           
                         
                       
                     
                     ⁢ 
                     
                       e 
                       
                         - 
                         
                           
                             
                               ( 
                               
                                 x 
                                 - 
                                 μ 
                               
                               ) 
                             
                             2 
                           
                           
                             2 
                             ⁢ 
                             
                                 
                             
                             ⁢ 
                             
                               σ 
                               2 
                             
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     Equation 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     1 
                   
                   ) 
                 
               
             
           
         
       
     
     Here, x denotes an element value which is an object of Gaussian filtering, which is each pixel value of an input image μ, denotes a mean value of each element value, and σ denotes a standard deviation of each element value. When μ=0, σ 2 =1, the one-dimensional Gaussian distribution may be a general normal distribution. 
     Here, the width of the Gaussian distribution may be determined by the standard deviation, and the size of a filter may be determined according to the width of the Gaussian distribution. As shown in  FIG. 2 , in the Gaussian distribution with the mean value of 0 and the standard deviation of σ, each element value distributes within a range of −4σ˜4σ, and as the magnitude of the standard deviation further increases, greater smoothing phenomenon may occur (each element value is distributed in a wider range). 
     The apparatus for Gaussian filtering according to an exemplary embodiment of the present invention performs the Gaussian filtering on an image, and therefore may use a two-dimensional Gaussian distribution as shown in Equation 2, which is a modified form of Equation 1. 
     
       
         
           
             
               
                 
                   
                     
                       G 
                       ⁡ 
                       
                         ( 
                         x 
                         ) 
                       
                     
                     ⁢ 
                     
                       G 
                       ⁡ 
                       
                         ( 
                         y 
                         ) 
                       
                     
                   
                   = 
                   
                     
                       1 
                       
                         2 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         π 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         
                           σ 
                           2 
                         
                       
                     
                     ⁢ 
                     
                       e 
                       
                         - 
                         
                           
                             
                               x 
                               2 
                             
                             + 
                             
                               y 
                               2 
                             
                           
                           
                             2 
                             ⁢ 
                             
                                 
                             
                             ⁢ 
                             
                               σ 
                               2 
                             
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     Equation 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     2 
                   
                   ) 
                 
               
             
           
         
       
     
     Here, x denotes an x coordinate for each element having the Gaussian distribution, and y denotes a y coordinate for each element having the Gaussian distribution. 
     In the apparatus for Gaussian filtering according to an exemplary embodiment of the present invention, a Gaussian function representing the Gaussian distribution is a continuous function, but values of the Gaussian function may be calculated only when x and y are integers to make a mask. In the Gaussian distribution with the mean value of 0 and the standard deviation of σ, each element value exists in a range of −4σ˜4σ, and therefore the size of the mask may be set to be (8σ+1)×(8σ+1). Therefore, when the standard deviation is 1, the size of the mask may be 9×9. When the standard deviation is 0.4, the size of the mask may be 3×3, and when the standard deviation is 0.8, the size of the mask may be 5×5. 
     Here, the process of the Gaussian filtering using the mask having a size determined based on the standard deviation may be the process of calculating a sum of values for pixels of the input image corresponding to a mask at respective locations multiplied by filter coefficients by moving the mask on the input image. 
     When the mask is located as shown in  FIG. 3 a   , all the corresponding pixels of the input image exist in the mask. However, when the mask is located as shown in  FIG. 3 b   , regions in which pixels of the input image are not located may exist. Therefore, to effectively process the Gaussian filtering, it is required that pixels of the input image for all the locations are located in the mask through the mirroring as shown in  FIG. 4 . 
     When mirroring is performed in the upward and downward directions of the input image shown in  FIG. 4 a   , as shown in  FIG. 4 b   , for the uppermost row of the input image, rows corresponding to a specified range may be copied to an upper location of the uppermost row of the input image, and for the lowermost row of the input image, rows corresponding to a specified range may be copied to a lower location of the lowermost row of the input image. Further, when mirroring is performed in the leftward and rightward directions of the input image shown in  FIG. 4 a   , as shown in  FIG. 4 c   , for the leftmost row of the input image, rows corresponding to a specified range may be copied to a left location of the leftmost row of the input image, and for the rightmost row of the input image, rows corresponding to a specified range may be copied to a right location of the rightmost row of the input image. Here, the number of copied rows or copied columns may be less than (a size of mask−1). 
     As described above, the mirroring needs to calculate a location to be copied with respect to locations of pixels, and therefore the complexity of the calculation may be high. The Gaussian filter core  120  of the apparatus of the Gaussian filtering according to an exemplary embodiment of the present invention performs the mirroring by hardware, not by a processor, so that the Gaussian filtering in real time is possible. The detailed structure of the Gaussian filter core  120  will be described below with reference to  FIGS. 7 to 9 . 
     The controller  130  transmits information on a mask size which represents a size of the mask to the Gaussian filter core  120 , and controls the Gaussian filter core  120  so that the Gaussian filter core  120  extracts mask region data output from the image buffer  110  to fit the mask size. Here, the controller  130  may receive an input for determining the mask size from a user and generate the information on the mask size in advance. 
       FIG. 5  is a diagram illustrating an image buffer of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention, and  FIG. 6  is a diagram illustrating an image row storage unit included in an image buffer of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention. 
     Referring to  FIG. 5 , the image buffer  110  may include a plurality of delay elements  510  and a plurality of image row storage units  520 . 
     Each of the plurality of delay elements  510  stores pixel values of a single pixel. When new pixel values are received from an outside, each of the plurality of delay elements  510  outputs pre-stored pixel values and stores new pixel values. Here, the plurality of delay elements  510  may be serially connected to each other as shown in  FIG. 5 . Here, each of the plurality of delay elements  510  may output the pre-stored pixel values to a delay element corresponding to a next order, hereinafter referred to as a succeeding delay element, and to the Gaussian filter core  120 . Particularly, because the succeeding delay element does not exist at a last delay element among the plurality of delay elements  510 , the last delay element outputs the pre-stored pixel values to the Gaussian filter core  120 . 
     Each of the plurality of image row storage units  520  stores a single row of the input image, and outputs pixel values corresponding to a region in which a mask is located among the pixel values included in the corresponding row. Here, each of the plurality of image row storage units  520  may be serially connected to each other. When another adjacent image row storage unit exists and all the pixel values corresponding to the single row of the input image are received, each of the plurality of image row storage units  520  transmits the pixel values to another adjacent image row storage unit. Therefore, the uppermost image row storage unit of the image row storage units shown in  FIG. 5  may store a row of the input image received at earliest time, and output pixel values included in the corresponding row. 
     Referring to  FIG. 6 , the image buffer  110  may include a first-in first-out (FIFO) module  610  and a plurality of delay elements  620 . 
     The FIFO module  610  stores the pixel values corresponding to the single row received from an outside or one of the plurality of image row storage units  520 . The FIFO module  610  sequentially (in a first-in first-out way) transmits the pixel values corresponding to the single row to a delay element  620  connected to the FIFO module  610  and a FIFO module of another image row storage unit connected to the current image row storage units  520 . 
     The plurality of delay elements  620  may be serially connected to each other as shown in  FIG. 6 . Here, each of the plurality of delay elements  620  may output the pre-stored pixel values to a succeeding delay element and the Gaussian filter core  120 . Particularly, because the succeeding delay element does not exist at a last delay element among the plurality of delay elements  620 , the last delay element outputs the pre-stored pixel values to the Gaussian filter core  120 . 
     Here, the Gaussian filter core  120  may select mask region data, which is a part of outputs of the plurality of delay elements  510  and the plurality of image row storage units  520  according to a size of a mask and perform the Gaussian filtering. For example, when the size of the mask is 3×3, the Gaussian filter core  120  may select pixel values output along a path of 3×3 exemplified in  FIG. 6  from each image row storage unit  520 , and perform the Gaussian filtering. Further, when the size of the mask is 3×3, the Gaussian filter core  120  may select pixel values output without passing the delay element  510  as shown in  FIG. 5  and pixel values output through two delay elements  510  in an early stage and perform the Gaussian filtering. Further, when the size of the mask is 3×3 as shown in  FIG. 5 , the Gaussian filter core  120  may select a part of pixel values output without passing the delay element  510 , pixel values output through the delay elements  510 , and pixel values output through two image row storage units  520  in a lower order according to the process described above. 
     Even when the size of the mask is 5×5, 7×7, or 9×9, the Gaussian filter core  120  may adaptably perform the Gaussian filtering on the size of the mask by receiving only pixel values output through paths exemplified in  FIGS. 5 and 6 . Here, the controller  130  may transmit a mask size determining signal which determines the size of the mask to the Gaussian filter core  120 , and the Gaussian filter core  120  may select pixel values in response to the mask size determining signal. 
     Therefore, pixel values received by the Gaussian filter core  120  among pixel values output from the image buffer  110  correspond to the mask region data described above. The image buffer  110  may change the paths through which pixel values of the input image are periodically output using the structure described above and output, and the Gaussian filter core  120  may select pixel values according to paths through which the pixel values are output to obtain pixel values of the input image corresponding to a location of each mask. 
       FIG. 7  is a diagram illustrating a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention,  FIG. 8  is a diagram illustrating an array of index stored in an index generator of a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention,  FIG. 9A  is a diagram conceptually illustrating an operating process of a router included in a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention,  FIG. 9B  is a diagram conceptually illustrating an operating process of a router included in a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention with row index and column index,  FIG. 10  is a diagram illustrating a result of mirroring performed according to a column index and a row index by a router included in a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention, and  FIG. 11A  is a diagram illustrating a result of mirroring performed according to a column index and a row index based on coordinate of one mask center by a router included in a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention,  FIG. 11B  is a diagram illustrating a result of mirroring performed according to a column index and a row index based on coordinate of another mask center by a router included in a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention,  FIG. 11C  is a diagram illustrating a result of mirroring performed according to a column index and a row index based on coordinate of yet another mask center by a router included in a Gaussian filter core of an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention. 
     Referring to  FIG. 7 , the Gaussian filter core  120  of the apparatus for Gaussian filtering may include an index generator  710 , a plurality of routers  720  and a filter core  730 . 
     The index generator  710  receives information on a mask size from the controller  130 , generates an index which is a reference with which the router  720  rearranges pixel values received from the image buffer  110  according to a mask size and a mask location, and transmits the index to each router  720 . Here, the index generator  710  may transmit the index corresponding to the mask location to each router  720  referring to a pre-stored index array. Referring to  FIG. 8 , the index array may be an array including an index determined based on the mask size, which is n×n and in which n is an odd number equal to or greater than 3. Values of 0 to n−1 may be sequentially arranged in an (int(n/2)+1) th  row (hereinafter called a row of normal state) of the index array. Further, each of the indexes (hereinafter called an intermediate column index) located in an (int(n/2)+1) th  column of the index array has a value of int(n/2). Further, each of the indexes located above the row of a normal state of indexes in the index array may have a value bigger by one than an index adjacent to the right side when an index column is less than (int(n/2)+1-index row), and may have a value smaller by one than the index adjacent to the right side when an index column is equal to or greater than (int(n/2)+1-index row). Further, each of the indexes located below the row of normal state of indexes in the index array may have a value smaller by one than an index adjacent to the left side when an index column is greater than (int(n/2)+(n-index row)), and may have a value bigger by one than an index adjacent to the left side when an index column is equal to or less than (int(n/2)+(n-index row)). Here, the index column is the column number of the index and the index row is the row number of the index. Further, int(a) denotes a function which changes a real number a into an integer number. 
     The index generator  710  may extract the row index and the column index corresponding to a row of the index array which corresponds to a coordinate (hereinafter called a coordinate of a mask center) at which a central point, which is a point corresponding to a coordinate of (int(n/2)+1) on the mask, of the mask is located on the image of input data, and may transfer the row index and the column index to the router  720 . In an exemplary embodiment, when the coordinate of the mask center is (a, b), the index generator  710  may determine whether a or b is equal to or smaller than int(n/2). When a is equal to or smaller than int(n/2), the index generator  710  may transmit the index corresponding to an a th  row of the index array to the router  720  as a row index. When a is greater than int(n/2) and equal to or smaller than (h-int(n/2)) (h is a height of an image), the index generator  710  may transmit the index (0 to n−1) corresponding to the row of a normal state to the router  720 . When a is greater than (h-int(n/2), the index generator  710  may transmit the index corresponding to a (n-a) th  row of the index array to the router  720  as a row index. When b is equal to or smaller than int(n/2), the index generator  710  may transmit the index corresponding to a b th  row of the index array to the router  720  as a column index. When b is greater than int(n/2) and equal to or smaller than (w-int(n/2)) (w is a width of an image), the index generator  710  may transmit the index (0 to n−1) corresponding to the row of normal state to the router  720  as a column index. When a is greater than (w-int(n/2), the index generator  710  may transmit the index corresponding to a (n-a) th  row of the index array to the router  720  as a column index. 
     The router  720  may arrange mask region data, which is pixel values received from the image buffer  110  based on the row index and the column index received from the index generator  710 , and output the mask region data. Referring to  FIG. 9 a   , the router  720  receives a plurality of pixel values (when a mask size is 9×9, 81 pixel values, inData_0 to inData_80) from the image buffer  110 , generates pixel array values, which are values in which one or more of the pixel values received from the image buffer  110  based on the row index and the column index received from the index generator  710  are arranged, and transmits the pixel array values to the filter core  730 . Here, the plurality of routers  720  may be provided, and each of the routers  720  receives whole pixel values, and then generates pixel array values in which a part of the whole pixel array values are arranged based on the row index and the column index, and then transmits the pixel array values to the filter core  730 . In an exemplary embodiment, as shown in  FIG. 9 b   , when the row index 0 and the column indexes {8, 7, 6, 5, 4, 5, 6, 7, and 8} are received, the routers  720  may arrange a part (pixel values corresponding to column indexes 4 to 8) of pixel values for a row corresponding to the row index 0 to correspond to the column index, and generate the pixel arrange values. That is, when pixel values corresponding to the row index 0 of the received pixel values are a, b, c, d, e, f, g, h, and i, the router  720  may generate i, h, g, f, e, f, g, h, and i which is an array of pixel values having an order based on the column indexes {8, 7, 6, 5, 4, 5, 6, 7, and 8} as pixel array values. As described above, each router  720  may output one row of pixel array values to which mirroring is applied. Therefore, when a mask of 3×3 is applied, three routers  720  may generate the pixel array values, and when a mask of 9×9 is applied, nine routers  720  may generate the pixel array values. Referring to  FIG. 10 , when the coordinate of mask center is (1, 1), the router  720  may receive one of a column index  1002  and a row index  1003  to generate the pixel array values. Therefore, as shown in  FIG. 10 , when pixel array values output from the routers  720  are displayed in a matrix, it becomes a matrix on which mirroring is performed. That is, even when a central point of a mask, which is a pixel denoted by a circle as shown in  FIG. 11 , changes and a mask location is changed, the routers  720  may adaptably perform mirroring for the Gaussian filtering. Here, the coordinate of the mask center in  FIG. 12 a    is (1, 1), the coordinate of the mask center in  FIG. 12 b    is (1, 2), and the coordinate of the mask center in  FIG. 12 a    is (1, 3). 
     The filter core  730  applies the Gaussian filtering on a matrix in which pixel array values are represented in one row to generate Gaussian filtering values. 
       FIG. 12  is a flowchart illustrating a process of performing Gaussian filtering by an apparatus for Gaussian filtering according to an exemplary embodiment of the present invention. 
     Referring to  FIG. 12 , in an operation  1210 , the image buffer  110  receives input data. 
     In an operation  1220 , the image buffer  110  transmits mask region data of input data to the Gaussian filter core  120 . In an exemplary embodiment, the image buffer  110  transmits pixel data located on the mask of the input data to the filter core  730 . The process of outputting the mask region data by the image buffer  110  is described above referring to  FIGS. 5 and 6 . 
     In an operation  1230 , the Gaussian filter core  120  generates a row index and a column index based on a coordinate of a mask center. In an exemplary embodiment, the Gaussian filter core  120  may determine indexes for a row corresponding to an x coordinate and a y coordinate of the coordinate of the mask center of a predetermined index array as the row index and the column index. The process of generating the row index and the column index by the Gaussian filter core  120  has been described in detail above referring to  FIGS. 7 and 8 . 
     In an operation  1240 , the Gaussian filter core  120  arranges pixel values of the mask region data based on the row index and the column index to generate pixel array values. The detailed process of generating the pixel array values by the Gaussian filter core  120  has been described in detail above referring to  FIGS. 9 to 11 . 
     In an operation  1250 , the Gaussian filter core  120  applies the Gaussian filtering to pixel array values to generate and output the Gaussian filtering values. 
     Therefore, an apparatus and method for Gaussian filtering according to an exemplary embodiment of the present invention performs a process of Gaussian filtering and a process of mirroring, which is a process of preprocessing of the Gaussian filtering, through a hardware structure, and thereby a time required for the Gaussian filtering can be reduced compared to a case in which the Gaussian filtering is performed through software. 
     As described above, according to an exemplary embodiment of the present invention, Gaussian filtering on a high-resolution image may be performed in real time. 
     The apparatus for Gaussian filtering according to an exemplary embodiment of the present described above may be implemented by a computer system. 
       FIG. 13  is a view illustrating a computer system in which the apparatus for Gaussian filtering according to an exemplary embodiment of the present invention is implemented. 
     An exemplary embodiment according to the present invention may be implemented by, for example, a computer-readable recording medium in the computer system. As illustrated in  FIG. 13 , the computer system  1300  may include at least one of one or more processors  1310 , a memory  1320 , a storing unit  1330 , a user interface input unit  1340 , and a user interface output unit  1350 , which may communicate with each other through a bus  1360 . In addition, the computer system  1300  may further include a network interface  1370  for accessing a network. The processor  1310  may be a central processing unit (CPU) or a semiconductor element executing processing commands stored in the memory  1320  and/or the storing unit  1330 . The memory  1320  and the storing unit  1330  may include various types of volatile/non-volatile storage media. For example, the memory may include a read only memory (ROM)  1324  and a random access memory (RAM)  1325 . 
     This written description sets forth the best mode of the invention and provides examples to describe the invention and to enable a person of ordinary skill in the art to make and use the invention. The specification drafted as such is not limited to detailed terms suggested in the specification. Accordingly, it will be apparent to those skilled in the art that various modifications, changes, and variations may be made in the example without departing from the scope of the invention.