@Override public int getResolutionCount() { return reader.getResolutionCount(); }
@Override public int getResolutionCount() { return reader.getResolutionCount(); }
@Override public int getResolutionCount() { return getReader().getResolutionCount(); }
public int getResolutionLevels() { // Ensure the reader has been initialized reader(); return bfReader.getResolutionCount(); }
@Override public int getResolutionCount() { return getReader().getResolutionCount(); }
public List<List<Integer>> getResolutionDescriptions() { final List<List<Integer>> rv = new ArrayList<List<Integer>>(); final int no = bfReader.getResolutionCount(); final List<CoreMetadata> cms = bfReader.getCoreMetadataList(); for (int i = 0; i < no; i++) { int coreIndex = bfReader.seriesToCoreIndex(bfReader.getSeries()) + i; CoreMetadata cm = cms.get(coreIndex); List<Integer> sizes = Arrays.asList(cm.sizeX, cm.sizeY); rv.add(sizes); } return rv; }
@Test public void testSubResolutionCount() { int seriesCount = reader.getSeriesCount(); assertTrue(seriesCount > 0); for (int series=0; series<seriesCount; series++) { reader.setSeries(series); int resolutionCount = reader.getResolutionCount(); assertTrue(resolutionCount > 0); for (int resolution=0; resolution<resolutionCount; resolution++) { reader.setResolution(resolution); assertTrue(reader.getSizeX() > 0); assertTrue(reader.getSizeY() > 0); } } }
@Test public void testSinglePyramidBigEndian() throws FormatException, IOException { writePyramid(files[2].getAbsolutePath(), new int[] {8}, new int[] {8}, 1, 0, true, false); IFormatReader reader = getReader(2); try { assertEquals(reader.getSeriesCount(), 1); assertEquals(reader.getResolutionCount(), RESOLUTION_COUNT); assertTrue(checkPixels(reader)); } finally { reader.close(); } }
@Test public void testSinglePyramid() throws FormatException, IOException { writePyramid(files[0].getAbsolutePath(), new int[] {8}, new int[] {8}, 1, 0, false, false); IFormatReader reader = getReader(0); try { assertEquals(reader.getSeriesCount(), 1); assertEquals(reader.getResolutionCount(), RESOLUTION_COUNT); assertTrue(checkPixels(reader)); } finally { reader.close(); } }
@Test public void testSinglePyramidBigEndianBigTiff() throws FormatException, IOException { writePyramid(files[3].getAbsolutePath(), new int[] {8}, new int[] {8}, 1, 0, true, true); IFormatReader reader = getReader(3); try { assertEquals(reader.getSeriesCount(), 1); assertEquals(reader.getResolutionCount(), RESOLUTION_COUNT); assertTrue(checkPixels(reader)); } finally { reader.close(); } }
@Test public void testSinglePyramidBigTiff() throws FormatException, IOException { writePyramid(files[1].getAbsolutePath(), new int[] {8}, new int[] {8}, 1, 0, false, true); IFormatReader reader = getReader(1); try { assertEquals(reader.getSeriesCount(), 1); assertEquals(reader.getResolutionCount(), RESOLUTION_COUNT); assertTrue(checkPixels(reader)); } finally { reader.close(); } }
private byte[] getTile(IFormatReader reader, int resolution, int no, int x, int y, int w, int h) throws FormatException, IOException { if (resolution < reader.getResolutionCount()) { reader.setResolution(resolution); return reader.openBytes(no, x, y, w, h); } reader.setResolution(0); IImageScaler scaler = new SimpleImageScaler(); int scale = (int) Math.pow(pyramidScale, resolution); byte[] tile = reader.openBytes(no, x * scale, y * scale, w * scale, h * scale); int type = reader.getPixelType(); return scaler.downsample(tile, w * scale, h * scale, scale, FormatTools.getBytesPerPixel(type), reader.isLittleEndian(), FormatTools.isFloatingPoint(type), reader.getRGBChannelCount(), reader.isInterleaved()); }
private boolean checkPixels(IFormatReader reader) throws FormatException, IOException { int index = 1; for (int s=0; s<reader.getSeriesCount(); s++) { reader.setSeries(s); for (int r=0; r<reader.getResolutionCount(); r++) { reader.setResolution(r); for (int p=0; p<reader.getImageCount(); p++) { byte[] plane = reader.openBytes(p); for (byte pixel : plane) { if ((pixel & 0xff) != index) { return false; } } index++; } } } return true; }
@Test public void testSinglePyramidWithExtra() throws FormatException, IOException { writePyramid(files[4].getAbsolutePath(), new int[] {16}, new int[] {16}, 1, 2, false, true); IFormatReader reader = getReader(4); try { assertEquals(reader.getSeriesCount(), 3); assertEquals(reader.getResolutionCount(), RESOLUTION_COUNT); assertEquals(reader.getSizeX(), 16); assertEquals(reader.getSizeY(), 16); reader.setSeries(1); assertEquals(reader.getResolutionCount(), 1); assertEquals(reader.getSizeX(), EXTRA_WIDTH); assertEquals(reader.getSizeY(), EXTRA_HEIGHT); reader.setSeries(2); assertEquals(reader.getResolutionCount(), 1); assertEquals(reader.getSizeX(), EXTRA_WIDTH); assertEquals(reader.getSizeY(), EXTRA_HEIGHT); assertTrue(checkPixels(reader)); } finally { reader.close(); } }
@Test public void testSinglePyramidMultiplePlanes() throws FormatException, IOException { writePyramid(files[5].getAbsolutePath(), new int[] {16}, new int[] {16}, 3, 0, false, true); IFormatReader reader = getReader(5); try { assertEquals(reader.getSeriesCount(), 1); assertEquals(reader.getResolutionCount(), RESOLUTION_COUNT); assertEquals(reader.getSizeX(), 16); assertEquals(reader.getSizeY(), 16); for (int i=0; i<RESOLUTION_COUNT; i++) { reader.setResolution(i); assertEquals(reader.getSizeZ(), 3); } assertTrue(checkPixels(reader)); } finally { reader.close(); } }
@Test public void testMultiplePyramidsExtra() throws FormatException, IOException { int[] dims = new int[] {8, 10}; writePyramid(files[7].getAbsolutePath(), dims, dims, 1, 2, false, true); IFormatReader reader = getReader(7); try { assertEquals(reader.getSeriesCount(), 4); for (int s=0; s<reader.getSeriesCount(); s++) { reader.setSeries(s); if (s < dims.length) { assertEquals(reader.getResolutionCount(), RESOLUTION_COUNT); assertEquals(reader.getSizeX(), dims[s]); assertEquals(reader.getSizeY(), dims[s]); } else { assertEquals(reader.getResolutionCount(), 1); assertEquals(reader.getSizeX(), EXTRA_WIDTH); assertEquals(reader.getSizeY(), EXTRA_HEIGHT); } assertEquals(reader.getSizeZ(), 1); } assertTrue(checkPixels(reader)); } finally { reader.close(); } }
@Test public void testMultiplePyramidsMultiplePlanes() throws FormatException, IOException { int[] dims = new int[] {8, 10}; writePyramid(files[8].getAbsolutePath(), dims, dims, 2, 0, false, true); IFormatReader reader = getReader(8); try { assertEquals(reader.getSeriesCount(), 2); for (int s=0; s<reader.getSeriesCount(); s++) { reader.setSeries(s); assertEquals(reader.getResolutionCount(), RESOLUTION_COUNT); assertEquals(reader.getSizeX(), dims[s]); assertEquals(reader.getSizeY(), dims[s]); assertEquals(reader.getSizeZ(), 2); } assertTrue(checkPixels(reader)); } finally { reader.close(); } }
@Test public void testMultiplePyramids() throws FormatException, IOException { int[] dims = new int[] {16, 10}; writePyramid(files[6].getAbsolutePath(), dims, dims, 1, 0, false, true); IFormatReader reader = getReader(6); try { assertEquals(reader.getSeriesCount(), 2); for (int s=0; s<reader.getSeriesCount(); s++) { reader.setSeries(s); assertEquals(reader.getResolutionCount(), RESOLUTION_COUNT); assertEquals(reader.getSizeX(), dims[s]); assertEquals(reader.getSizeY(), dims[s]); assertEquals(reader.getSizeZ(), 1); } assertTrue(checkPixels(reader)); } finally { reader.close(); } }
public static void populatePixelsOnly(MetadataStore store, IFormatReader r) { int oldSeries = r.getSeries(); for (int i=0; i<r.getSeriesCount(); i++) { r.setSeries(i); String pixelType = FormatTools.getPixelTypeString(r.getPixelType()); populatePixelsOnly(store, i, r.isLittleEndian(), r.getDimensionOrder(), pixelType, r.getSizeX(), r.getSizeY(), r.getSizeZ(), r.getSizeC(), r.getSizeT(), r.getRGBChannelCount()); if (store instanceof IPyramidStore) { for (int res=1; res<r.getResolutionCount(); res++) { r.setResolution(res); ((IPyramidStore) store).setResolutionSizeX( new PositiveInteger(r.getSizeX()), i, res); ((IPyramidStore) store).setResolutionSizeY( new PositiveInteger(r.getSizeY()), i, res); } r.setResolution(0); } } r.setSeries(oldSeries); }
public static void populatePixelsOnly(MetadataStore store, IFormatReader r) { int oldSeries = r.getSeries(); for (int i=0; i<r.getSeriesCount(); i++) { r.setSeries(i); String pixelType = FormatTools.getPixelTypeString(r.getPixelType()); populatePixelsOnly(store, i, r.isLittleEndian(), r.getDimensionOrder(), pixelType, r.getSizeX(), r.getSizeY(), r.getSizeZ(), r.getSizeC(), r.getSizeT(), r.getRGBChannelCount()); if (store instanceof IPyramidStore) { for (int res=1; res<r.getResolutionCount(); res++) { r.setResolution(res); ((IPyramidStore) store).setResolutionSizeX( new PositiveInteger(r.getSizeX()), i, res); ((IPyramidStore) store).setResolutionSizeY( new PositiveInteger(r.getSizeY()), i, res); } r.setResolution(0); } } r.setSeries(oldSeries); }