Abstract:
Methods and apparatuses for color denoising are described. There is provided an image processing method. The method comprises the steps of retrieving chrominance level for a plurality of pixels in a predetermined configuration; computing a weight for each pixel; applying the weight to the chrominance level for each the pixel; summing the weighted chrominance level to output a chrominance level for a centre pixel at the center of said predetermined configuration; and repeating the above steps for every pixel per image. The color noise can be reduced while preserving the edge without any edge detection.

Description:
TECHNICAL FIELD 
       [0001]    The present invention relates generally to digital image processing and, in particular, to a color denoising method for digital images. 
       BACKGROUND OF INVENTION 
       [0002]    With the advance in technologies, color images or videos can be captured conveniently through various devices like digital cameras, cell phone cameras, and video recorders. Color itself can provide people with much more information than monochrome, and people are so used to color images that they prefer to view and print images in color with color displays and color printers, which are abundantly available. 
         [0003]    The importance of color imaging has made its quality become essential to users. However, color noise is largely unavoidable owing to color interpolation on Mosaic sensors and electronic noise from circuits and cables, for instance. Color noise exists independently in each color, and people endeavor to reduce any existing color noise in images. 
         [0004]    Low-pass filtering is a conventional way to reduce color noise, because noise normally comprises irregularities in an image and typically is regarded as such high-frequency components of an image. Consequently, low-pass filter can reduce such noise. However, since edges or color edges represent sharp changes and are made substantially of high-frequency components, edges are blurred if low-pass filtering is applied. 
         [0005]    In an attempt to overcome the deficiencies of the low-pass filtering, techniques have been proposed that identify edges in an image to avoid blurring of such desired color transitions. For example, U.S. Pat. No. 5,241,370 issued on Aug. 31, 1993 to Desor describes using correlation to identify color transitions. The color transition is enhanced before the low-pass filtering is applied to maintain the sharpness. However, the technique only works on television signals and emphasizes on the horizontal transition only. Furthermore, a vertical digital filter must be used in this method. 
         [0006]    U.S. Pat. No. 5,432,869 issued to Matsumoto on Jul. 11, 1995 describes the same principles. The problem of direction-oriented filtering has again made it less effective. Another way to retain the sharpness while suppressing the noise is discriminating the noise components from the edges as in U.S. Pat. No. 6,667,815 B1 issued to Nagao on Dec. 23, 2003 where edge detection is used to characterize the edges and then suppress only the noise that is separated according to color correlation. The method also enhances the image sharpness. 
         [0007]    U.S. Patent Application Publication No. 20060050182A1 published on Mar. 9, 2006 in the name of Lee describes an adaptive color correction method in which chrominance of a pixel is adjusted according to the corresponding luminance of the pixel by a weighting procedure, resulting in an undesirable performance that the color-noise reduction is luminance-biased. Furthermore, no sharpening measures are adopted, making the blurring of edges unavoidable. 
         [0008]    U.S. Patent Application Publication No. 20060055985A1 published on Mar. 16, 2006 in the name of Ikeda and U.S. Pat. No. 6,980,326 B2 issued to Tsuchiya on Dec. 27, 2005 describe noise suppression without sharpness degradation. Both use edge detection because the prior knowledge of edges in filter design is required to preserve the edges. 
         [0009]    The foregoing problems of preserving the color for small objects and of edge detection and image sharpening are costly in computation. 
         [0010]    Apart from color preserving on small objects and computational complexity issues, the above conventional technologies may lead to undesirable performance. Firstly, such conventional methods rely on luminance components and hence the resulting performance is luminance-biased. Secondly, adopting the use of fixed thresholding, luminance-biased and single-directional edge detection limits the suppression capability, which results in limited performance. 
         [0011]    Thus, a need clearly exists for an improved method for color denoising. 
       SUMMARY 
       [0012]    Accordingly, aspects of the present invention have been developed with a view to substantially eliminate the drawbacks described hereinbefore and to provide a low-complexity method for color denoising. 
         [0013]    In accordance with an aspect of the present invention, there is provided an image processing method for color denoising. The method comprises the steps of:
       retrieving chrominance level for a plurality of pixels in a predetermined configuration;   computing a weight for each said pixel;   applying said weight to said chrominance level for each said pixel;   summing said weighted chrominance level to output a chrominance level for a centre pixel at the center of said predetermined configuration;   repeating the above steps for every pixel per image.       
 
         [0019]    The predetermined configuration may have a size of 17 pixels by 17 pixels. 
         [0020]    The predetermined configuration may involve pixels clustering at the center thereof. 
         [0021]    The predetermined configuration may comprise 5 pixels in a row. The 5 pixels are separated from each other by a plurality of pixels in a sequence of 4 pixels, 2 pixels, 2 pixels and 4 pixels. The row repeats for 4 times at a vertical distance of 4 pixels, 2 pixels, 2 pixels and 4 pixels. 
         [0022]    The weight is dependent on difference between the chrominance level of pixel at the centre of said predetermined configuration and the chrominance level of pixel to which said weight is applied. 
         [0023]    The weight can be computed by an approximation function. 
         [0024]    The approximation function can give weight in integers. 
         [0025]    The approximation function can make use of a look up table. 
         [0026]    Other objects of the present invention besides the aforesaid shall be apparent to those skilled in the art in the light of the appended description, drawings and claims. 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0027]    Embodiments of the invention are described in more detail hereinafter with reference to the drawings, in which: 
           [0028]      FIG. 1   a  is a block diagram illustrating denoising signals from an image sensor in accordance with an embodiment of the invention; 
           [0029]      FIG. 1   b  is a block diagram illustrating denoising of JPEG images; 
           [0030]      FIG. 1   c  is a chart illustrating the frequency response of the filter used in an embodiment of the invention; 
           [0031]      FIG. 2   a  and  2   b  show the predetermined configuration of a filter window; 
           [0032]      FIG. 2   c  shows the notation of the pixels in accordance with an embodiment of the invention; 
           [0033]      FIG. 3  is a plot of the approximation algorithm 1 and an original algorithm; 
           [0034]      FIG. 4  is a plot of the approximation algorithm 2 and the original algorithm; 
           [0035]      FIG. 5  is a flow diagram for the weight computation for a computational efficient DSP implementation design; 
           [0036]      FIG. 6   a - 6   e  are the results for test sequence  1 ; and 
           [0037]      FIG. 7   a - 7   e  are the results for test sequence  2 . 
       
    
    
     DETAILED DESCRIPTION 
       [0038]    Methods and apparatus for color denoising are disclosed hereinafter. In the following description, numerous specific details, including window sizes, image resolutions, and the like are set forth. However, from this disclosure, it will be apparent to those skilled in the art that modifications and/or substitutions may be made without departing from the scope and spirit of the invention. In other circumstances, specific details may be omitted so as not to obscure the invention. 
         [0039]    In a method in accordance with embodiment in the present invention, color noise can be reduced while preserving the edge without any edge detection. This is achieved by determining filter weights with a function of absolute difference between current pixels and neighboring pixels. For edge pixels, the difference is comparatively large and the corresponding weight is close to zero. 
         [0040]    The embodiments of the present invention also provide a method that is implicitly related to chrominance data. In addition, the method provides edge detection and edge preservation in all directions. The embodiments of the present invention provide adaptive filtering and large window size and is capable of providing high accuracy statistical modeling. The embodiments of the present invention are efficient to implement and of low complexity. Meanwhile, the method provides high flexibility for large variety of implementation. For example, low complexity can be achieved by software approach. In an embodiment of the present invention, the computations required for one pixel comprise 25 multiplications and 24 additions. 
         [0041]    Color denoising can be applied under two situations of image capture, namely to photos and videos, in which any image capture device can be used such as digital camera, video camera etc. In  FIG. 1   a  and  1   b,  two implementations of the present invention are shown. In  FIG. 1   a,  a video preprocessing system  100  is shown. A composite signal being the output signal from an image sensor  102 , such as a CCD, is fed into an analogue-to-digital converter and splitter  103  to convert the same from an analogue signal into a digital signal before being split into chrominance and luminance signals. Besides the luminance denoising on the luminance signal by the luminance denoising unit  104 , color denoising is applied on the chrominance signal. The processed signals from the luminance denoising unit  104  and the chrominance denoising unit  105  are output to a video encoder  106  to generate the video signal output. 
         [0042]      FIG. 1   b  is a block diagram illustrating a system  101  for denoising of JPEG images. Instead of video preprocessing, in the case of photos taken by a still camera  107 , it is the output image that becomes the input for the present invention. The still camera may be a digital one. An example of such an embodiment utilizes an internal data bus for transferring the output image of the digital camera module  107  to the JPEG decoder module  108 . It will be obvious to a skilled person in the art that different image formats such as TIF, RAW, GIF, etc. besides JPEG may be practiced. The digital image from the digital camera  107  is fed into the JPEG decoder  108  and converted into the desired representation such as from RGB to YCrCb color space so that the chrominance denoising  109  can be carried out. The processed signal is output to a JPEG encoder  110  or any converter such as RGB converter to convert the same into desired format for an output image. 
         [0043]    For the chrominance denoising module  105  in  FIG. 1   a  and  109  in  FIG. 1   b,  color denoising is carried out by a spatial varying filter (SVF) with a  2 D window that is applied per image.  FIG. 1   c  shows the frequency response of an example of the filter. According to an embodiment of the present invention, the filter has low bandwidth and may be a low-pass and band-stop filter. The filter is center-biased with most sampling pixels located at the centre of the filter window so as to preserve edges of small objects. 
         [0044]      FIG. 2   a  shows a  2 D window according to an embodiment of the invention with a predetermined configuration of 17 pixels by 17 pixels in size for testing sequences in CIF format of 352×288 pixels. 
         [0045]    In this 17 pixels by 17 pixels square configuration, 25 pixels are taken into consideration by the filter. The arrangement of those pixels for filter use is: in the 1 st  row of the predetermined configuration, 5 pixels are sampled and these 5 pixels are separated from each other with gaps in the sequence of 4 pixels, 2 pixels, 2 pixels and 4 pixels. The same pattern of sampling occurs in the 6 th , 9 th , 12 th  and 17 th  rows in this predetermined configuration. Therefore, every 1 st , 6 th , 9 th , 12 th , and 17 th  pixels in the aforesaid rows are used. The notations of these pixels are shown in  FIG. 2   c.    
         [0046]    As shown in  FIG. 2   a,  the pixels at the locations in black color  201 ,  202  are sampled as the input of the filter. The filter window  200  is designed in such a way that the sampling is centralized around the pixel at (i, j),  203  which is currently being processed and is at the centre of such a predetermined configuration. The operation of the spatial varying filter is as follows: 
         [0047]    For a pixel at (i, j), the filter function takes the chrominance levels for pixels colored in black in  FIG. 2   a  or those notations in  FIG. 2   c  as the input x(i+k, j+l). The pixels in black are denoted by the horizontal displacement k and the vertical displacement 1 from (i, j) while N denotes all the combinations of the desired displacements, giving the following algorithm (1) of the filter function with y(i, j) as the output thereof: 
         [0000]    
       
         
           
             
               
                 
                   
                     y 
                      
                     
                       ( 
                       
                         i 
                         , 
                         j 
                       
                       ) 
                     
                   
                   = 
                   
                     
                       ∑ 
                       
                         
                           ( 
                           
                             k 
                             , 
                             l 
                           
                           ) 
                         
                         ∈ 
                         N 
                       
                       
                           
                       
                     
                      
                     
                         
                     
                      
                     
                       
                         a 
                          
                         
                           ( 
                           
                             
                               i 
                               + 
                               k 
                             
                             , 
                             
                               j 
                               + 
                               l 
                             
                           
                           ) 
                         
                       
                       · 
                       
                         x 
                          
                         
                           ( 
                           
                             
                               i 
                               + 
                               k 
                             
                             , 
                             
                               j 
                               + 
                               l 
                             
                           
                           ) 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   1 
                   ) 
                 
               
             
           
         
       
     
         [0048]    The filter function coefficient a(i+K,j+l) is an adaptive weight given by the following equation (2): 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       a 
                        
                       
                         ( 
                         
                           
                             i 
                             + 
                             k 
                           
                           , 
                           
                             j 
                             + 
                             l 
                           
                         
                         ) 
                       
                     
                     = 
                     
                       
                         w 
                          
                         
                           ( 
                           
                             
                               i 
                               + 
                               k 
                             
                             , 
                             
                               j 
                               + 
                               l 
                             
                           
                           ) 
                         
                       
                       
                         
                           ∑ 
                           
                             
                               ( 
                               
                                 k 
                                 , 
                                 l 
                               
                               ) 
                             
                             ∈ 
                             N 
                           
                           
                               
                           
                         
                          
                         
                             
                         
                          
                         
                           w 
                            
                           
                             ( 
                             
                               
                                 i 
                                 + 
                                 k 
                               
                               , 
                               
                                 j 
                                 + 
                                 l 
                               
                             
                             ) 
                           
                         
                       
                     
                   
                   , 
                   
                     
                       ( 
                       
                         k 
                         , 
                         l 
                       
                       ) 
                     
                     ∈ 
                     N 
                   
                 
               
               
                 
                   ( 
                   2 
                   ) 
                 
               
             
           
         
       
     
         [0000]    where w is given by the absolute difference in chrominance levels between the current pixel at (i,j) and the neighboring pixel at (i+k, j+l) within the filter window  200 : 
         [0000]        w ( i+k,j+l )=ƒ(| x ( i,j )− x ( i+k,j+l )|), ( k,l )ε N    (3) 
         [0049]    The function ƒ in equation (3) is for edge preserving and is further defined in the equation (4), where k is the parameter to control the level of edge preservation and its value is dependent on application: 
         [0000]    
       
         
           
             
               
                 
                   
                     f 
                      
                     
                       ( 
                       i 
                       ) 
                     
                   
                   = 
                   
                     
                       ( 
                       
                         1 
                         - 
                         
                           i 
                           255 
                         
                       
                       ) 
                     
                     k 
                   
                 
               
               
                 
                   ( 
                   4 
                   ) 
                 
               
             
           
         
       
     
         [0050]    Since the function ƒ is computational costly to be implemented, an approximation function can be used instead: 
         [0000]      ƒ′( i )=2 −i/4    (5) 
         [0051]    Using this approximation function, only shifting operations are needed and the result of the approximation can be found in  FIG. 3 . The plot shows relative weights as a function of absolute difference for the original algorithm and the approximation algorithm or function. However, the normalization problem must still be solved for the adaptive sum of all 25 weights in selected pixels in order to achieve computation reduction. 
         [0052]    Further, to attain a computational efficient DSP implementation design, a lookup table (LUT) is used and the following equation (6) is employed for the function ƒ: 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       f 
                       ″ 
                     
                      
                     
                       ( 
                       i 
                       ) 
                     
                   
                   = 
                   
                     64 
                     × 
                     
                       2 
                       
                         - 
                         
                           [ 
                           
                             
                               min 
                                
                               
                                 ( 
                                 
                                   i 
                                   , 
                                   31 
                                 
                                 ) 
                               
                             
                             4 
                           
                           ] 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   6 
                   ) 
                 
               
             
           
         
       
     
         [0000]    Eventually, f′″(i)=floor(f(i)). 
         [0053]    In  FIG. 4 , the results of the approximation and the original functions are shown. All relative weights given by the approximation function (7) are integers according to f′″(i)=floor(f(i)). This shows that the approximation algorithm is stepwise and tracks less closely on the original algorithm than in  FIG. 3 . 
         [0054]    For a computational efficient DSP implementation design, we need to set the weight of current pixel (i, j)  203  in  FIG. 2   a  must be set, which is a(x, y) to be 64 first. The equation (2) is used to compute the weights of the pixels in the inner square  204  as shown in  FIG. 2   b,  which includes the current pixel (i, j) as well as the eight closest neighboring pixels in the predetermined configuration. One pixel in the outer square  205 , which takes the sixteen pixels around the boundary of the predetermined configuration into account, is selected and the weight thereof is calculated. After summing up the weights of pixels in inner square  204  and weights of pixel in outer squares  205 , if the sum is greater than 1024, then the last weight (the last one to be included in the summation for the pixel selected from the outer square  205  last) is reduced to ensure sum of weights to be equal to 1024. 
         [0055]    If the sum is smaller than 1024 and if all the weights for pixels in the outer square have not been computed yet, another pixel in the outer square is selected to compute the weight thereof. Summing the weights for selected pixels in the outer square with all those in the inner square, the sum is checked again to see if it is larger than 1024 or not. On the other hand, if the sum is smaller than 1024 while all the weights for pixels in the outer squares have been included, the weight of current pixel a(x,y) is increased to ensure the sum of weights to be 1024. Setting the sum of weights to be 1024 removes the need of using division operations which are time consuming. 
         [0056]    The design aims to ensure the sum of weights a(i+k, j+l) is 1024, that is: 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       ∑ 
                       
                         
                           ( 
                           
                             k 
                             , 
                             l 
                           
                           ) 
                         
                         ∈ 
                         N 
                       
                       
                           
                       
                     
                      
                     
                         
                     
                      
                     
                       a 
                        
                       
                         ( 
                         
                           
                             i 
                             + 
                             k 
                           
                           , 
                           
                             j 
                             + 
                             l 
                           
                         
                         ) 
                       
                     
                   
                   = 
                   1024 
                 
               
               
                 
                   ( 
                   7 
                   ) 
                 
               
             
           
         
       
     
         [0057]    The normalization can be done by a right shift operation instead of a division operation, making the DSP implementation more computationally efficient. The flow diagram  500  in  FIG. 5  illustrates the foregoing design. Processing commences in step  510 , where a(x, y) is set equal to  64 . In step  512 , the weights of the pixels in the inner square are computed. In step  513 , one pixel in the outer square is selected and the weight is computed. In step  516 , if it is determined that the sum of weights is greater than 1024 then processing proceeds to step  518  where the last weight is reduced to ensure the sum of weights equals to 1024 before the flow  500  ends. 
         [0058]    Alternatively, if it is determined that the sum of weights is not greater than 1024 then processing proceeds to step  520  where it is determined whether all weights is computed. 
         [0059]    If it is determined in step  520  that all weights are computed, then the processing proceeds to step  530  where a(x, y) is increased to ensure the sum of weights to be 1024 before the flow  500  ends. 
         [0060]    Alternatively, if it is determined that not all weights are computed, then the processing returns to step  514 . 
         [0061]    The spatial varying filter as described above is a non-recursive filter and no threshold is required to be determined for the filtering operation. Moreover, the embodiments of the invention can apply color denoising to all levels of luminance. 
         [0062]    The results are illustrated in  FIG. 6  and  FIG. 7  with sequence 1 and sequence 2 as a test sample. With different Quantization Parameter (QP), the bit rates for images decrease after the image is processed by the present invention as shown in the tables. 
         [0063]      FIG. 6   a  is the original noisy image. It can be observed that there is much color noise in the image. Such color noise is most visible at grey regions.  FIG. 6   b  is the processed image with sequence  1 . It can be observed that most of the color noise is removed and no perceptual color noise exists. 
         [0064]      FIG. 6   c  shows the bitrate used for the chrominance components of the original noisy video sequence and the bitrate used for the chrominance components of the de-noised video sequence. It can be observed that the bitrates used for the chrominance components are reduced significantly, especially at high bitrates. 
         [0065]      FIG. 6   d  shows the percentage of bitrates reduction of chrominance components and it can be up to 75% 
         [0066]      FIG. 6   e  shows the values of the overall bitrate used for the noisy video sequence and de-noised video respectively. 
         [0067]      FIG. 7   a - e  show another set of experimental results corresponding to  FIG. 6   a - e  by using another testing video sequence. It can be shown that the bitrate reduction is able to reach as high as 83% for chrominance components. 
         [0068]    The embodiments of the present invention can be used as a selectable tool for video preprocessing. 
         [0069]    The embodiments of the present invention can be used as a software module in other vertical application domain. 
         [0070]    In respect of handling picture boundary, such boundaries are detected and the outbound pixels are excluded in the method. 
         [0071]    In another embodiment in which the computation power of the device is large enough, it is not necessary to approximate the filter weights and the filter can be implemented directly. 
         [0072]    The foregoing description of embodiments of the present invention are not exhaustive and any update or modifications to them are obvious to those skilled in the art, and therefore reference is made to the appending claims for determining the scope of the present invention.