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,java.awt.event.ActionListener,java.awt.event.WindowListener,java.lang.Runnable,java.util.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 Classes Modifier and Type Class Description private classAlgorithmRegChamfer.CostFunctionClass for specifying optimization function for AlgorithmSimplexOpt.
-
Field Summary
Fields Modifier and Type Field Description private float[]baseBufferDOCUMENT ME!private intDIMDOCUMENT ME!private ModelImageedgeImgDOCUMENT ME!private booleanentireImageDOCUMENT ME!private AlgorithmRegChamfer.CostFunctionfuncprivate booleanimage25DDOCUMENT ME!private ModelImagematchDOCUMENT ME!private WildMagic.LibFoundation.Mathematics.Vector3f[]matchPtsDOCUMENT ME!private intNDOCUMENT ME!private intsimplexDimDOCUMENT ME!private intsliceSizeDOCUMENT ME!private WildMagic.LibFoundation.Mathematics.Vector3f[]TmatchPtsDOCUMENT ME!private TransMatrix[]tMatrixMatchtoBaseDOCUMENT ME!private TransMatrixtmpXfrmDOCUMENT ME!private intvolLengthDOCUMENT ME!private ModelImagevolume25DDOCUMENT ME!private intxdimBDOCUMENT ME!private intxdimMDOCUMENT ME!private floatxresBDOCUMENT ME!private floatxresMDOCUMENT ME!private intydimBDOCUMENT ME!private intydimMDOCUMENT ME!private floatyresBDOCUMENT ME!private intzdimBDOCUMENT ME!private intzdimMDOCUMENT ME!private floatzresBDOCUMENT ME!-
Fields inherited from class gov.nih.mipav.model.algorithms.AlgorithmBase
destFlag, destImage, mask, maxProgressValue, minProgressValue, multiThreadingEnabled, nthreads, progress, progressModulus, progressStep, runningInSeparateThread, separable, srcImage, threadStopped
-
-
Constructor Summary
Constructors Constructor Description AlgorithmRegChamfer(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
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidconcatenateMatrix(TransMatrix[] tMatrixMatchtoBase, int matchSlice)Concatenates the matrices.private voiddistanceTransform()Chamfer matching: Distance transformation coverts binary surface image into grey-level image where each pixel's intensity = distance to nearest surface pixel.private voiddistanceTransform25D()Chamfer 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 voidgenerateCoordList()Generates the coordinate list.private voidgenerateCoordList25D(int matchSlice)Generates the coordinate list 2.5 D.private intgetNumberMatchPts()Gets the number of match points.private intgetNumberMatchPts25D(int matchSlice)Get number of match points 2.5 D.intgetNumberOfVariables()private voidgetTransformFromX(double[] x, TransMatrix xfrm)Converts row of p into 3x3 matrix.TransMatrixgetTransformMatchtoBase()Accessor that returns the transformation from match to base.TransMatrixgetTransformMatchtoBase(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.voidrunAlgorithm()Starts 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, 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
-
baseBuffer
private float[] baseBuffer
DOCUMENT ME!
-
DIM
private int DIM
DOCUMENT ME!
-
entireImage
private boolean entireImage
DOCUMENT ME!
-
image25D
private boolean image25D
DOCUMENT ME!
-
match
private ModelImage match
DOCUMENT ME!
-
volume25D
private ModelImage volume25D
DOCUMENT ME!
-
edgeImg
private ModelImage edgeImg
DOCUMENT ME!
-
matchPts
private WildMagic.LibFoundation.Mathematics.Vector3f[] matchPts
DOCUMENT ME!
-
N
private int N
DOCUMENT ME!
-
simplexDim
private int simplexDim
DOCUMENT ME!
-
TmatchPts
private WildMagic.LibFoundation.Mathematics.Vector3f[] TmatchPts
DOCUMENT ME!
-
tMatrixMatchtoBase
private TransMatrix[] tMatrixMatchtoBase
DOCUMENT ME!
-
tmpXfrm
private TransMatrix tmpXfrm
DOCUMENT ME!
-
volLength
private int volLength
DOCUMENT ME!
-
sliceSize
private int sliceSize
DOCUMENT ME!
-
xdimB
private int xdimB
DOCUMENT ME!
-
ydimB
private int ydimB
DOCUMENT ME!
-
zdimB
private int zdimB
DOCUMENT ME!
-
xdimM
private int xdimM
DOCUMENT ME!
-
ydimM
private int ydimM
DOCUMENT ME!
-
zdimM
private int zdimM
DOCUMENT ME!
-
xresB
private float xresB
DOCUMENT ME!
-
yresB
private float yresB
DOCUMENT ME!
-
zresB
private float zresB
DOCUMENT ME!
-
xresM
private float xresM
DOCUMENT ME!
-
func
private AlgorithmRegChamfer.CostFunction func
-
-
Constructor Detail
-
AlgorithmRegChamfer
public AlgorithmRegChamfer(ModelImage base, ModelImage matchImage, boolean maskFlag)
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 Detail
-
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
public TransMatrix getTransformMatchtoBase()
Accessor that returns the transformation from match to base. For 2D or 3D.- Returns:
- Transformation.
-
getTransformMatchtoBase
public TransMatrix getTransformMatchtoBase(int sliceNum)
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
private void concatenateMatrix(TransMatrix[] tMatrixMatchtoBase, int matchSlice)
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
private void getTransformFromX(double[] x, TransMatrix xfrm)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
private void search(TransMatrix xfrm)
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
-
-