Package gov.nih.mipav.model.algorithms
Class SIFTImageSimilarity
java.lang.Object
java.lang.Thread
gov.nih.mipav.model.algorithms.AlgorithmBase
gov.nih.mipav.model.algorithms.SIFTImageSimilarity
- All Implemented Interfaces:
ActionListener,WindowListener,Runnable,EventListener
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) classprivate classprivate classprivate classNested classes/interfaces inherited from class java.lang.Thread
Thread.Builder, Thread.State, Thread.UncaughtExceptionHandler -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleprivate final doubleprivate intprivate ModelImageprivate ModelImageprivate Vector<SIFTImageSimilarity.KeyPoint> private Vector<SIFTImageSimilarity.KeyPoint> private String(package private) Loggerprivate final intprivate intprivate doubleprivate doubleFields 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
ConstructorsConstructorDescriptionSIFTImageSimilarity(ModelImage image1, ModelImage image2, double sigma, int num_intervals, double assumed_blur, int image_border_width, String logFile) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidbatchDistance(Vector<Vector<Double>> src1, Vector<Vector<Double>> src2, double[][] dist, int[][] nidx, int normType, int K, Vector<Double> mask, int update, boolean crosscheck) private voidBatchDistInvoker(Vector<Vector<Double>> src1, Vector<Vector<Double>> src2, double[][] dist, int[][] nidx, int K, Vector<Double> mask, int update) private double[]computeGradientAtCenterPixel(double[][][] pixel_array) private double[][]computeHessianAtCenterPixel(double[][][] pixel_array) voidcomputeKeypointsAndDescriptors(ModelImage image, boolean doimage1) private Vector<SIFTImageSimilarity.KeyPoint> computeKeypointsWithOrientations(SIFTImageSimilarity.KeyPoint keypoint, int octave_index, ModelImage gaussian_image, double radius_factor, int num_bins, double peak_ratio, double scale_factor) private intcomputeNumberOfOctaves(int[] image_shape) private Vector<SIFTImageSimilarity.KeyPoint> private Vector<SIFTImageSimilarity.KeyPoint> findScaleSpaceExtrema(ModelImage[][] gaussian_images, ModelImage[][] dog_images, int num_intervals, double sigma, int image_border_width, double contrast_threshold) private ModelImagegenerateBaseImage(ModelImage image, double sigma, double assumed_blur) generateDescriptors(Vector<SIFTImageSimilarity.KeyPoint> keypoints, ModelImage[][] gaussian_images, int window_width, int num_bins, double scale_multiplier, double descriptor_max_value) private ModelImage[][]generateDoGImages(ModelImage[][] gaussian_images) private ModelImage[][]generateGaussianImages(ModelImage image, int num_octaves, double[] gaussian_kernels) private double[]generateGaussianKernels(double sigma, int num_intervals) private booleanisPixelAnExtremum(double[][][] subimages, double threshold) private SIFTImageSimilarity.KeyPointlocalizeExtremumViaQuadraticFit(int[] localized_image_index, int i, int j, int image_index, int octave_index, int num_intervals, ModelImage[] dog_images_in_octave, double sigma, double contrast_threshold, int image_border_width, double eigenvalue_ratio, int num_attempts_until_convergence) private Vector<SIFTImageSimilarity.KeyPoint> voidActually runs the algorithm.private voidunpackOctave(int[] octave, int[] layer, double[] scale, SIFTImageSimilarity.KeyPoint keypoint) 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
-
image1
-
image2
-
sigma
private double sigma -
num_intervals
private int num_intervals -
assumed_blur
private double assumed_blur -
image_border_width
private int image_border_width -
tolerance
private double tolerance -
logFile
-
logger
Logger logger -
DBL_EPSILON
private final double DBL_EPSILON- See Also:
-
keypoints1
-
descriptors1
-
keypoints2
-
descriptors2
-
NORM_L2
private final int NORM_L2- See Also:
-
-
Constructor Details
-
SIFTImageSimilarity
public SIFTImageSimilarity() -
SIFTImageSimilarity
public SIFTImageSimilarity(ModelImage image1, ModelImage image2, double sigma, int num_intervals, double assumed_blur, int image_border_width, String logFile)
-
-
Method Details
-
runAlgorithm
public void runAlgorithm()Description copied from class:AlgorithmBaseActually runs the algorithm. Implemented by inheriting algorithms.- Specified by:
runAlgorithmin classAlgorithmBase
-
batchDistance
-
BatchDistInvoker
-
computeKeypointsAndDescriptors
-
generateBaseImage
-
computeNumberOfOctaves
private int computeNumberOfOctaves(int[] image_shape) -
generateGaussianKernels
private double[] generateGaussianKernels(double sigma, int num_intervals) -
generateGaussianImages
private ModelImage[][] generateGaussianImages(ModelImage image, int num_octaves, double[] gaussian_kernels) -
generateDoGImages
-
findScaleSpaceExtrema
private Vector<SIFTImageSimilarity.KeyPoint> findScaleSpaceExtrema(ModelImage[][] gaussian_images, ModelImage[][] dog_images, int num_intervals, double sigma, int image_border_width, double contrast_threshold) -
isPixelAnExtremum
private boolean isPixelAnExtremum(double[][][] subimages, double threshold) -
localizeExtremumViaQuadraticFit
private SIFTImageSimilarity.KeyPoint localizeExtremumViaQuadraticFit(int[] localized_image_index, int i, int j, int image_index, int octave_index, int num_intervals, ModelImage[] dog_images_in_octave, double sigma, double contrast_threshold, int image_border_width, double eigenvalue_ratio, int num_attempts_until_convergence) -
computeGradientAtCenterPixel
private double[] computeGradientAtCenterPixel(double[][][] pixel_array) -
computeHessianAtCenterPixel
private double[][] computeHessianAtCenterPixel(double[][][] pixel_array) -
computeKeypointsWithOrientations
private Vector<SIFTImageSimilarity.KeyPoint> computeKeypointsWithOrientations(SIFTImageSimilarity.KeyPoint keypoint, int octave_index, ModelImage gaussian_image, double radius_factor, int num_bins, double peak_ratio, double scale_factor) -
removeDuplicateKeypoints
private Vector<SIFTImageSimilarity.KeyPoint> removeDuplicateKeypoints(Vector<SIFTImageSimilarity.KeyPoint> keypoints) -
convertKeypointsToInputImageSize
private Vector<SIFTImageSimilarity.KeyPoint> convertKeypointsToInputImageSize(Vector<SIFTImageSimilarity.KeyPoint> keypoints) -
unpackOctave
private void unpackOctave(int[] octave, int[] layer, double[] scale, SIFTImageSimilarity.KeyPoint keypoint) -
generateDescriptors
private Vector<Vector<Double>> generateDescriptors(Vector<SIFTImageSimilarity.KeyPoint> keypoints, ModelImage[][] gaussian_images, int window_width, int num_bins, double scale_multiplier, double descriptor_max_value)
-