Dual SurfaceNets extend the original SurfaceNet approach by combining information from two orthogonal volume image scans. The use of Dual SurfaceNets requires a number of preprocessing steps [3]. First, the object of interest is segmented or extracted from each of the scans. The scans are then registered into a common coordinate frame by finding the pose that minimizes the sum of squared differences of the smoothed segmented images.
Once segmentation and registration are performed, a SurfaceNet is initialized for each of the models. The first step in generating a SurfaceNet is to locate cells that contain surface nodes. A cell is defined by 8 neighboring voxels in the binary segmented data, 4 voxels each from 2 adjacent planes. If at least one of the voxels has a binary value that is different from its neighbors, then the cell is a surface cell. The net is initialized by placing a node at the center of each surface cell and linking nodes that lie in adjacent surface cells. Fig. 1c illustrates the creation of a net from a binary image.
Once defined, the SurfaceNet can be relaxed to reduce terracing
artifacts while remaining faithful to the input segmentation
[2]. To relax the net, each node is repositioned
to reduce an energy measure in the links. In the examples presented
here, SurfaceNets were relaxed iteratively by considering each node,
, in sequence and moving that node towards the midpoint of its
linked neighbors.

where
is the set of linked neighbors of point i.
Defining the
relaxation in this manner without constraints will cause the net to
shrink to a single point. To remain faithful to the original
segmentation, each node is constrained to lie inside its original
surface cell. This constraint favors the original segmentation over
smoothness and forces the surface to retain thin structures and
cracks.
Relaxing a single SurfaceNet of an object significantly reduces the
artifacts contained in the model. However, if the resolution in the
scan is low in one direction, there may not be enough information in
one scan to fully constrain the model and remove the terraces. We
therefore consider using two scans, where one has higher resolution
along the direction where the other has lower resolution, as
illustrated in Fig. 1d. To relax two models of an
object together, the individual SurfaceNets are built as described
above. The two SurfaceNets, once aligned in the same coordinate
frame, are iteratively relaxed towards one another with the constraint
that each node much lie within its surface cell. In one relaxation
step, each point
in the first net is updated by taking an
average (weighted by distance) of the points
in the other net.
The point
could violate its constraint by lying outside
its cell,
. The new position of the point,
is
if it lies inside the cell and the closest point on the
cell boundary if
lies outside the cell. In the next
iteration, the second net is relaxed towards the first. After each
full dual relaxation step, the nets are each relaxed individually for
one iteration. The individual relaxation keeps each net smooth as
they merge. The iteration progresses until the positions of some
user-defined fraction of the nodes have converged, at which time one
of the two nets is chosen to generate the final triangle model.
If the segmentation and registration were ideal, then the true surface would always lie in the intersection of the surface cells of the two images. In this case, the two nets would converge on the identical surface with all surface cell constraints satisfied. Fig. 1d shows a 2D example of a surface passing through the surface cells of two nets. In general, the surface cells of the two scans do not overlap perfectly due to imaging, segmentation, and registration errors. We therefore provide a means of relaxing the constraints to allow the nets to merge more closely. After a few iterations, any point that is pulled outside its constraining cell cannot meet a corresponding point in the other net. This signifies discrepancies between the two models. In these instances, the constraining cell of every such point is dilated (preserving aspect ratio) by a small amount at the end of the iteration, allowing those points to move closer to the other net in the next iteration. Although the resultant net can move more than one voxel from the segmentations, the final model is guaranteed to be between the two initial models.