Package gov.nih.mipav.model.algorithms
Class AlgorithmExtractSurface
java.lang.Object
java.lang.Thread
gov.nih.mipav.model.algorithms.AlgorithmBase
gov.nih.mipav.model.algorithms.AlgorithmExtractSurface
- All Implemented Interfaces:
ActionListener,WindowListener,Runnable,EventListener
Extracts a surface using Tetrahedron Extraction. Triangle decimation can be invoked to reduce triangle count. The
decimation algorithm produces a continious level of detail (clod) structure that can be used to optimize the the
visualization of the surface. The input to this algorithm is typically a mask image where 0 = background and 100 =
object (i.e. interior to a VOI). The mask image is then blurred slightly and the level (50) is extracted. A greyscale
image may also be input and a surface is extracted given a level. The steps are:
- Build mask image of VOI (i.e. all point interior to VOI are set to 100. All points exterior are = 0.
- Blur mask image if not greyscale
- Extract level surface at 50 or user defined level
- Save surface ( ".sur")
- If decimate then decimate surface and save (".sur")
- Version:
- 0.1 June, 2001
- Author:
- Matthew J. McAuliffe, Ph.D., David H. Eberly, Ph.D. wrote all the extraction and decimation code found in the SurfaceExtraction, SurfaceDecimation and associated classes, with a little input from Matt with speed and memory optimizations
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Thread
Thread.Builder, Thread.State, Thread.UncaughtExceptionHandler -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final booleanIf true then the input image is blurred slightly.private floatThe amount to blur to smooth surface.private final booleanIf true then the extracted surface is decimated into a continuous level of detail surface (clod).private final floatIndicates level surface to be extracted.static final intExtract surface based on intensity level.static final intExtract surface from mask image.private ModelImageMask image to extract surface from.private final intIndicates mode - VOI, LEVELSET, or MASK.private float[]private StringPath and name of extracted surface file. ".sur" will be appended if necessary.static final intExtract surface from VOI.Fields inherited from class gov.nih.mipav.model.algorithms.AlgorithmBase
destFlag, destImage, image25D, mask, maxProgressValue, minProgressValue, multiThreadingEnabled, nthreads, progress, progressModulus, progressStep, runningInSeparateThread, separable, srcImage, threadStoppedFields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY -
Constructor Summary
ConstructorsConstructorDescriptionAlgorithmExtractSurface(ModelImage image, float level, int mode, boolean decFlag, boolean blurFlag, float sigma, String fileName, float[] surfaceArea) Creates a new AlgorithmExtractSurface object. -
Method Summary
Modifier and TypeMethodDescriptionfloatComputeSurfaceArea(WildMagic.LibGraphics.SceneGraph.TriMesh m_kMesh) Calculate the surface mesh area.private voidExtracts a surface, in the form of triangles, from an image.voidfinalize()Prepares this class for destruction.private voidinit()DOCUMENT ME!voidStarts the program.Methods inherited from class gov.nih.mipav.model.algorithms.AlgorithmBase
actionPerformed, addListener, addProgressChangeListener, calculateImageSize, calculatePrincipleAxis, computeElapsedTime, computeElapsedTime, convertIntoFloat, delinkProgressToAlgorithm, delinkProgressToAlgorithmMulti, displayError, errorCleanUp, fireProgressStateChanged, fireProgressStateChanged, fireProgressStateChanged, fireProgressStateChanged, fireProgressStateChanged, generateProgressValues, getDestImage, getElapsedTime, getMask, getMaxProgressValue, getMinProgressValue, getNumberOfThreads, getProgress, getProgressChangeListener, getProgressChangeListeners, getProgressModulus, getProgressStep, getProgressValues, getSrcImage, isCompleted, isImage25D, isMultiThreadingEnabled, isRunningInSeparateThread, isThreadStopped, linkProgressToAlgorithm, linkProgressToAlgorithm, makeProgress, notifyListeners, removeListener, removeProgressChangeListener, run, setCompleted, setImage25D, setMask, setMaxProgressValue, setMinProgressValue, setMultiThreadingEnabled, setNumberOfThreads, setProgress, setProgressModulus, setProgressStep, setProgressValues, setProgressValues, setRunningInSeparateThread, setSrcImage, setStartTime, setThreadStopped, startMethod, windowActivated, windowClosed, windowClosing, windowDeactivated, windowDeiconified, windowIconified, windowOpenedMethods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, isVirtual, join, join, join, join, ofPlatform, ofVirtual, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, sleep, start, startVirtualThread, stop, suspend, threadId, toString, yield
-
Field Details
-
VOI_MODE
public static final int VOI_MODEExtract surface from VOI.- See Also:
-
MASK_MODE
public static final int MASK_MODEExtract surface from mask image.- See Also:
-
LEVEL_MODE
public static final int LEVEL_MODEExtract surface based on intensity level.- See Also:
-
blurFlag
private final boolean blurFlagIf true then the input image is blurred slightly. -
blurSigma
private float blurSigmaThe amount to blur to smooth surface. -
decimateFlag
private final boolean decimateFlagIf true then the extracted surface is decimated into a continuous level of detail surface (clod). -
level
private final float levelIndicates level surface to be extracted. -
maskImage
Mask image to extract surface from. -
mode
private final int modeIndicates mode - VOI, LEVELSET, or MASK. -
surfaceFileName
Path and name of extracted surface file. ".sur" will be appended if necessary. -
surfaceArea
private float[] surfaceArea
-
-
Constructor Details
-
AlgorithmExtractSurface
public AlgorithmExtractSurface(ModelImage image, float level, int mode, boolean decFlag, boolean blurFlag, float sigma, String fileName, float[] surfaceArea) Creates a new AlgorithmExtractSurface object.- Parameters:
image- mask image or grayscale where a level surface is to be extractedlevel- indicates level surface to be extracedmode- Indicates mode - VOI, LEVELSET, or MASK.decFlag- indicates whether or not the decimation into a CLOD should take place.blurFlag- if true then the input image is blurred slightlysigma- the amount to blur the imagefileName- path and name of extracted surface file. ".sur" will be appended if necessary.surfaceArea- If not null the computed surface area will be returned
-
-
Method Details
-
finalize
public void finalize()Prepares this class for destruction.- Overrides:
finalizein classAlgorithmBase
-
runAlgorithm
public void runAlgorithm()Starts the program.- Specified by:
runAlgorithmin classAlgorithmBase
-
extractSurface
private void extractSurface()Extracts a surface, in the form of triangles, from an image. -
init
private void init()DOCUMENT ME! -
ComputeSurfaceArea
public float ComputeSurfaceArea(WildMagic.LibGraphics.SceneGraph.TriMesh m_kMesh) Calculate the surface mesh area. Each surface mesh is composed of triangles. Calculate the surface area from the summation of the each triangle area. Based on the Area by Stokes' Theorem. Area(S) = 1/2 * Normal dot ( Sum from i = 0 to n-1 of ( V1 cross V2) ) ==> Area(S) = 1/2 * ( Sum from i = 0 to n-1 of ( Normal dot ( V1 cross V2) ) )- Returns:
- float
-