public void setMinMax ( final RandomAccessibleInterval< S > source, final Converter< S, FloatType > converter ) { final RandomAccessibleIntervalCursor< S > cursor = new RandomAccessibleIntervalCursor< S >( Views.isZeroMin( source ) ? source : Views.zeroMin( source ) ); final FloatType t = new FloatType(); if ( cursor.hasNext() ) { converter.convert( cursor.next(), t ); float min = t.get(); float max = min; while ( cursor.hasNext() ) { converter.convert( cursor.next(), t ); final float value = t.get(); if ( value < min ) min = value; if ( value > max ) max = value; } System.out.println("fmax = " + max ); System.out.println("fmin = " + min ); imageProcessor.setMinAndMax( min, max ); } } }
protected static <T extends RealType<T>> LabelRegion<String> createLabelRegion( final RandomAccessibleInterval<T> interval, final float min, final float max, long... dims) { if (dims == null || dims.length == 0) { dims = new long[interval.numDimensions()]; interval.dimensions(dims); } final ImgLabeling<String, IntType> labeling = new ImgLabeling<>(ArrayImgs.ints(dims)); final RandomAccess<LabelingType<String>> ra = labeling.randomAccess(); final RandomAccessibleIntervalCursor<T> c = new RandomAccessibleIntervalCursor<>(interval); final long[] pos = new long[labeling.numDimensions()]; while (c.hasNext()) { final T item = c.next(); final float value = item.getRealFloat(); if (value >= min && value <= max) { c.localize(pos); ra.setPosition(pos); ra.get().add("1"); } } final LabelRegions<String> labelRegions = new LabelRegions<>(labeling); return labelRegions.getLabelRegion("1"); } }