Package gov.nih.mipav.model.algorithms
Class AlgorithmMorphology2D
java.lang.Object
java.lang.Thread
gov.nih.mipav.model.algorithms.AlgorithmBase
gov.nih.mipav.model.algorithms.AlgorithmMorphology2D
- All Implemented Interfaces:
ActionListener,WindowListener,Runnable,EventListener
Two-Dimensional mathmatical morphology class. Kernels of 3x3 (4 or 8 connected) and 5x5 (12 connected) are available
or user defined kernels can be supplied.
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 March 15, 1998
- Author:
- Matthew J. McAuliffe, Ph.D.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classSimple class to temporarily store the object's size, ID and seed index value.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 intprivate floatkernel diameter.private floatErosion kernel diameter.static final intDOCUMENT ME!static final intstatic final intDOCUMENT ME!static final intDOCUMENT ME!static final intDOCUMENT ME!static final intstatic final intDOCUMENT ME!static final intDOCUMENT ME!static final intDOCUMENT ME!static final intDOCUMENT ME!private float[]DOCUMENT 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 short[]imgBuffer that hold pixel value for the 2D slice.private short[]static final intDOCUMENT ME!private intDilation iteration times.private intErosion iteration times.private intDOCUMENT ME!private intKernel dimension.private BitSetKernel for both erosion and dilation.private intkernel size (i.e. connectedness)private intErosion kernel type.private short[]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 intprivate intNumber pixels to prune.private Vector<AlgorithmMorphology2D.intObject> Vector that holding the current available objects in the 2D image.static final intDOCUMENT ME!static final intstatic final intDOCUMENT ME!static final intDOCUMENT ME!static final intDOCUMENT ME!private floatDOCUMENT ME!private short[]intermediate processing buffer, same size with imgBuffer.Vector that hold the prune seeding pixels.private booleanFlag to show frame during each algorithm method call.static final intDOCUMENT ME!static final intDOCUMENT ME!private Point[]DOCUMENT ME!static 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
ConstructorsConstructorDescriptionAlgorithmMorphology2D(ModelImage srcImg, int kernelType, float circleDiameter, int kernelTypeErode, float circleDiameterErode, int method, int iterErodeDilate, int iterE, int pruningPix, int edType, boolean entireImage, boolean _showFrame) Creates a new AlgorithmMorphology2D object.AlgorithmMorphology2D(ModelImage srcImg, int kernelType, float circleDiameter, int method, int iterD, int iterE, int pruningPix, int edType, boolean entireImage) Creates a new AlgorithmMorphology2D object.AlgorithmMorphology2D(ModelImage srcImg, ModelImage maskImage, int kernelType, float circleDiameter, int method, int geodesicSize, int iterD, int iterE, boolean entireImage, boolean _showFrame) Creates a new AlgorithmMorphology2D object. -
Method Summary
Modifier and TypeMethodDescriptionprivate voidbackgroundDistanceMap(boolean returnFlag) 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 executions.private voiddistanceMap(boolean returnFlag) Euclidian distance map.private voiddistanceMapForShapeInterpolation(boolean returnFlag) private voiderode(boolean returnFlag, int iters) Erodes a boolean or unsigned byte or unsigned short image using the indicated kernel and the indicated number of executions.private voidfillHoles(boolean returnFlag) Fill the holes inside the cell region blocks.private voidfillHolesRegion(int stIndex, short floodValue, short objValue) 2D flood fill that fill the holes insize the cell region block.voidfinalize()Prepares this class for destruction.private voidfindEdges(int edgingType, boolean returnFlag) Finds the edges of the objects in an image.private intfloodFill(short[] idBuffer, int stIndex, short floodValue, short objValue) 2D flood fill that forms a short mask.static final PolygongenContour(int xDimE, int yDimE, Point startPt, BitSet maskA) Static method that generates a boundary of a general object.static final PolygongenContour(short[] image, int xDim, int yDim, Point startPt, short objectValue) Static method that generates a boundary of a general object.static final PolygongenContour(ModelImage image, int xDim, int yDim, Point startPt) Static method that generates a boundary of a binary object.static final PolygongenContour(BitSet image, int xDim, int yDim, Point startPt) Static method that generates a boundary of a binary object.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 booleanisNeighbor(int index, int pixNeighbor) Check the neighbor pix.private booleanisSinglePoint(int index, short[] tmpBuffer) Check if the given pix is a single point or not.private voidmakeCircularKernel(float circDiameter) Generates a cicular kernel of a specific diameter.private voidmakeKernel(int kernelType) Generates a kernel of the indicated type.private booleanonePixel(short[] buffer, int index, int xDim) Used by ultimate erode to simplify code a little.private voidDOCUMENT ME!private voidparticleAnalysisNew(boolean returnFlag) particleAnalysis = Ult erode invalid input: '&' (bg dist map AND orig image) => watershed(ultErodePts, ANDED Bg Dist) => IDobjects.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.voidpruneAuto(boolean returnFlag) This method is to be applied on skeletonized images: it skeletonized each branches into a point.voidStarts the program.voidvoidvoidvoidsetAlgorithm(int method) Sets the algorithm type (i.e. erode, dilate)voidsetImage(ModelImage img) Sets the algorithm to new image of boolean type.voidsetIterations(int itersD, int itersE) Sets number of iterations for closing or opening.voidSets user defined square kernels.voidsetMinMax(int _min, int _max) Sets 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.voidsetShowFrame(boolean showFrame) DOCUMENT ME!voiddisplay 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[] 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) Ultimate erodes objects down to a single pixel (almost).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:
-
PARTICLE_ANALYSIS_NEW
public static final int PARTICLE_ANALYSIS_NEWDOCUMENT 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:
-
BORDER_CLEARING
public static final int BORDER_CLEARING- 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_CIRCLE
public static final int SIZED_CIRCLEDOCUMENT ME!- See Also:
-
CONNECTED4
public static final int CONNECTED4DOCUMENT ME!- See Also:
-
CONNECTED8
public static final int CONNECTED8DOCUMENT ME!- See Also:
-
CONNECTED12
public static final int CONNECTED12DOCUMENT ME!- See Also:
-
CONNECTED80
public static final int CONNECTED80- See Also:
-
OUTER_EDGING
public static final int OUTER_EDGINGDOCUMENT ME!- See Also:
-
INNER_EDGING
public static final int INNER_EDGINGDOCUMENT ME!- See Also:
-
algorithm
private int algorithmalgorithm type (i.e. erode, dilate) -
circleDiameter
private float circleDiameterkernel diameter. -
circleDiameterErode
private float circleDiameterErodeErosion kernel diameter. -
distanceMap
private float[] distanceMapDOCUMENT ME! -
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 short[] imgBufferimgBuffer that hold pixel value for the 2D slice. -
imgBuffer2
private short[] imgBuffer2 -
maskBuffer
private short[] maskBuffer -
iterationsD
private int iterationsDDilation iteration times. -
iterationsE
private int iterationsEErosion iteration times. -
iterationsErodeDilate
private int iterationsErodeDilateDOCUMENT ME! -
kDim
private int kDimKernel dimension. -
kernel
Kernel for both erosion and dilation. -
kernelType
private int kernelTypekernel size (i.e. connectedness) -
kernelTypeErode
private int kernelTypeErodeErosion kernel type. -
min
private int minmaximum, minimum size of objects. -
max
private int maxmaximum, minimum size of objects. -
numPruningPixels
private int numPruningPixelsNumber pixels to prune. -
objects
Vector that holding the current available objects in the 2D image. -
pixDist
private float pixDistDOCUMENT ME! -
processBuffer
private short[] processBufferintermediate processing buffer, same size with imgBuffer. -
pruneSeeds
Vector that hold the prune seeding pixels. -
showFrame
private boolean showFrameFlag to show frame during each algorithm method call. -
ultErodeObjects
DOCUMENT ME! -
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
-
AlgorithmMorphology2D
public AlgorithmMorphology2D(ModelImage srcImg, int kernelType, float circleDiameter, int method, int iterD, int iterE, int pruningPix, int edType, boolean entireImage) Creates a new AlgorithmMorphology2D object.- Parameters:
srcImg- source image modelkernelType- kernel size (i.e. connectedness)circleDiameter- 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)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- if true, indicates that the VOIs should NOT be used and that entire image should be processed
-
AlgorithmMorphology2D
public AlgorithmMorphology2D(ModelImage srcImg, int kernelType, float circleDiameter, int kernelTypeErode, float circleDiameterErode, int method, int iterErodeDilate, int iterE, int pruningPix, int edType, boolean entireImage, boolean _showFrame) Creates a new AlgorithmMorphology2D 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 imagekernelTypeErode- kernel size (i.e. connectedness) of erosioncircleDiameterErode- Erosion 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)iterErodeDilate- number of times to erode and dilateiterE- number of times to erodepruningPix- the number of pixels to pruneedType- the type of edging to perform (inner or outer)entireImage- if true, indicates that the VOIs should NOT be used and that entire image should be processed_showFrame- if true, indicates that show image frame after each algorithm be processed
-
AlgorithmMorphology2D
public AlgorithmMorphology2D(ModelImage srcImg, ModelImage maskImage, int kernelType, float circleDiameter, int method, int geodesicSize, int iterD, int iterE, boolean entireImage, boolean _showFrame) Creates a new AlgorithmMorphology2D 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_showFrame- if true, indicates that show image frame after each algorithm be processed
-
AlgorithmMorphology2D
public AlgorithmMorphology2D()
-
-
Method Details
-
runGeodesicDilationTest
public void runGeodesicDilationTest() -
runGeodesicErosionTest
public void runGeodesicErosionTest() -
runMorphologicalReconstructionByDilationTest
public void runMorphologicalReconstructionByDilationTest() -
genContour
Static method that generates a boundary of a binary object. (aka. turtle algorithm: if 1 turn left, step if 0 turn right, step)- Parameters:
image- input image where binary object is located.xDim- the x dimension of the imageyDim- the y dimension of the imagestartPt- starting point- Returns:
- returns boundary of the object as Polygon
-
genContour
Static method that generates a boundary of a binary object. (aka. turtle algorithm: if 1 turn left, step if 0 turn right, step)- Parameters:
image- input image (Boolean) where binary object is located.xDim- the x dimension of the imageyDim- the y dimension of the imagestartPt- starting point- Returns:
- returns boundary of the object as Polygon
-
genContour
Static method that generates a boundary of a general object. (aka. turtle algorithm: if 1 turn left, step if 0 turn right, step)- Parameters:
xDimE- the x dimension of the imageyDimE- the y dimension of the imagestartPt- starting pointmaskA- mask of the object- Returns:
- returns boundary of the object as Polygon
-
genContour
public static final Polygon genContour(short[] image, int xDim, int yDim, Point startPt, short objectValue) Static method that generates a boundary of a general object. (aka. turtle algorithm: if 1 turn left, step if 0 turn right, step)- Parameters:
image- input image where invalid input: '<'> object is located. xDim- the x dimension of the imageyDim- the y dimension of the imagestartPt- starting pointobjectValue- value of the object- Returns:
- returns boundary of the object as Polygon
-
finalize
public void finalize()Prepares this class for destruction.- Overrides:
finalizein classAlgorithmBase
-
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)
-
pruneAuto
public void pruneAuto(boolean returnFlag) This method is to be applied on skeletonized images: it skeletonized each branches into a point.- Parameters:
returnFlag- 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
Sets the algorithm to new image of boolean type.- Parameters:
img- image model of boolean type
-
setIterations
public void setIterations(int itersD, int itersE) Sets number of iterations for closing or opening.- Parameters:
itersD- number of dilationsitersE- number of erosions
-
setKernel
Sets user defined square kernels.- Parameters:
kernel- user defined kerneldim- length of one dimension (kernel should be square)
-
setMinMax
public void setMinMax(int _min, int _max) Sets 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. Default = 0 (i.e. do not remove any points)
-
setShowFrame
public void setShowFrame(boolean showFrame) DOCUMENT ME!- Parameters:
showFrame- DOCUMENT ME!
-
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) 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 executions.- Parameters:
returnFlag- if true then this operation is a step in the morph process (i.e. close)iters- number of dilations
-
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) 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 or 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. 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) 2D 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.
-
findEdges
private void findEdges(int edgingType, boolean returnFlag) Finds the edges of the objects in an image.- Parameters:
edgingType- DOCUMENT ME!returnFlag- if true then this operation is a step in the morph process (i.e. close)
-
floodFill
private int floodFill(short[] idBuffer, int stIndex, short floodValue, short objValue) 2D flood fill that forms a short mask.- Parameters:
idBuffer- buffer used to hold flood valuestIndex- the starting index of the seed pointfloodValue- the value to flood the region withobjValue- object ID value that idenditifies the flood region.- 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!
-
isNeighbor
private boolean isNeighbor(int index, int pixNeighbor) Check the neighbor pix.- Parameters:
index- pixel in centerpixNeighbor- neighbor pix- Returns:
- boolean is connected neighbor or not
-
isSinglePoint
private boolean isSinglePoint(int index, short[] tmpBuffer) Check if the given pix is a single point or not.- Parameters:
index- indextmpBuffer- short[]- Returns:
- boolean
-
makeCircularKernel
private void makeCircularKernel(float circDiameter) Generates a cicular kernel of a specific diameter.- Parameters:
circDiameter- represents the width of a circle in the resolution of the image
-
makeKernel
private void makeKernel(int kernelType) Generates a kernel of the indicated type.- Parameters:
kernelType- type of kernel to be generated.
-
onePixel
private boolean onePixel(short[] buffer, int index, int xDim) Used by ultimate erode to simplify code a little.- Parameters:
buffer- reference to the mask dataindex- pointer into the arrayxDim- the width of image- Returns:
- DOCUMENT ME!
-
particleAnalysis
private void particleAnalysis()DOCUMENT ME! -
particleAnalysisNew
private void particleAnalysisNew(boolean returnFlag) particleAnalysis = Ult erode invalid input: '&' (bg dist map AND orig image) => watershed(ultErodePts, ANDED Bg Dist) => IDobjects.- Parameters:
returnFlag- DOCUMENT ME!
-
thin
private int thin(int pass, 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 imagetable- the table to lookup whether to delete the pixel or let it stay.- Returns:
- DOCUMENT ME!
-
ultimateErode
private void ultimateErode(boolean returnFlag) Ultimate erodes objects down to a single pixel (almost). Sometimes depending on the shape of the object (bar bell) more than a single point. Most likely a good situation.- Parameters:
returnFlag- if true then this operation is a step in the morph process
-