/** * Read byte-encoded metadata from the given plane. * @see FakeReader#readSpecialPixels(byte[], int, boolean, int, boolean) */ public static int[] readSpecialPixels( byte[] plane, int pixelType, boolean little) { return readSpecialPixels(plane, pixelType, little, 1, false); }
/** * Read byte-encoded metadata from the given plane. * @see FakeReader#readSpecialPixels(byte[], int, boolean, int, boolean) */ public static int[] readSpecialPixels(byte[] plane) { return readSpecialPixels(plane, FormatTools.UINT8, true); }
/** * Read byte-encoded metadata from the given plane. * @see FakeReader#readSpecialPixels(byte[], int, boolean, int, boolean) */ public static int[] readSpecialPixels(byte[] plane) { return readSpecialPixels(plane, FormatTools.UINT8, true); }
/** * Read byte-encoded metadata from the given plane. * @see FakeReader#readSpecialPixels(byte[], int, boolean, int, boolean) */ public static int[] readSpecialPixels( byte[] plane, int pixelType, boolean little) { return readSpecialPixels(plane, pixelType, little, 1, false); }
@Test(dataProvider = "pixelFeatures") public void testSpecialPixels(int pixelType, boolean little) throws Exception { String pt = FormatTools.getPixelTypeString(pixelType); int nSeries = 2; int sizeC = 3; int sizeZ = 4; int sizeT = 5; reader.setId(String.format( "foo&pixelType=%s&series=%s&sizeZ=%s&sizeC=%s&sizeT=%s&little=%s.fake", pt, nSeries, sizeZ, sizeC, sizeT, little)); reader.setSeries(1); int no = sizeC * sizeZ * sizeT - 1; byte[] plane = reader.openBytes(no); int[] exp = new int[] {1, no, sizeZ - 1, sizeC - 1, sizeT - 1}; assertEquals(FakeReader.readSpecialPixels(plane, pixelType, little), exp); if (pixelType == FormatTools.UINT8) { assertEquals(FakeReader.readSpecialPixels(plane), exp); } }
private static void checkPlanes(FileStitcher fs, Integer[] dims) throws IOException, FormatException { List<Set<Integer>>idxSets = new ArrayList<Set<Integer>>(); for (int k = 0; k < 5; k++) { idxSets.add(new HashSet<Integer>()); } int[] specialPixels; for (int i = 0; i < fs.getImageCount(); i++) { specialPixels = FakeReader.readSpecialPixels(fs.openBytes(i)); for (int k = 0; k < 5; k++) { idxSets.get(k).add(specialPixels[k]); } } assertEquals(idxSets.get(0), new HashSet(range(1))); // S assertEquals(idxSets.get(1), new HashSet(range(dims[0] * dims[1] * dims[2]))); // no. assertEquals(idxSets.get(2), new HashSet(range(dims[0]))); // Z assertEquals(idxSets.get(3), new HashSet(range(dims[2]))); // C assertEquals(idxSets.get(4), new HashSet(range(dims[1]))); // T }
@Test public void testSpecialPixelsInterleaved() throws Exception { int nSeries = 2; int rgb = 3; int sizeC = 3; int effSizeC = sizeC / rgb; int sizeZ = 4; int sizeT = 5; reader.setId(String.format( "foo&series=%s&sizeZ=%s&sizeC=%s&sizeT=%s&rgb=%d&interleaved=true.fake", nSeries, sizeZ, sizeC, sizeT, rgb)); reader.setSeries(1); int no = effSizeC * sizeZ * sizeT - 1; byte[] plane = reader.openBytes(no); int[] exp = new int[] {1, no, sizeZ - 1, effSizeC - 1, sizeT - 1}; assertEquals(FakeReader.readSpecialPixels( plane, FormatTools.UINT8, true, rgb, true), exp); }
@Test public void testSpecialPixelsIndexed() throws Exception { int nSeries = 2; int sizeC = 3; int sizeZ = 4; int sizeT = 5; reader.setId(String.format( "foo&series=%s&sizeZ=%s&sizeC=%s&sizeT=%s&indexed=true.fake", nSeries, sizeZ, sizeC, sizeT)); reader.setSeries(1); int no = sizeC * sizeZ * sizeT - 1; byte[] plane = reader.openBytes(no); int[] exp = new int[] {1, no, sizeZ - 1, sizeC - 1, sizeT - 1}; int[] indices = FakeReader.readSpecialPixels(plane); assertEquals(indices.length, exp.length); int[] specialPixels = new int[indices.length]; byte[][] lut = reader.get8BitLookupTable(); for (int i = 0; i < indices.length; i++) { specialPixels[i] = lut[0][(int)indices[i]]; } assertEquals(specialPixels, exp); }