code: public void detect( II integral ) {
  		if( intensity == null ) {
  			intensity = new GrayF32[3];
  			for( int i = 0; i < intensity.length; i++ ) {
  				intensity[i] = new GrayF32(integral.width,integral.height);
  			}
  		}
  		foundPoints.reset();
  
  		// computes feature intensity every 'skip' pixels
  		int skip = initialSampleRate;
  		// increment between kernel sizes
  		int sizeStep = scaleStepSize;
  		// initial size of the kernel in the first octave
  		int octaveSize = initialSize;
  		for( int octave = 0; octave < numberOfOctaves; octave++ ) {
  			for( int i = 0; i < sizes.length; i++ ) {
  				sizes[i] = octaveSize + i*sizeStep;
  			}
  			// if the maximum kernel size is larger than the image don't process
  			// the image any more
  			int maxSize = sizes[sizes.length-1];
  			if( maxSize > integral.width || maxSize > integral.height )
  				break;
  			// detect features inside of this octave
  			detectOctave(integral,skip,sizes);
  			skip += skip;
  			octaveSize += sizeStep;
  			sizeStep += sizeStep;
  		}
  
  		// todo save previously computed sizes for reuse in higher octaves and reuse it
  	}
docs: Detect interest points inside of the image.
  
  @param integral Image transformed into an integral image.