Package net.imglib2.transform.integer

Examples of net.imglib2.transform.integer.SlicingTransform


  public static < T > MixedTransformView< T > invertAxis( final RandomAccessible< T > randomAccessible, final int d )
  {
    final int n = randomAccessible.numDimensions();
    final boolean[] inv = new boolean[ n ];
    inv[ d ] = true;
    final MixedTransform t = new MixedTransform( n, n );
    t.setComponentInversion( inv );
    return new MixedTransformView< T >( randomAccessible, t );
  }
View Full Code Here


    }
    else
    {
      this.source = source;
      final int sourceDim = this.source.numDimensions();
      this.transformToSource = new MixedTransform( n, sourceDim );
      this.transformToSource.set( transformToSource );
    }

    fullViewRandomAccessible = null;
  }
View Full Code Here

        if ( iterableSource.supportsOptimizedCursor( interval ) )
          return new SubInterval( iterableSource );
      }
      else if ( transforms.size() == 1 && SlicingTransform.class.isInstance( transforms.get( 0 ) ) )
      {
        final SlicingTransform t = ( SlicingTransform ) transforms.get( 0 );
        final int m = t.numTargetDimensions();
        final int n = t.numSourceDimensions();

        // Check whether the slicing can be potentially optimized.
        boolean optimizable = true;

        // 1.) Slice dimensions must be mapped to a contiguous range of
        // target dimensions starting with dimension 0.
        int firstZeroDim = 0;
        for ( ; firstZeroDim < m && !t.getComponentZero( firstZeroDim ); ++firstZeroDim );
        for ( int d = firstZeroDim + 1; d < m && optimizable; ++d )
          if ( !t.getComponentZero( d ) )
            optimizable = false;

        // 2.) All slice dimensions must be mapped to a target dimension
        final int[] sourceComponent = new int[ n ];
        if ( optimizable )
        {
          Arrays.fill( sourceComponent, -1 );
          for ( int d = 0; d < m; ++d )
            if ( !t.getComponentZero( d ) )
              sourceComponent[ t.getComponentMapping( d ) ] = d;
          for ( int d = 0; d < n && optimizable; ++d )
            if ( sourceComponent[ d ] < 0 )
              optimizable = false;
        }

        if ( optimizable )
        {
//          System.out.println( "interval = " + Util.printInterval( interval ) );
          final Interval sliceInterval = t.transform( new BoundingBox( interval ) ).getInterval();
//          System.out.println( "transformed interval = " + Util.printInterval( sliceInterval ) );
          if ( iterableSource.supportsOptimizedCursor( sliceInterval ) )
          {
            // check for FlatIterationOrder
            boolean flat = FlatIterationOrder.class.isInstance( iterableSource.subIntervalIterationOrder( sliceInterval ) );
View Full Code Here

          final boolean[] zero = new boolean[ m ];
          final int[] component = new int[ m ];
          mixed.getTranslation( translation );
          mixed.getComponentZero( zero );
          mixed.getComponentMapping( component );
          final SlicingTransform sl = new SlicingTransform( mixed.numSourceDimensions(), m );
          sl.setTranslation( translation );
          sl.setComponentZero( zero );
          sl.setComponentMapping( component );
          i.set( sl );
        }
      }
    }
  }
