# Patent

## Title
Image denoising techniques

## Abstract

Image denoising techniques include determining wavelet-domain noise model and a non-parametric multivariate wavelet description from the image signal for raw image data. A noise corrected image may then be determined from the image signal, the wavelet-domain noise model and the non-parametric, multivariate wavelet description and the image signal.

## Background
BACKGROUND
Computing devices have made significant contributions toward the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous devices, such as digital cameras, computers, game consoles, video equipment, hand-held computing devices, audio devices, telephones, and navigation systems have facilitated increased productivity and reduced costs in communicating and analyzing data in most areas of entertainment, education, business and science. The digital camera and camcorders, for example, have become popular for personal use and for use in business.
FIG. 1 shows an exemplary digital camera. The digital camera 100 typically includes one or more lenses 110, one or more filters 120, one or more image sensor arrays 130, an analog-to-digital converter (ADC) 140, a digital signal processor (DSP) 150 and one or more computing device readable media 160. The image sensor 130 includes a two-dimension array of hundreds, thousand, millions or more of imaging pixels, which each convert light (e.g. photons) into electrons. The image sensor 130 may be a charge coupled device (CCD), complementary metal oxide semiconductor (CMOS) device, or the like. The filter 120 may be a Bayer filter that generates a mosaic of monochrome pixels. The mosaic of monochrome pixels are typically arranged in a pattern of red, green and blue pixels.
In an exemplary implementation, the digital camera 100 may include a lens 110 to focus light to pass through the Bayer filter 120 and onto the image sensor 130. The photons passing through each monochrome pixel of the Bayer filter 120 are sensed by a corresponding pixel sensor in the image sensor 130. The analog-to-digital converter (ADC) 140 converts the intensity of photons sensed by the pixel sensor array into corresponding digital pixel data. The raw pixel data is processed by the DSP 150 using a demosaic algorithm to produce final interpolated pixel data. The final interpolated pixel data is typically stored in one or more of the computing device readable media 160. One or more of the computing device readable media 160 may also store the raw pixel data.
Image denoising is an important part of image enhancement of digital and analog image acquisition systems. Image denoising has been a widely studied problem in image processing. Among the techniques, wavelet domain denoising has received considerable interest. Wavelets are a theory and algorithms to achieve a linear space-frequency decomposition of a signal. Referring now to FIGS. 2A and 2B an exemplary image and corresponding wavelet transform is shown. Wavelets permit the representation of a signal as a sum of dyadically scaled and translated copies of a “mother” wavelet. For each resolution (e.g., scale), starting from the highest to the coarsest, the signal is iteratively decomposed into a low-pass sub-band and several high-pass residual sub-bands (one for each orientation) resulting in a multi-scale sub-band decomposition of the signal, as illustrated in FIG. 2B. High-pass coefficients encode the missing information to be able to reconstruct the high resolution signal in each orientation from the low-pass version. Conventional wavelet denoising techniques include wavelet hard and soft thresholding and multivariate or spatially adaptive extension.
Noise herein refers to random degradation present in images as opposed to deterministic or nearly deterministic distortions such as optical aberrations. The main sources of noise in digital based image acquisition systems (e.g., charge coupled devices (CCD), complementary metal oxide semiconductor (CMOS) and the like) include, but are not limited to photon noise, dark current noise, readout noise and fixed-pattern noise. Photon noise (e.g., shot noise) refers to the inherent natural variation in the process of counting the photon in the incident light flux. The number of photon arrivals during a given recording period is governed by Poisson statistics whose variance is equal to the average total number of photons. Dark noise (e.g., thermal noise) comes from the detection of thermally generated electrons within the sensor (e.g., CCD material). Dark current describes the rate of the generation of thermal electrons at a given sensor temperature. Readout noise refers to the uncertainty introduced during the process of quantifying the electronic signal on the chip. The major component of readout noise comes from the on-chip preamplifier. Some authors make the distinction between on-chip electronic noise and amplifier noise but readout noise is most often defined as the sum of all camera-characteristics signal-independent noises. Fixed pattern noise (FPN) is due to differences in individual sensor cell (e.g., pixel) sensitivity. This type of noise is more visible at higher intensities and is signal-dependent. It statistics are proportional to the original signal.
Image restoration is typically based on the modeling of both the expected image signal and the degradation such as the contaminating noise. Removal of noise from images relies on differences in the statistical properties of noise and expected signal as the artifacts arising from many imaging devices is quite different from the image that the noise contaminates. Using models describing signal and noise statistics, various estimation techniques are used to reduce the noise in the observed image signal. However, due to the high dimensionality (e.g., long range) in spatial correlations of natural images, modeling the statistics of these images is complex. In particular, there is a high, long-range dependency between pixels in the same neighborhood. For example, pixels belonging to the same texture are correlated and the range of this correlation can go well beyond the short range of a few pixels in regular images. To address the issue, a few assumptions are commonly made to simplify the signal models.
A first assumption is the stationarity also referred to as translation-invariance in image processing. In translation invariance the statistical distribution of pixels in a given neighborhood is the same for all locations within the image. A second assumption is that the autocorrelation between any pair of neighboring pixels is rapidly decaying with the distance between the pixels. A third common assumption is that the statistical distribution of pixels in a neighborhood (signal, noise or both) follows univariate or multivariate Gaussian statistics. These assumptions are not all suitable for natural images that commonly contain a variety of large correlated structures.
For an image contaminated by additive white Gaussian noise (AWGN) the image can be expressed by:

y=x+n  (1)

