Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@ else if ( fusion.getPixelType() == 1 )
fusion.getNonRigidParameters().getAlpha(),
false,
fusion.getInterpolation(),
fusion.getBlendingRange(),
fusion.adjustIntensities() ? spimData.getIntensityAdjustments().getIntensityAdjustments() : null,
taskExecutor,
fusion.getBoundingBox(),
Expand Down Expand Up @@ -256,6 +257,7 @@ else if ( fusion.getPixelType() == 1 )
spimData.getSequenceDescription().getViewDescriptions(),
fusion.getFusionType(),
fusion.getInterpolation(), // linear interpolatio
fusion.getBlendingRange(),
fusion.adjustIntensities() ? spimData.getIntensityAdjustments().getIntensityAdjustments() : null,
fusion.getBoundingBox(),
(RealType & NativeType)type,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ public class FusionGUI implements FusionExportInterface
public static int maxCacheSize = Integer.MAX_VALUE;

public static double defaultDownsampling = 1.0;
public static float defaultBlendingRange = 40;
public static int defaultBB = 0;

public static String[] interpolationTypes = new String[]{ "Nearest Neighbor", "Linear Interpolation" };
Expand Down Expand Up @@ -114,6 +115,7 @@ public enum FusionType { AVG, AVG_BLEND, AVG_CONTENT, AVG_BLEND_CONTENT, MAX, FI
protected double max = defaultMax;
protected int splittingType = defaultSplittingType;
protected double downsampling = defaultDownsampling;
protected float blendingRange = defaultBlendingRange;
protected int fusionType = defaultFusionType;
protected boolean adjustIntensities = defaultAdjustIntensities;
protected boolean preserveAnisotropy = defaultPreserveAnisotropy;
Expand Down Expand Up @@ -205,6 +207,8 @@ public Interval getDownsampledBoundingBox()
@Override
public double getDownsampling(){ return downsampling; }

public float getBlendingRange(){ return blendingRange; }

public FusionType getFusionType() { return FusionType.values()[ fusionType ]; }

public boolean adjustIntensities() { return adjustIntensities; }
Expand Down Expand Up @@ -312,6 +316,8 @@ public boolean queryDetails()
gd.addSlider( "Downsampling", 1.0, 16.0, defaultDownsampling );
downsampleField = PluginHelper.isHeadless() ? null : (TextField)gd.getNumericFields().lastElement();

gd.addNumericField("Blending_range", defaultBlendingRange);

gd.addChoice( "Interpolation", interpolationTypes, interpolationTypes[ defaultInterpolation ] );

gd.addChoice( "Fusion_type", fusionTypes, fusionTypes[ defaultFusionType ] );
Expand Down Expand Up @@ -412,6 +418,8 @@ public boolean queryDetails()
if ( downsampling == 1.0 )
downsampling = Double.NaN;

blendingRange = defaultBlendingRange = (float) gd.getNextNumber();

interpolation = defaultInterpolation = gd.getNextChoiceIndex();
fusionType = defaultFusionType = gd.getNextChoiceIndex();
pixelType = defaultPixelType = gd.getNextChoiceIndex();
Expand Down Expand Up @@ -460,6 +468,7 @@ public boolean queryDetails()

IOFunctions.println( new Date( System.currentTimeMillis() ) + ": Selected Fusion Parameters: " );
IOFunctions.println( "Downsampling: " + DownsampleTools.printDownsampling( getDownsampling() ) );
IOFunctions.println( "BlendingRange: " + blendingRange );
IOFunctions.println( "BoundingBox: " + getBoundingBox() );
IOFunctions.println( "DownsampledBoundingBox: " + getDownsampledBoundingBox() );
IOFunctions.println( "PixelType: " + pixelTypes1[ getPixelType() ] );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public static ArrayList< Pair< RandomAccessibleInterval< FloatType >, AffineTran
final int maxDS,
final int dsInc )
{
return createMultiResolutionNonRigid( spimData, viewsToFuse, viewsToUse, labels, FusionType.AVG_BLEND, false, controlPointDistance, 1.0, 1, boundingBox, null, service, minDS, maxDS, dsInc );
return createMultiResolutionNonRigid( spimData, viewsToFuse, viewsToUse, labels, FusionType.AVG_BLEND, false, controlPointDistance, 1.0, 1, FusionTools.defaultBlendingRange, boundingBox, null, service, minDS, maxDS, dsInc );
}

