Class AlgorithmRegChamfer
java.lang.Object
java.lang.Thread
gov.nih.mipav.model.algorithms.AlgorithmBase
gov.nih.mipav.model.algorithms.registration.AlgorithmRegChamfer
- All Implemented Interfaces:
de.jtem.numericalMethods.calculus.function.RealFunctionOfSeveralVariables,ActionListener,WindowListener,Runnable,EventListener
public class AlgorithmRegChamfer
extends AlgorithmBase
implements de.jtem.numericalMethods.calculus.function.RealFunctionOfSeveralVariables
AlgorithmRegChamfer First slice is template (base image) to which match image is registered. Minimize cost, measures
distance between surfaces in base image and match image.
- Version:
- 1.0 April, 2000
- Author:
- Delia McGarry
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classClass for specifying optimization function for AlgorithmSimplexOpt.Nested classes/interfaces inherited from class java.lang.Thread
Thread.Builder, Thread.State, Thread.UncaughtExceptionHandler -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate float[]DOCUMENT ME!private intDOCUMENT ME!private ModelImageDOCUMENT ME!private booleanDOCUMENT ME!private AlgorithmRegChamfer.CostFunctionprivate booleanDOCUMENT ME!private ModelImageDOCUMENT ME!private WildMagic.LibFoundation.Mathematics.Vector3f[]DOCUMENT ME!private intDOCUMENT ME!private intDOCUMENT ME!private intDOCUMENT ME!private WildMagic.LibFoundation.Mathematics.Vector3f[]DOCUMENT ME!private TransMatrix[]DOCUMENT ME!private TransMatrixDOCUMENT ME!private intDOCUMENT ME!private ModelImageDOCUMENT ME!private intDOCUMENT ME!private intDOCUMENT ME!private floatDOCUMENT ME!private floatDOCUMENT ME!private intDOCUMENT ME!private intDOCUMENT ME!private floatDOCUMENT ME!private intDOCUMENT ME!private intDOCUMENT ME!private floatDOCUMENT ME!Fields inherited from class gov.nih.mipav.model.algorithms.AlgorithmBase
destFlag, destImage, 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
ConstructorsConstructorDescriptionAlgorithmRegChamfer(ModelImage base, ModelImage matchImage, boolean maskFlag) Constructs a new registration algorithm.AlgorithmRegChamfer(ModelImage volume25D, ModelImage edgeImg, boolean maskFlag, boolean image25D) Constructs new registration algorithm. -
Method Summary
Modifier and TypeMethodDescriptionprivate voidconcatenateMatrix(TransMatrix[] tMatrixMatchtoBase, int matchSlice) Concatenates the matrices.private voidChamfer matching: Distance transformation coverts binary surface image into grey-level image where each pixel's intensity = distance to nearest surface pixel.private voidChamfer matching: Distance transformation coverts binary surface image into grey-level image where each pixel's intensity = distance to nearest surface pixel.doubleeval(double[] x) voidfinalize()Prepares this class for destruction.private voidGenerates the coordinate list.private voidgenerateCoordList25D(int matchSlice) Generates the coordinate list 2.5 D.private intGets the number of match points.private intgetNumberMatchPts25D(int matchSlice) Get number of match points 2.5 D.intprivate voidgetTransformFromX(double[] x, TransMatrix xfrm) Converts row of p into 3x3 matrix.Accessor that returns the transformation from match to base.getTransformMatchtoBase(int sliceNum) Accessor that returns the transformation from match to base.private voidinitializeNelderMead(double[][] xi, double[] initialPoint) private floatmin(float[] x) Finds minimum sum under mask.voidStarts the algorithm.private voidsearch(TransMatrix xfrm) Search.static doubleSQR(double x) SQR = x^2.private voidtransform25DMatchSlice(int matchSlice, TransMatrix xfrm, float[] imgBuf, float[] tImgBuf) Transforms 2.5 D match slice.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
-
baseBuffer
private float[] baseBufferDOCUMENT ME! -
DIM
private int DIMDOCUMENT ME! -
entireImage
private boolean entireImageDOCUMENT ME! -
image25D
private boolean image25DDOCUMENT ME! -
match
DOCUMENT ME! -
volume25D
DOCUMENT ME! -
edgeImg
DOCUMENT ME! -
matchPts
private WildMagic.LibFoundation.Mathematics.Vector3f[] matchPtsDOCUMENT ME! -
N
private int NDOCUMENT ME! -
simplexDim
private int simplexDimDOCUMENT ME! -
TmatchPts
private WildMagic.LibFoundation.Mathematics.Vector3f[] TmatchPtsDOCUMENT ME! -
tMatrixMatchtoBase
DOCUMENT ME! -
tmpXfrm
DOCUMENT ME! -
volLength
private int volLengthDOCUMENT ME! -
sliceSize
private int sliceSizeDOCUMENT ME! -
xdimB
private int xdimBDOCUMENT ME! -
ydimB
private int ydimBDOCUMENT ME! -
zdimB
private int zdimBDOCUMENT ME! -
xdimM
private int xdimMDOCUMENT ME! -
ydimM
private int ydimMDOCUMENT ME! -
zdimM
private int zdimMDOCUMENT ME! -
xresB
private float xresBDOCUMENT ME! -
yresB
private float yresBDOCUMENT ME! -
zresB
private float zresBDOCUMENT ME! -
xresM
private float xresMDOCUMENT ME! -
func
-
-
Constructor Details
-
AlgorithmRegChamfer
Constructs a new registration algorithm.- Parameters:
base- binary, edge-extracted base imagematchImage- binary edge-extracted image to be transformedmaskFlag- flag indicating if the whole image should be processed
-
AlgorithmRegChamfer
public AlgorithmRegChamfer(ModelImage volume25D, ModelImage edgeImg, boolean maskFlag, boolean image25D) Constructs new registration algorithm.- Parameters:
volume25D- volume to be registerededgeImg- binary, edge-extracted version of volume25DmaskFlag- flag indicating whether to mask to image or notimage25D- volume processed as 2.5D, slices registered to adjacent slice
-
-
Method Details
-
SQR
public static double SQR(double x) SQR = x^2.- Parameters:
x- Number to square.- Returns:
- DOCUMENT ME!
-
finalize
public void finalize()Prepares this class for destruction.- Overrides:
finalizein classAlgorithmBase
-
getTransformMatchtoBase
Accessor that returns the transformation from match to base. For 2D or 3D.- Returns:
- Transformation.
-
getTransformMatchtoBase
Accessor that returns the transformation from match to base. For 2.5D.- Parameters:
sliceNum- Match slice.- Returns:
- Transformation.
-
runAlgorithm
public void runAlgorithm()Starts the algorithm.- Specified by:
runAlgorithmin classAlgorithmBase
-
concatenateMatrix
Concatenates the matrices.- Parameters:
tMatrixMatchtoBase- Array of matrices to concatenatematchSlice- Last slice to concatenate
-
distanceTransform
private void distanceTransform()Chamfer matching: Distance transformation coverts binary surface image into grey-level image where each pixel's intensity = distance to nearest surface pixel. -
distanceTransform25D
private void distanceTransform25D()Chamfer matching: Distance transformation coverts binary surface image into grey-level image where each pixel's intensity = distance to nearest surface pixel. -
generateCoordList
private void generateCoordList()Generates the coordinate list. -
generateCoordList25D
private void generateCoordList25D(int matchSlice) Generates the coordinate list 2.5 D.- Parameters:
matchSlice- Slice to match.
-
getNumberMatchPts
private int getNumberMatchPts()Gets the number of match points.- Returns:
- The number of match points.
-
getNumberMatchPts25D
private int getNumberMatchPts25D(int matchSlice) Get number of match points 2.5 D.- Parameters:
matchSlice- Slice to match.- Returns:
- Number of match points.
-
getTransformFromX
Converts row of p into 3x3 matrix.- Parameters:
x- row of p[][]xfrm- transformation matrix.
-
initializeNelderMead
private void initializeNelderMead(double[][] xi, double[] initialPoint) -
min
private float min(float[] x) Finds minimum sum under mask.- Parameters:
x- Array to find minimum of.- Returns:
- DOCUMENT ME!
-
search
Search.- Parameters:
xfrm- Transformation matrix.
-
transform25DMatchSlice
private void transform25DMatchSlice(int matchSlice, TransMatrix xfrm, float[] imgBuf, float[] tImgBuf) Transforms 2.5 D match slice.- Parameters:
matchSlice- Slice to matchxfrm- Transformation matriximgBuf- Image buffertImgBuf- Transformed image buffer
-
eval
public double eval(double[] x) - Specified by:
evalin interfacede.jtem.numericalMethods.calculus.function.RealFunctionOfSeveralVariables
-
getNumberOfVariables
public int getNumberOfVariables()- Specified by:
getNumberOfVariablesin interfacede.jtem.numericalMethods.calculus.function.RealFunctionOfSeveralVariables
-