Package gov.nih.mipav.model.algorithms
Class TemporalBroxOpticalFlow
- java.lang.Object
-
- java.lang.Thread
-
- gov.nih.mipav.model.algorithms.AlgorithmBase
-
- gov.nih.mipav.model.algorithms.TemporalBroxOpticalFlow
-
- All Implemented Interfaces:
java.awt.event.ActionListener
,java.awt.event.WindowListener
,java.lang.Runnable
,java.util.EventListener
public class TemporalBroxOpticalFlow extends AlgorithmBase
-
-
Field Summary
Fields Modifier and Type Field Description private double
alpha
private ModelImage
destuImage
private ModelImage
destvImage
private double
EPSILON
private double
gamma
private double
GAUSSIAN_SIGMA
private int
initer
private int
MAXITER
private int
nscales
private int
outiter
private double
PAR_DEFAULT_ALPHA
private double
PAR_DEFAULT_GAMMA
private int
PAR_DEFAULT_INNER_ITER
private int
PAR_DEFAULT_NSCALES
private int
PAR_DEFAULT_OUTER_ITER
private double
PAR_DEFAULT_TOL
private boolean
PAR_DEFAULT_VERBOSE
private double
PAR_DEFAULT_ZFACTOR
private double
SOR_PARAMETER
private double
TOL
(package private) TVL1FLOW
tvl1
private boolean
verbose
private double
zfactor
-
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 TemporalBroxOpticalFlow()
TemporalBroxOpticalFlow(ModelImage destuImg, ModelImage destvImg, ModelImage srcImg, double alpha, double gamma, int nscales, double zfactor, double TOL, int inner_iter, int outer_iter, boolean verbose)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
brox_optic_flow(double[] I, double[] u, double[] v, int nx, int ny, int frames, double alpha, double gamma, double TOL, int inner_iter, int outer_iter, boolean verbose)
Compute the optic flow with the Brox temporal methodvoid
brox_optic_flow(double[] I, double[] u, double[] v, int nxx, int nyy, int frames, double alpha, double gamma, int nscales, double nu, double TOL, int inner_iter, int outer_iter, boolean verbose)
Multiscale approach for computing the optical flowvoid
divergence_u(double[] u, double[] v, double[] psi1, double[] psi2, double[] psi3, double[] psi4, double[] psi5, double[] psi6, double[] div_u, double[] div_v, int nx, int ny, int nz)
Compute the divergence of the optical flowvoid
Dxx(double[] I, double[] Ixx, int nx, int ny)
Compute the second order X derivativevoid
Dxy(double[] I, double[] Ixy, int nx, int ny)
Compute the second order XY derivativevoid
Dyy(double[] I, double[] Iyy, int nx, int ny)
Compute the second order Y derivativevoid
gaussian(double[] in, double[] out, int xdim, int ydim, double sigma, int bc, int precision)
Convolution with a Gaussianvoid
gaussian(double[] I, int xdim, int ydim, double sigma, int bc, int precision)
Convolution with a Gaussianvoid
getminmax(double[] min, double[] max, double[] x, int n)
Compute the max and min of an arrayvoid
gradient(double[] input, double[] dx, double[] dy, int nx, int ny)
Compute the gradient with central differencesvoid
gradient3(double[] input, double[] dx, double[] dy, double[] dz, int nx, int ny, int nz)
Compute the 3D gradient with central differencesvoid
image_normalization(double[] I, double[] In, int size)
Function to normalize the images between 0 and 255void
mask3x3(double[] input, double[] output, int nx, int ny, double[] mask)
Function to apply a 3x3 mask to an imagedouble
process_frame(double[] Au, double[] Av, double[] Du, double[] Dv, double[] D, double[] du, double[] dv, double alpha, double[] psi1, double[] psi2, double[] psi3, double[] psi4, double[] psi5, double[] psi6, int f, int nx, int ny, int df0, int df1)
Procedure to compute the motion increment in one framevoid
psi_data(double[] I1, double[] I2, double[] I2x, double[] I2y, double[] du, double[] dv, double[] psip, int size)
Compute the coefficients of the robust functional (data term)void
psi_divergence(double[] psi, double[] psi1, double[] psi2, double[] psi3, double[] psi4, double[] psi5, double[] psi6, int nx, int ny, int nz)
Compute the coefficients of the divergence termvoid
psi_gradient(double[] I1x, double[] I1y, double[] I2x, double[] I2y, double[] I2xx, double[] I2xy, double[] I2yy, double[] du, double[] dv, double[] psip, int size)
Compute the coefficients of the robust functional (gradient term)void
psi_smooth(double[] ux, double[] uy, double[] ut, double[] vx, double[] vy, double[] vt, double[] psi, int size)
Compute the coefficients of the robust functional (smoothness term)void
runAlgorithm()
Actually runs the algorithm.double
sor_iteration(double[] Au, double[] Av, double[] Du, double[] Dv, double[] D, double[] du, double[] dv, double alpha, double[] psi1, double[] psi2, double[] psi3, double[] psi4, double[] psi5, double[] psi6, int f, int df0, int df1, int i, int ny, int dy0, int dy1, int j, int nx, int dx0, int dx1)
SOR iteration in one position-
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
-
tvl1
TVL1FLOW tvl1
-
EPSILON
private final double EPSILON
- See Also:
- Constant Field Values
-
MAXITER
private final int MAXITER
- See Also:
- Constant Field Values
-
SOR_PARAMETER
private final double SOR_PARAMETER
- See Also:
- Constant Field Values
-
GAUSSIAN_SIGMA
private final double GAUSSIAN_SIGMA
- See Also:
- Constant Field Values
-
PAR_DEFAULT_ALPHA
private final double PAR_DEFAULT_ALPHA
- See Also:
- Constant Field Values
-
PAR_DEFAULT_GAMMA
private final double PAR_DEFAULT_GAMMA
- See Also:
- Constant Field Values
-
PAR_DEFAULT_NSCALES
private final int PAR_DEFAULT_NSCALES
- See Also:
- Constant Field Values
-
PAR_DEFAULT_ZFACTOR
private final double PAR_DEFAULT_ZFACTOR
- See Also:
- Constant Field Values
-
PAR_DEFAULT_TOL
private final double PAR_DEFAULT_TOL
- See Also:
- Constant Field Values
-
PAR_DEFAULT_INNER_ITER
private final int PAR_DEFAULT_INNER_ITER
- See Also:
- Constant Field Values
-
PAR_DEFAULT_OUTER_ITER
private final int PAR_DEFAULT_OUTER_ITER
- See Also:
- Constant Field Values
-
PAR_DEFAULT_VERBOSE
private final boolean PAR_DEFAULT_VERBOSE
- See Also:
- Constant Field Values
-
destuImage
private ModelImage destuImage
-
destvImage
private ModelImage destvImage
-
alpha
private double alpha
-
gamma
private double gamma
-
nscales
private int nscales
-
zfactor
private double zfactor
-
TOL
private double TOL
-
initer
private int initer
-
outiter
private int outiter
-
verbose
private boolean verbose
-
-
Constructor Detail
-
TemporalBroxOpticalFlow
public TemporalBroxOpticalFlow()
-
TemporalBroxOpticalFlow
public TemporalBroxOpticalFlow(ModelImage destuImg, ModelImage destvImg, ModelImage srcImg, double alpha, double gamma, int nscales, double zfactor, double TOL, int inner_iter, int outer_iter, boolean verbose)
-
-
Method Detail
-
runAlgorithm
public void runAlgorithm()
Description copied from class:AlgorithmBase
Actually runs the algorithm. Implemented by inheriting algorithms.- Specified by:
runAlgorithm
in classAlgorithmBase
-
gaussian
public void gaussian(double[] I, int xdim, int ydim, double sigma, int bc, int precision)
Convolution with a Gaussian
-
gaussian
public void gaussian(double[] in, double[] out, int xdim, int ydim, double sigma, int bc, int precision)
Convolution with a Gaussian
-
mask3x3
public void mask3x3(double[] input, double[] output, int nx, int ny, double[] mask)
Function to apply a 3x3 mask to an image
-
Dxx
public void Dxx(double[] I, double[] Ixx, int nx, int ny)
Compute the second order X derivative
-
Dyy
public void Dyy(double[] I, double[] Iyy, int nx, int ny)
Compute the second order Y derivative
-
Dxy
public void Dxy(double[] I, double[] Ixy, int nx, int ny)
Compute the second order XY derivative
-
gradient
public void gradient(double[] input, double[] dx, double[] dy, int nx, int ny)
Compute the gradient with central differences
-
gradient3
public void gradient3(double[] input, double[] dx, double[] dy, double[] dz, int nx, int ny, int nz)
Compute the 3D gradient with central differences
-
psi_divergence
public void psi_divergence(double[] psi, double[] psi1, double[] psi2, double[] psi3, double[] psi4, double[] psi5, double[] psi6, int nx, int ny, int nz)
Compute the coefficients of the divergence term
-
divergence_u
public void divergence_u(double[] u, double[] v, double[] psi1, double[] psi2, double[] psi3, double[] psi4, double[] psi5, double[] psi6, double[] div_u, double[] div_v, int nx, int ny, int nz)
Compute the divergence of the optical flow
-
psi_data
public void psi_data(double[] I1, double[] I2, double[] I2x, double[] I2y, double[] du, double[] dv, double[] psip, int size)
Compute the coefficients of the robust functional (data term)
-
psi_gradient
public void psi_gradient(double[] I1x, double[] I1y, double[] I2x, double[] I2y, double[] I2xx, double[] I2xy, double[] I2yy, double[] du, double[] dv, double[] psip, int size)
Compute the coefficients of the robust functional (gradient term)
-
psi_smooth
public void psi_smooth(double[] ux, double[] uy, double[] ut, double[] vx, double[] vy, double[] vt, double[] psi, int size)
Compute the coefficients of the robust functional (smoothness term)
-
sor_iteration
public double sor_iteration(double[] Au, double[] Av, double[] Du, double[] Dv, double[] D, double[] du, double[] dv, double alpha, double[] psi1, double[] psi2, double[] psi3, double[] psi4, double[] psi5, double[] psi6, int f, int df0, int df1, int i, int ny, int dy0, int dy1, int j, int nx, int dx0, int dx1)
SOR iteration in one position
-
process_frame
public double process_frame(double[] Au, double[] Av, double[] Du, double[] Dv, double[] D, double[] du, double[] dv, double alpha, double[] psi1, double[] psi2, double[] psi3, double[] psi4, double[] psi5, double[] psi6, int f, int nx, int ny, int df0, int df1)
Procedure to compute the motion increment in one frame
-
brox_optic_flow
public void brox_optic_flow(double[] I, double[] u, double[] v, int nx, int ny, int frames, double alpha, double gamma, double TOL, int inner_iter, int outer_iter, boolean verbose)
Compute the optic flow with the Brox temporal method
-
getminmax
public void getminmax(double[] min, double[] max, double[] x, int n)
Compute the max and min of an array
-
image_normalization
public void image_normalization(double[] I, double[] In, int size)
Function to normalize the images between 0 and 255
-
brox_optic_flow
public void brox_optic_flow(double[] I, double[] u, double[] v, int nxx, int nyy, int frames, double alpha, double gamma, int nscales, double nu, double TOL, int inner_iter, int outer_iter, boolean verbose)
Multiscale approach for computing the optical flow
-
-