@Override public Iterator<T> iterator() { return iti.iterator(); }
@Override public Iterator< T > iterator() { return getFullViewIterableInterval().iterator(); }
@Override public Iterator< T > iterator() { return getFullViewIterableInterval().iterator(); }
@Override public final Histogram2D createEmptyOutput( final IterableInterval< T > op0, final IterableInterval< T > op1 ) { return new Histogram2D( op0.iterator().next().createVariable() ); }
@Override public final Histogram2D createEmptyOutput( final IterableInterval< T > op0, final IterableInterval< T > op1 ) { return new Histogram2D( op0.iterator().next().createVariable() ); }
public ImgSourceIterable( final O scrap, final Converter< I, O > converter, final RandomAccessibleInterval< I > rai ) { this.rai = rai; this.it = Views.iterable( rai ).iterator(); this.ra = rai.randomAccess(); this.converter = converter; this.scrap = scrap; }
/** * Return an {@link IterableInterval}. If the passed * {@link RandomAccessibleInterval} is already an {@link IterableInterval} * then it is returned directly (this is the case for {@link Img}). If not, * then an {@link IterableRandomAccessibleInterval} is created. * * @param randomAccessibleInterval * the source * @return an {@link IterableInterval} */ @SuppressWarnings( "unchecked" ) public static < T > IterableInterval< T > iterable( final RandomAccessibleInterval< T > randomAccessibleInterval ) { if ( IterableInterval.class.isInstance( randomAccessibleInterval ) ) { final Class< ? > raiType = Util.getTypeFromInterval( randomAccessibleInterval ).getClass(); final Iterator< ? > iter = ( ( IterableInterval< ? > ) randomAccessibleInterval ).iterator(); final Object o = iter.hasNext() ? iter.next() : null; if ( raiType.isInstance( o ) ) return ( IterableInterval< T > ) randomAccessibleInterval; } return new IterableRandomAccessibleInterval<>( randomAccessibleInterval ); }
public ImgSourceIterableDirect( final RandomAccessibleInterval< O > rai ) { this.rai = rai; this.it = Views.iterable( rai ).iterator(); this.ra = rai.randomAccess(); }
/** * Return an {@link IterableInterval}. If the passed * {@link RandomAccessibleInterval} is already an {@link IterableInterval} * then it is returned directly (this is the case for {@link Img}). If not, * then an {@link IterableRandomAccessibleInterval} is created. * * @param randomAccessibleInterval * the source * @return an {@link IterableInterval} */ @SuppressWarnings( "unchecked" ) public static < T > IterableInterval< T > iterable( final RandomAccessibleInterval< T > randomAccessibleInterval ) { if ( IterableInterval.class.isInstance( randomAccessibleInterval ) ) { final Class< ? > raiType = Util.getTypeFromInterval( randomAccessibleInterval ).getClass(); final Iterator< ? > iter = ( ( IterableInterval< ? > ) randomAccessibleInterval ).iterator(); final Object o = iter.hasNext() ? iter.next() : null; if ( raiType.isInstance( o ) ) return ( IterableInterval< T > ) randomAccessibleInterval; } return new IterableRandomAccessibleInterval<>( randomAccessibleInterval ); }
/** * Return an {@link IterableInterval} having {@link FlatIterationOrder}. If * the passed {@link RandomAccessibleInterval} is already an * {@link IterableInterval} with {@link FlatIterationOrder} then it is * returned directly (this is the case for {@link ArrayImg}). If not, then * an {@link IterableRandomAccessibleInterval} is created. * * @param randomAccessibleInterval * the source * @return an {@link IterableInterval} with {@link FlatIterationOrder} */ @SuppressWarnings( "unchecked" ) public static < T > IterableInterval< T > flatIterable( final RandomAccessibleInterval< T > randomAccessibleInterval ) { if ( IterableInterval.class.isInstance( randomAccessibleInterval ) && FlatIterationOrder.class.isInstance( ( ( IterableInterval< T > ) randomAccessibleInterval ).iterationOrder() ) ) { final Class< ? > raiType = Util.getTypeFromInterval( randomAccessibleInterval ).getClass(); final Iterator< ? > iter = ( ( IterableInterval< ? > ) randomAccessibleInterval ).iterator(); final Object o = iter.hasNext() ? iter.next() : null; if ( raiType.isInstance( o ) ) return ( IterableInterval< T > ) randomAccessibleInterval; } return new IterableRandomAccessibleInterval<>( randomAccessibleInterval ); }
/** * Return an {@link IterableInterval} having {@link FlatIterationOrder}. If * the passed {@link RandomAccessibleInterval} is already an * {@link IterableInterval} with {@link FlatIterationOrder} then it is * returned directly (this is the case for {@link ArrayImg}). If not, then * an {@link IterableRandomAccessibleInterval} is created. * * @param randomAccessibleInterval * the source * @return an {@link IterableInterval} with {@link FlatIterationOrder} */ @SuppressWarnings( "unchecked" ) public static < T > IterableInterval< T > flatIterable( final RandomAccessibleInterval< T > randomAccessibleInterval ) { if ( IterableInterval.class.isInstance( randomAccessibleInterval ) && FlatIterationOrder.class.isInstance( ( ( IterableInterval< T > ) randomAccessibleInterval ).iterationOrder() ) ) { final Class< ? > raiType = Util.getTypeFromInterval( randomAccessibleInterval ).getClass(); final Iterator< ? > iter = ( ( IterableInterval< ? > ) randomAccessibleInterval ).iterator(); final Object o = iter.hasNext() ? iter.next() : null; if ( raiType.isInstance( o ) ) return ( IterableInterval< T > ) randomAccessibleInterval; } return new IterableRandomAccessibleInterval<>( randomAccessibleInterval ); }
@Override public ValuePair< T, T > createEmptyOutput( IterableInterval< T > in ) { final T t = in.iterator().next(); return new ValuePair< T, T >( t.createVariable(), t.createVariable() ); }
@Override public Pair< T, T > createEmptyOutput( IterableInterval< T > op ) { final T t = op.iterator().next(); return new Pair< T, T >( t.createVariable(), t.createVariable() ); }
@Override public Pair< T, T > compute( IterableInterval< T > op, Pair< T, T > r ) { if ( m_saturation == 0 ) { final Iterator< T > it = op.iterator(); r.a.setReal( r.a.getMaxValue() ); r.b.setReal( r.b.getMinValue() ); while ( it.hasNext() ) { T i = it.next(); if ( r.a.compareTo( i ) > 0 ) r.a.set( i ); if ( r.b.compareTo( i ) < 0 ) r.b.set( i ); } } else { calcMinMaxWithSaturation( op, r, m_histOp.compute( op, m_histOp.createEmptyOutput( op ) ) ); } return r; }
@Override public ValuePair< T, T > compute( IterableInterval< T > op, ValuePair< T, T > r ) { if ( m_saturation == 0 ) { final Iterator< T > it = op.iterator(); r.a.setReal( r.a.getMaxValue() ); r.b.setReal( r.b.getMinValue() ); while ( it.hasNext() ) { T i = it.next(); if ( r.a.compareTo( i ) > 0 ) r.a.set( i ); if ( r.b.compareTo( i ) < 0 ) r.b.set( i ); } } else { calcMinMaxWithSaturation( op, r, m_histOp.compute( op, m_histOp.compute( op ) ) ); } return r; }