public void testShort() { final short[][] values = new short[][]{ new short[]{-3, -2, -1, 0, 1, 2, 3, 4}, new short[]{-2, 0, 2, 4}, new short[]{0, 1, 2} }; final boolean unsigned = false; final Histogram histogram = new Histogram(new int[6], -2, 3); for (int i = 0; i < values.length; i++) { histogram.aggregate(values[i], unsigned, IndexValidator.TRUE, ProgressMonitor.NULL); } final int[] exp = new int[]{2, 1, 3, 2, 3, 1}; assertEquals("", equal(exp, histogram.getBinCounts())); }
if (values instanceof byte[]) { if (unsigned) { histogram = computeHistogramUByte((byte[]) values, validator, numBins, range, histogram, pm); } else { histogram = computeHistogramByte((byte[]) values, validator, numBins, range, histogram, pm); histogram = computeHistogramUShort((short[]) values, validator, numBins, range, histogram, pm); } else { histogram = computeHistogramShort((short[]) values, validator, numBins, range, histogram, pm); histogram = computeHistogramUInt((int[]) values, validator, numBins, range, histogram, pm); } else { histogram = computeHistogramInt((int[]) values, validator, numBins, range, histogram, pm); histogram = computeHistogramFloat((float[]) values, validator, numBins, range, histogram, pm); } else if (values instanceof double[]) { histogram = computeHistogramDouble((double[]) values, validator, numBins, range, histogram, pm); } else if (values instanceof DoubleList) { histogram = computeHistogramDouble((DoubleList) values, validator, numBins, range, histogram, pm); } else if (values == null) { throw new IllegalArgumentException("values is null");
@Override public void aggregate(final Object values, boolean unsigned, final IndexValidator validator, ProgressMonitor pm) { Guardian.assertNotNull("validator", validator); final Histogram histogram = computeHistogramGeneric(values, unsigned, validator, getNumBins(), new Range(getMin(), getMax()), null, pm); final int[] newCounts = histogram.getBinCounts(); final int[] thisCounts = getBinCounts(); for (int i = 0; i < thisCounts.length; i++) { thisCounts[i] += newCounts[i]; } updateBinCountSumAndBinCountMax(); }
public static Histogram computeHistogram(RenderedImage image, ROI roi, int numBins, Range range) { final double min = range.getMin(); final double max = range.getMax(); Histogram histogram; if (min < max) { final RenderedOp histogramOp = HistogramDescriptor.create(image, roi, 1, 1, new int[]{numBins}, new double[]{min}, new double[]{max}, null); histogram = getBeamHistogram(histogramOp); } else { final long imageSize = (long) image.getWidth() * image.getHeight(); final int numPixels = (int) Math.min(Integer.MAX_VALUE, imageSize); histogram = new Histogram(new int[]{numPixels} , min, min); } return histogram; }
Histogram histo = Histogram.computeHistogramByte(data, IndexValidator.TRUE, 5, null, null, ProgressMonitor.NULL); assertEquals(-120, histo.getMin(), 1e-10); assertEquals(122, histo.getMax(), 1e-10); assertEquals(3, histo.getBinIndex(40.0)); assertEquals(11, histo.getMaxBinCount()); assertEquals(5, histo.getNumBins()); int[] binValues = histo.getBinCounts(); assertEquals(1, binValues[0]); assertEquals(0, binValues[1]); assertEquals(16, histo.getBinCountsSum()); histo = Histogram.computeHistogramByte(data, validator, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(4, histo.getMaxBinCount()); assertEquals(-10, histo.getMin(), 1e-10); assertEquals(40, histo.getMax(), 1e-10); binValues = histo.getBinCounts(); assertEquals(3, binValues[0]); assertEquals(4, binValues[1]); assertEquals(8, histo.getBinCountsSum()); histo = Histogram.computeHistogramByte(data, IndexValidator.TRUE, 5, histo, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins());
Histogram histo = Histogram.computeHistogramInt(data, IndexValidator.TRUE, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(11, histo.getMaxBinCount()); assertEquals(-120, histo.getMin(), 1e-10); assertEquals(122, histo.getMax(), 1e-10); int[] binValues = histo.getBinCounts(); assertEquals(1, binValues[0]); assertEquals(0, binValues[1]); assertEquals(16, histo.getBinCountsSum()); histo = Histogram.computeHistogramInt(data, validator, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(4, histo.getMaxBinCount()); assertEquals(-10, histo.getMin(), 1e-10); assertEquals(40, histo.getMax(), 1e-10); binValues = histo.getBinCounts(); assertEquals(3, binValues[0]); assertEquals(4, binValues[1]); assertEquals(8, histo.getBinCountsSum()); histo = Histogram.computeHistogramInt(data, IndexValidator.TRUE, 5, histo, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(6, histo.getMaxBinCount()); assertEquals(-10, histo.getMin(), 1e-10);
Histogram histo = Histogram.computeHistogramDouble(data, IndexValidator.TRUE, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(11, histo.getMaxBinCount()); assertEquals(-120, histo.getMin(), 1e-10); assertEquals(122, histo.getMax(), 1e-10); int[] binValues = histo.getBinCounts(); assertEquals(1, binValues[0]); assertEquals(0, binValues[1]); assertEquals(16, histo.getBinCountsSum()); histo = Histogram.computeHistogramDouble(data, validator, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(4, histo.getMaxBinCount()); assertEquals(-10, histo.getMin(), 1e-10); assertEquals(40, histo.getMax(), 1e-10); binValues = histo.getBinCounts(); assertEquals(3, binValues[0]); assertEquals(4, binValues[1]); assertEquals(8, histo.getBinCountsSum()); histo = Histogram.computeHistogramDouble(data, IndexValidator.TRUE, 5, histo, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(6, histo.getMaxBinCount());
Histogram histo = Histogram.computeHistogramShort(data, IndexValidator.TRUE, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(11, histo.getMaxBinCount()); assertEquals(-120, histo.getMin(), 1e-10); assertEquals(122, histo.getMax(), 1e-10); int[] binValues = histo.getBinCounts(); assertEquals(1, binValues[0]); assertEquals(0, binValues[1]); assertEquals(16, histo.getBinCountsSum()); histo = Histogram.computeHistogramShort(data, validator, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(4, histo.getMaxBinCount()); assertEquals(-10, histo.getMin(), 1e-10); assertEquals(40, histo.getMax(), 1e-10); binValues = histo.getBinCounts(); assertEquals(3, binValues[0]); assertEquals(4, binValues[1]); assertEquals(8, histo.getBinCountsSum()); histo = Histogram.computeHistogramShort(data, IndexValidator.TRUE, 5, histo, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(6, histo.getMaxBinCount());
Histogram histo = Histogram.computeHistogramFloat(data, IndexValidator.TRUE, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(11, histo.getMaxBinCount()); assertEquals(-120, histo.getMin(), 1e-10); assertEquals(122, histo.getMax(), 1e-10); int[] binValues = histo.getBinCounts(); assertEquals(1, binValues[0]); assertEquals(0, binValues[1]); assertEquals(16, histo.getBinCountsSum()); histo = Histogram.computeHistogramFloat(data, validator, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(4, histo.getMaxBinCount()); assertEquals(-10, histo.getMin(), 1e-10); assertEquals(40, histo.getMax(), 1e-10); binValues = histo.getBinCounts(); assertEquals(3, binValues[0]); assertEquals(4, binValues[1]); assertEquals(8, histo.getBinCountsSum()); histo = Histogram.computeHistogramFloat(data, IndexValidator.TRUE, 5, histo, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(6, histo.getMaxBinCount());
Histogram histo = Histogram.computeHistogramUByte(data, IndexValidator.TRUE, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(8, histo.getMaxBinCount()); assertEquals(1, histo.getMin(), 1e-10); int[] binValues = histo.getBinCounts(); assertEquals(8, binValues[0]); assertEquals(0, binValues[1]); assertEquals(16, histo.getBinCountsSum()); histo = Histogram.computeHistogramUByte(data, validator, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(5, histo.getMaxBinCount()); assertEquals(5, histo.getMin(), 1e-10); assertEquals(253, histo.getMax(), 1e-10); binValues = histo.getBinCounts(); assertEquals(5, binValues[0]); assertEquals(0, binValues[1]); assertEquals(8, histo.getBinCountsSum()); histo = Histogram.computeHistogramUByte(data, IndexValidator.TRUE, 5, new Range(5, 250), null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(6, histo.getMaxBinCount());
Histogram histo = Histogram.computeHistogramUShort(data, IndexValidator.TRUE, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(11, histo.getMaxBinCount()); assertEquals(1, histo.getMin(), 1e-10); assertEquals(65533, histo.getMax(), 1e-10); int[] binValues = histo.getBinCounts(); assertEquals(11, binValues[0]); assertEquals(0, binValues[1]); assertEquals(16, histo.getBinCountsSum()); histo = Histogram.computeHistogramUShort(data, validator, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(5, histo.getMaxBinCount()); assertEquals(5, histo.getMin(), 1e-10); assertEquals(65533, histo.getMax(), 1e-10); binValues = histo.getBinCounts(); assertEquals(5, binValues[0]); assertEquals(0, binValues[1]); assertEquals(8, histo.getBinCountsSum()); histo = Histogram.computeHistogramUShort(data, IndexValidator.TRUE, 5, new Range(5, 250), null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins());
Histogram histo = Histogram.computeHistogramUInt(data, IndexValidator.TRUE, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(11, histo.getMaxBinCount()); assertEquals(1, histo.getMin(), 1e-10); assertEquals(4294967293L, histo.getMax(), 1e-10); int[] binValues = histo.getBinCounts(); assertEquals(11, binValues[0]); assertEquals(0, binValues[1]); assertEquals(16, histo.getBinCountsSum()); histo = Histogram.computeHistogramUInt(data, validator, 5, null, null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins()); assertEquals(5, histo.getMaxBinCount()); assertEquals(5, histo.getMin(), 1e-10); assertEquals(4294967293L, histo.getMax(), 1e-10); binValues = histo.getBinCounts(); assertEquals(5, binValues[0]); assertEquals(0, binValues[1]); assertEquals(8, histo.getBinCountsSum()); histo = Histogram.computeHistogramUInt(data, IndexValidator.TRUE, 5, new Range(5, 250), null, ProgressMonitor.NULL); assertEquals(5, histo.getNumBins());
public Range findRange(final double leftHistoAreaSkipped, final double rightHistoAreaSkipped, boolean skipLeftPeek, boolean skipRightPeek) { final int numBins = getNumBins(); final int[] binCounts = getBinCounts(); final int numSamplesTotal = getBinCountsSum(); final int jMin = 0; final int jMax = numBins - 1; final Range range = getRange(j1, j2);
try { if (range == null) { range = computeRangeDouble(values, validator, range, SubProgressMonitor.create(pm, 1)); histogram.setBinCounts(binVals, min, max); } else { histogram = new Histogram(binVals, min, max);
try { if (range == null) { range = computeRangeFloat(values, validator, range, SubProgressMonitor.create(pm, 1)); histogram.setBinCounts(binVals, min, max); } else { histogram = new Histogram(binVals, min, max);
try { if (range == null) { range = computeRangeByte(values, validator, range, SubProgressMonitor.create(pm, 1)); histo.setBinCounts(binVals, min, max); } else { histo = new Histogram(binVals, min, max);
try { if (range == null) { range = computeRangeInt(values, validator, range, SubProgressMonitor.create(pm, 1)); histogram.setBinCounts(binVals, min, max); } else { histogram = new Histogram(binVals, min, max);
try { if (range == null) { range = computeRangeUShort(values, validator, range, SubProgressMonitor.create(pm, 1)); histo.setBinCounts(binVals, min, max); } else { histo = new Histogram(binVals, min, max);
try { if (range == null) { range = computeRangeUInt(values, validator, range, SubProgressMonitor.create(pm, 1)); histogram.setBinCounts(binVals, min, max); } else { histogram = new Histogram(binVals, min, max);
try { if (range == null) { range = computeRangeShort(values, validator, range, SubProgressMonitor.create(pm, 1)); histo.setBinCounts(binVals, min, max); } else { histo = new Histogram(binVals, min, max);