Warning: Cannot modify header information - headers already sent by (output started at /users/u1/iman/public_html/Denoising/index.php:1) in /users/u1/iman/public_html/Denoising/index.php on line 2
Iman Sadeghi 's Homepage: Bilateral Denoising Filter


Iman Sadeghi 's Homepage
Bilateral Denoising

Welcome to Bilateral Denoising Filter Project Homepage!

This mini project was done for CSE291: 3D Geometry Processing class taught by Professor Matthias Zwicker in Winter 2008.

1. Introduction
The goal of this warm-up programming assignment was that students learrn how to work with software libraries that provide many of the basic operations required for 3D geometry processing. For example VTK and CGAL. Students had to implement a geometry processing algorithm of your choice. They have to identify an algorithm for surface reconstruction, simplification, parameterization, registration, or a related operation that is not available in the library you are using. The goal is that students will provide their implementation for use by the public, see Getting involved in the CGAL project, or VTK: How to contribute.

2. About Bilateral Denoising Filter


Bilateral Mesh Denoising
Shachar Fleishman Iddo Drori Daniel Cohen-Or
School of Computer Science, Tel Aviv University

We present an anisotropic mesh denoising algorithm that is effective, simple and fast. This is accomplished by filtering vertices of the mesh in the normal direction using local neighborhoods. Motivated by the impressive results of bilateral filtering for image denoising, we adopt it to denoise 3D meshes; addressing the specific issues required in the transition from two-dimensions to manifolds in three dimensions. We show that the proposed method successfully removes noise from meshes while preserving features. Furthermore, the presented algorithm excels in its simplicity both in concept and implementation.

Source: PDF Link

3. About VTK

The Visualization ToolKit (VTK) is an open source, freely available software system for 3D computer graphics, image processing, and visualization used by thousands of researchers and developers around the world. VTK consists of a C++ class library, and several interpreted interface layers including Tcl/Tk, Java, and Python. Professional support and products for VTK are provided by Kitware, Inc. VTK supports a wide variety of visualization algorithms including scalar, vector, tensor, texture, and volumetric methods; and advanced modeling techniques such as implicit modelling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation. In addition, dozens of imaging algorithms have been directly integrated to allow the user to mix 2D imaging / 3D graphics algorithms and data. The design and implementation of the library has been strongly influenced by object-oriented principles. VTK has been installed and tested on nearly every Unix-based platform, PCs (Windows 98/ME/NT/2000/XP), and Mac OSX Jaguar or later.

Source: http://www.vtk.org

4. Algorithm:


The prediction Πq(p) for a point p based on the surface at q is the projection of p to the plane tangent to the surface at q. Points across a sharp feature result in predictions that are farther away, and therefore given less influence. (b) Noisy normals can lead to poor predictors. (c) Mollified normal alleviate this problem. Note that corners are preserved because points are not displaced by the mollification: only the normals are smoothed. (Image from [2])


Pseudo-code of the algorithm taken from [1]


Image is taken from [3]

5. Results
I Here you see the stanford bunny from left to right:

Original Mesh - Artificial Noise Added to the Mesh - Denoised Mesh


Color coded version which shows the movements of each points:

Color coded offset when filter is applied to the

 Original Mesh - Noisy Mesh - Denoised Mesh

6. Denoising vs. Smoothing
The bilateral filter smoothes out only the noise and preserves the features of the mesh. In contrast, algorithms such as Laplacian smoothing with smooth not only the noise but also the features of the mesh which is not desirable. Here I have compared my denoising implementation with Laplacian smoothing filter which has been already implemented in vtk library.


Color coded offset when laplacian smoothing is applied to the

 Original Mesh - Noisy Mesh - Smoothed Mesh


Smoothed Mesh - Denoised Mesh

Notice the loss of features specially around the eyes of the bunny.


[1] Shachar Fleishman , Iddo Drori , Daniel Cohen-Or, Bilateral mesh denoising, ACM Transactions on Graphics (TOG), v.22 n.3, July 2003

[2] Jones, T., Durand, F., Desbrun, M. 2003. Non-iterative, feature preserving mesh smoothing. ACM Transactions on Graphics.

[3] Frédo Durand , Julie Dorsey, Fast bilateral filtering for the display of high-dynamic-range images, ACM Transactions on Graphics (TOG), v.21 n.3, July 2002