public static ArrayList< Pair< RandomAccessibleInterval< FloatType >, AffineTransform3D > > createMultiResolutionNonRigid(
Expand All @@ -98,6 +98,7 @@ public static ArrayList< Pair< RandomAccessibleInterval< FloatType >, AffineTran
final long controlPointDistance,
final double alpha,
final int interpolation,
final float blendingRange,
final Interval boundingBox,
final Map< ? extends ViewId, AffineModel1D > intensityAdjustments,
final ExecutorService service,
Expand Down Expand Up @@ -125,7 +126,7 @@ public static ArrayList< Pair< RandomAccessibleInterval< FloatType >, AffineTran

final Map< ViewId, ? extends BasicViewDescription< ? > > viewDescriptions = spimData.getSequenceDescription().getViewDescriptions();

return createMultiResolutionNonRigid( imgLoader, viewRegistrations, spimData.getViewInterestPoints().getViewInterestPoints(), viewDescriptions, viewsToFuse, viewsToUse, labels, fusionType, displayDistances, controlPointDistance, alpha, interpolation, boundingBox, intensityAdjustments, service, minDS, maxDS, dsInc );
return createMultiResolutionNonRigid( imgLoader, viewRegistrations, spimData.getViewInterestPoints().getViewInterestPoints(), viewDescriptions, viewsToFuse, viewsToUse, labels, fusionType, displayDistances, controlPointDistance, alpha, interpolation, blendingRange, boundingBox, intensityAdjustments, service, minDS, maxDS, dsInc );
}

public static ArrayList< Pair< RandomAccessibleInterval< FloatType >, AffineTransform3D > > createMultiResolutionNonRigid(
Expand All @@ -141,6 +142,7 @@ public static ArrayList< Pair< RandomAccessibleInterval< FloatType >, AffineTran
final long controlPointDistance,
final double alpha,
final int interpolation,
final float blendingRange,
final Interval boundingBox,
final Map< ? extends ViewId, AffineModel1D > intensityAdjustments,
final ExecutorService service,
Expand Down Expand Up @@ -197,6 +199,7 @@ public static ArrayList< Pair< RandomAccessibleInterval< FloatType >, AffineTran
fusionType,
displayDistances,
interpolation,
blendingRange,
intensityAdjustments,
NonRigidTools.defaultOverlapExpansion( uniquePointsData.getB() ) );

Expand Down Expand Up @@ -236,7 +239,7 @@ public static ArrayList< Pair< RandomAccessibleInterval< FloatType >, AffineTran
spimData.getSequenceDescription().getImgLoader(),
registrations,
spimData.getSequenceDescription().getViewDescriptions(),
viewIds, FusionType.AVG_BLEND, 1, boundingBox, null, minDS, maxDS, dsInc );
viewIds, FusionType.AVG_BLEND, 1, FusionTools.defaultBlendingRange, boundingBox, null, minDS, maxDS, dsInc );
}

public static ArrayList< Pair< RandomAccessibleInterval< FloatType >, AffineTransform3D > > createMultiResolutionAffine(
Expand All @@ -246,6 +249,7 @@ public static ArrayList< Pair< RandomAccessibleInterval< FloatType >, AffineTran
final Collection< ? extends ViewId > views,
final FusionType fusionType,
final int interpolation,
final float blendingRange,
final Interval boundingBox,
final Map< ? extends ViewId, AffineModel1D > intensityAdjustments,
final int minDS,
Expand Down Expand Up @@ -277,6 +281,7 @@ public static ArrayList< Pair< RandomAccessibleInterval< FloatType >, AffineTran
views,
fusionType,
interpolation,
blendingRange,
pair.getA(), // bounding box
intensityAdjustments ),
pair.getB() ) );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -696,6 +696,7 @@ protected ImagePlus getGroupedImagePlusForInteractive( final String dialogHeader
group.getViews(),
FusionType.FIRST,
DisplayFusedImagesPopup.defaultInterpolation,
FusionTools.defaultBlendingRange,
bbDS,
null );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,6 @@ public static void main( String[] args ) throws SpimDataException

