Class SplitOctTree
java.lang.Object
net.preibisch.mvrecon.process.splitting.SplitOctTree
- All Implemented Interfaces:
SplitView
Adaptive oct-tree based image splitting with recursive correspondence partitioning.
Recursively subdivides regions until each region contains at most
a specified number of cross-view corresponding interest points
(or cannot be split further due to minStepSize constraints).
Uses O(n log n) recursive partitioning instead of O(n × intervals) naive approach:
correspondences are loaded once per view, then partitioned as intervals are split.
All tiles overlap by minStepSize to support fake corresponding points generation.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classResult of a split operation, including intervals and statistics. -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionSplitOctTree(long[] minStepSize, int[] minSizeMultiplier, OctTreeSplitCriterion criterion, int minSplitLevels, double[] anisotropy) Constructor with all parameters. -
Method Summary
Modifier and TypeMethodDescriptionaggregateStatistics(List<? extends SplitResult> results) Aggregate statistics from multiple split results into a summary string.double[]int[]intlong[]intmaxIntervalSpread(List<mpicbg.spim.data.sequence.ViewSetup> oldSetups) Compute the maximum number of intervals any single view could produce.static SplitOctTreequeryGUI(ij.gui.GenericDialog gd, SpimData2 data, long[] minStepSize) Query GUI components and create SplitOctTree instance.static SplitOctTreequeryGUI(ij.gui.GenericDialog gd, SpimData2 data, long[] minStepSize, Set<Integer> driveByChannelIds) Query GUI components and create SplitOctTree instance.static booleansetupGUI(ij.gui.GenericDialog gd, SpimData2 data, long[] minStepSize) Setup GUI components for oct-tree splitting parameters.static booleansetupGUI(ij.gui.GenericDialog gd, SpimData2 data, long[] minStepSize, Set<Integer> driveByChannelIds) Setup GUI components for oct-tree splitting parameters.Split a single view into sub-intervals.
-
Field Details
-
CRITERION_NAMES
-
defaultCriterionChoice
public static int defaultCriterionChoice -
defaultMinTileSize
public static long[] defaultMinTileSize -
defaultMinSplitLevels
public static int defaultMinSplitLevels -
defaultAnisotropyChoice
public static int defaultAnisotropyChoice -
minSizeMultiplierFloor
public static int minSizeMultiplierFloor -
ANISOTROPY_CHOICES
-
-
Constructor Details
-
SplitOctTree
public SplitOctTree(long[] minStepSize, int[] minSizeMultiplier, OctTreeSplitCriterion criterion, int minSplitLevels, double[] anisotropy) Constructor with all parameters.- Parameters:
minStepSize- Alignment constraint and overlap sizeminSizeMultiplier- Per-dimension multiplier for minimum split size, length must equal minStepSize.length (e.g., {4, 4, 2} means min tile size = {4*minStepSize[0], 4*minStepSize[1], 2*minStepSize[2]})criterion- The splitting criterion (determines when to stop splitting)minSplitLevels- Minimum number of split levels to always perform (0 = fully adaptive). Use minSplitLevels=1 for TPS-compatible splitting (guaranteed 8 non-co-planar tiles).anisotropy- Per-dimension voxel size ratio (e.g., {1, 1, 2} for 2x anisotropy in Z), or null for isotropic
-
-
Method Details
-
split
Description copied from interface:SplitViewSplit a single view into sub-intervals. -
maxIntervalSpread
Description copied from interface:SplitViewCompute the maximum number of intervals any single view could produce. Used to determine tile ID spacing.- Specified by:
maxIntervalSpreadin interfaceSplitView- Parameters:
oldSetups- the view setups to consider- Returns:
- upper bound on interval count per view
-
aggregateStatistics
Description copied from interface:SplitViewAggregate statistics from multiple split results into a summary string. Called after parallel splitting to produce a single log message.- Specified by:
aggregateStatisticsin interfaceSplitView- Parameters:
results- list of per-view split results- Returns:
- formatted summary string
-
description
- Specified by:
descriptionin interfaceSplitView- Returns:
- human-readable description of this splitter's configuration
-
setupGUI
Setup GUI components for oct-tree splitting parameters. -
setupGUI
public static boolean setupGUI(ij.gui.GenericDialog gd, SpimData2 data, long[] minStepSize, Set<Integer> driveByChannelIds) Setup GUI components for oct-tree splitting parameters.- Parameters:
driveByChannelIds- if non-null, interest-point label statistics (e.g. the "available for X/Y Views" counts) are restricted to views of these channels, which are the only ones whose own correspondences drive the split.
-
queryGUI
Query GUI components and create SplitOctTree instance. -
queryGUI
public static SplitOctTree queryGUI(ij.gui.GenericDialog gd, SpimData2 data, long[] minStepSize, Set<Integer> driveByChannelIds) Query GUI components and create SplitOctTree instance.- Parameters:
driveByChannelIds- must match the value passed tosetupGUI(ij.gui.GenericDialog, net.preibisch.mvrecon.fiji.spimdata.SpimData2, long[])so the label choices are parsed against the same (channel-restricted) view set.
-
getMinStepSize
public long[] getMinStepSize() -
getMinSizeMultiplier
public int[] getMinSizeMultiplier() -
getCriterion
-
getMinSplitLevels
public int getMinSplitLevels() -
getAnisotropy
public double[] getAnisotropy()
-