Where y is the noisy observation, x the noise-free signal to be estimated and n the AWGN. If the noise is AWGN in the spatial (e.g., regular) domain, the noise is AWGN in the wavelet domain too because the wavelet transform is linear and orthogonal. For multivariate probability distributions: P(A|B) is the conditional probability of event A given B; P(A, B) is the joint probability of having both events A and B together; and P(A) is the marginal probability of event A regardless of B.

In the context of the minimum mean square error (MMSE) estimation, the mean of the posterior distribution provides an unbiased estimate of the variable x, given measurement y. MMSE takes a weighted average:

x′(y)=Px|y(x|y)×dx  (2)

Applying Bayes' formula, Px|y(x|y)Py(y)=Px,y(x,y)=Px|y(x|y)Px(x) the probability densities of the noise and signal:

x′(y)=∫xPy|x(y|x)Px(x)×dx/Py(y)  (3)

and

Py(y)=∫xPy|x(y|x)Px(x)dx  (4)

Py|x is actually the probability density of the noise, which can be rewritten as Pn(n)=Pn(y−x) and Px is the prior probability density of the signal, which gives:

x′(y)=∫xPn(y−x)Px(x)×dx/∫xPn(y−x)Px(x)dx  (5)

The denominator is the probability density function (PDF) of the noisy observation—convolution of the noise and the signal's PDFs.

In one technique, a univariate generalized Gaussian distribution (GGD) model, which closely fits the distribution of wavelet coefficients in natural images, has been extended with a multivariate (GGD). The technique estimates the MGGD core parameters using a set of “training images.” The signal covariance matrix is estimated from the noisy observation under the additive white Gaussian noise (AWGN) assumption. The model is used to resolve a Bayesian maximum posteriori (MAP) estimation equation. The technique takes approximately 15-45 second for each channel of a 512×512 image with A Daubechies 8 wavelet filter on a Pentium IV type personal computer.
In another technique, a multivariate model for discrete wavelet transform (DWT) coefficient neighborhood using scale mixtures of Gaussian distribution is developed. With this model and under the additive Gaussian noise of know covariance assumption, a Bayesian least squares estimated is constructed. This Gaussian scale mixture (GSM) model can represent the leptokurtotic behavior of the wavelet coefficient distributions, as well as the dependence of their local amplitudes. The mixture of Gaussian leads to mathematically more tractable solutions than the MGGD. The technique takes about 20-60 second for each channel of a 256×256 image on a Pentium III type personal computer.
The conventional techniques are computationally intensive. The conventional techniques may also cause blurring, smoothing or the like of the image particular around edges, lines and texture areas or the like. Accordingly, what is needed is a computationally less expensive noise correction technique. What is also needed is a denoising technique providing an improved noise correction quality.
SUMMARY
Embodiments of the present technology are directed toward image denoising techniques. In one embodiment, an image denoising method includes determining a wavelet domain noise model and a non-parametric multivariate wavelet-domain description of a signal probability density for image data. A noise corrected image is determined from the image data, image signal, wavelet-domain noise model and the non-parametric multivariate wavelet-domain description of the signal probability density function, and a Bayesian multivariate minimum mean square error (MMSE) estimation formula.
In another embodiment, an image denoising system includes a noise analyzer and a noise correction engine. The noise analyzer receives image data and generates a wavelet domain noise model and a non-parametric, multivariate wavelet-description of the image. The noise correction engine receives the image data, the wavelet domain noise model and the non-parametric, multivariate wavelet-description of the image and generates a noise corrected image.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.



BRIEF DESCRIPTION OF THE DRAWINGS
Embodiments of the present technology are illustrated by way of example and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
FIG. 1 shows a block diagram of an exemplary digital camera.
FIGS. 2A and 2B show an exemplary image and corresponding wavelet transform.
FIG. 3 shows a block diagram of a multivariate, non-parametric, wavelet-domain image denoising system, in accordance with one embodiment of the present technology.
FIG. 4 shows a block diagram of an exemplary computing device for implementing the multivariate, non-parametric wavelet-domain image denoising system, in accordance with one embodiment of the present technology.
FIG. 5 shows a flow diagram of a method of denoising an image, in accordance with one embodiment of the present technology.
FIG. 6 shows a block diagram illustrating sub-bands of a multi-level wavelet transform, in accordance with one embodiment of the present technology.
FIG. 7 shows a block diagram illustrating a nearest-neighbor region of a wavelet transform, in accordance with one embodiment of the present technology.



