|
The Basic Idea of the Shear-Warp Algorithm
|
To generate different views of an object given as volume data, the
voxels of the volume first have to be rotated
into the right position before the projection
of the 3D-data into a 2D-plane can be done. The
random positions of samples after the rotation
complicate the projection process. The Shear-Warp
Algorithm simplifies this projection by first
shearing, then projecting and finally warping
the viewed points (i.e. the voxels of the data).
To illustrate how the Shear-Warp Algorithm works,
imagine a fat book. If one looks directly at the
front of the book one can only see the front-page of it.
There seems to be no way to see a side of it without
rotating it. Indeed a "trick" can be applied.
When one shears the pages of the book so that all the pages remain
parallel, but their relative positions change, then one can also
see the side of the book. This is exactly what the
shearing-step in the Shear-Warp Algorithm does.
In this step the slices of the volume are sheared.
After the shearing, the samples are projected onto a
so-called intermediate image.
|
The shearing step in the Shear-Warp Algorithm
|
|
The intermediate image one gets after projection
is distorted. So the intermediate image
must be warped to get the correct final image.
|
|
Each voxel position is transformed
from its original position into the respective
position in the projection plane. This transformation
can be expressed by applying a rotation and a projection.
So the Shear-Warp Algorithm simply uses the fact that
one can split up the
combined transformation- and projection-matrix
into a shear-, a projection and a warp-matrix. In case of
orthogonal projection no projection matrix is required.
This is the case because orthogonal
projection into the XY-plane means nothing else than
assigning 0 to all Z-values.
The X- and Y-coordinates are not influenced by the projection.
In short, we
simply ignore the Z-coordinates.
When the transformations are represented by matrices
we can express the Shear-Warp factorisation as follows:
viewMatrix =
shearMatrix * warpMatrix
|

Factorisation of the viewing matrix
|
|
So much about the basic idea behind it. In fact the whole thing is a little
more complex. The Shear-Warp Algorithm saves all the slices
of the volume runlength encoded for each main viewing direction.
Because the viewing vector in viewing coordinates always is parallel
to the z-axis, a permutation of the axes has to be performed before the
shearing. This permutation always makes the z-axis being the
viewing vector.
|
|