Class TransformationTools
java.lang.Object
net.preibisch.mvrecon.process.interestpointregistration.TransformationTools
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic booleanWhen true, prints individual warnings for each view missing interest points.static NumberFormatstatic intMaximum number of per-view 'Transformation Models:' lines to print fromprintAndSummarizeTransformations(java.lang.Iterable<? extends mpicbg.spim.data.sequence.ViewId>, java.util.Map<? extends mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.models.Tile>)per call before output is suppressed. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic booleanaffineTransformsEqual(net.imglib2.realtransform.AffineTransform3D tA, net.imglib2.realtransform.AffineTransform3D tB) static Collection<InterestPoint> static HashMap<String, Collection<InterestPoint>> applyTransformation(HashMap<String, Collection<InterestPoint>> lists, net.imglib2.realtransform.AffineTransform3D m) averageTransforms(Collection<? extends net.imglib2.realtransform.AffineGet> models) static double[]averageVectors(Collection<double[]> vectors) static net.imglib2.util.Pair<double[], String> computeAverageCalibration(Iterable<? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> group, mpicbg.spim.data.registration.ViewRegistrations vrs) static net.imglib2.util.Pair<double[], String> computeCalibration(mpicbg.spim.data.generic.sequence.BasicViewDescription<?> vd, mpicbg.spim.data.registration.ViewRegistrations vrs) computeMapBackModel(net.imglib2.Dimensions size, net.imglib2.realtransform.AffineTransform3D mapBackViewRegistration, mpicbg.models.AbstractModel<?> computedModel, mpicbg.models.Model<?> mapBackModel) static double[][]static voidfilterForOverlappingInterestPoints(Map<mpicbg.spim.data.sequence.ViewId, HashMap<String, Collection<InterestPoint>>> interestpoints, Collection<? extends Group<mpicbg.spim.data.sequence.ViewId>> groups, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.sequence.ViewDescription> viewDescriptions) static voidfilterForOverlappingInterestPoints(Map<mpicbg.spim.data.sequence.ViewId, HashMap<String, Collection<InterestPoint>>> interestpoints, Collection<? extends Group<mpicbg.spim.data.sequence.ViewId>> groups, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.sequence.ViewDescription> viewDescriptions, int numThreads) static mpicbg.models.AffineModel3DgetAffineModel3D(Transform3D transform) getAffineTransform(mpicbg.models.Affine3D<?> model) static <V> Map<V, HashMap<String, Collection<InterestPoint>>> getAllInterestPoints(Collection<? extends V> viewIds, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, HashMap<String, Double>> labelMap, boolean transform) static <V> Map<V, HashMap<String, Collection<InterestPoint>>> getAllInterestPoints(Collection<? extends V> viewIds, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, HashMap<String, Double>> labelMap, boolean transform, int numThreads) static <V> Map<V, HashMap<String, Collection<InterestPoint>>> getAllTransformedInterestPoints(Collection<? extends V> viewIds, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, HashMap<String, Double>> labelMap) static doublegetAverageAnisotropyFactor(mpicbg.spim.data.sequence.SequenceDescription seq, Collection<? extends mpicbg.spim.data.sequence.ViewId> views) static doublegetAverageAnisotropyFactor(mpicbg.spim.data.SpimData spimData, Collection<? extends mpicbg.spim.data.sequence.ViewId> views) static <V> Collection<InterestPoint> getCorrespondingInterestPoints(V viewId, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, String> labelMap, boolean transform) static <V> HashMap<String, Collection<InterestPoint>> getInterestPoints(V viewId, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, HashMap<String, Double>> labelMap, boolean transform) static <V> HashMap<String, Collection<InterestPoint>> getInterestPoints(V viewId, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, HashMap<String, Double>> labelMap, boolean transform, ConcurrentHashMap<String, ConcurrentLinkedQueue<V>> missingInterestPoints) static Matrix4dstatic Matrix4dstatic mpicbg.models.AffineModel3Dstatic mpicbg.models.RigidModel3DgetRigidModel3D(Transform3D transform) static StringWARNING: This fails on older MACs, in this case remove: Check if Apple's out-dated Java 3D version 1.3 is installed in System/Library/Java/Extensions/ on your Mac.static StringgetScaling(mpicbg.models.Affine3D<?> affine) static voidgetScaling(mpicbg.models.Affine3D<?> affine, double[] scale) static Stringstatic voidgetScaling(net.imglib2.realtransform.AffineGet affine, double[] scale) static Stringstatic voidgetScaling(Transform3D t, double[] scale) static <V> net.imglib2.realtransform.AffineTransform3DgetTransform(V viewId, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations) static <M extends mpicbg.models.AbstractAffineModel3D<M>>
Transform3DgetTransform3D(M model) static Transform3DgetTransform3D(mpicbg.models.Affine3D<?> affine) static Transform3Dstatic <V> Collection<InterestPoint> getTransformedCorrespondingInterestPoints(V viewId, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, String> labelMap) static booleanisApproximatelyIdentity(mpicbg.models.Affine3D<?> model, double eps) static StringprintAffine3D(mpicbg.models.Affine3D<?> model) static Stringstatic voidprintAndSummarizeTransformations(Iterable<? extends mpicbg.spim.data.sequence.ViewId> views, Map<? extends mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.models.Tile> map) Print per-view transformation models (capped atmaxPerViewTransformLog) followed by a one-line summary of identity vs non-identity counts.static StringprintRealInterval(net.imglib2.RealInterval interval) get String representation of RealInterval TODO: PR to ImgLib2 (Util) ?static voidreCenterViews(bdv.BigDataViewer viewer, Collection<mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> selectedViews, mpicbg.spim.data.registration.ViewRegistrations viewRegistrations) static net.imglib2.util.Pair<double[], net.imglib2.realtransform.AffineTransform3D> scaling(net.imglib2.Dimensions dim, net.imglib2.realtransform.AffineTransform3D transformationModel) static <V> voidstoreTransformation(mpicbg.spim.data.registration.ViewRegistration vr, V viewId, mpicbg.models.Tile<?> tile, net.imglib2.realtransform.AffineGet mapBackModel, String modelDescription) static double[][]unitCube()
-
Field Details
-
f
-
debugMissingInterestPoints
public static boolean debugMissingInterestPointsWhen true, prints individual warnings for each view missing interest points. When false (default), prints a consolidated summary per label. -
maxPerViewTransformLog
public static int maxPerViewTransformLogMaximum number of per-view 'Transformation Models:' lines to print fromprintAndSummarizeTransformations(java.lang.Iterable<? extends mpicbg.spim.data.sequence.ViewId>, java.util.Map<? extends mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.models.Tile>)per call before output is suppressed. Set toInteger.MAX_VALUEto print everything (legacy behavior). The identity-vs-non-identity summary is always emitted regardless of this threshold. The cap is per-call (per "Transformation Models:" block), so in TWO_ROUND global opt round 1 and round 2 each get their own budget.
-
-
Constructor Details
-
TransformationTools
public TransformationTools()
-
-
Method Details
-
reCenterViews
public static void reCenterViews(bdv.BigDataViewer viewer, Collection<mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> selectedViews, mpicbg.spim.data.registration.ViewRegistrations viewRegistrations) -
scaling
public static net.imglib2.util.Pair<double[],net.imglib2.realtransform.AffineTransform3D> scaling(net.imglib2.Dimensions dim, net.imglib2.realtransform.AffineTransform3D transformationModel) -
averageTransforms
public static net.imglib2.realtransform.AffineTransform3D averageTransforms(Collection<? extends net.imglib2.realtransform.AffineGet> models) -
averageVectors
-
getRotationAxis
WARNING: This fails on older MACs, in this case remove: Check if Apple's out-dated Java 3D version 1.3 is installed in System/Library/Java/Extensions/ on your Mac. Remove all Java 3D 1.3 related files including vecmath.jar (jar, jnilib), they are useless.- Parameters:
model- - the model- Returns:
- - String description of rot. axis
-
getScaling
-
getScaling
-
getScaling
-
getScaling
-
getScaling
-
getScaling
-
computeAverageCalibration
public static net.imglib2.util.Pair<double[],String> computeAverageCalibration(Iterable<? extends mpicbg.spim.data.generic.sequence.BasicViewDescription<?>> group, mpicbg.spim.data.registration.ViewRegistrations vrs) -
computeCalibration
public static net.imglib2.util.Pair<double[],String> computeCalibration(mpicbg.spim.data.generic.sequence.BasicViewDescription<?> vd, mpicbg.spim.data.registration.ViewRegistrations vrs) -
getTransform3D
-
getTransform3D
-
getTransform3D
public static <M extends mpicbg.models.AbstractAffineModel3D<M>> Transform3D getTransform3D(M model) -
getAffineModel3D
-
getRigidModel3D
-
getMatrix4d
-
getMatrix4d
-
printAffine3D
-
printAffine3D
-
getModel
-
computeMapBackModel
public static net.imglib2.realtransform.AffineTransform3D computeMapBackModel(net.imglib2.Dimensions size, net.imglib2.realtransform.AffineTransform3D mapBackViewRegistration, mpicbg.models.AbstractModel<?> computedModel, mpicbg.models.Model<?> mapBackModel) - Parameters:
size- - size of view which is used to map backmapBackViewRegistration- - the registration model of this view before computing the new registrationcomputedModel- - the new modelmapBackModel- - which model to use to map back (e.g. rigid, translation)- Returns:
- the transformation to map back, pre-concatenate this to all views that are registered
-
filterForOverlappingInterestPoints
public static void filterForOverlappingInterestPoints(Map<mpicbg.spim.data.sequence.ViewId, HashMap<String, Collection<InterestPoint>>> interestpoints, Collection<? extends Group<mpicbg.spim.data.sequence.ViewId>> groups, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.sequence.ViewDescription> viewDescriptions) -
filterForOverlappingInterestPoints
public static void filterForOverlappingInterestPoints(Map<mpicbg.spim.data.sequence.ViewId, HashMap<String, Collection<InterestPoint>>> interestpoints, Collection<? extends Group<mpicbg.spim.data.sequence.ViewId>> groups, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<mpicbg.spim.data.sequence.ViewId, mpicbg.spim.data.sequence.ViewDescription> viewDescriptions, int numThreads) -
getAllTransformedInterestPoints
public static <V> Map<V,HashMap<String, getAllTransformedInterestPointsCollection<InterestPoint>>> (Collection<? extends V> viewIds, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, HashMap<String, Double>> labelMap) -
getAllInterestPoints
public static <V> Map<V,HashMap<String, getAllInterestPointsCollection<InterestPoint>>> (Collection<? extends V> viewIds, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, HashMap<String, Double>> labelMap, boolean transform) -
getAllInterestPoints
public static <V> Map<V,HashMap<String, getAllInterestPointsCollection<InterestPoint>>> (Collection<? extends V> viewIds, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, HashMap<String, Double>> labelMap, boolean transform, int numThreads) -
getInterestPoints
public static <V> HashMap<String,Collection<InterestPoint>> getInterestPoints(V viewId, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, HashMap<String, Double>> labelMap, boolean transform) -
getInterestPoints
public static <V> HashMap<String,Collection<InterestPoint>> getInterestPoints(V viewId, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, HashMap<String, Double>> labelMap, boolean transform, ConcurrentHashMap<String, ConcurrentLinkedQueue<V>> missingInterestPoints) -
getTransformedCorrespondingInterestPoints
public static <V> Collection<InterestPoint> getTransformedCorrespondingInterestPoints(V viewId, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, String> labelMap) -
getCorrespondingInterestPoints
public static <V> Collection<InterestPoint> getCorrespondingInterestPoints(V viewId, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations, Map<V, ViewInterestPointLists> interestpoints, Map<V, String> labelMap, boolean transform) -
getTransform
public static <V> net.imglib2.realtransform.AffineTransform3D getTransform(V viewId, Map<V, mpicbg.spim.data.registration.ViewRegistration> registrations) -
applyTransformation
public static HashMap<String,Collection<InterestPoint>> applyTransformation(HashMap<String, Collection<InterestPoint>> lists, net.imglib2.realtransform.AffineTransform3D m) -
applyTransformation
public static Collection<InterestPoint> applyTransformation(Collection<InterestPoint> list, net.imglib2.realtransform.AffineTransform3D m) -
storeTransformation
public static <V> void storeTransformation(mpicbg.spim.data.registration.ViewRegistration vr, V viewId, mpicbg.models.Tile<?> tile, net.imglib2.realtransform.AffineGet mapBackModel, String modelDescription) -
getAffineTransform
public static net.imglib2.realtransform.AffineTransform3D getAffineTransform(mpicbg.models.Affine3D<?> model) -
printAndSummarizeTransformations
public static void printAndSummarizeTransformations(Iterable<? extends mpicbg.spim.data.sequence.ViewId> views, Map<? extends mpicbg.spim.data.sequence.ViewId, ? extends mpicbg.models.Tile> map) Print per-view transformation models (capped atmaxPerViewTransformLog) followed by a one-line summary of identity vs non-identity counts. Replaces the inlined print loop thatGlobalOptandGlobalOptIterativeused to have.- Parameters:
views- ordered iterable of ViewIds (the print order)map- mapping from ViewId to its solved Tile (raw Tile accepted to support bothHashMap<ViewId, Tile<M>>and the raw-typedHashMap<ViewId, Tile>callers that exist in BBS)
-
isApproximatelyIdentity
- Returns:
- true iff every element of the affine 3x4 matrix is within
epsof the 3D identity matrix (diag(1,1,1) with zero translation).
-
affineTransformsEqual
public static boolean affineTransformsEqual(net.imglib2.realtransform.AffineTransform3D tA, net.imglib2.realtransform.AffineTransform3D tB) -
getAverageAnisotropyFactor
public static double getAverageAnisotropyFactor(mpicbg.spim.data.SpimData spimData, Collection<? extends mpicbg.spim.data.sequence.ViewId> views) -
getAverageAnisotropyFactor
public static double getAverageAnisotropyFactor(mpicbg.spim.data.sequence.SequenceDescription seq, Collection<? extends mpicbg.spim.data.sequence.ViewId> views) -
unitCube
public static double[][] unitCube() -
cubeFor
-
printRealInterval
get String representation of RealInterval TODO: PR to ImgLib2 (Util) ?- Parameters:
interval- the interval- Returns:
- String representation
-