public ArrayList< Point > getPeaks()
{
final ExecutorService service;
if ( executorService == null )
service = Executors.newFixedThreadPool( numThreads );
else
service = executorService;
dogImg = Util.getArrayOrCellImgFactory( interval, type ).create( interval );
final long[] translation = new long[ interval.numDimensions() ];
interval.min( translation );
dogImg = Views.translate( dogImg, translation );
final double[][] sigmas = DifferenceOfGaussian.computeSigmas( imageSigma, minf, pixelSize, sigmaSmaller, sigmaLarger );
DifferenceOfGaussian.DoG( sigmas[ 0 ], sigmas[ 1 ], input, dogImg, service );
final F val = type.createVariable();
final double minValueT = type.getMinValue();
final double maxValueT = type.getMaxValue();
final LocalNeighborhoodCheck< Point, F > localNeighborhoodCheck;
final double normalization = normalizeMinPeakValue ? ( sigmaLarger / sigmaSmaller - 1.0 ) : 1.0;
switch ( extremaType )
{
case MINIMA:
val.setReal( Math.max( Math.min( -minPeakValue * normalization, maxValueT ), minValueT ) );
localNeighborhoodCheck = new LocalExtrema.MinimumCheck<>( val );
break;
case MAXIMA:
default:
val.setReal( Math.max( Math.min( minPeakValue * normalization, maxValueT ), minValueT ) );
localNeighborhoodCheck = new LocalExtrema.MaximumCheck<>( val );