public void process ( GrayF32 input ) { scaleSpace . initialize ( input ) ; detections . reset ( ) ; do { // scale from octave to input image pixelScaleToInput = scaleSpace . pixelScaleCurrentToInput ( ) ; // detect features in the image for ( int j = 1 ; j < scaleSpace . getNumScales ( ) + 1 ; j ++ ) { // not really sure how to compute the scale for features found at a particular DoG image // using the average resulted in less visually appealing circles in a test image sigmaLower = scaleSpace . computeSigmaScale ( j - 1 ) ; sigmaTarget = scaleSpace . computeSigmaScale ( j ) ; sigmaUpper = scaleSpace . computeSigmaScale ( j + 1 ) ; // grab the local DoG scale space images dogLower = scaleSpace . getDifferenceOfGaussian ( j - 1 ) ; dogTarget = scaleSpace . getDifferenceOfGaussian ( j ) ; dogUpper = scaleSpace . getDifferenceOfGaussian ( j + 1 ) ; detectFeatures ( j ) ; } } while ( scaleSpace . computeNextOctave ( ) ) ; }
Detects SIFT features inside the input image