Bivariate Splines for Image Denoising
We can use bivariate box splines on uniform triangulations
or bivariate splines over arbitary triangulations for image denoising.
An image may have various kinds of noises, Salt-Pepper noises, Gaussian
noises, and etc.. There are many techniques available to remove all
kinds of noises. See Jae S. Lim's book "Two-Dimensional Signal and Image
Processing (Prentice Hall)". One can also use wavelet/wavelet frame methods
as well as PDE based methods to remove noises. For example, the methods
based on wavelet shrinkage ideas developed by Donoho and his collaborators
are a popular approach. For another example, Rudin-Osher-Fatemi's PDE model
is another approach. In this webpage, I will show how to use bivariate splines
to remove noises from a noised image.
The following are a standard image and a noised image by Gaussian noises
with mean zero and variance 30.
We first apply a favorable denoising method to remove some of the
noises. In this example, I use the Perona-Malik's PDE model for denoising.
The image on the right is a denoised image with PSNR=28.52. That is,
there are still a lot of noises left. Thus we need to do further
clean-up. My second step is to apply an image segmentation or edge detection
method to separate
the denoised image into several regions of interest for further denoising.
I have three methods for image segmentation: the first one is to use box
spines for edge detection,
the second one is a ray trace method
and the third one is called
the edge
crawl method. The following is an example of
the box spline method
for edge detection (cf. Kyunglin Nam's dissertation).
After separation an image into regions, the third step is
to triangulate each of the regions of the image as shown below.
Fix each region of interest. Finally, I
use the bivariate spline space of degree 5 and smoothness 1 over the
triangulation and apply penalized least squares splines to approximate
the pixel values with noises over the region and use the spline values to
replace these noised pixel values.
The following are two sets of examples.
The first one is that I used bivariate splines of degree 8 and smoothness
1 and penalized parameter=88 to remove the noises in the area of the shoulder.
Clearly, the shoulder is now cleaner. (The image on the right is a denoised
image using the Perona-Malik method.)
Similarly, I used bivariate splines to remove the noises from two big
peppers in the image. These two peppers look closer to that in the exact
image.