net.imglib2.view.Views.offsetInterval()方法的使用及代码示例

x33g5p2x  于2022-02-01 转载在 其他  
字(14.3k)|赞(0)|评价(0)|浏览(112)

本文整理了Java中net.imglib2.view.Views.offsetInterval()方法的一些代码示例,展示了Views.offsetInterval()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Views.offsetInterval()方法的具体详情如下:
包路径:net.imglib2.view.Views
类名称:Views
方法名:offsetInterval

Views.offsetInterval介绍

[英]Define an interval on a RandomAccessible and translate it such that the min corner is at the origin. It is the callers responsibility to ensure that the source RandomAccessible is defined in the specified interval.
[中]在随机曲线上定义一个间隔,并对其进行平移,使最小角位于原点。调用者有责任确保在指定的时间间隔内定义源。

代码示例

代码示例来源:origin: imagej/imagej-ops

  1. @Override
  2. public IntervalView<T> calculate(RandomAccessible<T> input) {
  3. return Views.offsetInterval(input, origin, dimension);
  4. }

代码示例来源:origin: imagej/imagej-ops

  1. @Override
  2. public IntervalView<T> calculate(RandomAccessible<T> input) {
  3. return Views.offsetInterval(input, interval);
  4. }

代码示例来源:origin: imagej/imagej-ops

  1. @Override
  2. public RandomAccessibleInterval<T> calculate(final RandomAccessibleInterval<T> input, final Interval interval) {
  3. boolean oneSizedDims = false;
  4. if (dropSingleDimensions) {
  5. for (int d = 0; d < interval.numDimensions(); d++) {
  6. if (interval.dimension(d) == 1) {
  7. oneSizedDims = true;
  8. break;
  9. }
  10. }
  11. }
  12. if (Intervals.equals(input, interval) && !oneSizedDims)
  13. return input;
  14. if (!Intervals.contains(input, interval))
  15. throw new RuntimeException("Intervals don't match!");
  16. IntervalView<T> res = Views.offsetInterval(input, interval);
  17. return oneSizedDims ? Views.dropSingletonDimensions(res) : res;
  18. }
  19. }

代码示例来源:origin: imagej/imagej-ops

  1. /**
  2. * Creates a view that spans from (x-1, y-1, ... i-1) to (x+1, y+1, ... i+1)
  3. * around the given coordinates
  4. *
  5. * @param interval the space of the coordinates
  6. * @param coordinates coordinates (x, y, ... i)
  7. * @return a view of a neighbourhood in the space
  8. */
  9. private IntervalView<B> neighbourhoodInterval(
  10. final ExtendedRandomAccessibleInterval<B, RandomAccessibleInterval<B>> interval,
  11. final long[] coordinates)
  12. {
  13. final int dimensions = interval.numDimensions();
  14. final BoundingBox box = new BoundingBox(dimensions);
  15. final long[] minBounds = Arrays.stream(coordinates).map(c -> c - 1)
  16. .toArray();
  17. final long[] maxBounds = Arrays.stream(coordinates).map(c -> c + 1)
  18. .toArray();
  19. box.update(minBounds);
  20. box.update(maxBounds);
  21. return Views.offsetInterval(interval, box);
  22. }

代码示例来源:origin: net.imglib2/imglib2-ops

  1. /**
  2. * View on interval of a source. If wanted, dims with size 1 are removed.
  3. *
  4. * @param src
  5. * The source {@link RandomAccessibleInterval}
  6. * @param interval
  7. * Interval
  8. */
  9. public static final <T extends Type<T>> RandomAccessibleInterval<T> subsetView(
  10. final RandomAccessibleInterval<T> src, final Interval interval) {
  11. boolean oneSizedDims = false;
  12. for (int d = 0; d < interval.numDimensions(); d++) {
  13. if (interval.dimension(d) == 1) {
  14. oneSizedDims = true;
  15. break;
  16. }
  17. }
  18. if (intervalEquals(src, interval) && !oneSizedDims)
  19. return src;
  20. RandomAccessibleInterval<T> res;
  21. if (Intervals.contains(src, interval))
  22. res = Views.offsetInterval(src, interval);
  23. else
  24. throw new IllegalArgumentException(
  25. "Interval must fit into src in SubsetViews.subsetView(...)");
  26. for (int d = interval.numDimensions() - 1; d >= 0; --d)
  27. if (interval.dimension(d) == 1 && res.numDimensions() > 1)
  28. res = Views.hyperSlice(res, d, 0);
  29. return res;
  30. }