DETAILED DESCRIPTION
Reference will now be made in detail to the embodiments of the present technology, examples of which are illustrated in the accompanying drawings. While the present technology will be described in conjunction with these embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents, which may be included within the scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of the present technology, numerous specific details are set forth in order to provide a thorough understanding of the present technology. However, it is understood that the present technology may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the present technology.
Referring to FIG. 3, a multivariate, non-parametric, wavelet-domain image denoising system, in accordance with one embodiment of the present technology, is shown. The system includes a noise analyzer 310 and a noise correction engine 320. The noise analyzer 310 determines a description of the noise 330 and a description of a signal 340 from image data. In one implementation, the image is analyzed to produce noise and signal descriptions (e.g., NoiseWaveletModel and SignalStatistics objects) 330, 340. The noise correction engine 320 uses the description of the noise 330 and the description of the signal 340 to generate a noise corrected image 360 from the image data 350.
The noise correction engine 320 may include a denoiser render effect 370 and cache grid effect 380. The cache grid effect 380 is similar to regular cache effect that holds tiles in memory so that they do not have to be recomputed all the time for every request. But in the cache grid effect 380, cached tiles are aligned on a specified grid (e.g., 512×512 grid). The cache grid effect 380 takes care of converting random tile requests to nicely-aligned tiles. That means that there are no overlapping tiles in cache and the cache grid effect 380 code is limited to stitching grid aligned tiles to fulfill specific requested area of the image system (e.g., no complicated missing region calculation). In the denoising framework, the cache grid effect 380 also ensures that the denoiser render effect 370 will be called in a consistent manner with the same tile locations and size.
The denoiser render effect 370 actually performs wavelet-domain filtering. For each requested tile (typically 512×512), the denoiser render effect 370 inflates the area and asks its input for a larger support. This is to be able to perform the denoising for several translation shifts as well as to avoid tile junction artifacts. The procedure includes converting the image to YIQ if the analyses have been performed in the YIQ domain. The benefit of using YIQ is that it is a simple matrix transformation of the RGB channels and that the denoiser is able to accentuate the denoising on the IQ chromaticities taking advantage of the fact that the human eye is much less sensitive to slight loss of details in these channels that it is for the luminance. Nevertheless it is possible to apply denoising directly to the RGB channel. The procedure also includes getting the noise and signal models from the noise analyzer 310. At this point, it is also known if the image is monochrome or not. For each cycle-spinning shift (one in low quality, two in normal quality and four in high quality) and for each channel (one if the image is monochrome): 1) the buffer is scrolled (e.g., cycle-spin); 2) the forward discrete wavelet transform is applied to decompose the image into wavelet sub-bands; 3) each sub-band of the wavelet transform (e.g., four levels) is denoised; the discrete wavelet transform is inverted to go back to the spatial domain; and 4) the result is inverse scrolled and accumulated in the final output buffer. During denoising, a MMSE estimation formula is applied using the signal and noise models provided by the noise analyzer 310 for each pixel of each sub-band. Thereafter, the denoised tile is converted back to RGB and handed off to the next effect in the image processing pipeline. The cache grid effect 380 caches the image buffer generated by the denoiser render effect 370 for consumption in the next effect in the image processing pipeline.
In another implementation, the noise reduction is applied on the raw image in the Bayer sensor domain before demosaicing.
In one implementation, the discrete wavelet transform is based on the Cohen-Daubechies-Feauveau (2,2) wavelet base. The DWT software code uses a “lifting scheme” algorithm and permits modifying the wavelet basis if needed. Alternatively the denoiser render effect 370 performs scrolling, DWT, denoising, inverse DWT, unscrolling and accumulation and is performed on a graphics processing unit (GPU). The GPU based DWT does not use the lifting algorithm. Instead, regular convolution-based DWT is performed on the GPU.
The Bayesian multivariate, non-parametric wavelet-domain image denoising system may be implemented in hardware or software on a general purpose processor (CPU), a graphics processor (GPU), digital signal processor (DSP) or the like. For example, a computing device for implementing the multivariate, non-parametric wavelet-domain image denoising system is shown in FIG. 4. The computing device includes one or more processors (e.g., CPU, GPU) 410, 415, one or more computing device-readable media 420-430 and one or more input/output (I/O) devices 435-450. The processors 410, 415, computing device-readable media 420-430 and I/O device 435-450 are typically communicatively coupled to each other by a chip set 455 and/or one or more busses. The chipset 455 acts as a simple input/output hub for communicating data and instructions between the processors 410, 415, the computing device-readable media 420-430, and the I/O devices 435-450.
The I/O devices 435-450 may include a network adapter (e.g., Ethernet card) 435 for communicating with one or more server computers over one or more networks. The I/O devices 435-450 also may include a CD drive, DVD drive and/or the like, and peripherals such as a keyboard 440, a pointing device 445, a speaker, a printer, a monitor and/or the like.
The computing device-readable media 420-430 may be characterized as primary memory and secondary memory. Generally, the secondary memory, such as a magnetic and/or optical storage, provides for non-volatile storage of computer-readable instructions and data for use by the computing device 400. For instance, the disk drive 425 may store the operating system (OS) 460, and applications and data 465. The primary memory, such as the system memory 420 and/or graphics memory 430, provides for volatile storage of computer-readable instructions and data for use by the computing device 400. For instance, the system memory 420 may temporarily store a portion of the operating system 360′, and a portion of one or more applications and associated data 465′ that are currently used by the CPU 410, GPU 415 and the like. An application and data 465, 465′ implement the techniques to denoise image data described herein.
Operation of the multivariate, non-parametric, wavelet-domain image denoising system will be further explained with reference to FIG. 5. The multivariate, non-parametric, wavelet-domain image denoising process begins with transforming (e.g., decomposing) an image into the wavelet domain, at 510. A discrete wavelet transform (DWT) may be used to transform image data into the wavelet domain (e.g., multi-resolution wavelet decomposition). The coefficients are grouped in sub-bands of different scales and orientations are illustrated in FIG. 6. For instance LHk refers to the coefficients at the kth scale of the decomposition which are the output of the wavelet low-pass filter in the horizontal direction and of the high pass filter in the vertical direction of the input sub-band LLk−1. In the kth step of the decomposition, LLk, HLk, LHk, and HHk, are substituted to LLk−1. That is why only the last low-resolution residual LLn−1 appears in the decomposition. Scale k=0 indicates the first level of the decomposition (e.g., highest resolution) whereas k=n−1 is the largest (e.g., coarsest) scale where n is the total number of decompositions levels. The sub-band LL is the low resolution residual and all the other sub-bands encode the details for each scale and orientation.
If the noise is AWGN in the spatial (e.g., regular) domain, the noise is AWGN in the wavelet domain too because the wavelet transform is linear and orthogonal. Due to the linearity of the wavelet transform, the additive noise assumption in the spatial domain is maintained although some noise properties may have been modified during the low-pass filtering performed at each level of the multi-resolution decomposition. If the noise is assumed to be white (e.g., independent) noise, the wavelet-domain noise can be assumed to be white also, because an orthonormal or biorthogonal DWT was used. Typically, if the noise in the spatial domain is assumed to be additive Gaussian white noise (AGWN), noise in the wavelet domain will be additive Gaussian white noise (AGWN) but with a specific variance for each sub-band. For each sub-band:

