Class SimpleBoundingBoxOverlap<V extends mpicbg.spim.data.sequence.ViewId>
java.lang.Object
net.preibisch.mvrecon.process.interestpointregistration.pairwise.constellation.overlap.SimpleBoundingBoxOverlap<V>
- All Implemented Interfaces:
OverlapDetection<V>
public class SimpleBoundingBoxOverlap<V extends mpicbg.spim.data.sequence.ViewId>
extends Object
implements OverlapDetection<V>
-
Constructor Summary
ConstructorsConstructorDescriptionSimpleBoundingBoxOverlap(Map<Integer, ? extends mpicbg.spim.data.generic.sequence.BasicViewSetup> viewSetups, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> vrs) SimpleBoundingBoxOverlap(mpicbg.spim.data.generic.AbstractSpimData<? extends mpicbg.spim.data.generic.sequence.AbstractSequenceDescription<? extends mpicbg.spim.data.generic.sequence.BasicViewSetup, ?, ?>> spimData) SimpleBoundingBoxOverlap(mpicbg.spim.data.sequence.SequenceDescription sd, mpicbg.spim.data.registration.ViewRegistrations vrs) -
Method Summary
Modifier and TypeMethodDescriptiongenerateOverlappingPairs(List<V> views, Collection<? extends Group<V>> groups) Generate overlapping pairs directly without creating all n^2 pairs first.static BoundingBoxgetBoundingBox(mpicbg.spim.data.generic.sequence.BasicViewSetup vs, mpicbg.spim.data.registration.ViewRegistration vr) static BoundingBoxstatic <V extends mpicbg.spim.data.sequence.ViewId>
BoundingBoxgetBoundingBox(V view, Map<Integer, ? extends mpicbg.spim.data.generic.sequence.BasicViewSetup> vss, mpicbg.spim.data.registration.ViewRegistrations vrs) static net.imglib2.RealIntervalgetBoundingBoxReal(mpicbg.spim.data.generic.sequence.BasicViewSetup vs, mpicbg.spim.data.registration.ViewRegistration vr) static net.imglib2.RealIntervalgetBoundingBoxReal(net.imglib2.Dimensions dims, net.imglib2.realtransform.AffineTransform3D transform) static <V extends mpicbg.spim.data.sequence.ViewId>
net.imglib2.RealIntervalgetBoundingBoxReal(V view, Map<Integer, ? extends mpicbg.spim.data.generic.sequence.BasicViewSetup> vss, mpicbg.spim.data.registration.ViewRegistrations vrs) getOverlapInterval(V view1, V view2) static booleanoverlaps(BoundingBox bb1, BoundingBox bb2) booleanprecomputeBoundingBoxes(Collection<V> views) Pre-compute all bounding boxes for a collection of views in parallel.removeNonOverlappingPairsOptimized(List<net.imglib2.util.Pair<V, V>> pairs, Collection<V> views) Combined method: pre-compute bounding boxes and filter pairs in parallel.removeNonOverlappingPairsParallel(List<net.imglib2.util.Pair<V, V>> pairs, Map<V, BoundingBox> boundingBoxes) Filter overlapping pairs using pre-computed bounding boxes in parallel.
-
Constructor Details
-
SimpleBoundingBoxOverlap
public SimpleBoundingBoxOverlap(mpicbg.spim.data.generic.AbstractSpimData<? extends mpicbg.spim.data.generic.sequence.AbstractSequenceDescription<? extends mpicbg.spim.data.generic.sequence.BasicViewSetup, ?, ?>> spimData) -
SimpleBoundingBoxOverlap
public SimpleBoundingBoxOverlap(mpicbg.spim.data.sequence.SequenceDescription sd, mpicbg.spim.data.registration.ViewRegistrations vrs) -
SimpleBoundingBoxOverlap
public SimpleBoundingBoxOverlap(Map<Integer, ? extends mpicbg.spim.data.generic.sequence.BasicViewSetup> viewSetups, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> vrs)
-
-
Method Details
-
overlaps
- Specified by:
overlapsin interfaceOverlapDetection<V extends mpicbg.spim.data.sequence.ViewId>
-
getOverlapInterval
- Specified by:
getOverlapIntervalin interfaceOverlapDetection<V extends mpicbg.spim.data.sequence.ViewId>
-
overlaps
-
getBoundingBox
public static <V extends mpicbg.spim.data.sequence.ViewId> BoundingBox getBoundingBox(V view, Map<Integer, ? extends mpicbg.spim.data.generic.sequence.BasicViewSetup> vss, mpicbg.spim.data.registration.ViewRegistrations vrs) -
getBoundingBoxReal
public static <V extends mpicbg.spim.data.sequence.ViewId> net.imglib2.RealInterval getBoundingBoxReal(V view, Map<Integer, ? extends mpicbg.spim.data.generic.sequence.BasicViewSetup> vss, mpicbg.spim.data.registration.ViewRegistrations vrs) -
getBoundingBox
public static BoundingBox getBoundingBox(mpicbg.spim.data.generic.sequence.BasicViewSetup vs, mpicbg.spim.data.registration.ViewRegistration vr) -
getBoundingBox
public static BoundingBox getBoundingBox(net.imglib2.Dimensions dims, net.imglib2.realtransform.AffineTransform3D transform) -
getBoundingBoxReal
public static net.imglib2.RealInterval getBoundingBoxReal(mpicbg.spim.data.generic.sequence.BasicViewSetup vs, mpicbg.spim.data.registration.ViewRegistration vr) -
getBoundingBoxReal
public static net.imglib2.RealInterval getBoundingBoxReal(net.imglib2.Dimensions dims, net.imglib2.realtransform.AffineTransform3D transform) -
precomputeBoundingBoxes
Pre-compute all bounding boxes for a collection of views in parallel. This is much faster than computing bounding boxes on-demand for each pair.- Parameters:
views- - the views to compute bounding boxes for- Returns:
- a Map from ViewId to its BoundingBox
-
removeNonOverlappingPairsParallel
public ArrayList<net.imglib2.util.Pair<V,V>> removeNonOverlappingPairsParallel(List<net.imglib2.util.Pair<V, V>> pairs, Map<V, BoundingBox> boundingBoxes) Filter overlapping pairs using pre-computed bounding boxes in parallel. This removes non-overlapping pairs from the list and returns the removed pairs.- Parameters:
pairs- - the pairs to check (will be modified to contain only overlapping pairs)boundingBoxes- - pre-computed bounding boxes for all views- Returns:
- the list of removed (non-overlapping) pairs
-
generateOverlappingPairs
public List<net.imglib2.util.Pair<V,V>> generateOverlappingPairs(List<V> views, Collection<? extends Group<V>> groups) Generate overlapping pairs directly without creating all n^2 pairs first. This is MUCH faster for large datasets where most pairs don't overlap.- Parameters:
views- - list of views to generate pairs fromgroups- - groups (views in same group are skipped)- Returns:
- list of overlapping pairs only
-
removeNonOverlappingPairsOptimized
public ArrayList<net.imglib2.util.Pair<V,V>> removeNonOverlappingPairsOptimized(List<net.imglib2.util.Pair<V, V>> pairs, Collection<V> views) Combined method: pre-compute bounding boxes and filter pairs in parallel. This is the most efficient approach for large datasets.- Parameters:
pairs- - the pairs to check (will be modified to contain only overlapping pairs)views- - all views involved (used for pre-computing bounding boxes)- Returns:
- the list of removed (non-overlapping) pairs
-