
Please use this identifier to cite or link to this publication: http://hdl.handle.net/10380/3122 |
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.













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.







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.

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
![]() |
|
Download All | |
Download Paper , View Paper | |
Download Source code | |
Github |
Statistics more
![]() |
|
Global rating: | ![]() ![]() ![]() ![]() ![]() |
Review rating: | ![]() ![]() ![]() ![]() ![]() |
Code rating: | ![]() ![]() ![]() ![]() ![]() |
Paper Quality: |
![]() ![]() |
2 comments |
Information more
![]() |
|
Categories: | Anisotropic blurring filters, Blurring filters, Edge Detection |
Keywords: | Bilateral filter, Image processing |
Toolkits: | ITK, CMake |
Export citation: |
Share
![]() |
Linked Publications more
![]() |
||
![]() by Vercauteren T., Pennec X., Perchant A., Ayache N.
|
||
![]() by Vimort J., McCormick M., Paniagua B.
|
View license
Send a message to the author

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.