y=x+n  (1)

where y is the noisy input, x the noise-free signal to be estimated and n the additive noise, which are now defined in the wavelet domain.

At 520, the minimum mean square error (MMSE) estimation is approximated using filter of the signal probabilities estimation. In one implementation, the filtering may be Gaussian. The multivariate minimum mean square error is estimated. Generally, the mean square error may be estimated:

x′(y)=∫xPn(y−x)Px(x)×dx/∫xPn(y−x)Px(x)dx  (5)

The mean square error equation may be reinterpreted in the multivariate context. In general, the neighborhood may include coefficients from nearby spatial locations, nearby orientations, or nearby scales in the same or nearby sub-bands. To take advantage of the statistical dependency between neighboring pixels as well as the higher level representation of the image at the next coarser sub-band, a four-nearest-neighbor region surrounding the reference coefficient in the same sub-band may be chosen, together with the coefficient at the same location and orientation at the next coarser scale (e.g., parent) as illustrated in FIG. 7. The four-nearest neighbor turns out to be a good trade-off between model simplicity and denoising performance. Tests have shown that the inclusion of the parent coefficient and the four-nearest-neighbors improve the denoising performance significantly when applied separately or together. The technique uses the four nearest spatial neighbors for the coarsest scale sub-bands that have no parent. Similarly, the spatial neighborhood regions near edges and corners are cut.

For the multivariate minimum mean square error, let X be the vector representing the neighborhood of coefficients clustered around the coefficient under consideration x. Let D note the size of the neighborhood. Accordingly, D=6 if the reference pixel x0 its four nearest neighbors (x1, x2, x3 and x4) and its parent xp are taken. Let X be a D-dimensional wavelet coefficient vector, X={x0, x1, x2, x3, x4, xp}. Similarly, the corresponding vector for the noisy observation Y is denoted as Y={y0, y1, y2, y3, y4, yp}. It is to be appreciated that the signal coefficient vector X and the noise coefficient vector Y can be extended to smaller or larger neighborhoods, such as using the wavelet decomposition of other channels (e.g., G and B if denoising R). In the present multivariate case, the minimum mean square error estimation equation becomes:

X′(Y)=∫XΩPn(Y−X)PX(X)×dX/∫XΩPn(Y−X)PX(X)dX  (6)

where Ω is the D-dimensional real space and dX=dx0, dx1, dx2, dx3, dx4, dxp. With the six-dimensional neighborhood model, the multivariate minimum MMSE estimation of equation (6) is computationally expensive. To reduce the computational expense, an approximate MMSE estimation procedure is used to restore the noisy wavelet image coefficients. The signal PDF may be approximated using each of its 2-D marginal projections:





  
    
      
        
          
            
              P
              X
            
            
              
            
          
          ⁢
          
            
          
          ⁢
          or
          ⁢
          
            
          
          ⁢
          
            Y
            ⁡
            
              (
              X
              )
            
          
        
        =
        
          
            
              P
              
                (
                
                  
                    x
                    0
                  
                  ,
                  
                    x
                    1
                  
                  ,
                  
                    x
                    2
                  
                  ,
                  
                    x
                    3
                  
                  ,
                  
                    x
                    4
                  
                  ,
                  
                    x
                    p
                  
                
                )
              
            
            ~
            
              P
              ⁡
              
                (
                
                  
                    x
                    0
                  
                  ,
                  
                    x
                    1
                  
                
                )
              
            
          
          ⁢
          
            P
            ⁡
            
              (
              
                
                  x
                  0
                
                ,
                
                  x
                  2
                
              
              )
            
          
          ⁢
          
            P
            ⁡
            
              (
              
                
                  x
                  0
                
                ,
                
                  x
                  3
                
              
              )
            
          
          ⁢
          
            P
            ⁡
            
              (
              
                
                  x
                  0
                
                ,
                
                  x
                  4
                
              
              )
            
          
          ⁢
          
            
              P
              ⁡
              
                (
                
                  
                    x
                    0
                  
                  ,
                  
                    x
                    p
                  
                
                )
              
            
            /
            
              
                (
                
                  P
                  ⁡
                  
                    (
                    
                      x
                      0
                    
                    )
                  
                
                )
              
              4
            
          
        
      
    
    
      
        (
        4
        )
      
    
  




Reduced to 2-D, the signal PDFs will concentrate more statistics per bucket and will be smoother.

However, in view of automatic classification methods, a simple small Gaussian filer makes the distribution even smoother. Assuming that the noise is white (e.g., independent):

Pn(Y−X)=Pn(y0−x0,yi−xi, . . . ,yp−xp) ̃Pn(y0−x0)Pn(yi−xi) . . . Pn(yp−xp)  (8)

then the numerator in equation (6) can be rewritten as follows:

Num=∫x0∫x1 . . . ∫xpPn(y0−x0)Pn(yi−xi) . . . Pn(yp−xp)Px(x0,x1) . . . Px(x0,xp)/(Px(x0))4×dX  (9)