代码示例来源:origin: net.imagej/imagej-deprecated

  1. /**
  2. * View on interval of a source. If wanted, dims with size 1 are removed.
  3. *
  4. * @param src
  5. * The source {@link RandomAccessibleInterval}
  6. * @param interval
  7. * Interval
  8. */
  9. public static final <T extends Type<T>> RandomAccessibleInterval<T> subsetView(
  10. final RandomAccessibleInterval<T> src, final Interval interval) {
  11. boolean oneSizedDims = false;
  12. for (int d = 0; d < interval.numDimensions(); d++) {
  13. if (interval.dimension(d) == 1) {
  14. oneSizedDims = true;
  15. break;
  16. }
  17. }
  18. if (intervalEquals(src, interval) && !oneSizedDims)
  19. return src;
  20. RandomAccessibleInterval<T> res;
  21. if (Intervals.contains(src, interval))
  22. res = Views.offsetInterval(src, interval);
  23. else
  24. throw new IllegalArgumentException(
  25. "Interval must fit into src in SubsetViews.subsetView(...)");
  26. for (int d = interval.numDimensions() - 1; d >= 0; --d)
  27. if (interval.dimension(d) == 1 && res.numDimensions() > 1)
  28. res = Views.hyperSlice(res, d, 0);
  29. return res;
  30. }

代码示例来源:origin: imagej/imagej-ops

  1. /**
  2. * Removes leading 0s from integral image after composite creation.
  3. *
  4. * @param input Input RAI (can be a RAI of Composite)
  5. * @return An extended and cropped version of input
  6. */
  7. private <T> RandomAccessibleInterval<T> removeLeadingZeros(
  8. final RandomAccessibleInterval<T> input)
  9. {
  10. // Remove 0s from integralImg by shifting its interval by +1
  11. final long[] min = Intervals.minAsLongArray(input);
  12. final long[] max = Intervals.maxAsLongArray(input);
  13. for (int d = 0; d < input.numDimensions(); ++d) {
  14. int correctedSpan = getShape().getSpan() - 1;
  15. min[d] += (1 + correctedSpan);
  16. max[d] -= correctedSpan;
  17. }
  18. // Define the Interval on the infinite random accessibles
  19. final FinalInterval interval = new FinalInterval(min, max);
  20. final RandomAccessibleInterval<T> extendedImg = Views.offsetInterval(Views
  21. .extendBorder(input), interval);
  22. return extendedImg;
  23. }

代码示例来源:origin: imagej/imagej-ops

  1. /**
  2. * Computes integral images of a given order and extends them such that
  3. * {@link IntegralMean} et al work with them.
  4. *
  5. * @param input The RAI for which an integral image is computed
  6. * @param order
  7. * @return An extended integral image for the input RAI
  8. */
  9. @SuppressWarnings({ "unchecked", "rawtypes" })
  10. private RandomAccessibleInterval<RealType> getIntegralImage(
  11. final RandomAccessibleInterval<I> input, final int order)
  12. {
  13. ExtendedRandomAccessibleInterval<I, RandomAccessibleInterval<I>> extendedInput =
  14. Views.extend(input, outOfBoundsFactory);
  15. FinalInterval expandedInterval = Intervals.expand(input, shape.getSpan()-1);
  16. IntervalView<I> offsetInterval2 = Views.offsetInterval(extendedInput, expandedInterval);
  17. RandomAccessibleInterval<RealType> img = null;
  18. switch (order) {
  19. case 1:
  20. img = (RandomAccessibleInterval) integralImgOp.calculate(offsetInterval2);
  21. break;
  22. case 2:
  23. img = (RandomAccessibleInterval) squareIntegralImgOp.calculate(offsetInterval2);
  24. break;
  25. }
  26. img = addLeadingZeros(img);
  27. return img;
  28. }

