Package gov.nih.mipav.model.algorithms
Class AlgorithmMorphology3D
- java.lang.Object
-
- java.lang.Thread
-
- gov.nih.mipav.model.algorithms.AlgorithmBase
-
- gov.nih.mipav.model.algorithms.AlgorithmMorphology3D
-
- All Implemented Interfaces:
java.awt.event.ActionListener,java.awt.event.WindowListener,java.lang.Runnable,java.util.EventListener
public class AlgorithmMorphology3D extends AlgorithmBase
Three-Dimensional mathmatical morphology class. Methods include:- Background Distance Map
- close
- Delete objects
- dilate
- Distance Map
- erode
- fill holes
- find edges
- Identify objects
- Morphological gradient
- open
- Particle Analysis
- Skeletonize with pruning option
- ultimate erode
- Border clearing
- Geodesic dilation
- Geodesic erosion
- Morphological reconstruction by dilation
- Morphological reconstruction by erosion
- Opening by reconstruction
- Closing by reconstruction
- Version:
- 1.0 Aug 1999
- Author:
- Matthew J. McAuliffe, Ph.D.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classAlgorithmMorphology3D.intObjectSimple class to temporarily store the object's size, ID and seed index value.
-
Field Summary
Fields Modifier and Type Field Description private intalgorithmalgorithm type (i.e. erode, dilate)static intBG_DISTANCE_MAPDOCUMENT ME!static intBORDER_CLEARINGstatic intCLOSEDOCUMENT ME!static intCLOSING_BY_RECONSTRUCTIONstatic intCONNECTED24DOCUMENT ME!static intCONNECTED26static intCONNECTED6DOCUMENT ME!static intDELETE_OBJECTSDOCUMENT ME!static intDILATEDOCUMENT ME!static intDISTANCE_MAPDOCUMENT ME!static intDISTANCE_MAP_FOR_SHAPE_INTERPOLATIONDOCUMENT ME!private float[]distanceMapDOCUMENT ME!private intedgingTypeEdge type.private booleanentireImageif true, indicates that the VOIs should NOT be used and that entire image should be processed.static intERODEDOCUMENT ME!static intFILL_HOLESDOCUMENT ME!static intFIND_EDGESDOCUMENT ME!static intGEODESIC_DILATIONstatic intGEODESIC_EROSIONprivate intgeodesicSizeSize of geodesic erosions and dilationsstatic intID_OBJECTSDOCUMENT ME!private short[]imgBufferimgBuffer that hold voxel value for the 3D slices.private short[]imgBuffer2static intINNER_EDGINGParameter used in Find_Edges.private intiterationsDDilation iteration times.private intiterationsEErosion iteration times.private intkDimXYKernel dimension.private intkDimZDOCUMENT ME!private java.util.BitSetkernelKernel for both erosion and dilation.private intkernelTypekernel size (i.e. connectedness)private short[]maskBufferprivate ModelImagemaskImageUsed in geodesic dilation, geodesic erosion, morphological reconstruction by dilation, and morphological reconstruction by erosion Not used in opening by reconstruction and closing by reconstructionprivate intmaxmaximum, minimum size of objects.private intminmaximum, minimum size of objects.static intMORPHOLOGICAL_GRADIENTstatic intMORPHOLOGICAL_RECONSTRUCTION_BY_DILATIONstatic intMORPHOLOGICAL_RECONSTRUCTION_BY_EROSIONprivate intnumPruningPixelsNumber pixels to prune.private java.util.Vector<AlgorithmMorphology3D.intObject>objectsVector that holding the current available objects in the 3D image.static intOPENDOCUMENT ME!static intOPENING_BY_RECONSTRUCTIONstatic intOUTER_EDGINGParameter used in Find_Edges.static intPARTICLE_ANALYSISDOCUMENT ME!private floatpixDistDOCUMENT ME!private short[]processBufferintermediate processing buffer, same size with imgBuffer.private booleanshowFrameNot used now.static intSIZED_SPHEREDOCUMENT ME!static intSKELETONIZEDOCUMENT ME!private floatsphereDiameterkernel diameter.private WildMagic.LibFoundation.Mathematics.Vector3f[]ultErodeObjectsDOCUMENT ME!static intULTIMATE_ERODEDOCUMENT 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, threadStopped
-
-
Constructor Summary
Constructors Constructor Description AlgorithmMorphology3D(ModelImage srcImg, int kernelType, float sphereDiameter, int method, int iterD, int iterE, int pruningPix, int edType, boolean entireImage)Creates a new AlgorithmMorphology3D object.AlgorithmMorphology3D(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.AlgorithmMorphology3D(ModelImage srcImg, ModelImage destImg, ModelImage maskImage, int kernelType, float sphereDiameter, int method, int geodesicSize, int iterD, int iterE, boolean entireImage)Creates a new AlgorithmMorphology3D object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidbackgroundDistanceMap(boolean returnFlag)Generates a Euclidian distance map of the background.private voidborderClearing(boolean returnFlag)Removes objects that touch (i.e., are connected to) the borderprivate voiddeleteObjects(int min, int max, boolean returnFlag)Deletes objects larger than maximum size indicated and objects smaller than the indicated minimum size.private voiddilate(boolean returnFlag, int iters)Dilates a boolean, unsigned byte, or unsigned short image using the indicated kernel and the indicated number of iterations.private voiddistanceMap(boolean returnFlag)Generates a Euclidian distance map.private voiddistanceMapForShapeInterpolation(boolean returnFlag)private voiderode(boolean returnFlag, int iters)Erodes a boolean, unsigned byte, or unsigned short image using the indicated kernel and the indicated number of iterations.private voidfillHoles(boolean returnFlag)Fill the holes inside the cell region blocks.private voidfillHolesRegion(int stIndex, short floodValue, short objValue)3D flood fill that fill the holes insize the cell region block.voidfinalize()Prepares this class for destruction.voidfindEdges(int edgeType, boolean returnFlag)Finds the edges of objects.private intfloodFill(short[] idBuffer, int stIndex, short floodValue, short objValue)3D flood fill that forms a short mask.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.voididentifyObjects(boolean returnFlag)Labels each object in an image with a different integer value.private booleanisEndpoint(int pix, short[] tmpBuffer)This method returns whether or not pix is the index of an endpoint in tmpBuffer (it is assumed that location pix is not the intensity of the background in tmpBuffer).private voidmakeKernel(int kernelType)Generates a kernel of the indicated type.private voidmakeSphericalKernel()Generates a spherical kernel of a specific diameter.private booleanonePixel(short[] buffer, int index, int sliceSize, int xDim)Used by ultimate erode to simplify code a little.private voidparticleAnalysis()Take a mask like image and performs an analysis.voidprune(int iter, boolean returnFlag)This method is to be applied on skeletonized images: it removes all branches which are iter or less pixels in length.voidrunAlgorithm()Starts the program.voidsetAlgorithm(int method)Sets the algorithm type (i.e. erode, dilate)voidsetImage(ModelImage img)Sets new source image.voidsetKernel(java.util.BitSet kernel, int dimXY, int dimZ)Sets 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.voidshowKernel()Display kernel as 1 or 0 in the debug window.voidskeletonize(int pruningPixels, boolean returnFlag)Skeletonizes the image by using a lookup table to repeatedly remove pixels from the edges of objects in a binary image, reducing them to single pixel wide skeletons.private intthin(int pass, int slice, int[] table)This a thinning algorithm used to do half of one layer of thinning (which layer is dictated by whether pass is even or odd).private voidultimateErode(boolean returnFlag)Erodes to a single point.-
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, windowOpened
-
Methods 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, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
-
-
-
-
Field Detail
-
ERODE
public static final int ERODE
DOCUMENT ME!- See Also:
- Constant Field Values
-
DILATE
public static final int DILATE
DOCUMENT ME!- See Also:
- Constant Field Values
-
CLOSE
public static final int CLOSE
DOCUMENT ME!- See Also:
- Constant Field Values
-
OPEN
public static final int OPEN
DOCUMENT ME!- See Also:
- Constant Field Values
-
ID_OBJECTS
public static final int ID_OBJECTS
DOCUMENT ME!- See Also:
- Constant Field Values
-
DELETE_OBJECTS
public static final int DELETE_OBJECTS
DOCUMENT ME!- See Also:
- Constant Field Values
-
DISTANCE_MAP
public static final int DISTANCE_MAP
DOCUMENT ME!- See Also:
- Constant Field Values
-
BG_DISTANCE_MAP
public static final int BG_DISTANCE_MAP
DOCUMENT ME!- See Also:
- Constant Field Values
-
ULTIMATE_ERODE
public static final int ULTIMATE_ERODE
DOCUMENT ME!- See Also:
- Constant Field Values
-
PARTICLE_ANALYSIS
public static final int PARTICLE_ANALYSIS
DOCUMENT ME!- See Also:
- Constant Field Values
-
SKELETONIZE
public static final int SKELETONIZE
DOCUMENT ME!- See Also:
- Constant Field Values
-
FIND_EDGES
public static final int FIND_EDGES
DOCUMENT ME!- See Also:
- Constant Field Values
-
FILL_HOLES
public static final int FILL_HOLES
DOCUMENT ME!- See Also:
- Constant Field Values
-
DISTANCE_MAP_FOR_SHAPE_INTERPOLATION
public static final int DISTANCE_MAP_FOR_SHAPE_INTERPOLATION
DOCUMENT ME!- See Also:
- Constant Field Values
-
MORPHOLOGICAL_GRADIENT
public static final int MORPHOLOGICAL_GRADIENT
- See Also:
- Constant Field Values
-
BORDER_CLEARING
public static final int BORDER_CLEARING
- See Also:
- Constant Field Values
-
GEODESIC_DILATION
public static final int GEODESIC_DILATION
- See Also:
- Constant Field Values
-
GEODESIC_EROSION
public static final int GEODESIC_EROSION
- See Also:
- Constant Field Values
-
MORPHOLOGICAL_RECONSTRUCTION_BY_DILATION
public static final int MORPHOLOGICAL_RECONSTRUCTION_BY_DILATION
- See Also:
- Constant Field Values
-
MORPHOLOGICAL_RECONSTRUCTION_BY_EROSION
public static final int MORPHOLOGICAL_RECONSTRUCTION_BY_EROSION
- See Also:
- Constant Field Values
-
OPENING_BY_RECONSTRUCTION
public static final int OPENING_BY_RECONSTRUCTION
- See Also:
- Constant Field Values
-
CLOSING_BY_RECONSTRUCTION
public static final int CLOSING_BY_RECONSTRUCTION
- See Also:
- Constant Field Values
-
SIZED_SPHERE
public static final int SIZED_SPHERE
DOCUMENT ME!- See Also:
- Constant Field Values
-
CONNECTED6
public static final int CONNECTED6
DOCUMENT ME!- See Also:
- Constant Field Values
-
CONNECTED24
public static final int CONNECTED24
DOCUMENT ME!- See Also:
- Constant Field Values
-
CONNECTED26
public static final int CONNECTED26
- See Also:
- Constant Field Values
-
OUTER_EDGING
public static final int OUTER_EDGING
Parameter used in Find_Edges. Indicates that the edge extracted is formed from the voxels that are directly adjacient to the ojbect.- See Also:
- Constant Field Values
-
INNER_EDGING
public static final int INNER_EDGING
Parameter used in Find_Edges. Indicates that the edge extracted is formed from the voxels that overlay the edge voxels of the object.- See Also:
- Constant Field Values
-
algorithm
private int algorithm
algorithm type (i.e. erode, dilate)
-
distanceMap
private float[] distanceMap
DOCUMENT ME!
-
edgingType
private int edgingType
Edge type.
-
entireImage
private boolean entireImage
if true, indicates that the VOIs should NOT be used and that entire image should be processed.
-
imgBuffer
private short[] imgBuffer
imgBuffer that hold voxel value for the 3D slices.
-
imgBuffer2
private short[] imgBuffer2
-
maskBuffer
private short[] maskBuffer
-
iterationsD
private final int iterationsD
Dilation iteration times.
-
iterationsE
private final int iterationsE
Erosion iteration times.
-
kDimXY
private int kDimXY
Kernel dimension.
-
kDimZ
private int kDimZ
DOCUMENT ME!
-
kernel
private java.util.BitSet kernel
Kernel for both erosion and dilation.
-
kernelType
private final int kernelType
kernel size (i.e. connectedness)
-
min
private int min
maximum, minimum size of objects.
-
max
private int max
maximum, minimum size of objects.
-
numPruningPixels
private int numPruningPixels
Number pixels to prune.
-
objects
private java.util.Vector<AlgorithmMorphology3D.intObject> objects
Vector that holding the current available objects in the 3D image.
-
pixDist
private float pixDist
DOCUMENT ME!
-
processBuffer
private short[] processBuffer
intermediate processing buffer, same size with imgBuffer.
-
showFrame
private final boolean showFrame
Not used now. Flag to show frame during each algorithm method call.- See Also:
- Constant Field Values
-
sphereDiameter
private float sphereDiameter
kernel diameter.
-
ultErodeObjects
private WildMagic.LibFoundation.Mathematics.Vector3f[] ultErodeObjects
DOCUMENT ME!
-
maskImage
private ModelImage 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 geodesicSize
Size of geodesic erosions and dilations
-
-
Constructor Detail
-
AlgorithmMorphology3D
public AlgorithmMorphology3D(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
-
AlgorithmMorphology3D
public AlgorithmMorphology3D(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
-
AlgorithmMorphology3D
public AlgorithmMorphology3D(ModelImage srcImg, ModelImage destImg, ModelImage maskImage, int kernelType, float sphereDiameter, int method, int geodesicSize, int iterD, int iterE, boolean entireImage)
Creates a new AlgorithmMorphology3D object.- Parameters:
srcImg- source image modelkernelType- dilation kernel size (i.e. connectedness)circleDiameter- dilation only valid if kernelType == SIZED_CIRCLE 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 Detail
-
finalize
public void finalize()
Prepares this class for destruction.- Overrides:
finalizein classAlgorithmBase
-
findEdges
public void findEdges(int edgeType, boolean returnFlag)Finds the edges of objects.- Parameters:
edgeType- Indicates that the edge extracted is formed from the voxels that are directly adjacient to the ojbect or from the voxels that overlay the edge voxels of the object.returnFlag- if true then this operation is a step in the morph process (i.e. close) see OUTER_EDGING see INNER_EDGE
-
identifyObjects
public void identifyObjects(boolean returnFlag)
Labels each object in an image with a different integer value.- Parameters:
returnFlag- if true then this operation is a step in the morph process (i.e. close)
-
prune
public void prune(int iter, boolean returnFlag)This method is to be applied on skeletonized images: it removes all branches which are iter or less pixels in length.- Parameters:
iter- the threshold number of pixels for the maximum length of a removed branch to bereturnFlag- if true then this operation is a step in the morph process (i.e. close)
-
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
public void setImage(ModelImage img)
Sets new source image.- Parameters:
img- image model
-
setKernel
public void setKernel(java.util.BitSet kernel, int dimXY, int dimZ)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.
-
skeletonize
public void skeletonize(int pruningPixels, boolean returnFlag)Skeletonizes the image by using a lookup table to repeatedly remove pixels from the edges of objects in a binary image, reducing them to single pixel wide skeletons. Based on a thinning algorithm by Zhang and Suen. There is an entry in the table for each of the 256 possible 3x3 neighborhood configurations. An entry of '1' signifies to delete the indicated pixel on the first pass, '2' means to delete the indicated pixel on the second pass, and '3' indicates to delete the pixel on either pass.- Parameters:
pruningPixels- the number of pixels to prune after skeletonizing. (should be 0 if no pruning is to be done)returnFlag- if true then this operation is a step in the morph process (i.e. close)
-
distanceMapForShapeInterpolation
private void distanceMapForShapeInterpolation(boolean returnFlag)
-
backgroundDistanceMap
private void backgroundDistanceMap(boolean returnFlag)
Generates a Euclidian distance map of the background.- Parameters:
returnFlag- if true then this operation is a step in the morph process
-
deleteObjects
private void deleteObjects(int min, int max, boolean returnFlag)Deletes objects larger than maximum size indicated and objects smaller than the indicated minimum size.- Parameters:
min- delete all objects smaller than the minimum value (pixels)max- delete all objects greater than the maximum value (pixels)returnFlag- if true then this operation is a step in the morph process (i.e. close)
-
borderClearing
private void borderClearing(boolean returnFlag)
Removes objects that touch (i.e., are connected to) the border- Parameters:
returnFlag-
-
dilate
private void dilate(boolean returnFlag, int iters)Dilates a boolean, unsigned byte, or unsigned short image using the indicated kernel and the indicated number of iterations.- 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-
-
distanceMap
private void distanceMap(boolean returnFlag)
Generates a Euclidian distance map.- Parameters:
returnFlag- if true then this operation is a step in the morph process
-
erode
private void erode(boolean returnFlag, int iters)Erodes a boolean, unsigned byte, or unsigned short image using the indicated kernel and the indicated number of iterations.- Parameters:
returnFlag- if true then this operation is a step in the morph process (i.e. open)iters- number of erosion iterations
-
fillHoles
private void fillHoles(boolean returnFlag)
Fill the holes inside the cell region blocks.- Parameters:
returnFlag- if true then this operation is a step in the morph process (i.e. close)
-
fillHolesRegion
private void fillHolesRegion(int stIndex, short floodValue, short objValue)3D flood fill that fill the holes insize the cell region block.- Parameters:
stIndex- the starting index of the seed pointfloodValue- the value to flood the region withobjValue- object ID value that idenditifies the flood region.
-
floodFill
private int floodFill(short[] idBuffer, int stIndex, short floodValue, short objValue)3D flood fill that forms a short mask.- Parameters:
idBuffer- buffer to store flooding resultsstIndex- starting index indicating the starting location of the flood fillfloodValue- the value to flood the area withobjValue- DOCUMENT ME!- Returns:
- DOCUMENT ME!
-
isEndpoint
private boolean isEndpoint(int pix, short[] tmpBuffer)This method returns whether or not pix is the index of an endpoint in tmpBuffer (it is assumed that location pix is not the intensity of the background in tmpBuffer).- Parameters:
pix- the index of a non-zero pixel in tmpBuffertmpBuffer- the image- Returns:
- DOCUMENT ME!
-
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.
-
onePixel
private boolean onePixel(short[] buffer, int index, int sliceSize, int xDim)Used by ultimate erode to simplify code a little. Checks to find a single pixels in the 27 neighborhood.- Parameters:
buffer- input data bufferindex- index of interestsliceSize- number of voxels in the image planexDim- dimension of the image in the x direction- Returns:
- true if single pixel, false if not single pixel.
-
particleAnalysis
private void particleAnalysis()
Take a mask like image and performs an analysis.1. Deletes objects that are too small (noise) and objects that are too big 2. Ultimate erode and remove points that are too close 3. Watershed using ultimate eroded points as seed points and distance map. 4. Delete objects that are too small (noise) and objects that are too big
Ult erode & (bg dist map AND orig image) => watershed(ultErodePts, ANDED Bg Dist) => IDobjects
-
thin
private int thin(int pass, int slice, int[] table)This a thinning algorithm used to do half of one layer of thinning (which layer is dictated by whether pass is even or odd).- Parameters:
pass- the number pass this execution is on the imageslice- the slice number being worked on (starting with 0);table- the table to lookup whether to delete the pixel or let it stay.- Returns:
- DOCUMENT ME!
-
ultimateErode
private void ultimateErode(boolean returnFlag)
Erodes to a single point.- Parameters:
returnFlag- if true then this operation is a step in the morph process (i.e. open)
-
-