service.shutdown();

FusionTools.displayCopy( FusionTools.fuseVirtual( spimData, viewIds, FusionType.AVG_BLEND, 1, bb, null ), estimation.getMinIntensity(), estimation.getMaxIntensity() ).show();
FusionTools.displayCopy( FusionTools.fuseVirtual( spimData, viewIds, FusionType.AVG_BLEND, 1, FusionTools.defaultBlendingRange, bb, null ), estimation.getMinIntensity(), estimation.getMaxIntensity() ).show();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -150,14 +150,14 @@ public static void testBalance( final SpimData2 spimData )
spimData.getSequenceDescription().getImgLoader(),
registrations,
spimData.getSequenceDescription().getViewDescriptions(),
viewIds, FusionType.AVG, 1, bb, intensityMapping );
viewIds, FusionType.AVG, 1, FusionTools.defaultBlendingRange, bb, intensityMapping );

final RandomAccessibleInterval< FloatType > virtual =
FusionTools.fuseVirtual(
spimData.getSequenceDescription().getImgLoader(),
registrations,
spimData.getSequenceDescription().getViewDescriptions(),
viewIds, FusionType.AVG, 1, bb, null );
viewIds, FusionType.AVG, 1, FusionTools.defaultBlendingRange, bb, null );

//
// actually fuse into an image multithreaded
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ public static Pair< List< ViewId >, Interval > testInterpolation(
labels.add( "nuclei" );

final int interpolation = 1;
final float blendingRange = 40;
final long[] controlPointDistance = new long[] { cpd, cpd, cpd };
final double alpha = 1.0;
final boolean virtualGrid = false;
Expand Down Expand Up @@ -192,6 +193,7 @@ public static Pair< List< ViewId >, Interval > testInterpolation(
alpha,
virtualGrid,
interpolation,
blendingRange,
boundingBox,
null,
service );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ public BoundingBox estimate( final String title )
spimData.getSequenceDescription().getImgLoader(),
registrations,
spimData.getSequenceDescription().getViewDescriptions(),
views, FusionType.AVG_BLEND, 1, maxBBDS, null ),
views, FusionType.AVG_BLEND, 1, FusionTools.defaultBlendingRange, maxBBDS, null ),
new ArrayImgFactory<>( new FloatType() ),
new FloatType(),
service );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ public static RandomAccessibleInterval< FloatType > fuseVirtual(
final FusionType fusionType,
final Interval bb )
{
return fuseVirtual( imgloader, registrations, viewDescriptions, views, fusionType, 1, bb, null );
return fuseVirtual( imgloader, registrations, viewDescriptions, views, fusionType, 1, FusionTools.defaultBlendingRange, bb, null );
}

