Package gov.nih.mipav.model.algorithms
Class DiscreteSineTransform
java.lang.Object
java.lang.Thread
gov.nih.mipav.model.algorithms.AlgorithmBase
gov.nih.mipav.model.algorithms.DiscreteSineTransform
- All Implemented Interfaces:
ActionListener,WindowListener,Runnable,EventListener
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) classclassclassNested classes/interfaces inherited from class java.lang.Thread
Thread.Builder, Thread.State, Thread.UncaughtExceptionHandler -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intprivate static final intprivate static final int-------- DST (Discrete Sine Transform) / Inverse of DST -------- [definition]IDST (excluding scale) S[k] = sum_j=1^n A[j]*sin(pi*j*(k+1/2)/n), 0invalid input: '<'=kinvalid input: '<'n DST S[k] = sum_j=0^n-1 a[j]*sin(pi*(j+1/2)*k/n), 0invalid input: '<'kinvalid input: '<'=n [usage] ip[0] = 0; // first time only ddst(n, 1, a, ip, w); ip[0] = 0; // first time only ddst(n, -1, a, ip, w); [parameters] n :data length (int) n >= 2, n = power of 2 a[0...n-1] :input/output data (double *) input data a[j] = A[j], 0invalid input: '<'jinvalid input: '<'n a[0] = A[n] output data a[k] = S[k], 0invalid input: '<'=kinvalid input: '<'n output data a[k] = S[k], 0invalid input: '<'kinvalid input: '<'n a[0] = S[n] ip[0...*] :work area for bit reversal (int *) length of ip >= 2+sqrt(n/2) strictly, length of ip >= 2+(1invalid input: '<'invalid input: '<'(int)(log(n/2+0.5)/log(2))/2). static final intstatic final intstatic final intprivate intstatic final intprivate doubleprivate doubleprivate doubleprivate intprivate intstatic final intstatic final intprivate ModelImagestatic final intprivate booleanprivate static final intprivate static final intprivate doubleprivate intprivate ModelImageprivate 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
ConstructorsConstructorDescriptionDiscreteSineTransform(boolean multiProcessor) DiscreteSineTransform(ModelImage transformImage, ModelImage inverseImage, ModelImage srcImg, boolean multiProcessor, int constructionMethod, int filterType, double f1, double f2, int filterOrder, double epsilon, double rs) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidbitrv2(int n, int[] ip, double[] a) private voidbitrv208(double[] a) private voidbitrv208neg(double[] a) private voidbitrv216(double[] a) private voidbitrv216neg(double[] a) private voidbitrv2conj(int n, int[] ip, double[] a) private voidcftb040(double[] a) private voidcftb1st(int n, double[] a, double[] w) private voidcftbsub(int n, double[] a, int[] ip, int nw, double[] w) private voidcftf040(double[] a) private voidcftf081(double[] a, double[] w) private voidcftf082(double[] a, double[] w) private voidcftf161(double[] a, double[] w) private voidcftf162(double[] a, double[] w) private voidcftf1st(int n, double[] a, double[] w) private voidcftfsub(int n, double[] a, int[] ip, int nw, double[] w) private voidcftfx41(int n, double[] a, int nw, double[] w) private voidcftleaf(int n, int isplt, double[] a, int nw, double[] w) private voidcftmdl1(int n, double[] a, double[] w) private voidcftmdl2(int n, double[] a, double[] w) private voidcftrec4(int n, double[] a, int nw, double[] w) private voidcftrec4_th(int n, double[] a, int nw, double[] w) private intcfttree(int n, int j, int k, double[] a, int nw, double[] w) private voidcftx020(double[] a) private doubleChebyshev(int order, double w) voidddst(int n, int isgn, double[] a, int[] ip, double[] w) voidddst2D(int yDim, int xDim, double[][] src, double[][] dst, int isgn) private voiddstsub(int n, double[] a, int nc, double[] c) private doubleerrorcheck(int nini, int nend, double scale, double[] a) private voidmakeButterworthFilter(double[] buffer, double fr1, double fr2) DOCUMENT ME!private voidmakeChebyshevTypeIFilter(double[] buffer, double fr1, double fr2) private voidmakeChebyshevTypeIIFilter(double[] buffer, double fr1, double fr2) private voidmakect(int nc, int[] ip, double[] c) private voidmakeEllipticFilter(double[] buffer, double fr1, double fr2) private voidmakeGaussianFilter(double[] buffer, double rmsFreq) private voidmakeipt(int nw, int[] ip) private voidmakewt(int nw, int[] ip, double[] w) private voidputdata(int nini, int nend, double[] a) private voidrftbsub(int n, double[] a, int nc, double[] c) private voidrftfsub(int n, double[] a, int nc, double[] c) private doubleRND()voidActually runs the algorithm.voidtestddst(int n) voidtestRND(int n) 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
-
CDFT_THREADS_BEGIN_N
private static final int CDFT_THREADS_BEGIN_N-------- DST (Discrete Sine Transform) / Inverse of DST -------- [definition]IDST (excluding scale) S[k] = sum_j=1^n A[j]*sin(pi*j*(k+1/2)/n), 0invalid input: '<'=kinvalid input: '<'n DST S[k] = sum_j=0^n-1 a[j]*sin(pi*(j+1/2)*k/n), 0invalid input: '<'kinvalid input: '<'=n [usage] ip[0] = 0; // first time only ddst(n, 1, a, ip, w); ip[0] = 0; // first time only ddst(n, -1, a, ip, w); [parameters] n :data length (int) n >= 2, n = power of 2 a[0...n-1] :input/output data (double *) input data a[j] = A[j], 0invalid input: '<'jinvalid input: '<'n a[0] = A[n] output data a[k] = S[k], 0invalid input: '<'=kinvalid input: '<'n output data a[k] = S[k], 0invalid input: '<'kinvalid input: '<'n a[0] = S[n] ip[0...*] :work area for bit reversal (int *) length of ip >= 2+sqrt(n/2) strictly, length of ip >= 2+(1invalid input: '<'invalid input: '<'(int)(log(n/2+0.5)/log(2))/2). ip[0],ip[1] are pointers of the cos/sin table. w[0...n*5/4-1] :cos/sin table (double *) w[],ip[] are initialized if ip[0] == 0. [remark] Inverse of ddst(n, -1, a, ip, w); is a[0] *= 0.5; ddst(n, 1, a, ip, w); for (j = 0; j invalid input: '<'= n - 1; j++) { a[j] *= 2.0 / n; } - See Also:
-
CDFT_4THREADS_BEGIN_N
private static final int CDFT_4THREADS_BEGIN_N- See Also:
-
NMAX
private static final int NMAX- See Also:
-
NMAXSQRT
private static final int NMAXSQRT- See Also:
-
seed
private int seed -
multiProcessor
private boolean multiProcessor -
transformImage
-
inverseImage
-
xDim
private int xDim -
yDim
private int yDim -
constructionMethod
private int constructionMethod -
CONSTRUCTION_NONE
public static final int CONSTRUCTION_NONE- See Also:
-
GAUSSIAN
public static final int GAUSSIAN- See Also:
-
BUTTERWORTH
public static final int BUTTERWORTH- See Also:
-
CHEBYSHEV_TYPE_I
public static final int CHEBYSHEV_TYPE_I- See Also:
-
CHEBYSHEV_TYPE_II
public static final int CHEBYSHEV_TYPE_II- See Also:
-
ELLIPTIC
public static final int ELLIPTIC- See Also:
-
filterType
private int filterType -
f1
private double f1 -
f2
private double f2 -
LOWPASS
public static final int LOWPASS- See Also:
-
HIGHPASS
public static final int HIGHPASS- See Also:
-
BANDPASS
public static final int BANDPASS- See Also:
-
BANDSTOP
public static final int BANDSTOP- See Also:
-
filterOrder
private int filterOrder -
epsilon
private double epsilon -
rs
private double rs
-
-
Constructor Details
-
DiscreteSineTransform
public DiscreteSineTransform() -
DiscreteSineTransform
public DiscreteSineTransform(boolean multiProcessor) -
DiscreteSineTransform
public DiscreteSineTransform(ModelImage transformImage, ModelImage inverseImage, ModelImage srcImg, boolean multiProcessor, int constructionMethod, int filterType, double f1, double f2, int filterOrder, double epsilon, double rs)
-
-
Method Details
-
testddst
public void testddst(int n) -
putdata
private void putdata(int nini, int nend, double[] a) -
errorcheck
private double errorcheck(int nini, int nend, double scale, double[] a) -
RND
private double RND() -
testRND
public void testRND(int n) -
ddst2D
public void ddst2D(int yDim, int xDim, double[][] src, double[][] dst, int isgn) -
runAlgorithm
public void runAlgorithm()Description copied from class:AlgorithmBaseActually runs the algorithm. Implemented by inheriting algorithms.- Specified by:
runAlgorithmin classAlgorithmBase
-
ddst
public void ddst(int n, int isgn, double[] a, int[] ip, double[] w) -
cftfsub
private void cftfsub(int n, double[] a, int[] ip, int nw, double[] w) -
cftf040
private void cftf040(double[] a) -
bitrv208
private void bitrv208(double[] a) -
bitrv216
private void bitrv216(double[] a) -
bitrv2
private void bitrv2(int n, int[] ip, double[] a) -
cftf1st
private void cftf1st(int n, double[] a, double[] w) -
dstsub
private void dstsub(int n, double[] a, int nc, double[] c) -
makewt
private void makewt(int nw, int[] ip, double[] w) -
makeipt
private void makeipt(int nw, int[] ip) -
makect
private void makect(int nc, int[] ip, double[] c) -
rftbsub
private void rftbsub(int n, double[] a, int nc, double[] c) -
cftbsub
private void cftbsub(int n, double[] a, int[] ip, int nw, double[] w) -
cftx020
private void cftx020(double[] a) -
cftb040
private void cftb040(double[] a) -
bitrv208neg
private void bitrv208neg(double[] a) -
bitrv216neg
private void bitrv216neg(double[] a) -
bitrv2conj
private void bitrv2conj(int n, int[] ip, double[] a) -
cftfx41
private void cftfx41(int n, double[] a, int nw, double[] w) -
cftb1st
private void cftb1st(int n, double[] a, double[] w) -
cftrec4
private void cftrec4(int n, double[] a, int nw, double[] w) -
cfttree
private int cfttree(int n, int j, int k, double[] a, int nw, double[] w) -
cftmdl1
private void cftmdl1(int n, double[] a, double[] w) -
cftmdl2
private void cftmdl2(int n, double[] a, double[] w) -
cftleaf
private void cftleaf(int n, int isplt, double[] a, int nw, double[] w) -
cftf161
private void cftf161(double[] a, double[] w) -
cftf162
private void cftf162(double[] a, double[] w) -
cftf081
private void cftf081(double[] a, double[] w) -
cftf082
private void cftf082(double[] a, double[] w) -
rftfsub
private void rftfsub(int n, double[] a, int nc, double[] c) -
cftrec4_th
private void cftrec4_th(int n, double[] a, int nw, double[] w) -
makeGaussianFilter
private void makeGaussianFilter(double[] buffer, double rmsFreq) -
makeButterworthFilter
private void makeButterworthFilter(double[] buffer, double fr1, double fr2) DOCUMENT ME!- Parameters:
fr1- DOCUMENT ME!fr2- DOCUMENT ME!
-
makeEllipticFilter
private void makeEllipticFilter(double[] buffer, double fr1, double fr2) -
Chebyshev
private double Chebyshev(int order, double w) -
makeChebyshevTypeIFilter
private void makeChebyshevTypeIFilter(double[] buffer, double fr1, double fr2) -
makeChebyshevTypeIIFilter
private void makeChebyshevTypeIIFilter(double[] buffer, double fr1, double fr2)
-