Package gov.nih.mipav.model.algorithms
Class AlgorithmSplitAndMergeWatershed
- java.lang.Object
-
- java.lang.Thread
-
- gov.nih.mipav.model.algorithms.AlgorithmBase
-
- gov.nih.mipav.model.algorithms.AlgorithmSplitAndMergeWatershed
-
- All Implemented Interfaces:
java.awt.event.ActionListener
,java.awt.event.WindowListener
,java.lang.Runnable
,java.util.EventListener
public class AlgorithmSplitAndMergeWatershed extends AlgorithmBase
- Author:
- ilb Separate dark VOIs on a constant light background only works if you do lower completion first. Reference: 1.) Fast watershed algorithms: analysis and extensions by Bogdan P. Dobrin, Timo Viero, and Moncef Gabbouj. 2.) The Watershed Transform: Definitions, Algorithms, and Parallelization Strategies by Jos B.T.M. Roerdink and Arnold Meijster, Fundamentals Informaticae 41 (2001), pp. 187-228. 3.) Automated Sulcal Segmentation Using Watersheds on the Cortical Surface by Maryam E. Rettmann, Xiao Han, Chenyang Xu, and Jerry L. Prince, NeuroImage 15, 2002, Section Merging of Catchment Basins, p.338. Reference 2 makes the following criticism about this algorithm: 'Isolated' regions. When computing the watershed transform, regions in the image may arise which are completely surrounded by watershed pixels. In some implementations of watershed transforms by topographical distance, such regions may in fact become temporarily or permanently 'isolated'. This is a defect of the particular implementation, since, according to Corollary 3.1, watershed pixels should be propagated. Such 'problems' are often solved by ad hoc modifications of the implementation, which still do not correctly implement the definition.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
AlgorithmSplitAndMergeWatershed.indexValueComparator
private class
AlgorithmSplitAndMergeWatershed.indexValueItem
-
Field Summary
Fields Modifier and Type Field Description private int
binNumber
private boolean
createWatershedLines
private static int
INIT
private static int
INOQ
private boolean
limitBins
private boolean
merge
private double
mergeThreshold
private static int
NARM
private int
numNeighbor
private static int
PIAP
private static int
WSHED
-
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 AlgorithmSplitAndMergeWatershed(ModelImage destImage, ModelImage srcImage, int numNeighbor, boolean limitBins, int binNumber, boolean createWatershedLines, boolean merge, double mergeThreshold)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
runAlgorithm()
Actually runs the algorithm.void
runBW()
private void
runColor()
-
Methods inherited from class gov.nih.mipav.model.algorithms.AlgorithmBase
actionPerformed, addListener, addProgressChangeListener, calculateImageSize, calculatePrincipleAxis, computeElapsedTime, computeElapsedTime, convertIntoFloat, delinkProgressToAlgorithm, delinkProgressToAlgorithmMulti, displayError, errorCleanUp, finalize, 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
-
WSHED
private static final int WSHED
- See Also:
- Constant Field Values
-
NARM
private static final int NARM
- See Also:
- Constant Field Values
-
INOQ
private static final int INOQ
- See Also:
- Constant Field Values
-
INIT
private static final int INIT
- See Also:
- Constant Field Values
-
PIAP
private static final int PIAP
- See Also:
- Constant Field Values
-
numNeighbor
private int numNeighbor
-
limitBins
private boolean limitBins
-
binNumber
private int binNumber
-
createWatershedLines
private boolean createWatershedLines
-
merge
private boolean merge
-
mergeThreshold
private double mergeThreshold
-
-
Constructor Detail
-
AlgorithmSplitAndMergeWatershed
public AlgorithmSplitAndMergeWatershed(ModelImage destImage, ModelImage srcImage, int numNeighbor, boolean limitBins, int binNumber, boolean createWatershedLines, boolean merge, double mergeThreshold)
-
-
Method Detail
-
runAlgorithm
public void runAlgorithm()
Description copied from class:AlgorithmBase
Actually runs the algorithm. Implemented by inheriting algorithms.- Specified by:
runAlgorithm
in classAlgorithmBase
-
runBW
public void runBW()
-
runColor
private void runColor()
-
-