Considering the first scalar element of X:





  
    
      
        =
        
          
            ∫
            
              
                x
                0
              
              ⁢
              
                ∫
                
                  
                    x
                    1
                  
                  ⁢
                  
                    
                  
                  ⁢
                  ...
                  ⁢
                  
                    
                  
                  ⁢
                  
                    ∫
                    
                      
                        x
                        p
                      
                      ⁢
                      
                        Pn
                        ⁡
                        
                          (
                          
                            
                              y
                              0
                            
                            -
                            
                              x
                              0
                            
                          
                          )
                        
                      
                      ⁢
                      
                        
                      
                      ⁢
                      ...
                      ⁢
                      
                        
                      
                      ⁢
                      
                        Pn
                        ⁡
                        
                          (
                          
                            
                              y
                              p
                            
                            -
                            
                              x
                              p
                            
                          
                          )
                        
                      
                      ⁢
                      
                        Px
                        ⁡
                        
                          (
                          
                            
                              x
                              0
                            
                            ,
                            
                              x
                              1
                            
                          
                          )
                        
                      
                      ⁢
                      
                        
                      
                      ⁢
                      ...
                      ⁢
                      
                        
                      
                      ⁢
                      
                        
                          Px
                          ⁡
                          
                            (
                            
                              
                                x
                                0
                              
                              ,
                              
                                x
                                p
                              
                            
                            )
                          
                        
                        /
                        
                          
                            (
                            
                              Px
                              ⁡
                              
                                (
                                
                                  x
                                  0
                                
                                )
                              
                            
                            )
                          
                          4
                        
                      
                      ⁢
                      
                        d
                        
                          x
                          0
                        
                      
                      ⁢
                      
                        d
                        
                          x
                          1
                        
                      
                      ⁢
                      
                        
                      
                      ⁢
                      ...
                      ⁢
                      
                        
                      
                      ⁢
                      
                        d
                        
                          x
                          p
                        
                      
                    
                  
                
              
            
          
          ⁢
          
            

          
          =
          
            ∫
            
              
                x
                0
              
              ⁢
              
                
                  Pn
                  ⁡
                  
                    (
                    
                      
                        y
                        0
                      
                      -
                      
                        x
                        0
                      
                    
                    )
                  
                
                /
                
                  
                    (
                    
                      Px
                      ⁡
                      
                        (
                        
                          x
                          0
                        
                        )
                      
                    
                    )
                  
                  4
                
              
              ⁢
              
                x
                0
              
              ⁢
              
                ∫
                
                  
                    x
                    1
                  
                  ⁢
                  
                    Pn
                    ⁡
                    
                      (
                      
                        
                          y
                          i
                        
                        -
                        
                          x
                          i
                        
                      
                      )
                    
                  
                  ⁢
                  
                    Px
                    ⁡
                    
                      (
                      
                        
                          x
                          0
                        
                        ,
                        
                          x
                          1
                        
                      
                      )
                    
                  
                  ⁢
                  
                    
                  
                  ⁢
                  ...
                  ⁢
                  
                    
                  
                  ⁢
                  
                    ∫
                    
                      
                        x
                        p
                      
                      ⁢
                      
                        Pn
                        ⁡
                        
                          (
                          
                            
                              y
                              p
                            
                            -
                            
                              x
                              p
                            
                          
                          )
                        
                      
                      ⁢
                      
                        Px
                        ⁡
                        
                          (
                          
                            
                              x
                              0
                            
                            ,
                            
                              x
                              p
                            
                          
                          )
                        
                      
                      ⁢
                      
                        d
                        
                          x
                          p
                        
                      
                      ⁢
                      
                        
                      
                      ⁢
                      ...
                      ⁢
                      
                        
                      
                      ⁢
                      
                        d
                        
                          x
                          1
                        
                      
                      ⁢
                      
                        d
                        
                          x
                          0
                        
                      
                    
                  
                
              
            
          
        
      
    
    
      
        (
        10
        )
      
    
  




Since the observation PDF (Py) is convoluted with the noise, the approximation between Px and Py can be made:

Py(x0,yp) ̃∫xpPn(yp−xp)Px(x0−xp)dxp  (11)

The Py distribution does not need further smoothing in the x0 direction as the noise did it already. Doing the same substitution for other neighbors reduces equation (10) to:

Num=∫x0x0Pn(y0−x0)Py(x0,y1)Py(x0,y2)Py(x0,y3)Py(x0,y4)Py(x0,yp)/(Px(x0))4dx0  (12)

Likewise for the denominator

Den=∫x0Pn(y0−x0)Py(x0,y1)Py(x0,y2)Py(x0,y3)Py(x0,y4)Py(x0,yp)/(Px(x0))4dx0  (13)

In one implementation, if Px(x0) is approximated from Py(x0), calculation of the coefficient estimate is a 1-D convolution. Alternatively, Px(x0) could be estimated from Py(x0) assuming a GGD for Px and an independent identically distributed (i.i.d.) Gaussian noise of known variance for Pn.

X0′(Y)=Num/Den  (14)

Recalling the approximation made in equation (7), one can write:

Num=∫x0x0Pn(y0−x0)Py(x0,y1,y2,y3,y4,yp}dx0 

