Three-dimensional volumetric data is discrete by nature. It does not preserve continuous surface.
Therefore, to render surfaces realistically, the normal vectors must be predicted before processing the
image. During the rendering, if the normals are averaged directly, then the sharp edges are smoothed
out as well. In this paper, we show how to avoid over-smoothing problems by analyzing a few neighbor
voxels, and selectively averaging the normals to keep details, within a predefined kernel.