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:
- java.awt.event.ActionListener,- java.awt.event.WindowListener,- java.lang.Runnable,- java.util.EventListener
 
 public class SIFTImageSimilarity extends AlgorithmBase 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description (package private) classSIFTImageSimilarity.DMatchprivate classSIFTImageSimilarity.DMatchComparatorprivate classSIFTImageSimilarity.KeyPointprivate classSIFTImageSimilarity.KeypointComparator
 - 
Field SummaryFields Modifier and Type Field Description private doubleassumed_blurprivate doubleDBL_EPSILONprivate java.util.Vector<java.util.Vector<java.lang.Double>>descriptors1private java.util.Vector<java.util.Vector<java.lang.Double>>descriptors2private intimage_border_widthprivate ModelImageimage1private ModelImageimage2private java.util.Vector<SIFTImageSimilarity.KeyPoint>keypoints1private java.util.Vector<SIFTImageSimilarity.KeyPoint>keypoints2private java.lang.StringlogFile(package private) java.util.logging.Loggerloggerprivate intNORM_L2private intnum_intervalsprivate doublesigmaprivate doubletolerance- 
Fields inherited from class gov.nih.mipav.model.algorithms.AlgorithmBasedestFlag, destImage, image25D, mask, maxProgressValue, minProgressValue, multiThreadingEnabled, nthreads, progress, progressModulus, progressStep, runningInSeparateThread, separable, srcImage, threadStopped
 
- 
 - 
