This section concerns a simple idea - one adds some noise, "junk", to a signal, and proceeds to see if one can clean it up. Mr. Peyrê begins with the simplest kind of noise, "Gaussian white noise." Plots of this process are given below:
To repeat, Mr. Peyrê took a clean signal, some noise, and then added the two together. Next, he repeats the above process, but this time with an image instead of a signal.
The statistics of the noise are given below.
Here a a different kind of noise is used. The process above is repeated below.
Here are the statistics of the noise:
Again, different type of noise is added to the signal and image used in the previous two examples.
And here are the statistics:
Here, non-linear thresholding is used in order to achieve a sparse representation of the signal. In the case of a noisy image, we can try to choose a threshold that is slightly above the noise, in an attempt to remove all the noise from the image. Below are plots of the original signal the the signal with noise added to it.
Next, Mr. Peyrê creates a linearly increasing vector from 0 to 1 with 100 elements. With the help of a for loop, he iterates through each element of this vector and uses each element as a thresholding value. This represents a spatial domain non-linear thresholding. The plot below gives a fantastic summary of this process.
What does this tell us? It tells us that we want the thresholding level to be set just a hair above the noise level for optimal denoising. Too low and too much noise gets through. Too high, and one starts losing part of the original signal itself.
Now, the examples above were fairly unrealistic because we had an idea of the noise level. In fact, the noise was intentially added to the signals or pictures. In a more realistic setting, we would not have an idea of the level of noise the signal had. Here, we investigate how to estimate the noise a signal has. As usual, we load an image and add noise to it.
One may be a bit curious as to why the derivative of the image is plotted as well. First of all, the derivative of the image represents the normalized difference between adjacent pixels. "An even simple estimator is given by the normalized derivative along the X or Y directions." (1) From this derivative, a histogram is generated.
From this, we can calcualte the "mean absolute deviation" or "mad" for short. This value is additionally rescaled by Mr. Peryê in order to give the correct variance for the Gaussian noise. He uses a value of 0.6745 to rescale the mad value, and I am not sure as to why he uses it. It seems a bit random. Regardless, the value for "mad" is given below.
Estimated Noise Level=0.066711, True=0.06
This method did a fairly good job of determine the noise value. Now that we know the value of the noise, a non-linear thresholding could be implemented in order to denoise the image.
This section was fairly simple. I fully expect to see more sophisticated and complex methods in the sections to come. The intent of this section was very humble - it showed various types of noise being added to a signal and an image. Additionally, it gave an example of how to remove noise from a signal, as well as estimate the noise in a signal. In the next section, I will explore Linear Signal Denoising.
Works Cited
(1) Peryê, Gabriel. "Signal and Image Noise Models." Signal and Image Noise Models. N.p., 2008. Web. 08 Aug. 2014.
G. Peyré, The Numerical Tours of Signal Processing - Advanced Computational Signal and Image Processing, IEEE Computing in Science and Engineering, vol. 13(4), pp. 94-97, 2011.