Package gov.nih.mipav.model.algorithms
Class AlgorithmTextureSegmentation
java.lang.Object
java.lang.Thread
gov.nih.mipav.model.algorithms.AlgorithmBase
gov.nih.mipav.model.algorithms.AlgorithmTextureSegmentation
- All Implemented Interfaces:
AlgorithmInterface,ActionListener,WindowListener,Runnable,EventListener
This software implements the factorization-based segmentation algorithm.
The original code was written in MATLAB and C by:
Jiangye Yuan
Computational Sciences and and Engineering Division
Oak Ridge National Laboratory, Oak Ridge, Tennessee 37831
yuanj@ornl.gov
Reference:
[1] J. Yuan and D. L. Wang. Factorization-based texture segmentation. Technical Report OSU-CISRC-1/13 -TR01, 2013.
The website for this code is:
https://sites.google.com/site/factorizationsegmentation/
This code was ported to Java by William Gandler
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Thread
Thread.Builder, Thread.State, Thread.UncaughtExceptionHandler -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intprivate BitSetprivate double[]private intprivate static final intprivate booleanprivate doubleprivate intprivate WildMagic.LibFoundation.Mathematics.Vector3f[]private booleanprivate intprivate intprivate intprivate intFields 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
ConstructorsConstructorDescriptionAlgorithmTextureSegmentation(ModelImage destImage, ModelImage srcImage, int windowSize, int segmentNumber, WildMagic.LibFoundation.Mathematics.Vector3f[] pt, BitSet contourMask, boolean nonNegativity, boolean removeSmallRegions) -
Method Summary
Modifier and TypeMethodDescriptionvoidalgorithmPerformed(AlgorithmBase algorithm) Called after an algorithm this listener is registered to exits (maybe successfully, maybe not).private voidexpand(int y, int x, int[] stk, int[][] segLabelLarge, int[][] segLabel, int labelN, int[] cnt, int[] tb, int[] bb, int[] lb, int[] rb, int tgt) private voidexpand2(int y, int x, int[] stk, int[] mark, int[][] segLabel, int labelN, int[] cnt, int[] tb, int[] bb, int[] lb, int[] rb, int tgt) private doublel2dist(double[] a, double[] b, int k) private voidRmSmRg(int[][] segLabelLarge, int[][] segLabel, int minSize) voidActually runs the algorithm.private voidSHcomp(double[][][] sh_mx, int ws, double[][][] Ig) private voidSHedge_ls(double[][] EdgeMap, int ws, int dism, double[][][] sh_mx) private doublex2dist(double[] a, double[] b, int k) 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, 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
-
filterOp
private static final int filterOp- See Also:
-
operationType
private int operationType -
filter
private double[] filter -
windowSize
private int windowSize -
segmentNumber
private int segmentNumber -
pt
private WildMagic.LibFoundation.Mathematics.Vector3f[] pt -
contourMask
-
nonNegativity
private boolean nonNegativity -
removeSmallRegions
private boolean removeSmallRegions -
omega
private double omega -
filterNumber
private int filterNumber -
binNumber
private int binNumber -
xDim
private int xDim -
yDim
private int yDim
-
-
Constructor Details
-
AlgorithmTextureSegmentation
public AlgorithmTextureSegmentation(ModelImage destImage, ModelImage srcImage, int windowSize, int segmentNumber, WildMagic.LibFoundation.Mathematics.Vector3f[] pt, BitSet contourMask, boolean nonNegativity, boolean removeSmallRegions)
-
-
Method Details
-
runAlgorithm
public void runAlgorithm()Description copied from class:AlgorithmBaseActually runs the algorithm. Implemented by inheriting algorithms.- Specified by:
runAlgorithmin classAlgorithmBase
-
RmSmRg
private void RmSmRg(int[][] segLabelLarge, int[][] segLabel, int minSize) -
expand
private void expand(int y, int x, int[] stk, int[][] segLabelLarge, int[][] segLabel, int labelN, int[] cnt, int[] tb, int[] bb, int[] lb, int[] rb, int tgt) -
expand2
private void expand2(int y, int x, int[] stk, int[] mark, int[][] segLabel, int labelN, int[] cnt, int[] tb, int[] bb, int[] lb, int[] rb, int tgt) -
SHedge_ls
private void SHedge_ls(double[][] EdgeMap, int ws, int dism, double[][][] sh_mx) -
x2dist
private double x2dist(double[] a, double[] b, int k) -
l2dist
private double l2dist(double[] a, double[] b, int k) -
SHcomp
private void SHcomp(double[][][] sh_mx, int ws, double[][][] Ig) -
algorithmPerformed
Description copied from interface:AlgorithmInterfaceCalled after an algorithm this listener is registered to exits (maybe successfully, maybe not). If the algorithm is run in a separate thread, this call will be made within that thread. If not, this call will be made from that same, shared thread.- Specified by:
algorithmPerformedin interfaceAlgorithmInterface- Parameters:
algorithm- the algorithm which has just completed
-