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 class
AlgorithmRegChamfer.CostFunction
Class for specifying optimization function for AlgorithmSimplexOpt.
-
Field Summary
Fields Modifier and Type Field Description private float[]
baseBuffer
DOCUMENT ME!private int
DIM
DOCUMENT ME!private ModelImage
edgeImg
DOCUMENT ME!private boolean
entireImage
DOCUMENT ME!private AlgorithmRegChamfer.CostFunction
func
private boolean
image25D
DOCUMENT ME!private ModelImage
match
DOCUMENT ME!private WildMagic.LibFoundation.Mathematics.Vector3f[]
matchPts
DOCUMENT ME!private int
N
DOCUMENT ME!private int
simplexDim
DOCUMENT ME!private int
sliceSize
DOCUMENT ME!private WildMagic.LibFoundation.Mathematics.Vector3f[]
TmatchPts
DOCUMENT ME!private TransMatrix[]
tMatrixMatchtoBase
DOCUMENT ME!private TransMatrix
tmpXfrm
DOCUMENT ME!private int
volLength
DOCUMENT ME!private ModelImage
volume25D
DOCUMENT ME!private int
xdimB
DOCUMENT ME!private int
xdimM
DOCUMENT ME!private float
xresB
DOCUMENT ME!private float
xresM
DOCUMENT ME!private int
ydimB
DOCUMENT ME!private int
ydimM
DOCUMENT ME!private float
yresB
DOCUMENT ME!private int
zdimB
DOCUMENT ME!private int
zdimM
DOCUMENT ME!private float
zresB
DOCUMENT 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 void
concatenateMatrix(TransMatrix[] tMatrixMatchtoBase, int matchSlice)
Concatenates the matrices.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.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.double
eval(double[] x)
void
finalize()
Prepares this class for destruction.private void
generateCoordList()
Generates the coordinate list.private void
generateCoordList25D(int matchSlice)
Generates the coordinate list 2.5 D.private int
getNumberMatchPts()
Gets the number of match points.private int
getNumberMatchPts25D(int matchSlice)
Get number of match points 2.5 D.int
getNumberOfVariables()
private void
getTransformFromX(double[] x, TransMatrix xfrm)
Converts row of p into 3x3 matrix.TransMatrix
getTransformMatchtoBase()
Accessor that returns the transformation from match to base.TransMatrix
getTransformMatchtoBase(int sliceNum)
Accessor that returns the transformation from match to base.private void
initializeNelderMead(double[][] xi, double[] initialPoint)
private float
min(float[] x)
Finds minimum sum under mask.void
runAlgorithm()
Starts the algorithm.private void
search(TransMatrix xfrm)
Search.static double
SQR(double x)
SQR = x^2.private void
transform25DMatchSlice(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:
finalize
in 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:
runAlgorithm
in 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:
eval
in interfacede.jtem.numericalMethods.calculus.function.RealFunctionOfSeveralVariables
-
getNumberOfVariables
public int getNumberOfVariables()
- Specified by:
getNumberOfVariables
in interfacede.jtem.numericalMethods.calculus.function.RealFunctionOfSeveralVariables
-
-