The third example deals with finding ICA filters for natural images and, based on the ICA decomposition, removing noise from images corrupted with additive Gaussian noise.
A set of digitized natural images were used. Denote the vector of pixel gray levels in an image window by . Note that, contrary to the other two applications in the previous sections, we are not this time considering multivalued time series or images changing with time; instead the elements of are indexed by the location in the image window or patch. The sample windows were taken at random locations. The 2-D structure of the windows is of no significance here: row by row scanning was used to turn a square image window into a vector of pixel values. The independent components of such image windows are represented in Fig. 4. Each window in this Figure corresponds to one of the columns of the mixing matrix . Thus an observed image window is a superposition of these windows as in (5), with independent coefficients.
Now, suppose a noisy image model holds:
We have recently introduced another, statistically principled method called Sparse Code Shrinkage . It is very closely related to independent component analysis. Briefly, if we model the density of by ICA, and assume Gaussian, then the Maximum Likelihood (ML) solution for given the measurement can be developed in the signal model (48).
The ML solution can be simply computed, albeit approximately, by using
a decomposition that is an orthogonalized version of ICA.
The transform is given by
It was shown in  that, assuming a Laplacian density for si, the ML solution for si is given by a ``shrinkage function'' , or in vector form, . Function g(.) has a characteristic shape: it is zero close to the origin and then linear after a cutting value depending on the parameters of the Laplacian density and the Gaussian noise density. Assuming other forms for the densities, other optimal shrinkage functions can be derived .
In the Sparse Code Shrinkage method, the shrinkage operation is
performed in the rotated space, after which the estimate for the
signal in the original space is given by rotating back:
The rotation operator is such that the sparsity of the components is maximized. This operator can be learned with a modification of the FastICA algorithm; see  for details.
A noise cleaning result is shown in Fig. 15. A noiseless image and a noisy version, in which the noise level is 50 % of the signal level, are shown. The results of the Sparse Code Shrinkage method and classic wiener filtering are given, indicating that Sparse Code Shrinkage may be a promising approach. The noise is reduced without blurring edges or other sharp features as much as in wiener filtering. This is largely due to the strongly nonlinear nature of the shrinkage operator, that is optimally adapted to the inherent statistics of natural images.