Skip to content

Commit e0d685c

Browse files
author
Stefan Hahmann
committed
Update segmentation logic with dropped singleton dimensions.
1 parent d97de8c commit e0d685c

2 files changed

Lines changed: 10 additions & 4 deletions

File tree

src/main/java/org/mastodon/mamut/detection/DeepLearningDetector.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,8 @@ private void detectAndAddSpots( final List< SourceAndConverter< ? > > sources, f
204204
}
205205

206206
System.err.println(); // show the FIJI console
207-
final Img< ? > segmentation = performSegmentation( image, source.getVoxelDimensions().dimensionsAsDoubleArray() );
207+
final Img< ? > segmentation =
208+
performSegmentation( Views.dropSingletonDimensions( image ), source.getVoxelDimensions().dimensionsAsDoubleArray() );
208209

209210
if ( segmentation != null )
210211
{
@@ -234,8 +235,11 @@ private boolean validateAndInitializeSettings()
234235
return true;
235236
}
236237

237-
protected double getAnisotropy( double[] voxelSizes )
238+
protected double getAnisotropy( double[] voxelSizes, boolean is3D )
238239
{
240+
if ( !is3D )
241+
return 1.0;
242+
239243
if ( voxelSizes == null || voxelSizes.length == 0 )
240244
{
241245
throw new IllegalArgumentException( "Array must not be empty" );

src/main/java/org/mastodon/mamut/detection/cellpose/Cellpose3Detector.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import net.imglib2.RandomAccessibleInterval;
5252
import net.imglib2.img.Img;
5353
import net.imglib2.util.Cast;
54+
import net.imglib2.view.Views;
5455

5556
import org.mastodon.mamut.detection.DeepLearningDetector;
5657
import org.mastodon.tracking.mamut.detection.SpotDetectorOp;
@@ -102,14 +103,15 @@ && checkParameter( settings, KEY_GPU_ID, Integer.class, errorHolder )
102103
{
103104
try (Cellpose3 cellpose = new Cellpose3( ( Cellpose3.ModelType ) settings.get( KEY_MODEL_TYPE ) ))
104105
{
105-
cellpose.set3D( is3D( image ) );
106+
boolean is3D = is3D( image );
107+
cellpose.set3D( is3D );
106108
cellpose.setCellProbThreshold( ( double ) settings.get( KEY_CELL_PROBABILITY_THRESHOLD ) );
107109
cellpose.setFlowThreshold( ( double ) settings.get( KEY_FLOW_THRESHOLD ) );
108110
cellpose.setDiameter( ( double ) settings.get( KEY_DIAMETER ) );
109111
cellpose.setGpuID( ( int ) settings.get( KEY_GPU_ID ) );
110112
cellpose.setGpuMemoryFraction( ( double ) settings.get( KEY_GPU_MEMORY_FRACTION ) );
111113
final boolean respectAnisotropy = ( boolean ) settings.get( KEY_RESPECT_ANISOTROPY );
112-
double anisotropy = respectAnisotropy ? getAnisotropy( voxelDimensions ) : 1.0;
114+
double anisotropy = respectAnisotropy ? getAnisotropy( voxelDimensions, is3D ) : 1.0;
113115
cellpose.setAnisotropy( ( float ) anisotropy );
114116
return cellpose.segmentImage( Cast.unchecked( image ) );
115117
}

0 commit comments

Comments
 (0)