Constructor SummaryConstructors Constructor Description SIFTImageSimilarity()SIFTImageSimilarity(ModelImage image1, ModelImage image2, double sigma, int num_intervals, double assumed_blur, int image_border_width, java.lang.String logFile)
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidbatchDistance(java.util.Vector<java.util.Vector<java.lang.Double>> src1, java.util.Vector<java.util.Vector<java.lang.Double>> src2, double[][] dist, int[][] nidx, int normType, int K, java.util.Vector<java.lang.Double> mask, int update, boolean crosscheck)private voidBatchDistInvoker(java.util.Vector<java.util.Vector<java.lang.Double>> src1, java.util.Vector<java.util.Vector<java.lang.Double>> src2, double[][] dist, int[][] nidx, int K, java.util.Vector<java.lang.Double> mask, int update)private double[]computeGradientAtCenterPixel(double[][][] pixel_array)private double[][]computeHessianAtCenterPixel(double[][][] pixel_array)voidcomputeKeypointsAndDescriptors(ModelImage image, boolean doimage1)private java.util.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 java.util.Vector<SIFTImageSimilarity.KeyPoint>convertKeypointsToInputImageSize(java.util.Vector<SIFTImageSimilarity.KeyPoint> keypoints)private java.util.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)private java.util.Vector<java.util.Vector<java.lang.Double>>generateDescriptors(java.util.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 java.util.Vector<SIFTImageSimilarity.KeyPoint>removeDuplicateKeypoints(java.util.Vector<SIFTImageSimilarity.KeyPoint> keypoints)voidrunAlgorithm()Actually runs the algorithm.private voidunpackOctave(int[] octave, int[] layer, double[] scale, SIFTImageSimilarity.KeyPoint keypoint)- 
Methods inherited from class gov.nih.mipav.model.algorithms.AlgorithmBaseactionPerformed, 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.ThreadactiveCount, 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- 
image1private ModelImage image1 
 - 
image2private ModelImage image2 
 - 
sigmaprivate double sigma 
 - 
num_intervalsprivate int num_intervals 
 - 
assumed_blurprivate double assumed_blur 
 - 
image_border_widthprivate int image_border_width 
 - 
toleranceprivate double tolerance 
 - 
logFileprivate java.lang.String logFile 
 - 
loggerjava.util.logging.Logger logger 
 - 
DBL_EPSILONprivate final double DBL_EPSILON - See Also:
- Constant Field Values
 
 - 
keypoints1private java.util.Vector<SIFTImageSimilarity.KeyPoint> keypoints1 
 - 
descriptors1private java.util.Vector<java.util.Vector<java.lang.Double>> descriptors1 
 - 
keypoints2private java.util.Vector<SIFTImageSimilarity.KeyPoint> keypoints2 
 - 
descriptors2private java.util.Vector<java.util.Vector<java.lang.Double>> descriptors2 
 - 
NORM_L2private final int NORM_L2 - See Also:
- Constant Field Values
 
 
- 
 - 
Constructor Detail- 
SIFTImageSimilaritypublic SIFTImageSimilarity() 
 - 
SIFTImageSimilaritypublic SIFTImageSimilarity(ModelImage image1, ModelImage image2, double sigma, int num_intervals, double assumed_blur, int image_border_width, java.lang.String logFile) 
 
- 
 - 
Method Detail- 
runAlgorithmpublic void runAlgorithm() Description copied from class:AlgorithmBaseActually runs the algorithm. Implemented by inheriting algorithms.- Specified by:
- runAlgorithmin class- AlgorithmBase
 
 - 
batchDistanceprivate void batchDistance(java.util.Vector<java.util.Vector<java.lang.Double>> src1, java.util.Vector<java.util.Vector<java.lang.Double>> src2, double[][] dist, int[][] nidx, int normType, int K, java.util.Vector<java.lang.Double> mask, int update, boolean crosscheck)
 - 
BatchDistInvokerprivate void BatchDistInvoker(java.util.Vector<java.util.Vector<java.lang.Double>> src1, java.util.Vector<java.util.Vector<java.lang.Double>> src2, double[][] dist, int[][] nidx, int K, java.util.Vector<java.lang.Double> mask, int update)
 - 
computeKeypointsAndDescriptorspublic void computeKeypointsAndDescriptors(ModelImage image, boolean doimage1) 
 - 
generateBaseImageprivate ModelImage generateBaseImage(ModelImage image, double sigma, double assumed_blur) 
 - 
computeNumberOfOctavesprivate int computeNumberOfOctaves(int[] image_shape) 
 - 
generateGaussianKernelsprivate double[] generateGaussianKernels(double sigma, int num_intervals)
 - 
generateGaussianImagesprivate ModelImage[][] generateGaussianImages(ModelImage image, int num_octaves, double[] gaussian_kernels) 
 - 
generateDoGImagesprivate ModelImage[][] generateDoGImages(ModelImage[][] gaussian_images) 
 - 
findScaleSpaceExtremaprivate java.util.Vector<SIFTImageSimilarity.KeyPoint> findScaleSpaceExtrema(ModelImage[][] gaussian_images, ModelImage[][] dog_images, int num_intervals, double sigma, int image_border_width, double contrast_threshold) 
 - 
isPixelAnExtremumprivate boolean isPixelAnExtremum(double[][][] subimages, double threshold)
 - 
localizeExtremumViaQuadraticFitprivate 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) 
 - 
computeGradientAtCenterPixelprivate double[] computeGradientAtCenterPixel(double[][][] pixel_array) 
 - 
computeHessianAtCenterPixelprivate double[][] computeHessianAtCenterPixel(double[][][] pixel_array) 
 - 
computeKeypointsWithOrientationsprivate java.util.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) 
 - 
removeDuplicateKeypointsprivate java.util.Vector<SIFTImageSimilarity.KeyPoint> removeDuplicateKeypoints(java.util.Vector<SIFTImageSimilarity.KeyPoint> keypoints) 
 - 
convertKeypointsToInputImageSizeprivate java.util.Vector<SIFTImageSimilarity.KeyPoint> convertKeypointsToInputImageSize(java.util.Vector<SIFTImageSimilarity.KeyPoint> keypoints) 
 - 
unpackOctaveprivate void unpackOctave(int[] octave, int[] layer, double[] scale, SIFTImageSimilarity.KeyPoint keypoint)
 - 
generateDescriptorsprivate java.util.Vector<java.util.Vector<java.lang.Double>> generateDescriptors(java.util.Vector<SIFTImageSimilarity.KeyPoint> keypoints, ModelImage[][] gaussian_images, int window_width, int num_bins, double scale_multiplier, double descriptor_max_value) 
 
- 
 
-