private void setLogarithmicDisplay(final RasterDataNode raster, final boolean logarithmicDisplay) { final ImageInfoEditorModel model = imageInfoEditor.getModel(); if (logarithmicDisplay) { final StxFactory stxFactory = new StxFactory(); final Stx stx = stxFactory .withHistogramBinCount(raster.getStx().getHistogramBinCount()) .withLogHistogram(logarithmicDisplay) .withResolutionLevel(raster.getSourceImage().getModel().getLevelCount() - 1) .create(raster, ProgressMonitor.NULL); model.setDisplayProperties(raster.getName(), raster.getUnit(), stx, POW10_SCALING); } else { model.setDisplayProperties(raster.getName(), raster.getUnit(), raster.getStx(), Scaling.IDENTITY); } model.getImageInfo().setLogScaled(logarithmicDisplay); }
factory.withLogHistogram(histogramPlotConfig.histogramLogScaled); if (min != null) { if (histogramPlotConfig.histogramLogScaled) {
@Test public void testMinMaxBinsLogHistogram() throws Exception { StxFactory factory = new StxFactory(); factory .withMinimum(0.1) .withMaximum(10) .withLogHistogram(true) .withHistogramBins(new int[]{1, 2, 3, 6, 6, 3, 2, 1}); Stx stx = factory.create(); assertNotNull(stx.getHistogram()); assertEquals(1, stx.getHistogram().getNumBands()); assertEquals(8, stx.getHistogram().getNumBins()[0]); assertEquals(0.1, stx.getMinimum(), 1e-10); assertEquals(10, stx.getMaximum(), 1e-10); assertEquals(Math.pow(10.0, stx.getHistogram().getMean()[0]), stx.getMean(), 1e-3); assertEquals(Math.pow(10.0, 0), stx.getMedian(), 1e-3); assertEquals(-1.0, stx.getHistogram().getLowValue(0), 1e-10); assertEquals(1.0, stx.getHistogram().getHighValue(0), 1e-10); assertArrayEquals(new int[]{1, 2, 3, 6, 6, 3, 2, 1}, stx.getHistogramBins()); }
@Test public void testMinMaxBinsLogHistogramWithNegativeMinimum() throws Exception { StxFactory factory = new StxFactory(); factory .withMinimum(-10) .withMaximum(+10) .withLogHistogram(true) .withHistogramBins(new int[]{1, 2, 3, 6, 6, 3, 2, 1}); Stx stx = factory.create(); assertEquals(-10, stx.getMinimum(), 1e-10); assertEquals(+10, stx.getMaximum(), 1e-10); assertEquals(0.0, stx.getMean(), 1e-3); assertEquals(0.0, stx.getMedian(), 1e-3); assertNotNull(stx.getHistogram()); assertEquals(1, stx.getHistogram().getNumBands()); assertEquals(8, stx.getHistogram().getNumBins()[0]); assertEquals(-9.0, stx.getHistogram().getLowValue(0), 1e-10); // 1E-9 is the max value we handle assertEquals(1.0, stx.getHistogram().getHighValue(0), 1e-10); assertArrayEquals(new int[]{1, 2, 3, 6, 6, 3, 2, 1}, stx.getHistogramBins()); }