A Fast Approximation to the Bilateral Filter for ITK
logo

Please use this identifier to cite or link to this publication: http://hdl.handle.net/10380/3122
This document describes an implementation of an alternative bilateral filtering algorithm in ITK.
This class implements the fast bilateral filter algorithm in ITK by taking the input image and organizing it into the required data structure as an ITK Image with dimension one greater than the original image. The DiscreteGaussianImageFilter is then used to blur the higher dimensional image. The discrete Gaussian image filter was chosen because the kernel width used should usually be small due to the down-sampling involved when using this technique. As described in the ITK documentation, this class should outperform the recursive Gaussian algorithm due to the small kernel size DiscreteGaussianImageFilter.After the Gaussian blur has been completed the data will be interpolated and written to the output image.

By incorporating this class into the ITK framework, this more efficient algorithm will be made available to all ITK users.
Code
plus Automatic Testing Results by Insight-Journal Dashboard on Wed Aug 26 14:39:58 2009 for revision #1
starstarstarstarstar expertise: 5 sensitivity: 5

Reviews
minus 100x faster, difference invisible by Dženan Zukić on 2011-06-20 03:39:54 for revision #3
starstarstarstarstar expertise: 3 sensitivity: 5
yellow
Summary:

This filter bring great improvement in speed, with difference to classic bilateral filter being invisible to the naked eye.

Evidence:

They provide a test image and compare output of their filter to the output of classic filter. The choice of the image is not the greatest (differences barely visible with the image quality used).

Open Science:

Souce code supplied, worked out-of-the-box, test images available.

Reproducibility:

The code worked when I exchanged it for classic bilateral filter in my own project.


Suggestion: Add a test case for 3D images.

Open source Contributions:

The code is very usable. Use is well described, and it took me 5 minutes to test it and use it.

Code Quality :

Code was readable, but I did not check it thouroughly.

Free comment :

Classic bilateral filter takes too long, ~4 minutes for relatively small 3D image. This filter is the solution.

minus This implementation is surprisingly very fast and accurate by Oleksandr Dzyubak on 2010-08-18 15:52:25 for revision #3
starstarstarstarstar expertise: 4 sensitivity: 5
yellow
Summary:

The problem of denoising images without introducing any unwanted intensity transformations is quite challenging by itself. One way of reducing the negative effects of denoising is to use local processing instead of global one. Such localization can be thought even more abstractly as processing the local vicinity of the variable.  A good example of such approach is the family of bilateral filters where classification of the vicinity applies to both an intensity range and spatial domain. As a consequense, processing with bilateral filters provides very good noise removal while still preserving edges and image features at finer scales which makes the family of bilateral filters very attarctive for image processing tasks. The ITK library does have a bilateral filter implemented. However that implementation is extremely slow. The author of this submission implemented the bilateral filter that is very very fast.

Evidence:

The author provides the manual, source code along with input/output images thus the work could easily be validated.

Open Science:

The work follows the Open Science spirit. The author does provide the both source code and images. The manual is well written and is very handy for the users.

Reproducibility:

The reviewer was easily able to reproduce the authors' work and the outputs are idetical to those provided by the author. After downloading the code, the compilation process went without any problems and the reviewer did not experienced any problems with running the executables either. It just worked as it was supposed to.

Use of Open Source Software:

The author did use Open Source Software and the code was contributed as the Open Source package too.

Open source Contributions:

The author does provide the code in the form that allows to easy compile and use it.In the manual the author described in details the algorithm basis and provided the examples with parameters which was very useful. The process took very short time.

Code Quality :

The author provides the source code which is easy to read. The reviewer used this code on Linux (Debian Lenny) platform with gcc 4.2.3 and did not experience any problems. The code runs very fast. The code follows a modern coding style and the ITK rules so the reviewer would recommend this submission to be included to the ITK lib. There also should be mentioned one very usefull advantage of the submitted code: the author preserve the class API which resemble the API of analogous filter from the ITK library. The reviewer considers this as a big plus.

Quality of the data :

Qualit of the data is good and it is easy to use.

Interest:

The field of the Signal and Image denoising, where preserving edges and finer features are the most required properties.

Free comment :

The reviewer made some performance tests which demonstarted that the FastBilateral filter from this submission performed 200 times as much vs itk:: BilateralImageFilter. So the reviewer is very happy while using this FastBilateral filterfilter and highly recommends to include it into the ITK library.

Add a new review
Quick Comments
Comment by Jordan Woehr yellow
For 3d (and 4d) datasets, a small domain sigma may be appropriate in the x and y direction but the distance between slices in the z direction is typically much larger than the pixel spacing in x and y. This leads to a significant increase in memory usage because the small sigma leads to many bins between slices.

I haven't looked at the code in some time, but I am aware that this is a problem and I have been meaning to look at it again.
Comment by Dženan Zukić yellow
I just now realized that for small sigmas, this filter requires immense amounts of memory! Domain sigma=1.0 with image size 448x448x15 requires 12GB of intermediate storage.


Resources
backyellow
Download All
Download Paper , View Paper
Download Source code
Github

Statistics more
backyellow
Global rating: starstarstarstarstar
Review rating: starstarstarstarstar [review]
Code rating: starstarstarstarstar
Paper Quality: plus minus
2 comments

Information more
backyellow
Categories: Anisotropic blurring filters, Blurring filters, Edge Detection
Keywords: Bilateral filter, Image processing
Toolkits: ITK, CMake
Export citation:

Share
backyellow
Share

Linked Publications more
backyellow
Diffeomorphic Demons Using ITK's Finite Difference Solver Hierarchy Diffeomorphic Demons Using ITK's Finite Difference Solver Hierarchy
by Vercauteren T., Pennec X., Perchant A., Ayache N.
Anisotropic Fast Marching in ITK Anisotropic Fast Marching in ITK
by Mirebeau J.

View license
Loading license...

Send a message to the author
main_flat
Powered by Midas