« Projects 2008

Fast anisotropic diffusion for edge preserving smoothing based on GPGPU hardware

  • Project number: 202-08-16
  • Students: Henry Abrabanel, Aviad Pinkovezky
  • Supervisor: Klara Kedem, Itai Bar-Yosef, Eran Geva

When dealing with noisy images, the noise is usually reduced by applying smoothing operators, such as Gaussian smoothing. The main problems with that technique are that the image is blurred and that there is no edge preservation. Those two problems make image segmentation process problematic.

One possible solution for the above problem is using Anisotropic Diffusion. The algorithm is based on iterating over the image's pixels, and determining its new value according to the gradients on four directions and according to the conduction coefficients (which depend on the gradients). In simple words: If we have high gradients values (which imply on the existence of an edge), then the original pixel's value is preserved (which means less smoothing was done).

In order to obtain good results, one needs to run the anisotropic diffusion algorithm with a high number of iterations, when each iteration fine tunes the result of the previous iteration. This method requires a lot of CPU resources and takes a lot of time as well. This problem can be overtaken by parallelizing the algorithm. Here we take advantage of the new nvidia GPU which is a general purpose graphic processing unit (GPGPU), which can be used by programming in C code like syntax (i.e. CUDA) to perform parallel computation. In our implementation, we utilized the GPGPU ability to handle efficiently thousands of light weighted threads at once to improve performances. According to our testings, the magnitude of improvement is up to 800 times faster than a conventional C++ implementation.