Class EulerCharacteristic26NFloating<B extends BooleanType<B>>

  • All Implemented Interfaces:
    BiConsumer<RandomAccessibleInterval<B>,​DoubleType>, Computers.Arity1<RandomAccessibleInterval<B>,​DoubleType>

    public class EulerCharacteristic26NFloating<B extends BooleanType<B>>
    extends Object
    implements Computers.Arity1<RandomAccessibleInterval<B>,​DoubleType>
    An Op which calculates the Euler characteristic (χ) of the given binary image. The object in the image is handled as if it was floating freely in space. That is, elements outside the stack are treated as zeros. Thus voxels touching the edges of the interval do not affect the result. Here Euler characteristic is defined as χ = β_0 - β_1 + β_2, where β_i are so called Betti numbers.
    • β_0 = number of separate particles
    • β_1 = number of handles
    • β_2 = number enclosed cavities

    The Op calculates χ by using the triangulation algorithm described by Toriwaki & Yonekura (see below).
    There it's calculated X = ∑Δχ(V), where V is a 2x2x2 neighborhood around each point in the 3D space.
    We are using the 26-neighborhood version of the algorithm. The Δχ(V) values here are predetermined.

    For the algorithm see
    Toriwaki J, Yonekura T (2002)
    Euler Number and Connectivity Indexes of a Three Dimensional Digital Picture
    Forma 17: 183-209
    http://www.scipress.org/journals/forma/abstract/1703/17030183.html

    For the Betti number definition of Euler characteristic see
    Odgaard A, Gundersen HJG (1993)
    Quantification of connectivity in cancellous bone, with special emphasis on 3-D reconstructions
    Bone 14: 173-182
    doi:10.1016/8756-3282(93)90245-6

    Author:
    Richard Domander (Royal Veterinary College, London), Michael Doube (Royal Veterinary College, London)
    Implementation Note:
    op names='topology.eulerCharacteristic26NFloating'