Package gov.nih.mipav.model.algorithms
Class AlgorithmGrayScaleMorphology3D
java.lang.Object
java.lang.Thread
gov.nih.mipav.model.algorithms.AlgorithmBase
gov.nih.mipav.model.algorithms.AlgorithmGrayScaleMorphology3D
- All Implemented Interfaces:
ActionListener,WindowListener,Runnable,EventListener
Three-Dimensional mathematical morphology class applied to Gray scale images.
- Version:
- 1.0 Aug 1999
- Author:
- Matthew J. McAuliffe, Ph.D.
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Thread
Thread.Builder, Thread.State, Thread.UncaughtExceptionHandler -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intalgorithm type (i.e. erode, dilate)static final intDOCUMENT ME!static final intstatic final intDOCUMENT ME!static final intstatic final intDOCUMENT ME!static final intstatic final intDOCUMENT ME!static final intDOCUMENT ME!static final intDOCUMENT ME!static final intDOCUMENT ME!static final intDOCUMENT ME!private intEdge type.private booleanif true, indicates that the VOIs should NOT be used and that entire image should be processed.static final intDOCUMENT ME!static final intDOCUMENT ME!static final intDOCUMENT ME!static final intstatic final intprivate intSize of geodesic erosions and dilationsstatic final intDOCUMENT ME!private double[]imgBuffer that hold voxel value for the 3D slices.private double[]static final intParameter used in Find_Edges.private intDilation iteration times.private intErosion iteration times.private intKernel dimension.private intDOCUMENT ME!private BitSetKernel for both erosion and dilation.private intkernel size (i.e. connectedness)private double[]private ModelImageUsed in geodesic dilation, geodesic erosion, morphological reconstruction by dilation, and morphological reconstruction by erosion Not used in opening by reconstruction and closing by reconstructionprivate intmaximum, minimum size of objects.private intmaximum, minimum size of objects.static final intstatic final intstatic final intstatic final intprivate intNumber pixels to prune.static final intDOCUMENT ME!static final intstatic final intParameter used in Find_Edges.static final intDOCUMENT ME!private floatprivate double[]intermediate processing buffer, same size with imgBuffer.static final intDOCUMENT ME!static final intDOCUMENT ME!private floatkernel diameter.static final intstatic final intDOCUMENT ME!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
ConstructorsConstructorDescriptionAlgorithmGrayScaleMorphology3D(ModelImage srcImg, int kernelType, float sphereDiameter, int method, int iterD, int iterE, int pruningPix, int edType, boolean entireImage) Creates a new AlgorithmMorphology3D object.AlgorithmGrayScaleMorphology3D(ModelImage srcImg, ModelImage destImg, int kernelType, float sphereDiameter, int method, int iterD, int iterE, int pruningPix, int edType, boolean entireImage) Creates a new AlgorithmMorphology3D object.AlgorithmGrayScaleMorphology3D(ModelImage srcImg, ModelImage destImg, ModelImage maskImage, int kernelType, float sphereDiameter, int method, int geodesicSize, int iterD, int iterE, boolean entireImage) Creates a new AlgorithmGrayScaleMorphology3D object. -
Method Summary
Modifier and TypeMethodDescriptionprivate voiddilate(boolean returnFlag, int iters) Dilates an image using the indicated kernel and the indicated number of iterations.private voiderode(boolean returnFlag, int iters) Erodes an image using the indicated kernel and the indicated number of iterations.voidfinalize()Prepares this class for destruction.private voidgeodesicDilation(boolean returnFlag, int geodesicSize) geodesic dilation of a boolean, unsigned byte or unsigned short image using the indicated kernel and the indicated number of executions.private voidgeodesicErosion(boolean returnFlag, int geodesicSize) geodesic erosion of a boolean, unsigned byte or unsigned short image using the indicated kernel and the indicated number of executions.private voidmakeKernel(int kernelType) Generates a kernel of the indicated type.private voidGenerates a spherical kernel of a specific diameter.voidStarts the program.voidsetAlgorithm(int method) Sets the algorithm type (i.e. erode, dilate)voidsetImage(ModelImage img) Sets new source image.voidSets user defined square kernels.voidsetMinMax(int _min, int _max) Sets the bounds of object size used to delete objects.voidsetPixDistance(float dist) Used in the ultimate erode function to remove all eroded points less than the distance specified in pixel units.voidDisplay kernel as 1 or 0 in the debug window.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
-
ERODE
public static final int ERODEDOCUMENT ME!- See Also:
-
DILATE
public static final int DILATEDOCUMENT ME!- See Also:
-
CLOSE
public static final int CLOSEDOCUMENT ME!- See Also:
-
OPEN
public static final int OPENDOCUMENT ME!- See Also:
-
ID_OBJECTS
public static final int ID_OBJECTSDOCUMENT ME!- See Also:
-
DELETE_OBJECTS
public static final int DELETE_OBJECTSDOCUMENT ME!- See Also:
-
DISTANCE_MAP
public static final int DISTANCE_MAPDOCUMENT ME!- See Also:
-
BG_DISTANCE_MAP
public static final int BG_DISTANCE_MAPDOCUMENT ME!- See Also:
-
ULTIMATE_ERODE
public static final int ULTIMATE_ERODEDOCUMENT ME!- See Also:
-
PARTICLE_ANALYSIS
public static final int PARTICLE_ANALYSISDOCUMENT ME!- See Also:
-
SKELETONIZE
public static final int SKELETONIZEDOCUMENT ME!- See Also:
-
FIND_EDGES
public static final int FIND_EDGESDOCUMENT ME!- See Also:
-
FILL_HOLES
public static final int FILL_HOLESDOCUMENT ME!- See Also:
-
DISTANCE_MAP_FOR_SHAPE_INTERPOLATION
public static final int DISTANCE_MAP_FOR_SHAPE_INTERPOLATIONDOCUMENT ME!- See Also:
-
MORPHOLOGICAL_GRADIENT
public static final int MORPHOLOGICAL_GRADIENT- See Also:
-
TOP_HAT
public static final int TOP_HAT- See Also:
-
BOTTOM_HAT
public static final int BOTTOM_HAT- See Also:
-
MORPHOLOGICAL_LAPLACIAN
public static final int MORPHOLOGICAL_LAPLACIAN- See Also:
-
GEODESIC_DILATION
public static final int GEODESIC_DILATION- See Also:
-
GEODESIC_EROSION
public static final int GEODESIC_EROSION- See Also:
-
MORPHOLOGICAL_RECONSTRUCTION_BY_DILATION
public static final int MORPHOLOGICAL_RECONSTRUCTION_BY_DILATION- See Also:
-
MORPHOLOGICAL_RECONSTRUCTION_BY_EROSION
public static final int MORPHOLOGICAL_RECONSTRUCTION_BY_EROSION- See Also:
-
OPENING_BY_RECONSTRUCTION
public static final int OPENING_BY_RECONSTRUCTION- See Also:
-
CLOSING_BY_RECONSTRUCTION
public static final int CLOSING_BY_RECONSTRUCTION- See Also:
-
SIZED_SPHERE
public static final int SIZED_SPHEREDOCUMENT ME!- See Also:
-
CONNECTED6
public static final int CONNECTED6DOCUMENT ME!- See Also:
-
CONNECTED24
public static final int CONNECTED24DOCUMENT ME!- See Also:
-
CONNECTED26
public static final int CONNECTED26- See Also:
-
OUTER_EDGING
public static final int OUTER_EDGINGParameter used in Find_Edges. Indicates that the edge extracted is formed from the voxels that are directly adjacient to the ojbect.- See Also:
-
INNER_EDGING
public static final int INNER_EDGINGParameter used in Find_Edges. Indicates that the edge extracted is formed from the voxels that overlay the edge voxels of the object.- See Also:
-
algorithm
private int algorithmalgorithm type (i.e. erode, dilate) -
edgingType
private int edgingTypeEdge type. -
entireImage
private boolean entireImageif true, indicates that the VOIs should NOT be used and that entire image should be processed. -
imgBuffer
private double[] imgBufferimgBuffer that hold voxel value for the 3D slices. -
imgBuffer2
private double[] imgBuffer2 -
maskBuffer
private double[] maskBuffer -
iterationsD
private int iterationsDDilation iteration times. -
iterationsE
private int iterationsEErosion iteration times. -
kDimXY
private int kDimXYKernel dimension. -
kDimZ
private int kDimZDOCUMENT ME! -
kernel
Kernel for both erosion and dilation. -
kernelType
private int kernelTypekernel size (i.e. connectedness) -
min
private int minmaximum, minimum size of objects. -
max
private int maxmaximum, minimum size of objects. -
numPruningPixels
private int numPruningPixelsNumber pixels to prune. -
pixDist
private float pixDist -
processBuffer
private double[] processBufferintermediate processing buffer, same size with imgBuffer. -
sphereDiameter
private float sphereDiameterkernel diameter. -
maskImage
Used in geodesic dilation, geodesic erosion, morphological reconstruction by dilation, and morphological reconstruction by erosion Not used in opening by reconstruction and closing by reconstruction -
geodesicSize
private int geodesicSizeSize of geodesic erosions and dilations
-
-
Constructor Details
-
AlgorithmGrayScaleMorphology3D
public AlgorithmGrayScaleMorphology3D(ModelImage srcImg, int kernelType, float sphereDiameter, int method, int iterD, int iterE, int pruningPix, int edType, boolean entireImage) Creates a new AlgorithmMorphology3D object.- Parameters:
srcImg- source image modelkernelType- kernel size (i.e. connectedness)sphereDiameter- only valid if kernelType == SIZED_SPHERE and represents the width of a circle in the resolution of the imagemethod- setup the algorithm method (i.e. erode)iterD- number of times to dilateiterE- number of times to erodepruningPix- the number of pixels to pruneedType- the type of edging to perform (inner or outer)entireImage- flag that indicates if the VOIs should NOT be used and entire image should be processed
-
AlgorithmGrayScaleMorphology3D
public AlgorithmGrayScaleMorphology3D(ModelImage srcImg, ModelImage destImg, int kernelType, float sphereDiameter, int method, int iterD, int iterE, int pruningPix, int edType, boolean entireImage) Creates a new AlgorithmMorphology3D object.- Parameters:
srcImg- source image modeldestImg- destination image modelkernelType- kernel size (i.e. connectedness)sphereDiameter- only valid if kernelType == SIZED_SPHERE and represents the width of a circle in the resolution of the imagemethod- setup the algorithm method (i.e. erode)iterD- number of times to dilateiterE- number of times to erodepruningPix- the number of pixels to pruneedType- the type of edging to perform (inner or outer)entireImage- flag that indicates if the VOIs should NOT be used and entire image should be processed
-
AlgorithmGrayScaleMorphology3D
public AlgorithmGrayScaleMorphology3D(ModelImage srcImg, ModelImage destImg, ModelImage maskImage, int kernelType, float sphereDiameter, int method, int geodesicSize, int iterD, int iterE, boolean entireImage) Creates a new AlgorithmGrayScaleMorphology3D object.- Parameters:
srcImg- source image modelkernelType- dilation kernel size (i.e. connectedness)sphereDiameter- dilation only valid if kernelType == SIZED_SPHERE and represents the width of a circle in the resolution of the imagemethod- setup the algorithm method (i.e. erode, dilate)geodesicSize-iterD- number of times to dilateiterE- number of times to erodeentireImage- if true, indicates that the VOIs should NOT be used and that entire image should be processed
-
-
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
-
setAlgorithm
public void setAlgorithm(int method) Sets the algorithm type (i.e. erode, dilate)- Parameters:
method- algorithm type
-
setImage
Sets new source image.- Parameters:
img- image model
-
setKernel
Sets user defined square kernels.- Parameters:
kernel- user defined kerneldimXY- length of x and y dimensionsdimZ- length of z dimension
-
setMinMax
public void setMinMax(int _min, int _max) Sets the bounds of object size used to delete objects.- Parameters:
_min- minimum size of objects_max- maximum size of objects
-
setPixDistance
public void setPixDistance(float dist) Used in the ultimate erode function to remove all eroded points less than the distance specified in pixel units.- Parameters:
dist- distance in pixels.
-
showKernel
public void showKernel()Display kernel as 1 or 0 in the debug window. -
dilate
private void dilate(boolean returnFlag, int iters) Dilates an image using the indicated kernel and the indicated number of iterations. The grayscale dilation is the maximum value over the reflected kernel region. For symmetric kernels the reflected kernel is the same as the kernel.- Parameters:
returnFlag- if true then this operation is a step in the morph process (i.e. close)iters- number of dilation iterations
-
geodesicDilation
private void geodesicDilation(boolean returnFlag, int geodesicSize) geodesic dilation of a boolean, unsigned byte or unsigned short image using the indicated kernel and the indicated number of executions.- Parameters:
returnFlag- if true then this operation is a step in the morph process (i.e. close)geodesicSize-
-
geodesicErosion
private void geodesicErosion(boolean returnFlag, int geodesicSize) geodesic erosion of a boolean, unsigned byte or unsigned short image using the indicated kernel and the indicated number of executions.- Parameters:
returnFlag- if true then this operation is a step in the morph process (i.e. close)geodesicSize-
-
erode
private void erode(boolean returnFlag, int iters) Erodes an image using the indicated kernel and the indicated number of iterations. The grayscale erosion is the minimum value over the kernel region.- Parameters:
returnFlag- if true then this operation is a step in the morph process (i.e. open)iters- number of erosion iterations
-
makeKernel
private void makeKernel(int kernelType) Generates a kernel of the indicated type.- Parameters:
kernelType- type of kernel to be generated.
-
makeSphericalKernel
private void makeSphericalKernel()Generates a spherical kernel of a specific diameter. Most importantly it normalizes the kernel based on the resolution in the z-dimension. This in effect accounts for the anisotrophy in the z-dimension of typical 3D medical images. The resultant data is stored in the kernel class variable.
-