22
(b)
Figure 3.2 : Figure 3.2(b) shows a multi-material map generated from the iso-surfaces
of Figure 3.2(a).
surfaces as distinct materials using Overwrite and then assign some level of partial
transparency to each material.
Given an iso-surface f(x,y,z) = c, we can construct a signed grid formed via
samples of the function f(x, y, z) — c. Since the material boundaries are invariant up
to multiplication by a scalar, we need to pick a normalization factor for the scalar
field to ensure good utilization of the floating-point precision. First, we collect the
voxel values along the contour c; for every cell that has densities above and below the
contour level in its eight corner voxels, we store those values. We process the values
so that a small percentage of the top and bottom values are discarded. This screens
out extreme outliers that might force the majority of the values into a small range of
the histogram. The maximum and the minimum of the truncated histogram are used
to normalize the voxel values into the range [0,1]. These normalized values are used
as part of the new scalar field Snew. Additionally, we store 1 in S1new for cells whose
corner values are strictly above or below c. We then perform an Overwrite operation
by overwriting Snew onto the old scalar field. The mask indices of grid values that are
above c are set to a new mask value. This simple heuristic generates a single material
that corresponds to a threshold segmentation.