代码示例来源:origin: imagej/imagej-ops

  1. /** Test the op with a 2x2 square. The square is in the middle of a 4x4 img */
  2. @Test
  3. public void testSquare() throws Exception {
  4. // SETUP
  5. final Img<BitType> img = ArrayImgs.bits(4, 4);
  6. final IntervalView<BitType> square = Views.offsetInterval(img, new long[] {
  7. 1, 1 }, new long[] { 2, 2 });
  8. square.cursor().forEachRemaining(BitType::setOne);
  9. // EXECUTE
  10. final Img<BitType> result = (Img<BitType>) ops.morphology().outline(img,
  11. Boolean.TRUE);
  12. // VERIFY
  13. assertEquals("Wrong number of foreground elements in interval", 4,
  14. countForeground(result));
  15. final IntervalView<BitType> resultSquare = Views.offsetInterval(result,
  16. new long[] { 1, 1 }, new long[] { 2, 2 });
  17. assertTrue("Wrong number of foreground elements in object", allForeground(
  18. resultSquare));
  19. }

代码示例来源:origin: sc.fiji/TrakEM2_

  1. Views.offsetInterval(
  2. Views.raster(
  3. RealViews.transform(

代码示例来源:origin: imagej/imagej-ops

  1. /**
  2. * Test the op with a 3x3x3x3 hypercube. The cube is in the middle of a
  3. * 5x5x5x5 img
  4. */
  5. @Test
  6. public void testHyperCube() throws Exception {
  7. // SETUP
  8. final Img<BitType> img = ArrayImgs.bits(5, 5, 5, 5);
  9. final IntervalView<BitType> hyperCube = Views.offsetInterval(img,
  10. new long[] { 1, 1, 1, 1 }, new long[] { 3, 3, 3, 3 });
  11. hyperCube.cursor().forEachRemaining(BitType::setOne);
  12. // EXECUTE
  13. final Img<BitType> result = (Img<BitType>) ops.morphology().outline(img,
  14. Boolean.TRUE);
  15. // VERIFY
  16. assertEquals("Wrong number of foreground elements in interval", 80,
  17. countForeground(result));
  18. final IntervalView<BitType> resultHyperCube = Views.offsetInterval(result,
  19. new long[] { 1, 1, 1, 1 }, new long[] { 3, 3, 3, 3 });
  20. assertEquals("Wrong number of foreground elements in object", 80,
  21. countForeground(resultHyperCube));
  22. assertPositionBackground(result, new long[] { 2, 2, 2, 2 });
  23. }

代码示例来源:origin: imagej/imagej-ops

  1. /**
  2. * Test the op with a 3x3 square starting from (0,1) in a 5x5 img without
  3. * excluding edges
  4. *
  5. * @see Outline#compute(RandomAccessibleInterval, Boolean,
  6. * RandomAccessibleInterval)
  7. * @see #testEdgeSquare()
  8. */
  9. @Test
  10. public void testEdgeSquareExcludeEdgesFalse() throws Exception {
  11. // SETUP
  12. final Img<BitType> img = ArrayImgs.bits(5, 5);
  13. final IntervalView<BitType> square = Views.offsetInterval(img, new long[] {
  14. 0, 1 }, new long[] { 3, 3 });
  15. square.cursor().forEachRemaining(BitType::setOne);
  16. final Img<BitType> result = (Img<BitType>) ops.morphology().outline(img,
  17. Boolean.FALSE);
  18. assertEquals("Wrong number of foreground elements in interval", 8,
  19. countForeground(result));
  20. final IntervalView<BitType> resultSquare = Views.offsetInterval(result,
  21. new long[] { 0, 1 }, new long[] { 3, 3 });
  22. assertEquals("Wrong number of foreground elements in object", 8,
  23. countForeground(resultSquare));
  24. assertPositionBackground(result, new long[] { 1, 2 });
  25. }

代码示例来源:origin: imagej/imagej-ops

  1. @Test
  2. public void testHyperCube() {
  3. // SETUP
  4. final double[] expectedSizes = DoubleStream.of(4, 2, 1).map(i -> -Math.log(
  5. i)).toArray();
  6. final double[] expectedCounts = DoubleStream.of(1, 16, 16).map(Math::log)
  7. .toArray();
  8. final Img<BitType> img = ArrayImgs.bits(4, 4, 4, 4);
  9. final IntervalView<BitType> hyperView = Views.offsetInterval(img,
  10. new long[] { 1, 1, 1, 1 }, new long[] { 2, 2, 2, 2 });
  11. hyperView.forEach(BitType::setOne);
  12. // EXECUTE
  13. final List<ValuePair<DoubleType, DoubleType>> points = ops.topology()
  14. .boxCount(img, 4L, 1L, 2.0);
  15. // VERIFY
  16. for (int i = 0; i < expectedSizes.length; i++) {
  17. assertEquals(expectedSizes[i], points.get(i).a.get(), 1e-12);
  18. assertEquals(expectedCounts[i], points.get(i).b.get(), 1e-12);
  19. }
  20. }

代码示例来源:origin: imglib/imglib2

  1. @Test
  2. public void testFullSourceMapMixedAccess()
  3. {
  4. final long[] offset = new long[] { 1, 10, 0, -5 };
  5. final long[] dim = new long[] { 10, 10, 10, 10 };
  6. final RandomAccess< UnsignedByteType > a = Views.offsetInterval( Views.invertAxis( Views.hyperSlice( img, 2, 2 ), 3 ), offset, dim ).randomAccess();
  7. assertTrue( FullSourceMapMixedRandomAccess.class.isInstance( a ) );
  8. final long[] pos = new long[] { 28, 30, 2, 15 };
  9. final long[] dist = new long[] { 2, 3, 4, 1 };
  10. testlocalize( a, pos );
  11. testfwd( a, pos );
  12. testbck( a, pos );
  13. testmove( a, pos, 3 );
  14. testmove( a, pos, -2 );
  15. testmove( a, pos, dist );
  16. }

代码示例来源:origin: imagej/imagej-ops

  1. /**
  2. * Test the op with a 3x3 square starting from (0,1) in a 5x5 img
  3. *
  4. * @see Outline#compute(RandomAccessibleInterval, Boolean,
  5. * RandomAccessibleInterval)
  6. * @see #testEdgeSquare()
  7. */
  8. @Test
  9. public void testEdgeSquare() throws Exception {
  10. // SETUP
  11. final Img<BitType> img = ArrayImgs.bits(5, 5);
  12. final IntervalView<BitType> square = Views.offsetInterval(img, new long[] {
  13. 0, 1 }, new long[] { 3, 3 });
  14. square.cursor().forEachRemaining(BitType::setOne);
  15. // EXECUTION
  16. final Img<BitType> result = (Img<BitType>) ops.morphology().outline(img,
  17. Boolean.TRUE);
  18. // VERIFY
  19. assertEquals("Wrong number of foreground elements in interval", 7,
  20. countForeground(result));
  21. final IntervalView<BitType> resultSquare = Views.offsetInterval(result,
  22. new long[] { 0, 1 }, new long[] { 3, 3 });
  23. assertEquals("Wrong number of foreground elements in object", 7,
  24. countForeground(resultSquare));
  25. assertPositionBackground(result, new long[] { 0, 2 });
  26. assertPositionBackground(result, new long[] { 1, 2 });
  27. }

代码示例来源:origin: imagej/imagej-ops

  1. /**
  2. * Test box counting with a hyper cube and one grid translation (should find a
  3. * better fit than in @see {@link #testHyperCube()})
  4. */
  5. @Test
  6. public void testHyperCubeTranslations() {
  7. final double[] expectedSizes = DoubleStream.of(4, 2, 1).map(i -> -Math.log(
  8. i)).toArray();
  9. final double[] expectedCounts = DoubleStream.of(1, 1, 16).map(Math::log)
  10. .toArray();
  11. final Img<BitType> img = ArrayImgs.bits(4, 4, 4, 4);
  12. final IntervalView<BitType> hyperView = Views.offsetInterval(img,
  13. new long[] { 1, 1, 1, 1 }, new long[] { 2, 2, 2, 2 });
  14. hyperView.forEach(BitType::setOne);
  15. // EXECUTE
  16. final List<ValuePair<DoubleType, DoubleType>> points = ops.topology()
  17. .boxCount(img, 4L, 1L, 2.0, 1L);
  18. // VERIFY
  19. for (int i = 0; i < expectedSizes.length; i++) {
  20. assertEquals(expectedSizes[i], points.get(i).a.get(), 1e-12);
  21. assertEquals(expectedCounts[i], points.get(i).b.get(), 1e-12);
  22. }
  23. }

代码示例来源:origin: imagej/imagej-ops

  1. /**
  2. * Test the op with a 3x3 square with a hole in the middle. The square is in
  3. * the middle of a 5x5 img
  4. */
  5. @Test
  6. public void testOutlineSquare() throws Exception {
  7. // SETUP
  8. final Img<BitType> img = ArrayImgs.bits(5, 5);
  9. final IntervalView<BitType> square = Views.offsetInterval(img, new long[] {
  10. 1, 1 }, new long[] { 3, 3 });
  11. square.cursor().forEachRemaining(BitType::setOne);
  12. final RandomAccess<BitType> access = square.randomAccess();
  13. access.setPosition(new long[] { 1, 1 });
  14. access.get().setZero();
  15. // EXECUTION
  16. final Img<BitType> result = (Img<BitType>) ops.morphology().outline(img,
  17. Boolean.TRUE);
  18. // VERIFY
  19. assertEquals("Wrong number of foreground elements in interval", 8,
  20. countForeground(result));
  21. final IntervalView<BitType> resultSquare = Views.offsetInterval(result,
  22. new long[] { 1, 1 }, new long[] { 3, 3 });
  23. assertEquals("Wrong number of foreground elements in object", 8,
  24. countForeground(resultSquare));
  25. assertPositionBackground(result, new long[] { 2, 2 });
  26. }

代码示例来源:origin: imagej/imagej-ops

  1. /**
  2. * @see DefaultIntegralImg
  3. * @see SquareIntegralImg
  4. */
  5. @SuppressWarnings({ "unchecked" })
  6. @Test
  7. public void testIntegralImageSimilarity() {
  8. RandomAccessibleInterval<LongType> out1 =
  9. (RandomAccessibleInterval<LongType>) ops.run(DefaultIntegralImg.class,
  10. in);
  11. RandomAccessibleInterval<DoubleType> out2 =
  12. (RandomAccessibleInterval<DoubleType>) ops.run(WrappedIntegralImg.class,
  13. in);
  14. // Remove 0s from integralImg by shifting its interval by +1
  15. final long[] min = new long[out2.numDimensions()];
  16. final long[] max = new long[out2.numDimensions()];
  17. for (int d = 0; d < out2.numDimensions(); ++d) {
  18. min[d] = out2.min(d) + 1;
  19. max[d] = out2.max(d);
  20. }
  21. // Define the Interval on the infinite random accessibles
  22. final FinalInterval interval = new FinalInterval(min, max);
  23. LocalThresholdTest.testIterableIntervalSimilarity(Views.iterable(out1),
  24. Views.iterable(Views.offsetInterval(out2, interval)));
  25. }

代码示例来源:origin: imagej/imagej-ops

  1. @Test
  2. public void defaultOffsetStartEndTest() {
  3. Img<DoubleType> img = new ArrayImgFactory<DoubleType>().create(new int[] { 10, 10 }, new DoubleType());
  4. IntervalView<DoubleType> il2 = Views.offsetInterval(img, new long[] { 2, 2 }, new long[] { 9, 9 });
  5. IntervalView<DoubleType> opr = ops.transform().offsetView(img, new long[] { 2, 2 }, new long[] { 9, 9 });
  6. assertEquals(il2.realMax(0), opr.realMax(0), 1e-10);
  7. assertEquals(il2.realMin(0), opr.realMin(0), 1e-10);
  8. assertEquals(il2.realMax(1), opr.realMax(1), 1e-10);
  9. assertEquals(il2.realMin(1), opr.realMin(1), 1e-10);
  10. }
  11. }

代码示例来源:origin: imagej/imagej-ops

  1. @Test
  2. public void defaultOffsetIntervalTest() {
  3. Img<DoubleType> img = new ArrayImgFactory<DoubleType>().create(new int[] { 10, 10 }, new DoubleType());
  4. IntervalView<DoubleType> il2 = Views.offsetInterval(img,
  5. new FinalInterval(new long[] { 2, 2 }, new long[] { 9, 9 }));
  6. IntervalView<DoubleType> opr = ops.transform().offsetView(img,
  7. new FinalInterval(new long[] { 2, 2 }, new long[] { 9, 9 }));
  8. assertEquals(il2.realMax(0), opr.realMax(0), 1e-10);
  9. assertEquals(il2.realMin(0), opr.realMin(0), 1e-10);
  10. assertEquals(il2.realMax(1), opr.realMax(1), 1e-10);
  11. assertEquals(il2.realMin(1), opr.realMin(1), 1e-10);
  12. }

相关文章