Den=∫x0Pn(y0−x0)Py({x0,y1,y2,y3,y4,yp}dx0  (15)

Which is equivalent to averaging all similar neighbors that are actually identical for y1, y2, y3, y4, yp neighbors and similar for x0. This is intuitively sensible since estimation of the reference pixel x0 is desired. However, with such a drastic similarity constraint, one would not find enough neighbors to get a meaningful average. In other words, the 6-dimensional observed (non-parametric) Py would be null almost everywhere, but with the approximation of equation (7), “2-D” Py projections concentrate more points (e.g., the point distributions are much denser) and are much less frequently null. As already mentioned earlier, a small Gaussian filter is applied in the non-x0 directions to make the distribution even more complete and smooth.

To be able to resolve the estimator equation (7) above, the signal statistics Py(y0,y1), Py(y0,y2), Py(y0,y3), Py(y0,y4), Py(y0,yp), and Py(y0) are measured for each wavelet sub-band. The noise statistics Pn(y0−x0) also needs to be estimated for each sub-band. For the later, a Gaussian distribution is assumed and the variance for each sub-band will be estimated.
The 2-D histograms Py for the wavelet sub-bands are recorded, for which there are multiple symmetries. The intuition is that the statistics of the image signal should not change if the signal is translated, exchanged with its mirror image, inverted, or rotated ±90 degrees. All these assumptions can be verified experimentally.
Translation gives:

Py(x0,x1) ̃Py(x3,x0)  (16)

Py(x0,x2) ̃Py(x4,x0)  (17)

Symmetry gives:

Py(x0,x1) ̃Py(x1,x0)  (18)

Py(x0,x2) ̃Py(x2,x0)  (19)

etc.
Inversion gives:

Py(x0,x1) ̃Py(−x0,−x1) ̃Py(−x1,−x0)  (20)

etc.
In addition, the high-frequency distribution Py(x0, x1) in the HLk sub-band can be expected to be similar to the high-frequency distribution Py(x0, x2) in the LHk sub-band rotated ±90 degrees. Likewise, the low-frequency distribution Py(x0, x2) in the HLk sub-band is similar to the low-frequency distribution Py(x0, x1) in the LHk sub-band. Finally, in the HHk sub-band, the high frequency distributions Py(x0, x1) and Py(x0, x2) are similar.
As a result of the symmetries, only five original 2-D distributions per wavelet decomposition level k remain: 1) high-frequency 2-D Py in HLk or LHk sub-bands; low-frequency 2-D Py in HLk or LHk sub-bands; high frequency 2-D Py in HHk sub-band; child-parent distribution Py(x0, xp) in HLk or LHk sub-bands; and child parent distribution Py(x0, xp) in HHk sub-band. The model also includes the 1-D distributions Py(x0). Therefore, two 1-D distributions per wavelet decomposition level k are recorded: 1-D Py(x0) in HLk or LHk sub-bands (similar as per the symmetry assumptions); and 1-D Py(x0) in HHk sub-band. These five 2-D histograms and two 1-D histograms are accumulated for each of the five levels of the wavelet decomposition that are used for noise reduction. For the coarsest level of the decomposition, however, the child-parent distribution is not recorded.
For large images, the accumulation may be performed on a tile-by-tile basis. In one implementation, the analysis tile size may be 512×512 pixels. In addition, if multiple images have similar image parameters, the histograms may be integrated over multiple images. Furthermore, one or more parameters may specify whether to get the parameters for the spatial neighbors or the parent neighbor to benchmark performance of the model with smaller neighborhoods. In one implementation, a class SignalStatistics encapsulates such data and may be an array of per-sub-band signal statistics (SubbandSignalStatitics). Each SubbandSignal Statistics object may contain the five 2-D histograms and the two 1-D histograms for modeling the signal. The noise amplitudes at the various scales of the multi-resolution sub-band decomposition are determined. If there is one or more uniform/smooth areas, or at least a slow-varying area where low-pass information can be easily filtered out, that are sufficiently large for the wavelet decomposition and do not exhibit saturated areas in the spatial domain, the variance σn is calculated for the sub-band of 3 to 4 first decomposition levels with the robust median estimator:

σn ̃Median(|y(i,j)|)/0.6745  (21)

where wavelet coefficients y(i, j)ε sub-band HH0 and σn is the standard deviation of the noise distribution. In one implementation, the areas are 128×128 pixels in size. Such an area is declared uniform/smooth if the spatial-domain variance of this area, filtered out of its lowest-pass frequencies in the wavelet domain, is close to the lowest variance found in the spatial domain for smaller size areas (e.g., 32×32 pixels).

The above estimation is performed for several average spatial-domain signal intensities. Then the results are aggregated for increased robustness. If no large uniform/smooth areas can be found, a robust median estimator in the highest-frequency sub-bands of the wavelet transform is used. Since the area is not uniform, the other (coarser) bands may contain valid signal and cannot be used to estimate the noise variance. The other band noise variances are estimated using the noise variance in the highest-frequency sub-band and an independent identically distributed (i.i.d.) additive Gaussian noise model. Under this assumption and knowing the white Gaussian noise variance, it is possible to numerically calculate the noise variance for each coarser sub-band using the wavelet convolution coefficients and the median estimator. For Gaussian distributions:

Variance(a1*Distribution1+a2*Distribution2+ . . . )=a1^2*Variance(distribution1)+a2^2*Variance(distribution2)+ . . .

Therefore, if an input signal of Gaussian known variance V is decomposed in wavelet sub-bands, each of them has a specific predictable variance. The lowest variance is also estimated on areas that do not contain saturated pixels. Saturated pixels have pixel values greater or equal to the maximum allowed by the sensor. For example, in 8-bit unsigned images saturated pixels have a value of 255. If there are too many saturated pixels, the signal can appear more uniform than it actually is because the saturated area (e.g., at value 255) exhibit no variance and therefore no visible noise.
Like the signal analysis, the noise data may be integrated on a tile-by-tile basis. This could also be extended to multiple images. The noise variance estimations for each wavelet sub-band, using the Gaussian model provides the distribution Pn used in the estimation equation (14).
At 530, the image is transformed back into the image domain.
The speed of the denoising technique may be increased. In particular, the transfer function:

x0′(Y)=MmseEstimationFunction(y0,y1,y2,y3,y4,yp)  (22)

can be modeled as follows:





  
    
      
        
          MmseEstimationFunction
          ⁡
          
            (
            
              
                y
                0
              
              ,
              
                y
                1
              
              ,
              
                y
                2
              
              ,
              
                y
                3
              
              ,
              
                y
                4
              
              ,
              
                y
                p
              
            
            )
          
        
        =
        
          
            Estimator
            ⁢
            
              
            
            ⁢
            1
            ⁢
            d
            ⁢
            
              
            
            ⁢
            0
            ⁢
            
              (
              
                y
                0
              
              )
            
          
          +
          
            Estimator
            ⁢
            
              
            
            ⁢
            1
            ⁢
            d
            ⁢
            
              
            
            ⁢
            1
            ⁢
            
              (
              
                y
                1
              
              )
            
          
          +
          
            Estimator
            ⁢
            
              
            
            ⁢
            1
            ⁢
            d
            ⁢
            
              
            
            ⁢
            2
            ⁢
            
              (
              
                y
                2
              
              )
            
          
          +
          
            Estimator
            ⁢
            
              
            
            ⁢
            1
            ⁢
            d
            ⁢
            
              
            
            ⁢
            3
            ⁢
            
              (
              
                y
                3
              
              )
            
          
          +
          
            Estimator
            ⁢
            
              
            
            ⁢
            1
            ⁢
            d
            ⁢
            
              
            
            ⁢
            4
            ⁢
            
              (
              
                y
                4
              
              )
            
          
          +
          
            Estumator
            ⁢
            
              
            
            ⁢
            1
            ⁢
            
              dP
              ⁡
              
                (
                
                  y
                  p
                
                )
              
            
          
          +
          
            
              EstimatorDelta
              ⁡
              
                (
                
                  y
                  0
                
                )
              
            
            *
            EstimatorBellCurve
            ⁢
            
              
            
            ⁢
            1
            ⁢
            d
            ⁢
            
              
            
            ⁢
            1
            ⁢
            
              (
              
                y
                1
              
              )
            
            *
            EstimatorBellCurve
            ⁢
            
              
            
            ⁢
            1
            ⁢
            d
            ⁢
            
              
            
            ⁢
            2
            ⁢
            
              (
              
                y
                2
              
              )
            
            *
            EstimatorBellCurve
            ⁢
            
              
            
            ⁢
            1
            ⁢
            d
            ⁢
            
              
            
            ⁢
            3
            ⁢
            
              (
              
                y
                3
              
              )
            
            *
            EstimatorBellCurve
            ⁢
            
              
            
            ⁢
            1
            ⁢
            d
            ⁢
            
              
            
            ⁢
            4
            ⁢
            
              (
              
                y
                4
              
              )
            
            *
            EstimatorBellCurve
            ⁢
            
              
            
            ⁢
            1
            ⁢
            
              dP
              ⁡
              
                (
                
                  y
                  p
                
                )
              
            
          
        
      
    
    
      
        (
        23
        )
      
    
  




This is based on a simple observation of the general shape to the multivariate function. The multivariate estimator can first be approximated with the 1-D estimator Estimator1d0(y0). A second degree of approximation is achieved by adding the independent contribution of the other neighbors. Finally, there is a typical bell shape near zero that can be modeled with a separable product of 1-D functions.

The procedure includes finding the 1-D estimator function for the neighbor when the reference coefficient is free and all other neighbors are fixed to zero. The function is polished to make sure it is odd. The linear component of the distribution, which is the general slope of the function not containing the S-shaped curve near the origin, is found. The linear component of the distribution is found using simple linear regression, but points that are part of the S-shaped curve near the origin are excluded.
For each neighbor C, the 1-D estimator function is found for neighbor C when the reference coefficient is zero, the neighbor coefficient C is free and all other neighbors are fixed to zero. The 1-D estimator function is polished to make sure it is odd and monotonous. The linear component of the distribution that is the general slope of the function using simple linear regression is found. It is appreciated, that in practice thanks to the symmetries mentioned earlier, the transfer curves are identical for neighbors 1 and 3 (e.g., east and west), as well as for neighbors 2 and 4 (e.g., south and north). The linear component of the estimator may be called Estimator1d#, where # is 1, 2 or P (e.g., parent) depending on if C refers to the horizontal, vertical or inter-band neighbors.
The delta between the 1-D estimator Estimator1d0 previously found and the linear approximation are calculated. The result may be called EstimatorDelta. The value of the reference coefficient xm is found where the above delta is maximal.
For each neighbor C the 1-D estimation function is found for neighbor C when the reference coefficient is xm, the neighbor coefficient C is free and all other neighbors are fixed to zero. The linear component of the distribution of this function is subtracted. The above function is polished to make sure it is even. The result is a bell-shaped curve that tends to be horizontal near its extremities. The 1-D estimator function for this neighbor C is found when the reference coefficient is −xm, the neighbor coefficient C is free and all other neighbors are fixed to zero. The linear component of the distribution is subtracted for the function. The function is polished to make sure it is even. The result is a bell-shaped curve that tends to be horizontal near its extremities. The above two function which are similar are averaged. The linear prediction for reference coefficient=xm is subtracted. The result is a bell-shaped curve that tends to be zero and horizontal near its extremities. This “bell-curve” is normalized with respect to the maximal delta between the 1-D estimator Estimator1d( ) and its linear approximation. This maximum delta is the value of the “bell-curve” at the origin. The result is called EstimatorBellCurve1d#, where # is 1, 2, or P (e.g., parent) depending on if C refers to the horizontal, vertical or inter-band neighbors.
The above process has calculated Estimator1d0, Estimator1d1=Estimator1d3, Estimator1d0, Estimator1d2=Estimator1d4, Estimator1dP, EstimatorDelta, EstimatorBellCurve1d1=EstimatorBellCurve1d3, EstimatorBellCurve1d2=EstimatorBellCurve1d4, and EstimatorBellCurve1dP to complete the model.
The advantage of this model is that these twelve 1-D function can be quickly recomputed from the “brute-force” MmseEstimationFunction so that no convolution is needed at render time. In practice, this approximation is invisible when applied to the highest-frequency and also the largest (e.g., most computationally demanding) wavelet sub-bands. In high-quality mode, this approximation may only be used for level 0. In normal mode, the approximation is used up to level 1. In fast mode or in the GPU implementation, this approximation is used up to level 3. The denoising technique using this approximation takes about 0.5-5 seconds for all three channels of a 1024×1024 image on an Athlon 64 type personal computer.
The foregoing descriptions of specific embodiments of the present technology have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the present technology and its practical application, to thereby enable others skilled in the art to best utilize the present technology and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the Claims appended hereto and their equivalents.

