# extractIsosurface

Extract isosurface from volume using marching cubes algorithm

## Description

An *isosurface* is a 3-D surface representation of points
with equal values in a 3-D intensity volume. The `extractIsosurface`

function
returns the face and vertex data of the isosurface extracted by connecting points of a
constant value within a volume of space. The `extractIsosurface`

function
uses the marching cubes algorithm to extract isosurface data as arrays faster than the
corresponding syntax of the `isosurface`

function, without compromising
resolution. For additional options, you must use the `isosurface`

function.

## Examples

## Input Arguments

## Output Arguments

## Algorithms

The `extractIsosurface`

function uses the marching cubes algorithm to
extract the isosurface of a volume `V`

at the specified isovalue
`isovalue`

. The marching cubes algorithm uses lookup tables to obtain
information about the faces and vertices of the isosurface. The lookup tables enable the
`extractIsosurface`

function to extract face and vertex data as arrays
faster than the `isosurface`

function without compromising resolution for
large intensity volumes, such as those typically used in medical imaging. Though the purposes
of `extractIsosurface`

and `isosurface`

are similar, there
are certain differences in their implementation and output.

The behavior of

`extractIsosurface`

and`isosurface`

differs for the edge case when an intensity value is equal to the specified isovalue. The`isosurface`

function generates a surface between regions with intensities less than or equal to the isovalue and regions with intensities greater than the isovalue. The`extractIsosurface`

function generates a surface between regions with intensities less than the isovalue and regions with intensities greater than or equal to the isovalue.Except for the edge case, both

`extractIsosurface`

and`isosurface`

generate the same number of vertices with the index coordinates of the vertices matching within a small tolerance. However, the order of the vertices in the output`verts`

can be different.Except for the edge case, both

`extractIsosurface`

and`isosurface`

generate the same number of faces. However, the actual faces in the output`faces`

are different because both algorithms create the same surface using different triangulations of the vertices.

## References

[1] Lorensen, William E., and Harvey
E. Cline. “Marching Cubes: A High Resolution 3D Surface Construction Algorithm.” *ACM SIGGRAPH Computer Graphics* 21, no. 4 (August 1987): 163–69.
https://doi.org/10.1145/37402.37422.

## Version History

**Introduced in R2022b**