本文整理汇总了Java中net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory类的典型用法代码示例。如果您正苦于以下问题:Java NearestNeighborInterpolatorFactory类的具体用法?Java NearestNeighborInterpolatorFactory怎么用?Java NearestNeighborInterpolatorFactory使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
NearestNeighborInterpolatorFactory类属于net.imglib2.interpolation.randomaccess包,在下文中一共展示了NearestNeighborInterpolatorFactory类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: render
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
public static < T extends Type< T > > void render( final RealRandomAccessible< T > source, final RandomAccessibleInterval< T > target, final RealTransform transform, final double dx )
{
final RealRandomAccessible< T > interpolant = Views.interpolate( Views.extendBorder( target ), new NearestNeighborInterpolatorFactory< T >() );
final RealRandomAccess< T > a = source.realRandomAccess();
final RealRandomAccess< T > b = interpolant.realRandomAccess();
for ( double y = 0; y < target.dimension( 1 ); y += dx )
{
a.setPosition( y, 1 );
for ( double x = 0; x < target.dimension( 0 ); x += dx )
{
a.setPosition( x, 0 );
transform.apply( a, b );
b.get().set( a.get() );
}
}
}
示例2: getInterpolatedSource
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
@Override
public RealRandomAccessible< T > getInterpolatedSource( final int t, final int level, final Interpolation method )
{
InterpolatorFactory< T, RandomAccessible< T >> factory;
switch ( method )
{
default:
case NEARESTNEIGHBOR:
factory = new NearestNeighborInterpolatorFactory< T >();
break;
case NLINEAR:
factory = new NLinearInterpolatorFactory< T >();
break;
}
final T zero = img.firstElement().createVariable();
zero.setZero();
return Views.interpolate( Views.extendValue( getSource( t, level ), zero ), factory );
}
示例3: upsample
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
public static <T extends RealType<T> & NativeType<T>> Img<T> upsample(Img<T> input, long[] out_size, Interpolator interpType){
int nDim = input.numDimensions();
if(nDim != out_size.length){
return input;
}
long[] in_size = new long[nDim];
input.dimensions(in_size);
float[] upfactor = new float[nDim];
for(int i=0; i<nDim; i++){
upfactor[i] = (float)out_size[i]/in_size[i];
}
RealRandomAccess< T > interpolant;
switch(interpType){
case Linear:
NLinearInterpolatorFactory<T> NLinterp_factory = new NLinearInterpolatorFactory<T>();
interpolant = Views.interpolate( Views.extendBorder( input ), NLinterp_factory ).realRandomAccess();
break;
case Lanczos:
LanczosInterpolatorFactory<T> LanczosInterp_factory = new LanczosInterpolatorFactory<T>();
interpolant = Views.interpolate( Views.extendBorder( input ), LanczosInterp_factory ).realRandomAccess();
break;
default: // NearestNeighbor:
NearestNeighborInterpolatorFactory<T> NNInterp_factory = new NearestNeighborInterpolatorFactory<T>();
interpolant = Views.interpolate( Views.extendBorder( input ), NNInterp_factory ).realRandomAccess();
break;
}
final ImgFactory< T > imgFactory = new ArrayImgFactory< T >();
final Img< T > output = imgFactory.create( out_size , input.firstElement().createVariable() );
Cursor< T > out_cursor = output.localizingCursor();
float[] tmp = new float[2];
while(out_cursor.hasNext()){
out_cursor.fwd();
for ( int d = 0; d < nDim; ++d )
tmp[ d ] = out_cursor.getFloatPosition(d) /upfactor[d];
interpolant.setPosition(tmp);
out_cursor.get().setReal( Math.round( interpolant.get().getRealFloat() ) );
}
return output;
}
示例4: fillMask
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
private < T extends BooleanType< T > > GrowingStoreRandomAccessibleSingletonAccess< T > fillMask( final AffineTransform3D tf, final long[] initialMin, final long[] initialMax, final Point p, final GrowingStoreRandomAccessibleSingletonAccess.Factory< T > factory, final T notVisited, final T fillLabel )
{
final GrowingStoreRandomAccessibleSingletonAccess< T > tmpFill = new GrowingStoreRandomAccessibleSingletonAccess<>( initialMin, initialMax, factory, notVisited.createVariable() );
final AccessBoxRandomAccessible< LongType > accessTrackingExtendedPaintedLabels = new AccessBoxRandomAccessible<>(
Views.extendValue(
paintedLabels,
new LongType( Label.TRANSPARENT ) ) );
final AffineRandomAccessible< LongType, AffineGet > transformedPaintedLabels =
RealViews.affine(
Views.interpolate(
accessTrackingExtendedPaintedLabels,
new NearestNeighborInterpolatorFactory<>() ),
tf );
final MixedTransformView< LongType > hyperSlice = Views.hyperSlice( Views.raster( transformedPaintedLabels ), 2, 0 );
final AffineRandomAccessible< LabelMultisetType, AffineGet > transformedLabels = RealViews.affine( Views.interpolate( Views.extendValue( labels, new LabelMultisetType() ), new NearestNeighborInterpolatorFactory<>() ), tf );
final MixedTransformView< LabelMultisetType > hyperSliceLabels = Views.hyperSlice( Views.raster( transformedLabels ), 2, 0 );
final RandomAccessiblePair< LabelMultisetType, LongType > labelsPaintedLabelsPair = new RandomAccessiblePair<>( hyperSliceLabels, hyperSlice );
final RandomAccessiblePair< LabelMultisetType, LongType >.RandomAccess pairAccess = labelsPaintedLabelsPair.randomAccess();
pairAccess.setPosition( p );
final long seedPaint = pairAccess.get().getB().getIntegerLong();
final long seedFragmentLabel = getBiggestLabel( pairAccess.getA() );
FloodFill.fill( labelsPaintedLabelsPair, tmpFill, p, new ValuePair< LabelMultisetType, LongType >( new LabelMultisetType(), new LongType( selectionController.getActiveFragmentId() ) ), fillLabel, new DiamondShape( 1 ), new SegmentAndPaintFilter2D< T >( seedPaint, seedFragmentLabel, assignment ), new TypeWriter<>() );
dirtyLabelsInterval.touch( accessTrackingExtendedPaintedLabels.createAccessInterval() );
return tmpFill;
}
示例5: writeMask
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
private void writeMask( final GrowingStoreRandomAccessibleSingletonAccess< BitType > tmpFill, final AffineTransform3D tf, final long label )
{
final IntervalView< BitType > tmpFillInterval = Views.interval( tmpFill, tmpFill.getIntervalOfSizeOfStore() );
final AccessBoxRandomAccessible< LongType > accessTrackingExtendedPaintedLabels = new AccessBoxRandomAccessible<>(
Views.extendValue(
paintedLabels,
new LongType( Label.TRANSPARENT ) ) );
final AffineRandomAccessible< LongType, AffineGet > transformedPaintedLabels =
RealViews.affine(
Views.interpolate(
accessTrackingExtendedPaintedLabels,
new NearestNeighborInterpolatorFactory<>() ),
tf );
final MixedTransformView< LongType > hyperSlice = Views.hyperSlice( Views.raster( transformedPaintedLabels ), 2, 0 );
final net.imglib2.Cursor< BitType > s = tmpFillInterval.cursor();
final net.imglib2.Cursor< LongType > t = Views.interval( hyperSlice, tmpFillInterval ).cursor();
while ( s.hasNext() )
{
t.fwd();
if ( s.next().get() )
t.get().set( label );
}
dirtyLabelsInterval.touch( accessTrackingExtendedPaintedLabels.createAccessInterval() );
}
示例6: processReal
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
static private final <T extends RealType<T>> Img<T> processReal(final Img<T> img, final long[] dim, final Mode mode) throws Exception {
final Img<T> res = img.factory().create(dim, img.firstElement().createVariable());
InterpolatorFactory<T,RandomAccessible<T>> ifac;
switch (mode) {
case LINEAR:
ifac = new NLinearInterpolatorFactory<T>();
break;
case NEAREST_NEIGHBOR:
ifac = new NearestNeighborInterpolatorFactory<T>();
break;
default:
throw new Exception("Resample: unknown mode!");
}
final RealRandomAccess<T> inter = ifac.create(Views.extend(img, new OutOfBoundsMirrorFactory<T,Img<T>>(OutOfBoundsMirrorFactory.Boundary.SINGLE)));
final Cursor<T> c2 = res.localizingCursor();
final float[] s = new float[dim.length];
for (int i=0; i<s.length; i++) s[i] = (float)img.dimension(i) / dim[i];
final long[] d = new long[dim.length];
final float[] p = new float[dim.length];
while (c2.hasNext()) {
c2.fwd();
c2.localize(d); // TODO "localize" seems to indicate the opposite of what it does
for (int i=0; i<d.length; i++) p[i] = d[i] * s[i];
inter.move(p);
c2.get().set(inter.get());
}
return res;
}
示例7: getInterpolatorFactory
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
public < T extends RealType< T > > InterpolatorFactory< T, RandomAccessible< T > > getInterpolatorFactory( final T type )
{
if ( getInterpolation() == 0 )
return new NearestNeighborInterpolatorFactory<T>();
else
return new NLinearInterpolatorFactory< T >();
}
示例8: setDoubleTypeScreenImage
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
private void setDoubleTypeScreenImage(final IntervalView< DoubleType > viewImg ) {
final DoubleType min = new DoubleType();
final DoubleType max = new DoubleType();
computeMinMax( viewImg, min, max );
final RealRandomAccessible< DoubleType > interpolated =
Views.interpolate( Views.extendZero( viewImg ), new NearestNeighborInterpolatorFactory< DoubleType >() );
//final RealARGBConverter< DoubleType > converter = new RealARGBConverter< DoubleType >( min.get(), max.get() );
final LUTConverter< DoubleType > converter = new LUTConverter< DoubleType >( min.getMinValue(), max.getMaxValue(), ColorTables.FIRE);
updateDoubleTypeSourceAndConverter( interpolated, converter );
}
示例9: setSourceImage
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
/**
* Replaces the current
*
* @param viewImg
*/
public < T extends RealType< T > & NativeType< T >> void setSourceImage( final RandomAccessibleInterval< T > viewImg )
{
this.ivSourceImage = viewImg;
final T min = Views.iterable( viewImg ).firstElement().copy();
final T max = min.copy();
computeMinMax( viewImg, min, max );
RealRandomAccessible< T > interpolated = null;
switch ( viewImg.numDimensions() )
{
case 2:
interpolated = Views.interpolate( Views.extendZero( viewImg ), new NearestNeighborInterpolatorFactory< T >() );
break;
case 3:
timeSlider.setMaximum( ( int ) viewImg.max( 2 ) );
tIndex = 0;
showTimeSlider( true );
interpolated = Views.interpolate( Views.extendZero( Views.hyperSlice( viewImg, 2, tIndex ) ), new NearestNeighborInterpolatorFactory< T >() );
break;
case 4:
timeSlider.setMaximum( ( int ) viewImg.max( 3 ) );
tIndex = 0;
showTimeSlider( true );
stackSlider.setMaximum( ( int ) viewImg.max( 2 ) );
zIndex = 0;
showStackSlider( true );
interpolated = Views.interpolate( Views.extendZero( Views.hyperSlice( Views.hyperSlice( viewImg, 3, tIndex ), 2, zIndex ) ), new NearestNeighborInterpolatorFactory< T >() );
break;
default:
throw new IllegalArgumentException( "" + viewImg.numDimensions() + " Dimension size is not supported!" );
}
final RealARGBConverter< T > converter = new RealARGBConverter< T >( min.getRealDouble(), max.getRealDouble() );
updateSourceAndConverter( interpolated, converter );
}
示例10: setOnlySourceImage
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
/**
* Updates the only sourceImage without updating converter
*
* @param sourceImage
* an IntervalView<T> containing the desired view onto the raw
* image data
*/
public < T extends RealType< T > & NativeType< T >> void setOnlySourceImage( final RandomAccessibleInterval< T > raiSource )
{
final IntervalView< T > sourceImage = Views.interval( raiSource, raiSource );
this.ivSourceImage = sourceImage;
RealRandomAccessible< T > interpolated = null;
switch ( sourceImage.numDimensions() )
{
case 2:
interpolated = Views.interpolate( Views.extendZero( sourceImage ), new NearestNeighborInterpolatorFactory< T >() );
break;
case 3:
timeSlider.setMaximum( ( int ) sourceImage.max( 2 ) );
showTimeSlider( true );
interpolated = Views.interpolate( Views.extendZero( Views.hyperSlice( sourceImage, 2, tIndex ) ), new NearestNeighborInterpolatorFactory< T >() );
break;
case 4:
timeSlider.setMaximum( ( int ) sourceImage.max( 3 ) );
showTimeSlider( true );
stackSlider.setMaximum( ( int ) sourceImage.max( 2 ) );
showStackSlider( true );
interpolated = Views.interpolate( Views.extendZero( Views.hyperSlice( Views.hyperSlice( sourceImage, 3, tIndex ), 2, zIndex ) ), new NearestNeighborInterpolatorFactory< T >() );
break;
default:
throw new IllegalArgumentException( "" + sourceImage.numDimensions() + " Dimension size is not supported!" );
}
updateSource( interpolated );
}
示例11: updateView
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
/**
* Update the display view.
*/
private < T extends RealType< T > & NativeType< T >> void updateView()
{
if ( this.ivSourceImage != null )
{
RandomAccessibleInterval< T > interval;
switch ( ivSourceImage.numDimensions() )
{
case 2:
interval = ivSourceImage;
break;
case 3:
interval = Views.hyperSlice( ivSourceImage, 2, tIndex );
break;
case 4:
interval = Views.hyperSlice( Views.hyperSlice( ivSourceImage, 3, tIndex ), 2, zIndex );
break;
default:
throw new IllegalArgumentException( "" + ivSourceImage.numDimensions() + " Dimension size is not supported!" );
}
final RealRandomAccessible< T > interpolated = Views.interpolate( Views.extendZero( interval ), new NearestNeighborInterpolatorFactory< T >() );
updateSource( interpolated );
}
}
示例12: interpolatorFactory
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
final static private < T extends RealType< T > >InterpolatorFactory< RealComposite< T >, RandomAccessible< RealComposite< T > > > interpolatorFactory( final Interpolation interpolation )
{
switch ( interpolation )
{
case NN:
return new NearestNeighborInterpolatorFactory< RealComposite< T > >();
default:
return new NLinearInterpolatorFactory< RealComposite< T > >();
}
}
示例13: doOnUnToggle
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
@Override
public void doOnUnToggle( final int x, final int y )
{
synchronized ( viewer )
{
viewer.setCursor( Cursor.getPredefinedCursor( Cursor.WAIT_CURSOR ) );
setCoordinates( x, y );
final Point p = new Point( Math.round( labelLocation.getDoublePosition( 0 ) ), Math.round( labelLocation.getDoublePosition( 1 ) ), Math.round( labelLocation.getDoublePosition( 2 ) ) );
final ArrayImg< ByteType, ByteArray > img = wrapBufferedImage( filledPixelsOverlay.img );
final ArrayRandomAccess< ByteType > imgAccess = img.randomAccess();
imgAccess.setPosition( new int[] { x, y } );
final byte overlayValueAtPoint = imgAccess.get().get();
final ExtendedRandomAccessibleInterval< ByteType, IntervalView< ByteType > > borderExtended = Views.extendBorder( Views.interval( Views.addDimension( img ), new FinalInterval( img.dimension( 0 ), img.dimension( 1 ), overlayValueAtPoint ) ) );
final RandomAccessibleOnRealRandomAccessible< ByteType > interpolatedAndTransformed =
Views.raster( RealViews.transform( Views.interpolate( borderExtended, new NearestNeighborInterpolatorFactory<>() ), labelTransform.inverse().copy().concatenate( viewerToGlobalCoordinatesTransform.inverse() )// toLabelSpace
) );
final long seedFragmentLabel = LabelFillController.getBiggestLabel( labels, p );
System.out.println( seedFragmentLabel + " " + overlayValueAtPoint + " " + getColor().getRGB() );
final RandomAccess< LongType > paintedLabelAccess = paintedLabels.randomAccess();
paintedLabelAccess.setPosition( p );
final long paintedLabel = paintedLabelAccess.get().get();
final long segmentLabel = assignment.getSegment( seedFragmentLabel );
final long comparison = paintedLabel == TRANSPARENT ? segmentLabel : paintedLabel;
final long[] fragmentsContainedInSegment = assignment.getFragments( segmentLabel );
final Filter< Pair< Pair< LabelMultisetType, ByteType >, LongType >, Pair< Pair< LabelMultisetType, ByteType >, LongType > > filter = ( p1, p2 ) -> {
final Pair< LabelMultisetType, ByteType > multiSetOverlayPairComp = p1.getA();
final long currentPaint = p1.getB().get();
if ( multiSetOverlayPairComp.getB().get() == overlayValueAtPoint && currentPaint != p2.getB().get() )
{
if ( currentPaint != TRANSPARENT )
return currentPaint == comparison;
else
{
final LabelMultisetType currentMultiSet = multiSetOverlayPairComp.getA();
for ( final long fragment : fragmentsContainedInSegment )
if ( currentMultiSet.contains( fragment ) )
return true;
return false;
}
}
return false;
};
final long t0 = System.currentTimeMillis();
final AccessBoxRandomAccessible< LongType > accessTrackingExtendedPaintedLabels =
new AccessBoxRandomAccessible<>(
Views.extendValue(
paintedLabels,
new LongType( Label.TRANSPARENT ) ) );
FloodFill.fill( new RandomAccessiblePair<>(
Views.extendValue( labels, new LabelMultisetType() ),
interpolatedAndTransformed ),
accessTrackingExtendedPaintedLabels,
p,
new ValuePair<>( new LabelMultisetType(), new ByteType( overlayValueAtPoint ) ),
new LongType( selectionController.getActiveFragmentId() ),
new DiamondShape( 1 ),
filter );
dirtyLabelsInterval.touch( accessTrackingExtendedPaintedLabels.createAccessInterval() );
final long t1 = System.currentTimeMillis();
System.out.println( "Filling took " + ( t1 - t0 ) + " ms" );
System.out.println( " modified box: " + Util.printInterval( dirtyLabelsInterval.getDirtyInterval() ) );
viewer.setCursor( Cursor.getPredefinedCursor( Cursor.DEFAULT_CURSOR ) );
viewer.requestRepaint();
}
action.run();
}
示例14: fuse
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
protected static < T extends RealType< T > & NativeType< T > > ImagePlus fuse( final T targetType, final ImagePlus imp1, final ImagePlus imp2, final ArrayList<InvertibleBoundable> models, final StitchingParameters params )
{
final ArrayList<ImagePlus> images = new ArrayList< ImagePlus >();
images.add( imp1 );
images.add( imp2 );
if ( params.fusionMethod < 6 )
{
ImagePlus imp = Fusion.fuse( targetType, images, models, params.dimensionality, params.subpixelAccuracy, params.fusionMethod, null, false, params.ignoreZeroValuesFusion, params.displayFusion );
return imp;
}
else if ( params.fusionMethod == 6 ) // overlay
{
// images are always the same, we just trigger different timepoints
final InterpolatorFactory< FloatType, RandomAccessible< FloatType > > factory;
if ( params.subpixelAccuracy )
factory = new NLinearInterpolatorFactory<FloatType>();
else
factory = new NearestNeighborInterpolatorFactory< FloatType >();
// fuses the first timepoint but estimates the boundaries for all timepoints as it gets all models
final CompositeImage timepoint0 = OverlayFusion.createOverlay( targetType, images, models, params.dimensionality, 1, factory );
if ( imp1.getNFrames() > 1 )
{
final ImageStack stack = new ImageStack( timepoint0.getWidth(), timepoint0.getHeight() );
// add all slices of the first timepoint
for ( int c = 1; c <= timepoint0.getStackSize(); ++c )
stack.addSlice( "", timepoint0.getStack().getProcessor( c ) );
//"Overlay into composite image"
for ( int f = 2; f <= imp1.getNFrames(); ++f )
{
final CompositeImage tmp = OverlayFusion.createOverlay( targetType, images, models, params.dimensionality, f, factory );
// add all slices of the first timepoint
for ( int c = 1; c <= tmp.getStackSize(); ++c )
stack.addSlice( "", tmp.getStack().getProcessor( c ) );
}
//convertXYZCT ...
ImagePlus result = new ImagePlus( params.fusedName, stack );
// numchannels, z-slices, timepoints (but right now the order is still XYZCT)
result.setDimensions( timepoint0.getNChannels(), timepoint0.getNSlices(), imp1.getNFrames() );
return CompositeImageFixer.makeComposite( result, CompositeImage.COMPOSITE );
}
else
{
timepoint0.setTitle( params.fusedName );
return timepoint0;
}
}
else
{
//"Do not fuse images"
return null;
}
}
示例15: main
import net.imglib2.interpolation.randomaccess.NearestNeighborInterpolatorFactory; //导入依赖的package包/类
final static public void main( final String[] args )
{
new ImageJ();
ImgFactory< FloatType > imgFactory = new ArrayImgFactory< FloatType >();
Img< FloatType > img = null;
try
{
final ImgOpener io = new ImgOpener();
img = io.openImg( "/home/tobias/workspace/data/DrosophilaWing.tif", imgFactory, new FloatType() );
}
catch ( Exception e )
{
e.printStackTrace();
return;
}
Img< FloatType > interpolatedImg = imgFactory.create( new long[] {200, 200}, new FloatType () );
double[] offset;
double scale;
InterpolatorFactory< FloatType, RandomAccessible< FloatType > > interpolatorFactory;
offset = new double[] {50, 10};
scale = 1.0;
interpolatorFactory = new NLinearInterpolatorFactory< FloatType >();
final ImagePlus imp = ImageJFunctions.show( interpolatedImg );
imp.getImageStack().getProcessor( 0 ).setMinAndMax( 0, 255 );
for ( int i=0; i<2000; ++i ) {
copyInterpolatedGeneric( img, interpolatedImg, offset, scale, interpolatorFactory );
imp.getImageStack().getProcessor( 0 ); // update the internal img data in the underlying ImageJVirtualStack
imp.updateAndDraw();
offset[0] += 0.2;
offset[0] += 0.04;
scale *= 0.999;
}
offset = new double[] {50, 10};
scale = 1.0;
interpolatorFactory = new NearestNeighborInterpolatorFactory< FloatType >();
for ( int i=0; i<2000; ++i ) {
copyInterpolatedGeneric( img, interpolatedImg, offset, scale, interpolatorFactory );
imp.getImageStack().getProcessor( 0 ); // update the internal img data in the underlying ImageJVirtualStack
imp.updateAndDraw();
offset[0] += 0.2;
offset[0] += 0.04;
scale *= 0.999;
}
}