T
- public class MomentOfInertiaTensor3D<T extends RealType<T>> extends MultiThreadedBenchmarkAlgorithm implements OutputAlgorithm<Img<FloatType>>
A neighborhood of a given scale is inspected at each pixel location, and the
moment of inertia are calculated. This yields a 3x3
real
symmetric matrix [ Ixx Ixy Ixz; Ixy Iyy Iyz ; Ixz Ixy Izz]
that
can be diagonalized to find the preferred directions of the local linear
structures. The eigenvalues and eigenvectors are then used to build a
diffusion tensor that privileges diffusion only in the direction of the
structures, and that can be used elsewhere in a anisotropic diffusion scheme.
Here we implement the idea outlined in the following paper:
Nonlinear anisotropic diffusion filtering of three-dimensional image data from two-photon microscopy Philip. J. Broser, R. Schulte, S. Lang, A. Roth Fritjof, Helmchen, J. Waters, Bert Sakmann, and G. Wittum, J. Biomed. Opt. 9, 1253 (2004), DOI:10.1117/1.1806832
This class limits itself to build a 3D tensor. The source image needs not to
be 3D, but only a 3D neighborhood will be iterated to compute moment of
inertia. Therefore the later will be made of only 3 components at each point:
Dxx, Dxy, Dyy, Dxy, Dxz, Dyz
processingTime
errorMessage, numThreads
Constructor and Description |
---|
MomentOfInertiaTensor3D(Img<T> input,
int scale)
Deprecated.
Use
MomentOfInertiaTensor3D(RandomAccessibleInterval, ImgFactory, int, double, double) instead and define the ArrayImg<FloatType> for the output. |
MomentOfInertiaTensor3D(Img<T> input,
int scale,
double epsilon_1,
double epsilon_2)
Deprecated.
Use
MomentOfInertiaTensor3D(RandomAccessibleInterval, ImgFactory, int, double, double) instead and define the ArrayImg<FloatType> for the output. |
MomentOfInertiaTensor3D(RandomAccessibleInterval<T> input,
ImgFactory<FloatType> imgFactory,
int scale) |
MomentOfInertiaTensor3D(RandomAccessibleInterval<T> input,
ImgFactory<FloatType> imgFactory,
int scale,
double epsilon_1,
double epsilon_2) |
Modifier and Type | Method and Description |
---|---|
boolean |
checkInput() |
Img<FloatType> |
getResult() |
boolean |
process() |
getProcessingTime
getErrorMessage, getNumThreads, setNumThreads, setNumThreads
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getErrorMessage
@Deprecated public MomentOfInertiaTensor3D(Img<T> input, int scale, double epsilon_1, double epsilon_2)
MomentOfInertiaTensor3D(RandomAccessibleInterval, ImgFactory, int, double, double)
instead and define the ArrayImg<FloatType>
for the output.input
- scale
- epsilon_1
- epsilon_2
- @Deprecated public MomentOfInertiaTensor3D(Img<T> input, int scale)
MomentOfInertiaTensor3D(RandomAccessibleInterval, ImgFactory, int, double, double)
instead and define the ArrayImg<FloatType>
for the output.input
- scale
- public MomentOfInertiaTensor3D(RandomAccessibleInterval<T> input, ImgFactory<FloatType> imgFactory, int scale, double epsilon_1, double epsilon_2)
public MomentOfInertiaTensor3D(RandomAccessibleInterval<T> input, ImgFactory<FloatType> imgFactory, int scale)
public boolean checkInput()
checkInput
in interface Algorithm
Copyright © 2015–2022 ImgLib2. All rights reserved.