/**
Expand Down Expand Up @@ -268,14 +268,15 @@ public static RandomAccessibleInterval< FloatType > fuseVirtual(
final Interval bb,
final Map< ? extends ViewId, AffineModel1D > intensityAdjustments )
{
return fuseVirtual( spimData, viewIds, fusionType, 1, bb, intensityAdjustments );
return fuseVirtual( spimData, viewIds, fusionType, 1, FusionTools.defaultBlendingRange, bb, intensityAdjustments );
}

public static RandomAccessibleInterval< FloatType > fuseVirtual(
final AbstractSpimData< ? > spimData,
final Collection< ? extends ViewId > views,
final FusionType fusionType,
final int interpolation,
final float blendingRange,
final Interval boundingBox,
final Map< ? extends ViewId, AffineModel1D > intensityAdjustments )
{
Expand All @@ -292,7 +293,7 @@ public static RandomAccessibleInterval< FloatType > fuseVirtual(

final Map< ViewId, ? extends BasicViewDescription< ? > > viewDescriptions = spimData.getSequenceDescription().getViewDescriptions();

return fuseVirtual( imgLoader, registrations, viewDescriptions, views, fusionType, interpolation, boundingBox, intensityAdjustments );
return fuseVirtual( imgLoader, registrations, viewDescriptions, views, fusionType, interpolation, blendingRange, boundingBox, intensityAdjustments );
}

/**
Expand Down Expand Up @@ -395,6 +396,7 @@ public static RandomAccessibleInterval< FloatType > fuseVirtual(
final Collection< ? extends ViewId > views,
final FusionType fusionType, // see FusionGUI.fusionTypes[]{"Avg", "Avg, Blending", "Avg, Content Based", "Avg, Blending & Content Based", "Max", "First Tile Wins"}
final int interpolation,
final float blendingRange,
final Interval boundingBox, // is already downsampled
//final double downsampling,
final Map< ? extends ViewId, AffineModel1D > intensityAdjustments )
Expand Down Expand Up @@ -503,7 +505,7 @@ public static RandomAccessibleInterval< FloatType > fuseVirtual(
// instantiate blending if necessary
if ( fusionType == FusionType.AVG_BLEND || fusionType == FusionType.AVG_BLEND_CONTENT )
{
final float[] blending = Util.getArrayFromValue( defaultBlendingRange, 3 );
final float[] blending = Util.getArrayFromValue( blendingRange, 3 );
final float[] border = Util.getArrayFromValue( defaultBlendingBorder, 3 );

// TODO: this is wrong, since the blending is applied to the input images
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ public static < T extends RealType< T > & NativeType< T > > RandomAccessibleInte
final Map< ViewId, ? extends BasicViewDescription< ? > > viewDescriptions,
final FusionType fusionType,
final int interpolationMethod,
final float blendingRange,
final Map< ViewId, AffineModel1D > intensityAdjustments,
final Interval fusionInterval,
final T type,
Expand All @@ -90,7 +91,7 @@ public static < T extends RealType< T > & NativeType< T > > RandomAccessibleInte
if ( !supports( is2d, fusionType, intensityAdjustments ) )
{
IOFunctions.println( "BlkAffineFusion: Fusion method not supported (yet). Falling back to LazyAffineFusion." );
return LazyAffineFusion.init( converter, imgloader, viewIds, viewRegistrations, viewDescriptions, fusionType, interpolationMethod, intensityAdjustments, fusionInterval, type, blockSize );
return LazyAffineFusion.init( converter, imgloader, viewIds, viewRegistrations, viewDescriptions, fusionType, interpolationMethod, blendingRange, intensityAdjustments, fusionInterval, type, blockSize );
}

final HashMap< ViewId, Dimensions > viewDimensions = LazyFusionTools.assembleDimensions( viewIds, viewDescriptions );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ public class LazyAffineFusion<T extends RealType<T> & NativeType<T>> implements

final FusionType fusionType;
final int interpolation;
final float blendingRange;
final Map< ViewId, AffineModel1D > intensityAdjustments;

/**
Expand All @@ -89,6 +90,7 @@ public class LazyAffineFusion<T extends RealType<T> & NativeType<T>> implements
* @param viewDescriptions - the viewdescriptions
* @param fusionType - how to combine pixels
* @param interpolation - 1==linear, 0==nearest neighbor
* @param blendingRange - the pixels at the boundary across which to blend
* @param intensityAdjustments - intensity adjustments, can be null
* @param globalMin - the output RAI typically sits at 0,0...0 because it usually is a CachedCellImage (but the actual interval to process in many blocks sits somewhere else)
* @param type - which type to fuse
Expand All @@ -101,6 +103,7 @@ public LazyAffineFusion(
final Map< ViewId, ? extends BasicViewDescription< ? > > viewDescriptions,
final FusionType fusionType,
final int interpolation,
final float blendingRange,
final Map< ViewId, AffineModel1D > intensityAdjustments,
final long[] globalMin,
final T type )
Expand All @@ -116,6 +119,7 @@ public LazyAffineFusion(
this.viewDescriptions = viewDescriptions;
this.fusionType = fusionType;
this.interpolation = interpolation;
this.blendingRange = blendingRange;
this.intensityAdjustments = intensityAdjustments;
}

Expand All @@ -136,6 +140,7 @@ public void accept( final RandomAccessibleInterval<T> output )
viewIds,
fusionType,
interpolation, // linear interpolation
blendingRange,
targetBlock,
intensityAdjustments ); // intensity adjustments

Expand Down Expand Up @@ -173,6 +178,7 @@ public static final <T extends RealType<T> & NativeType<T>> RandomAccessibleInte
final Map< ViewId, ? extends BasicViewDescription< ? > > viewDescriptions,
final FusionType fusionType,
final int interpolation,
final float blendingRange,
final Map< ViewId, AffineModel1D > intensityAdjustments,
final Interval fusionInterval,
final T type,
Expand All @@ -187,6 +193,7 @@ public static final <T extends RealType<T> & NativeType<T>> RandomAccessibleInte
viewDescriptions,
fusionType,
interpolation,
blendingRange,
intensityAdjustments,
fusionInterval.minAsLongArray(),
type.createVariable() );
Expand Down Expand Up @@ -232,6 +239,7 @@ public static void main( String[] args ) throws SpimDataException
data.getSequenceDescription().getViewDescriptions(),
FusionType.AVG_BLEND,
1, // linear interpolatio
FusionTools.defaultBlendingRange,
null, // intensity adjustment
bb,
new FloatType(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ public class LazyNonRigidFusion <T extends RealType<T> & NativeType<T>> implemen
final FusionType fusionType;
final boolean displayDistances;
final int interpolation;
final float blendingRange;
final Map< ? extends ViewId, AffineModel1D > intensityAdjustments;

final double maxDist;
Expand All @@ -108,6 +109,7 @@ public LazyNonRigidFusion(
final double alpha,
final boolean virtualGrid,
final int interpolation,
final float blendingRange,
final Map< ? extends ViewId, AffineModel1D > intensityAdjustments,
final ExecutorService service,
final Interval boundingBox,
Expand All @@ -121,6 +123,7 @@ public LazyNonRigidFusion(
this.fusionType = fusionType;
this.displayDistances = displayDistances;
this.interpolation = interpolation;
this.blendingRange = blendingRange;
this.intensityAdjustments = intensityAdjustments;

this.converter = converter;
Expand Down Expand Up @@ -173,6 +176,7 @@ public void accept( final RandomAccessibleInterval<T> output )
fusionType,
displayDistances,
interpolation,
blendingRange,
intensityAdjustments,
NonRigidTools.defaultOverlapExpansion( maxDist ) );

Expand Down Expand Up @@ -210,6 +214,7 @@ public static final <T extends RealType<T> & NativeType<T>> RandomAccessibleInte
final double alpha,
final boolean virtualGrid,
final int interpolation,
final float blendingRange,
final Map< ? extends ViewId, AffineModel1D > intensityAdjustments,
final ExecutorService service,
final Interval fusionInterval,
Expand All @@ -232,6 +237,7 @@ public static final <T extends RealType<T> & NativeType<T>> RandomAccessibleInte
alpha,
virtualGrid,
interpolation,
blendingRange,
intensityAdjustments,
service,
fusionInterval,
Expand Down Expand Up @@ -263,6 +269,7 @@ public static void main( String[] args ) throws SpimDataException
final int cpd = Math.max( 1, (int)Math.round( 10 / ds ) );
final List< String > labels = Arrays.asList("nuclei"); //"beads13", "beads"
final int interpolation = 1;
final float blendingRange = 40;
final long[] controlPointDistance = new long[] { cpd, cpd, cpd };
final double alpha = 1.0;
final boolean virtualGrid = false;
Expand Down Expand Up @@ -300,6 +307,7 @@ public static void main( String[] args ) throws SpimDataException
alpha,
virtualGrid,
interpolation,
blendingRange,
null,
service,
boundingBox,
Expand Down
Loading