Class SplitImgLoaderThinPlateSplineFusion
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classA single nail landmark donated from one split sub-view's surface onto the recipient underlying view's TPS.static final classOne TPS landmark, classified by category. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncomputeCrossViewNailDonations(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, Collection<? extends mpicbg.spim.data.sequence.ViewId> underlyingViewIds, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, double cornerCoverageRadius, int seamSamplesPerAxis, int[] seamSamplesScheduleThresholds, int[] seamSamplesScheduleValues, Consumer<SplitImgLoaderThinPlateSplineFusion.LandmarkRecord> landmarkVisitor) Compute cross-view nail donations across all underlying views in one pass.static LandmarksgetCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling) Backward-compatible overload — center landmarks only (no correspondence-based midpoint landmarks).static LandmarksgetCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences) Backward-compatible overload — correspondence midpoints but no corner anchors.static LandmarksgetCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius) Backward-compatible overload — corner anchors with N=2 (corners only).static LandmarksgetCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis) Backward-compatible overload — no landmark visitor.static LandmarksgetCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis, int[] seamSamplesScheduleThresholds, int[] seamSamplesScheduleValues, Consumer<SplitImgLoaderThinPlateSplineFusion.LandmarkRecord> landmarkVisitor) Backward-compatible overload — no donated nails.static LandmarksgetCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis, int[] seamSamplesScheduleThresholds, int[] seamSamplesScheduleValues, Consumer<SplitImgLoaderThinPlateSplineFusion.LandmarkRecord> landmarkVisitor, List<SplitImgLoaderThinPlateSplineFusion.DonatedNail> donatedNails) Build TPS Landmarks for one underlying viewU.static LandmarksgetCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis, Consumer<SplitImgLoaderThinPlateSplineFusion.LandmarkRecord> landmarkVisitor) Backward-compatible overload — visitor only, no per-split schedule, no donated nails.static bdv.ViewerImgLoaderstatic <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>>
net.imglib2.algorithm.blocks.BlockSupplier<T> init(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitViewRegistrations, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, FusionGUI.FusionType fusionType, int intervalExpansion, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize) Backward-compatible overload — center landmarks only (no correspondence-based midpoint landmarks).static <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>>
net.imglib2.algorithm.blocks.BlockSupplier<T> init(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitViewRegistrations, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, FusionGUI.FusionType fusionType, int intervalExpansion, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences) Backward-compatible overload — correspondence midpoints, no corner anchors.static <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>>
net.imglib2.algorithm.blocks.BlockSupplier<T> init(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitViewRegistrations, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, FusionGUI.FusionType fusionType, int intervalExpansion, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius) Backward-compatible overload — corner anchors with N=2 (corners only).static <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>>
net.imglib2.algorithm.blocks.BlockSupplier<T> init(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitViewRegistrations, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, FusionGUI.FusionType fusionType, int intervalExpansion, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis) Backward-compatible overload — no landmark visitor.static <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>>
net.imglib2.algorithm.blocks.BlockSupplier<T> init(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitViewRegistrations, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, FusionGUI.FusionType fusionType, int intervalExpansion, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis, int[] seamSamplesScheduleThresholds, int[] seamSamplesScheduleValues, Consumer<SplitImgLoaderThinPlateSplineFusion.LandmarkRecord> landmarkVisitor) static <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>>
net.imglib2.algorithm.blocks.BlockSupplier<T> init(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitViewRegistrations, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, FusionGUI.FusionType fusionType, int intervalExpansion, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis, Consumer<SplitImgLoaderThinPlateSplineFusion.LandmarkRecord> landmarkVisitor) Backward-compatible overload — visitor only, no per-split schedule.static <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>,D extends net.imglib2.type.NativeType<D> & net.imglib2.type.numeric.RealType<D>>
net.imglib2.algorithm.blocks.BlockSupplier<T> initWithLoadedDfields(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, Map<mpicbg.spim.data.sequence.ViewId, net.imglib2.Interval> viewBounds, Map<mpicbg.spim.data.sequence.ViewId, net.imglib2.algorithm.blocks.dfield.DisplacementFields.TransformedDisplacementField<D>> rawDfields, FusionGUI.FusionType fusionType, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize, Map<mpicbg.spim.data.sequence.ViewId, net.imglib2.realtransform.AffineTransform3D> approximateAffines) Same asinit(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T>, net.preibisch.mvrecon.fiji.spimdata.imgloaders.splitting.SplitViewerImgLoader, java.util.Collection<? extends mpicbg.spim.data.sequence.ViewId>, java.util.Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration>, java.util.Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>>, net.preibisch.mvrecon.fiji.plugin.fusion.FusionGUI.FusionType, int, double, int, java.util.Map<java.lang.Integer, java.lang.Integer>, java.util.Map<mpicbg.spim.data.sequence.ViewId, net.preibisch.mvrecon.process.fusion.intensity.Coefficients>, net.imglib2.Interval, T, int[])but accepts pre-built per-underlying-view dfields and approximate affines (e.g. loaded from disk after a distributed Phase-1.5 materialization).old2newSetupId(Map<Integer, Integer> new2oldSetupId) static List<mpicbg.spim.data.sequence.ViewId> splitViewIds(Collection<? extends mpicbg.spim.data.sequence.ViewId> underlyingViewIds, Map<Integer, List<Integer>> old2newSetupId) static List<mpicbg.spim.data.sequence.ViewId> underlyingViewIds(Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIds, Map<Integer, Integer> new2oldSetupId)
-
Constructor Details
-
SplitImgLoaderThinPlateSplineFusion
public SplitImgLoaderThinPlateSplineFusion()
-
-
Method Details
-
init
public static <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>> net.imglib2.algorithm.blocks.BlockSupplier<T> init(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitViewRegistrations, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, FusionGUI.FusionType fusionType, int intervalExpansion, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize) Backward-compatible overload — center landmarks only (no correspondence-based midpoint landmarks). -
init
public static <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>> net.imglib2.algorithm.blocks.BlockSupplier<T> init(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitViewRegistrations, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, FusionGUI.FusionType fusionType, int intervalExpansion, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences) Backward-compatible overload — correspondence midpoints, no corner anchors. -
init
public static <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>> net.imglib2.algorithm.blocks.BlockSupplier<T> init(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitViewRegistrations, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, FusionGUI.FusionType fusionType, int intervalExpansion, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius) Backward-compatible overload — corner anchors with N=2 (corners only). -
init
public static <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>> net.imglib2.algorithm.blocks.BlockSupplier<T> init(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitViewRegistrations, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, FusionGUI.FusionType fusionType, int intervalExpansion, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis) Backward-compatible overload — no landmark visitor. -
init
public static <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>> net.imglib2.algorithm.blocks.BlockSupplier<T> init(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitViewRegistrations, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, FusionGUI.FusionType fusionType, int intervalExpansion, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis, Consumer<SplitImgLoaderThinPlateSplineFusion.LandmarkRecord> landmarkVisitor) Backward-compatible overload — visitor only, no per-split schedule. -
init
public static <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>> net.imglib2.algorithm.blocks.BlockSupplier<T> init(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitViewRegistrations, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, FusionGUI.FusionType fusionType, int intervalExpansion, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis, int[] seamSamplesScheduleThresholds, int[] seamSamplesScheduleValues, Consumer<SplitImgLoaderThinPlateSplineFusion.LandmarkRecord> landmarkVisitor) -
initWithLoadedDfields
public static <T extends net.imglib2.type.numeric.RealType<T> & net.imglib2.type.NativeType<T>,D extends net.imglib2.type.NativeType<D> & net.imglib2.type.numeric.RealType<D>> net.imglib2.algorithm.blocks.BlockSupplier<T> initWithLoadedDfields(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T> converter, SplitViewerImgLoader splitImgLoader, Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIdsInput, Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> splitViewDescriptions, Map<mpicbg.spim.data.sequence.ViewId, net.imglib2.Interval> viewBounds, Map<mpicbg.spim.data.sequence.ViewId, net.imglib2.algorithm.blocks.dfield.DisplacementFields.TransformedDisplacementField<D>> rawDfields, FusionGUI.FusionType fusionType, double anisotropyFactor, int interpolationMethod, Map<Integer, Integer> fusionMap, Map<mpicbg.spim.data.sequence.ViewId, Coefficients> intensityAdjustmentCoefficients, net.imglib2.Interval fusionInterval, T type, int[] blockSize, Map<mpicbg.spim.data.sequence.ViewId, net.imglib2.realtransform.AffineTransform3D> approximateAffines) Same asinit(net.imglib2.converter.Converter<net.imglib2.type.numeric.real.FloatType, T>, net.preibisch.mvrecon.fiji.spimdata.imgloaders.splitting.SplitViewerImgLoader, java.util.Collection<? extends mpicbg.spim.data.sequence.ViewId>, java.util.Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration>, java.util.Map<mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>>, net.preibisch.mvrecon.fiji.plugin.fusion.FusionGUI.FusionType, int, double, int, java.util.Map<java.lang.Integer, java.lang.Integer>, java.util.Map<mpicbg.spim.data.sequence.ViewId, net.preibisch.mvrecon.process.fusion.intensity.Coefficients>, net.imglib2.Interval, T, int[])but accepts pre-built per-underlying-view dfields and approximate affines (e.g. loaded from disk after a distributed Phase-1.5 materialization). Skips per-task TPS rasterization and landmark computation.- Parameters:
viewBounds- back-projected bounding box (render coordinates) per underlying view.rawDfields- un-offset displacement fields per underlying view, as produced byDisplacementFields.sample(tps, viewBounds.get(viewId), spacing). Must contain entries at least for all underlying views overlappingfusionInterval; extra entries are ignored. Must be backed byArrayImg(perf requirement ofBlkThinPlateSplineFusion).approximateAffines- per-underlying-view affine that approximates the TPS, used downstream for blending-weight adjustment. Typically read from the dfield dataset'sapprox_affine_row_majorattribute (populated by Phase 1.5).
-
underlyingViewIds
public static List<mpicbg.spim.data.sequence.ViewId> underlyingViewIds(Collection<? extends mpicbg.spim.data.sequence.ViewId> splitViewIds, Map<Integer, Integer> new2oldSetupId) -
old2newSetupId
-
splitViewIds
public static List<mpicbg.spim.data.sequence.ViewId> splitViewIds(Collection<? extends mpicbg.spim.data.sequence.ViewId> underlyingViewIds, Map<Integer, List<Integer>> old2newSetupId) -
getUnderlyingImageLoader
-
getCoefficients
public static Landmarks getCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling) Backward-compatible overload — center landmarks only (no correspondence-based midpoint landmarks). -
getCoefficients
public static Landmarks getCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences) Backward-compatible overload — correspondence midpoints but no corner anchors. -
getCoefficients
public static Landmarks getCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius) Backward-compatible overload — corner anchors with N=2 (corners only). -
getCoefficients
public static Landmarks getCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis) Backward-compatible overload — no landmark visitor. -
getCoefficients
public static Landmarks getCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis, Consumer<SplitImgLoaderThinPlateSplineFusion.LandmarkRecord> landmarkVisitor) Backward-compatible overload — visitor only, no per-split schedule, no donated nails. TheanchorOverlapCorners/cornerCoverageRadius/seamSamplesPerAxisparams are accepted for signature stability but no longer cause per-view nail emission here — callcomputeCrossViewNailDonations(net.preibisch.mvrecon.fiji.spimdata.imgloaders.splitting.SplitViewerImgLoader, java.util.Map<java.lang.Integer, java.util.List<java.lang.Integer>>, java.util.Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration>, java.util.Collection<? extends mpicbg.spim.data.sequence.ViewId>, double, double, net.preibisch.mvrecon.fiji.spimdata.interestpoints.ViewInterestPoints, java.lang.String, int, double, int, int[], int[], java.util.function.Consumer<net.preibisch.mvrecon.process.fusion.blk.SplitImgLoaderThinPlateSplineFusion.LandmarkRecord>)at the driver and pass the result via the new overload'sdonatedNailsparameter. -
getCoefficients
public static Landmarks getCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis, int[] seamSamplesScheduleThresholds, int[] seamSamplesScheduleValues, Consumer<SplitImgLoaderThinPlateSplineFusion.LandmarkRecord> landmarkVisitor) Backward-compatible overload — no donated nails. Centers + correspondence midpoints only. Cross-view nails must be supplied via the new overload'sdonatedNailsparameter (seecomputeCrossViewNailDonations(net.preibisch.mvrecon.fiji.spimdata.imgloaders.splitting.SplitViewerImgLoader, java.util.Map<java.lang.Integer, java.util.List<java.lang.Integer>>, java.util.Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration>, java.util.Collection<? extends mpicbg.spim.data.sequence.ViewId>, double, double, net.preibisch.mvrecon.fiji.spimdata.interestpoints.ViewInterestPoints, java.lang.String, int, double, int, int[], int[], java.util.function.Consumer<net.preibisch.mvrecon.process.fusion.blk.SplitImgLoaderThinPlateSplineFusion.LandmarkRecord>)). -
getCoefficients
public static Landmarks getCoefficients(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, mpicbg.spim.data.sequence.ViewId underlyingViewId, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, boolean anchorOverlapCorners, double cornerCoverageRadius, int seamSamplesPerAxis, int[] seamSamplesScheduleThresholds, int[] seamSamplesScheduleValues, Consumer<SplitImgLoaderThinPlateSplineFusion.LandmarkRecord> landmarkVisitor, List<SplitImgLoaderThinPlateSplineFusion.DonatedNail> donatedNails) Build TPS Landmarks for one underlying viewU. Always emits one center landmark per split sub-view ofU(positions in underlying-view pixel coords; targets in render coords). IfviewInterestPoints != nullandcorrespondenceLabel != nulladditional cross-view "tie" landmarks are appended: for each split sub-viewSofUand each partner split sub-viewS'(from a different underlying view) with at leastminNumCorrespondencescorresponding interest points undercorrespondenceLabel, one midpoint landmark is added atsource = mean(p_S) + splitTranslation_S,target = 0.5*(model_S.apply(mean(p_S)) + model_S'.apply(mean(p_S'))). The symmetric counterpart is added toS''s underlying view in its own pass.If
donatedNailsis non-null, each entry is appended as an additional landmark on U's TPS. Nail donations are computed globally bycomputeCrossViewNailDonations(net.preibisch.mvrecon.fiji.spimdata.imgloaders.splitting.SplitViewerImgLoader, java.util.Map<java.lang.Integer, java.util.List<java.lang.Integer>>, java.util.Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration>, java.util.Collection<? extends mpicbg.spim.data.sequence.ViewId>, double, double, net.preibisch.mvrecon.fiji.spimdata.interestpoints.ViewInterestPoints, java.lang.String, int, double, int, int[], int[], java.util.function.Consumer<net.preibisch.mvrecon.process.fusion.blk.SplitImgLoaderThinPlateSplineFusion.LandmarkRecord>)so that the partner view's TPS sees a paired landmark pointing at the same render-space target — something the legacy per-view nail logic could not guarantee. TheanchorOverlapCorners/cornerCoverageRadius/seamSamplesPerAxis/seamSamplesScheduleXxxparameters are kept in the signature for API stability but are no longer consulted here; the driver controls them via the donation pass. -
computeCrossViewNailDonations
public static Map<mpicbg.spim.data.sequence.ViewId,List<SplitImgLoaderThinPlateSplineFusion.DonatedNail>> computeCrossViewNailDonations(SplitViewerImgLoader splitImgLoader, Map<Integer, List<Integer>> old2newSetupId, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> splitRegMap, Collection<? extends mpicbg.spim.data.sequence.ViewId> underlyingViewIds, double anisotropyFactor, double downsampling, ViewInterestPoints viewInterestPoints, String correspondenceLabel, int minNumCorrespondences, double cornerCoverageRadius, int seamSamplesPerAxis, int[] seamSamplesScheduleThresholds, int[] seamSamplesScheduleValues, Consumer<SplitImgLoaderThinPlateSplineFusion.LandmarkRecord> landmarkVisitor) Compute cross-view nail donations across all underlying views in one pass.For each underlying view
Uand each split sub-viewSofU, sampleS's surface (corners atN=2, edge midpoints + face centers atN=3, denser at higherN) and, for each accepted sample that overlaps a partner splitS'ofU'(whereShas at leastminNumCorrespondencesvalidated correspondences withS'), emit two donations pointing at the same render-space targetr_C = model_S(sampleZeroMin):- One into
U's TPS:src = sampleZeroMin + splitTr_S. - One into
U''s TPS:src = sampleInSp + splitTr_S', wheresampleInSp = model_S'.applyInverse(r_C)— the same physical render-space position expressed in S''s zero-min coords.
This is the fix for the legacy per-view nail logic, which placed single-view anchors at each split's own affine corner and therefore did not pull overlapping underlying views to the same render-space point.
- Returns:
- per-recipient-underlying-view donations. Pass the entry for U
into
getCoefficients'sdonatedNailsparameter.
- One into
-