![[Eyeball Unsmoothed]](figures/full.gif)
There are many occasions when we obtain or create models that need some smoothing. If the data is acquired, there may be some noise. Sampling artifacts are another problem with acquired data. In computed tomography or magnetic resonance imaging, large pixel sizes and, more often, large spacing between slices can result in step artifacts. Of course the correct way to solve this problem is a close to the source as possible. Better detectors, gradients, and reconstruction algorithms can alleviate the problem in medical imaging equipment. More sophisticated processing of raw range data like Curless' space time analysis can produce better data.
Image processing techniques can be used on image and volume data after acquisition. Techniques such as edge preserving diffusion filters can smooth the original volume while retaining features in areas of high detail. But approaches like this treat all tissues within the volume equally.
But, what if we have a polygonal model that we want to smooth. I have been thinking about this problem on and off for a few years. My motivation was the "chunky" 3D models we create when we work with segmented MRI and CT data. I looked at several geometric solutions including moving the vertices of my chunky models along the gradient of the original grey scale data and snapping them to the surface. The results were unsatisfactory.
I have also taken the polygonal surface, created a distance field around the polygons and extracted an offset surface. Yes, that's right, extract an isosurface from a volume, create a volume from the isosurface and extract another isosurface from the volume. The results were OK, but there is certainly little justification for the amount of processing.
Then, this summer at Siggraph, I attended the Isosurface session and saw Gabriel Taubin's talk on Fair Surface Design. This excellent talk described a simple, elegant approach to surface smoothing that immediately rang a bell. I had used similar techniques to generate finite element meshes [6]. (in a former life).
This report contains experimental results for my implementation of Taubin's approach.
Results
All of these results were created with the decimate script.
A new lymb class called smooth_filter implemented the algorithm described in [1].
Segmented MRI
The isosurface of the eyeball was created from a labeled voxel dataset developed at Brigham and Women's Hospital
Surgical Planning Lab.
The eyeball is one of over 125 structures that have been labeled in their Brain Atlas.
Once they have labeled the voxels for a given
structure, we generate an isosurface by creating a new
volume that has an intensity of 1500 everywhere the
structure exists.
Since we use the marching cubes algorithm [3], we need a greyscale dataset.
To obtain this greyscale data, we blur the mask
with a 3D diffusion filter.
Then we extract an isosurface at a level of 750.
The resulting surfaces suffer from aliasing, appearing
as steps.
These are especially noticeable when we look along the slice
acquisition direction (in this case, front-to-back).
In the images below, we further exaggerated the stepping
by flat shading the objects.
These step artifacts are not limited to segmented data. Large pixel sizes or slice spacing during acquisition can also contribute.
Normally, we use gouraud shading when we render. We also use normals calculated from the gradient of the acquisition or segmented volume. This helps to "hide" the steps, but they are still there.
This experiment shows the effects of geometric smoothing on segmented MRI data.
Full eyeball
Full, smoothed
Decimated
Decimated, smoothed
Composite
Here is the pons.
Pons, flat shaded: No smoothing (left), smoothing (right)
Gouraud shaded
Wireframe, decimated, no smoothing (left), smoothed (right)
Segmented CT
The isosurfaces of the spleen, liver, kidneys and tumors were
created from a labeled voxel dataset developed at Brigham and Women's Hospital
Surgical Planning Lab.
No smoothing
Smoothed (50 iterations)
Thresholded MRI
Here's Gordon Stoll's MRI. Only 56 slices cover the head.
Decimated (25310 triangles) and smoothed on the left of each image, full resolution (77310) on the right.
Cyberware Portrait
This dataset is a Cyberware scan of yours truly.
The data has been reduced using the clipping feature of
Cyberware's echo software.
Full bill
Full, smoothed
Decimated
Decimated, smoothed
Composite
Decimated
Decimated, smoothed
This Cyberware study is a full dataset of over 440,000 triangles.
Decimated Matt
Decimated, smoothed
Composite
Implicit Model
We created an implicit model of the characters v, t, k by:
Then we ran the extracted model through smooth_filter producing
To compare the two results, we rendered them together.
White is unsmoothed.
Finally we looked at a closeup of the letter k.
Cad Model
This is a hand-crafted model of Beethoven.
Beethoven
Smoothed
Beethoven
Smoothed
GE Home Page | GE Global Research