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.