Skip to content
Snippets Groups Projects
Commit 5f602b50 authored by Tobias Pietzsch's avatar Tobias Pietzsch
Browse files

move loadTimepoint() up to AbstractSpimSource. requires introduction of

abstract getImage() and getMipmapTransforms() methods which are implemented
to forward to ViewerImgLoader.
parent d1d762a8
No related branches found
No related tags found
No related merge requests found
package bdv; package bdv;
import mpicbg.spim.data.SequenceDescription; import mpicbg.spim.data.SequenceDescription;
import mpicbg.spim.data.View;
import net.imglib2.RandomAccessible; import net.imglib2.RandomAccessible;
import net.imglib2.RandomAccessibleInterval; import net.imglib2.RandomAccessibleInterval;
import net.imglib2.RealRandomAccessible; import net.imglib2.RealRandomAccessible;
...@@ -9,6 +10,7 @@ import net.imglib2.interpolation.randomaccess.NLinearInterpolatorFactory; ...@@ -9,6 +10,7 @@ import net.imglib2.interpolation.randomaccess.NLinearInterpolatorFactory;
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory;
import net.imglib2.realtransform.AffineTransform3D; import net.imglib2.realtransform.AffineTransform3D;
import net.imglib2.type.numeric.NumericType; import net.imglib2.type.numeric.NumericType;
import net.imglib2.view.Views;
import bdv.viewer.Interpolation; import bdv.viewer.Interpolation;
import bdv.viewer.Source; import bdv.viewer.Source;
...@@ -59,7 +61,40 @@ public abstract class AbstractSpimSource< T extends NumericType< T > > implement ...@@ -59,7 +61,40 @@ public abstract class AbstractSpimSource< T extends NumericType< T > > implement
interpolatorFactories[ iNLinearMethod ] = new NLinearInterpolatorFactory< T >(); interpolatorFactories[ iNLinearMethod ] = new NLinearInterpolatorFactory< T >();
} }
protected abstract void loadTimepoint( final int timepoint ); protected void loadTimepoint( final int timepoint )
{
currentTimepoint = timepoint;
if ( isPresent( timepoint ) )
{
final T zero = getType().createVariable();
zero.setZero();
final View view = sequenceViews.getView( timepoint, setup );
final AffineTransform3D reg = view.getModel();
for ( int level = 0; level < currentSources.length; level++ )
{
final AffineTransform3D mipmapTransform = getMipmapTransforms( setup )[ level ];
currentSourceTransforms[ level ].set( reg );
currentSourceTransforms[ level ].concatenate( mipmapTransform );
currentSources[ level ] = getImage( view, level );
for ( int method = 0; method < numInterpolationMethods; ++method )
currentInterpolatedSources[ level ][ method ] = Views.interpolate( Views.extendValue( currentSources[ level ], zero ), interpolatorFactories[ method ] );
}
}
else
{
for ( int level = 0; level < currentSources.length; level++ )
{
currentSourceTransforms[ level ].identity();
currentSources[ level ] = null;
for ( int method = 0; method < numInterpolationMethods; ++method )
currentInterpolatedSources[ level ][ method ] = null;
}
}
}
protected abstract AffineTransform3D[] getMipmapTransforms( final int setup );
protected abstract RandomAccessibleInterval< T > getImage( final View view, final int level );
@Override @Override
public boolean isPresent( final int t ) public boolean isPresent( final int t )
......
...@@ -2,9 +2,9 @@ package bdv; ...@@ -2,9 +2,9 @@ package bdv;
import mpicbg.spim.data.SequenceDescription; import mpicbg.spim.data.SequenceDescription;
import mpicbg.spim.data.View; import mpicbg.spim.data.View;
import net.imglib2.RandomAccessibleInterval;
import net.imglib2.realtransform.AffineTransform3D; import net.imglib2.realtransform.AffineTransform3D;
import net.imglib2.type.numeric.NumericType; import net.imglib2.type.numeric.NumericType;
import net.imglib2.view.Views;
public class SpimSource< T extends NumericType< T > > extends AbstractSpimSource< T > public class SpimSource< T extends NumericType< T > > extends AbstractSpimSource< T >
{ {
...@@ -20,40 +20,20 @@ public class SpimSource< T extends NumericType< T > > extends AbstractSpimSource ...@@ -20,40 +20,20 @@ public class SpimSource< T extends NumericType< T > > extends AbstractSpimSource
} }
@Override @Override
protected void loadTimepoint( final int timepoint ) public T getType()
{ {
currentTimepoint = timepoint; return imgLoader.getImageType();
if ( isPresent( timepoint ) )
{
final T zero = imgLoader.getImageType().createVariable();
zero.setZero();
final View view = sequenceViews.getView( timepoint, setup );
final AffineTransform3D reg = view.getModel();
for ( int level = 0; level < currentSources.length; level++ )
{
final AffineTransform3D mipmapTransform = imgLoader.getMipmapTransforms( setup )[ level ];
currentSourceTransforms[ level ].set( reg );
currentSourceTransforms[ level ].concatenate( mipmapTransform );
currentSources[ level ] = imgLoader.getImage( view, level );
for ( int method = 0; method < numInterpolationMethods; ++method )
currentInterpolatedSources[ level ][ method ] = Views.interpolate( Views.extendValue( currentSources[ level ], zero ), interpolatorFactories[ method ] );
}
}
else
{
for ( int level = 0; level < currentSources.length; level++ )
{
currentSourceTransforms[ level ].identity();
currentSources[ level ] = null;
for ( int method = 0; method < numInterpolationMethods; ++method )
currentInterpolatedSources[ level ][ method ] = null;
}
}
} }
@Override @Override
public T getType() protected RandomAccessibleInterval< T > getImage( final View view, final int level )
{ {
return imgLoader.getImageType(); return imgLoader.getImage( view, level );
}
@Override
protected AffineTransform3D[] getMipmapTransforms( final int setup )
{
return imgLoader.getMipmapTransforms( setup );
} }
} }
...@@ -2,11 +2,10 @@ package bdv; ...@@ -2,11 +2,10 @@ package bdv;
import mpicbg.spim.data.SequenceDescription; import mpicbg.spim.data.SequenceDescription;
import mpicbg.spim.data.View; import mpicbg.spim.data.View;
import net.imglib2.RandomAccessibleInterval;
import net.imglib2.Volatile; import net.imglib2.Volatile;
import net.imglib2.realtransform.AffineTransform3D; import net.imglib2.realtransform.AffineTransform3D;
import net.imglib2.type.numeric.NumericType; import net.imglib2.type.numeric.NumericType;
import net.imglib2.type.numeric.RealType;
import net.imglib2.view.Views;
public class VolatileSpimSource< T extends NumericType< T >, V extends Volatile< T > & NumericType< V > > extends AbstractSpimSource< V > public class VolatileSpimSource< T extends NumericType< T >, V extends Volatile< T > & NumericType< V > > extends AbstractSpimSource< V >
{ {
...@@ -24,38 +23,6 @@ public class VolatileSpimSource< T extends NumericType< T >, V extends Volatile< ...@@ -24,38 +23,6 @@ public class VolatileSpimSource< T extends NumericType< T >, V extends Volatile<
loadTimepoint( 0 ); loadTimepoint( 0 );
} }
@Override
protected void loadTimepoint( final int timepoint )
{
currentTimepoint = timepoint;
if ( isPresent( timepoint ) )
{
final V zero = imgLoader.getVolatileImageType().createVariable();
zero.setZero();
final View view = sequenceViews.getView( timepoint, setup );
final AffineTransform3D reg = view.getModel();
for ( int level = 0; level < currentSources.length; level++ )
{
final AffineTransform3D mipmapTransform = imgLoader.getMipmapTransforms( setup )[ level ];
currentSourceTransforms[ level ].set( reg );
currentSourceTransforms[ level ].concatenate( mipmapTransform );
currentSources[ level ] = imgLoader.getVolatileImage( view, level );
for ( int method = 0; method < numInterpolationMethods; ++method )
currentInterpolatedSources[ level ][ method ] = Views.interpolate( Views.extendValue( currentSources[ level ], zero ), interpolatorFactories[ method ] );
}
}
else
{
for ( int level = 0; level < currentSources.length; level++ )
{
currentSourceTransforms[ level ].identity();
currentSources[ level ] = null;
for ( int method = 0; method < numInterpolationMethods; ++method )
currentInterpolatedSources[ level ][ method ] = null;
}
}
}
@Override @Override
public V getType() public V getType()
{ {
...@@ -66,4 +33,16 @@ public class VolatileSpimSource< T extends NumericType< T >, V extends Volatile< ...@@ -66,4 +33,16 @@ public class VolatileSpimSource< T extends NumericType< T >, V extends Volatile<
{ {
return nonVolatileSource; return nonVolatileSource;
} }
@Override
protected RandomAccessibleInterval< V > getImage( final View view, final int level )
{
return imgLoader.getVolatileImage( view, level );
}
@Override
protected AffineTransform3D[] getMipmapTransforms( final int setup )
{
return imgLoader.getMipmapTransforms( setup );
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment