visit( ( ( IntervalView< T > ) randomAccessible ).getSource() );
visit( ( ( IntervalView< T > ) randomAccessible ).getSource() );
public MixedTransformView( RandomAccessible< T > source, final Mixed transformToSource ) { assert source.numDimensions() == transformToSource.numTargetDimensions(); this.n = transformToSource.numSourceDimensions(); while ( IntervalView.class.isInstance( source ) ) { source = ( ( IntervalView< T > ) source ).getSource(); } if ( MixedTransformView.class.isInstance( source ) ) { final MixedTransformView< T > v = ( MixedTransformView< T > ) source; this.source = v.getSource(); this.transformToSource = v.getTransformToSource().concatenate( transformToSource ); } else { this.source = source; final int sourceDim = this.source.numDimensions(); this.transformToSource = new MixedTransform( n, sourceDim ); this.transformToSource.set( transformToSource ); } fullViewRandomAccessible = null; }
public MixedTransformView( RandomAccessible< T > source, final Mixed transformToSource ) { assert source.numDimensions() == transformToSource.numTargetDimensions(); this.n = transformToSource.numSourceDimensions(); while ( IntervalView.class.isInstance( source ) ) { source = ( ( IntervalView< T > ) source ).getSource(); } if ( MixedTransformView.class.isInstance( source ) ) { final MixedTransformView< T > v = ( MixedTransformView< T > ) source; this.source = v.getSource(); this.transformToSource = v.getTransformToSource().concatenate( transformToSource ); } else { this.source = source; final int sourceDim = this.source.numDimensions(); this.transformToSource = new MixedTransform( n, sourceDim ); this.transformToSource.set( transformToSource ); } fullViewRandomAccessible = null; }
@Test public void testIntervalRotate() { final Img<DoubleType> img = ArrayImgs.doubles(20,10); final IntervalView<DoubleType> il2 = Views.rotate((RandomAccessibleInterval<DoubleType>) img, 1, 0); final IntervalView<DoubleType> opr = (IntervalView<DoubleType>) ops.transform().rotateView((RandomAccessibleInterval<DoubleType>) img, 1, 0); for (int i = 0; i < ((MixedTransformView<DoubleType>) il2.getSource()).getTransformToSource() .getMatrix().length; i++) { for (int j = 0; j < ((MixedTransformView<DoubleType>) il2.getSource()).getTransformToSource() .getMatrix()[i].length; j++) { assertEquals( ((MixedTransformView<DoubleType>) il2.getSource()).getTransformToSource().getMatrix()[i][j], ((MixedTransformView<DoubleType>) opr.getSource()).getTransformToSource().getMatrix()[i][j], 1e-10); } } }
@Test public void testIntervalPermute() { Img<DoubleType> img = new ArrayImgFactory<DoubleType>().create(new int[]{10, 10}, new DoubleType()); IntervalView<DoubleType> expected = Views.permute((RandomAccessibleInterval<DoubleType>)img, 1, 0); IntervalView<DoubleType> actual = ops.transform().permuteView((RandomAccessibleInterval<DoubleType>)img, 1, 0); for (int i = 0; i < ((MixedTransformView<DoubleType>) expected.getSource()).getTransformToSource().getMatrix().length; i++) { for (int j = 0; j < ((MixedTransformView<DoubleType>) expected.getSource()).getTransformToSource().getMatrix()[i].length; j++) { assertEquals(((MixedTransformView<DoubleType>) expected.getSource()).getTransformToSource().getMatrix()[i][j], ((MixedTransformView<DoubleType>) actual.getSource()).getTransformToSource().getMatrix()[i][j], 1e-10); } } }
@Test public void testIntervalTranslate() { Img<DoubleType> img = ArrayImgs.doubles(10,10); IntervalView<DoubleType> expected = Views.translate(img, 2, 5); IntervalView<DoubleType> actual = ops.transform().translateView(img, 2, 5); for (int i = 0; i < ((MixedTransformView<DoubleType>) expected.getSource()).getTransformToSource().getMatrix().length; i++) { for (int j = 0; j < ((MixedTransformView<DoubleType>) expected.getSource()).getTransformToSource().getMatrix()[i].length; j++) { assertEquals(((MixedTransformView<DoubleType>) expected.getSource()).getTransformToSource().getMatrix()[i][j], ((MixedTransformView<DoubleType>) actual.getSource()).getTransformToSource().getMatrix()[i][j], 1e-10); } } assertTrue(Intervals.equals(expected, actual)); } }
@Test public void intervalInvertAxisTest() { final Img<DoubleType> img = new ArrayImgFactory<DoubleType>().create(new int[] { 10, 10 }, new DoubleType()); final IntervalView<DoubleType> il2 = Views.invertAxis(img, 1); final IntervalView<DoubleType> opr = ops.transform().invertAxisView(img, 1); for (int i = 0; i < ((MixedTransformView<DoubleType>) il2.getSource()).getTransformToSource() .getMatrix().length; i++) { for (int j = 0; j < ((MixedTransformView<DoubleType>) il2.getSource()).getTransformToSource() .getMatrix()[i].length; j++) { assertEquals( ((MixedTransformView<DoubleType>) il2.getSource()).getTransformToSource().getMatrix()[i][j], ((MixedTransformView<DoubleType>) opr.getSource()).getTransformToSource().getMatrix()[i][j], 1e-10); } } } }
@Test public void IntervalHyperSliceTest() { final Img<DoubleType> img = new ArrayImgFactory<DoubleType>().create(new int[] { 10, 10, 10 }, new DoubleType()); final IntervalView<DoubleType> il2 = Views.hyperSlice((RandomAccessibleInterval<DoubleType>) img, 1, 8); final IntervalView<DoubleType> opr = ops.transform().hyperSliceView(img, 1, 8); for (int i = 0; i < ((MixedTransformView<DoubleType>) il2.getSource()).getTransformToSource() .getMatrix().length; i++) { for (int j = 0; j < ((MixedTransformView<DoubleType>) il2.getSource()).getTransformToSource() .getMatrix()[i].length; j++) { assertEquals( ((MixedTransformView<DoubleType>) il2.getSource()).getTransformToSource().getMatrix()[i][j], ((MixedTransformView<DoubleType>) opr.getSource()).getTransformToSource().getMatrix()[i][j], 1e-10); } } assertEquals(img.numDimensions() - 1, opr.numDimensions()); } }
final VolatileViewData< T, V > sourceData = wrapAsVolatileViewData( view.getSource(), queue, hints ); return new VolatileViewData<>( new IntervalView<>( sourceData.getImg(), view ),