## Claims

1. An image denoising method comprising:
decomposing an image signal into a wavelet domain using a discrete wavelet transform (DWT), wherein coefficients are grouped in sub-bands of different scales and orientations, including determining wavelet domain noise model and a non-parametric multivariate wavelet-description of an image; and
determining a noise corrected image in the wavelet domain from the image signal, the wavelet-domain noise model and the non-parametric multivariate wavelet description including Gaussian filtering of probability density function applying a Bayesian multivariate minimum mean square error (MMSE) approximation using two-dimensional marginal projections of each given coefficient, the four nearest neighbors in a same sub-band of the given coefficient and a parent at the same pixel location and orientation in the next coarsest scale.

2. The method according to claim 1, wherein the discrete wavelet transform (DWT) is a Cohen-Daubeschies-Feauveau based discrete wavelet transform.

3. The method according to claim 1, wherein the discrete wavelet transform (DWT) is a convolution-based discrete wavelet transform.

4. The method according to claim 1, further comprising applying the Bayesian multivariate minimum mean square (MMSE) approximation using two-dimensional marginal projections of each given coefficient and the four nearest neighbors for a coarsest scale sub-bands that have no parent.

5. The method according to claim 1, transforming the noise corrected image in the wavelet domain back into a spatial domain using a transfer function including:
approximating with a one-dimensional estimator of the given wavelet coefficient;
adding the one-dimensional approximation of an independent contribution of neighbor coefficients; and
adding the approximation of a separable product of one-dimensional functions.

6. The method according to claim 5, wherein the transfer function includes twelve 1-dimensional functions.

7. One or more non-transitory computing device readable media including instructions which when executed cause a computing device to implement an image denoising method comprising:
determining a wavelet domain noise model and a non-parametric multivariate wavelet-domain description of a signal probability density function for an image signal; and
determining a noise corrected image in the wavelet domain from the image signal, wavelet-domain noise model and the non-parametric multivariate wavelet-domain description of the signal probability density function applying a Bayesian multivariate minimum mean square error (MMSE) estimation using two-dimensional marginal projections of each given coefficient, the four nearest neighbors in a same sub-band of the given coefficient and a parent at the same pixel location and orientation in the next coarsest scale.

8. The image denoising method of claim 7, further comprising Gaussian filtering the MMSE estimation.

9. The image denoising method of claim 7, wherein apply the Bayesian multivariate minimum mean square error (MMSE) estimation includes:
calculating the variance of a given area if a spatial-domain variance, of the given area, filtered out of its lowest-pass frequencies, is approximately equal to the lowest variance found in a spatial domain of a corresponding smaller size area; and
calculating an independent identically distributed Gaussian noise model with a spatial domain variance equal to a lowest variance of the corresponding smaller size area.

10. The image denoising method of claim 7, further comprising transforming the noise corrected image in the wavelet domain back into a spatial domain using a transfer function including:
approximating with a one-dimensional estimator of a given wavelet coefficient;
adding the one-dimensional approximation of an independent contribution of neighbor coefficients; and
adding the approximation of a separable product of one-dimensional functions.

11. One or more non-transitory computing device readable media including instructions which when executed cause a computing device to implement an image denoising system comprising:
a noise analyzer for receiving an image and generating a wavelet domain noise model and a non-parametric, multivariate wavelet-description of the image using a discrete wavelet transform (DWT);
a noise correction engine for receiving the image, the wavelet-domain noise model and the non-parametric, multivariate wavelet description and generating a noise corrected image in the wavelet domain by applying a multivariate minimum mean square error (MMSE) approximation using two-dimensional marginal projections of each given coefficient, the four nearest neighbors in a same sub-band of the given coefficient and a parent at the same pixel location and orientation in the next coarsest scale; and
transforming the noise corrected image in the wavelet domain back into the image domain using a transfer function including approximating with a one-dimensional estimator of the given wavelet coefficient, adding the one-dimensional approximation of an independent contribution of neighbor coefficients, and adding the approximation of a separable product of one-dimensional functions.

12. The image denoising system of claim 11, wherein the noise correction engine comprises:
a cache grid effect aligning tiles of the image to a specified grid; and
a denoiser render effect for wavelet-domain filter tile aligned to the specified grid.