View Full Code Here

    {
      System.out.println( "incompatible dimensions" );
      return false;
    }

    final SlicingTransform t1t2 = t1.concatenate( t2 );

    final Matrix mt1 = new Matrix( t1.getMatrix() );
    final Matrix mt2 = new Matrix( t2.getMatrix() );
    final Matrix mt1t2 = new Matrix( t1t2.getMatrix() );

    if ( mt1.times( mt2 ).minus( mt1t2 ).normF() > 0.1 )
    {
      System.out.println( "=======================" );
      System.out.println( "t1: " + t1.numSourceDimensions() + " -> " + t1.numTargetDimensions() + " (n -> m)" );
      System.out.println( "t2: " + t2.numSourceDimensions() + " -> " + t2.numTargetDimensions() + " (n -> m)" );
      System.out.println( "t1t2: " + t1t2.numSourceDimensions() + " -> " + t1t2.numTargetDimensions() + " (n -> m)" );

      System.out.print( "t1 = " );
      mt1.print( 1, 0 );
      System.out.print( "t2 = " );
      mt2.print( 1, 0 );
View Full Code Here

    {
      System.out.println( "incompatible dimensions" );
      return false;
    }

    final SlicingTransform t1t2 = t2.preConcatenate( t1 );

    final Matrix mt1 = new Matrix( t1.getMatrix() );
    final Matrix mt2 = new Matrix( t2.getMatrix() );
    final Matrix mt1t2 = new Matrix( t1t2.getMatrix() );

    if ( mt1.times( mt2 ).minus( mt1t2 ).normF() > 0.1 )
    {
      System.out.println( "=======================" );
      System.out.println( "t1: " + t1.numSourceDimensions() + " -> " + t1.numTargetDimensions() + " (n -> m)" );
      System.out.println( "t2: " + t2.numSourceDimensions() + " -> " + t2.numTargetDimensions() + " (n -> m)" );
      System.out.println( "t1t2: " + t1t2.numSourceDimensions() + " -> " + t1t2.numTargetDimensions() + " (n -> m)" );

      System.out.print( "t1 = " );
      mt1.print( 1, 0 );
      System.out.print( "t2 = " );
      mt2.print( 1, 0 );
View Full Code Here

  SlicingTransform sl2;

  @Before
  public void setUp()
  {
    sl1 = new SlicingTransform( 2, 3 );
    sl1.setComponentMapping( new int[] { 0, 1, -9 } );
    sl1.setComponentZero( new boolean[] { false, false, true } );
    sl1.setTranslation( new long[] { 0, 0, 100 } );

    sl2 = new SlicingTransform( 3, 4 );
    sl2.setComponentMapping( new int[] { -9, 0, 1, 2 } );
    sl2.setComponentZero( new boolean[] { true, false, false, false } );
    sl2.setTranslation( new long[] { 1287, 0, 0, 0 } );
  }
View Full Code Here

    comp1 = rot1.concatenate( tr2 );

    translation1 = new TranslationTransform( new long[] { 2011, 3, 24 } );

    slicing1 = new SlicingTransform( 2, 3 );
    slicing1.setComponentMapping( new int[] { 0, 1, 0 } );
    slicing1.setComponentZero( new boolean[] { false, false, true } );
    slicing1.setTranslation( new long[] { 0, 0, 100 } );
  }
View Full Code Here

   * array will update the {@link Image}.
   */
  public ARGBScreenImage( final int width, final int height, final int[] data )
  {
    super( new IntArray( data ), new long[]{ width, height }, new Fraction() );
    setLinkedType( new ARGBType( this ) );
    this.data = data;

    final SampleModel sampleModel = ARGB_COLOR_MODEL.createCompatibleWritableRaster( 1, 1 ).getSampleModel()
        .createCompatibleSampleModel( width, height );
    final DataBuffer dataBuffer = new DataBufferInt( data, width * height, 0 );
View Full Code Here

      mapSingle( sourceRandomAccess, currentConverters[ 0 ] );
      return;
    }

    final Cursor< ARGBType > targetCursor = target.localizingCursor();
    final ARGBType bi = new ARGBType();

    while ( targetCursor.hasNext() )
    {
      targetCursor.fwd();
      sourceRandomAccess.setPosition( targetCursor.getLongPosition( 0 ), 0 );
      sourceRandomAccess.setPosition( targetCursor.getLongPosition( 1 ), 1 );
      int aSum = 0, rSum = 0, gSum = 0, bSum = 0;
      for ( int i = 0; i < size; i++ )
      {
        sourceRandomAccess.setPosition( currentPositions[ i ], dimIndex );
        currentConverters[ i ].convert( sourceRandomAccess.get(), bi );

        // accumulate converted result
        final int value = bi.get();
        final int a = ARGBType.alpha( value );
        final int r = ARGBType.red( value );
        final int g = ARGBType.green( value );
        final int b = ARGBType.blue( value );
        aSum += a;
View Full Code Here

TOP

Related Classes of net.imglib2.transform.integer.SlicingTransform

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.