Module org.scijava.ops.image
Class DefaultTubeness<T extends RealType<T>>
- java.lang.Object
-
- org.scijava.ops.image.filter.tubeness.DefaultTubeness<T>
-
- Type Parameters:
T- the type of the source pixels. Must extendsRealType.
- All Implemented Interfaces:
Computers.Arity3<RandomAccessibleInterval<T>,Double,double[],IterableInterval<DoubleType>>,Consumers.Arity4<RandomAccessibleInterval<T>,Double,double[],IterableInterval<DoubleType>>
public class DefaultTubeness<T extends RealType<T>> extends Object implements Computers.Arity3<RandomAccessibleInterval<T>,Double,double[],IterableInterval<DoubleType>>
The Tubeness filter: enhance filamentous structures of a specified thickness.This filter works on 2D and 3D image exclusively and produces a score for how "tube-like" each point in the image is. This is useful as a preprocessing step for tracing neurons or blood vessels, for example. For 3D image stacks, the filter uses the eigenvalues of the Hessian matrix to calculate this measure of "tubeness", using one of the simpler metrics me mentioned in Sato et al 1997: if the larger two eigenvalues (λ₂ and λ₃) are both negative then value is √(λ₂λ₃), otherwise the value is 0. For 2D images, if the large eigenvalue is negative, we return its absolute value and otherwise return 0.
- Source image is filtered first by a gaussian with 𝜎 that sets its scale.
- The the Hessian matrix is calculated for each pixel.
- We yield the eigenvalues of the Hessian matrix. The output of the
tubeness filter is a combination of these eigenvalues:
- in 2D where
λ₂is the largest eigenvalue:out = 𝜎 × 𝜎 × |λ₂|ifλ₂is negative, 0 otherwise. - in 3D where
λ₂andλ₃are the largest eigenvalues:,out = 𝜎 × 𝜎 × sqrt( λ₂ * λ₃ )ifλ₂andλ₃are negative, 0 otherwise.
- in 2D where
𝜎 / sqrt(d)thickness.Port of the tubeness filter of the VIB package, with original authors Mark Longair and Stephan Preibisch, to ImageJ-ops.
- Author:
- Jean-Yves Tinevez
- See Also:
- Tubeness VIB plugin code
- Implementation Note:
- op names='filter.tubeness'
-
-
Constructor Summary
Constructors Constructor Description DefaultTubeness()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcompute(RandomAccessibleInterval<T> input, Double sigma, double[] calibration, IterableInterval<DoubleType> tubeness)TODO-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.scijava.function.Computers.Arity3
accept
-
Methods inherited from interface org.scijava.function.Consumers.Arity4
andThen
-
-
-
-
Method Detail
-
compute
public void compute(RandomAccessibleInterval<T> input, Double sigma, double[] calibration, IterableInterval<DoubleType> tubeness)
TODO- Specified by:
computein interfaceComputers.Arity3<RandomAccessibleInterval<T extends RealType<T>>,Double,double[],IterableInterval<DoubleType>>- Parameters:
input-sigma-calibration-tubeness-
-
-