ImageDev

Geometry

Contains measurements expressing shape attributes.

Note: These measurements ignore the intensity input image.

Intercepts and diametral variation

Several geometric measurements, such as the Crofton perimeter, and the 3D area, are approximations based on the diametral variation concept.

For example, consider a set of lines $d(X,\alpha)$, parallel to a direction $\alpha$ and regularly spaced by $dx$.
The diametral variation is defined as: $$D_2(X,\alpha)=\int{N_\alpha(X)dx}$$ Where $N_\alpha(X)$ is the number of boundary points that intersect the set of lines $d(x,\alpha)$. This is equivalent to the sum of the lengths of the projections of the object in the $\alpha$ direction. Note that $D_2(X,\alpha)$ is symmetric:
<b>Figure 1.</b> Application of the diametral variation formula
Figure 1. Application of the diametral variation formula

The discrete case in 2D translates to the search for specific configurations, as defined in the following table. $$ \begin{array}{|c|c|c|c|c|} \hline Orientation & 0^\circ & 45^\circ & 90^\circ & 135^\circ\\ \hline Kernel & \begin{array}{ccc} \mbox{x} & \mbox{x} & \mbox{x}\\ \mbox{x} & 0 & 1\\ \mbox{x} & \mbox{x} & \mbox{x} \end{array} & \begin{array}{ccc} \mbox{x} & \mbox{x} & 1\\ \mbox{x} & 0 & \mbox{x}\\ \mbox{x} & \mbox{x} & \mbox{x} \end{array} & \begin{array}{ccc} \mbox{x} & 1 & \mbox{x}\\ \mbox{x} & 0 & \mbox{x}\\ \mbox{x} & \mbox{x} & \mbox{x} \end{array} & \begin{array}{ccc} 1 & \mbox{x} & \mbox{x}\\ \mbox{x} & 0 & \mbox{x}\\ \mbox{x} & \mbox{x} & \mbox{x} \end{array}\\ \hline \end{array}$$

Crofton perimeter

The Crofton formula computes the perimeter using the intercept count. Cauchy's formula shows that: $\alpha$, and regularly spaced by $dx$. $$L(X)=\int_{0}^{\pi}D_2(X,\alpha)d\alpha$$ The perimeter is then approximated when the above integral is replaced by a discrete summation. In the square grid case, the summation is computed for the four fundamental directions: $$ L(X)=\frac{\pi}{4}\times [a \times(N_0+N_{90})+\frac{a}{\sqrt2}\times(N_{45}+N_{135})] $$ Where: Finally, this formula can be corrected for non-square pixels. In such a situation, the diagonals no longer fit the $45^\circ$ and $135^\circ$ directions. Let $M_i$ be the four neighbouring pixels on the grid, $a$ be the distance between horizontal lines, $b$ be the distance between vertical lines, and $c$ the distance between diagonal lines.
<b>Figure 2.</b> Crofton perimeter on non-square pixels
Figure 2. Crofton perimeter on non-square pixels
The formula becomes: $$ L(X)=\alpha \times a \times N_0 + (\frac{\pi}{2}-\alpha)\times b \times N_{90} + \frac{\pi}{4}\times c \times (N_{\alpha}+N_{\pi-\alpha}) $$

3D area of object boundary

Computing the area of a 3D object boundary is not a trivial issue. An intuitive idea would be to sum the area of voxel faces connected to the background. If it gives a relevant response for objects made of few voxels or perfect cubes, it quickly overestimates the area when the object size grows, especially for uneven surfaces.

A better estimation consists of extending the Crofton perimeter concept to the 3D area by computing diametral variations in 13 directions and summing these values with weights appropriate to each direction. Unlike the previous method, this estimation tends to underestimate the surface area. It is especially imprecise for objects made of few voxels.

See related example

Object members

Measurement name DescriptionElement typeIndexingPhysical Information
PixelCount The number of voxels of a 3D object or pixels of a 2D object. Integer [label] COUNT
Area2d The area of a 2D object, expressed in the image calibration unit.
More information is available in the Area2d algorithm documentation.
Floating point [label] AREA
EquivalentDiameter The diameter of the circular particle of same area in 2D, of the spherical particle of same volume in 3D. It is expressed in the image calibration unit.
  • in 2D: $$ \mbox{Equivalent circular diameter} = \sqrt{\frac{4\times Area2d}{\pi}} $$
  • in 3D: $$ \mbox{Equivalent spherical diameter} = \sqrt[3]{\frac{6\times Volume3d}{\pi}} $$
Floating point [label] LENGTH
CroftonPerimeter2d For each of the 8 intercept measurements, the diametral variation is the product of the intercept with the distance between interception points. The Crofton perimeter is the average of those 8 diametral variation measurements, expressed in the image calibration unit.
More information is available in the Intercept count and Crofton Perimeter sections.
Floating point [label] LENGTH
BoundaryPixelCount The number of boundary voxels of a 3D object or pixels of a 2D object; that is, the number of foreground elements that are neighbors of at least one background element. Integer [label] COUNT
Volume3d The volume of a 3D object, expressed in the image calibration unit. Floating point [label] VOLUME
Area3d The 3D area of the object boundary, expressed in the image calibration unit. This measurement uses "intercepts" to take into account the exposed surface of the outer voxels. The idea being that in the "corners", the contribution of a voxel can vary from 1 to 3 depending on configuration.
More information is available in the Intercept count and 3D area of object boundary sections.
Floating point [label] AREA
VoxelFaceArea3d The sum of voxel surfaces that are on the outside of each connected component, expressed in the image calibration unit.
More information is available in the 3D area of object boundary section.
Floating point [label] RATIO
VolumeFraction The ratio between the object area or volume and the total image area or volume.
  • in 2D: $$ \mbox{Area Fraction} = \frac{Area2d}{ImageArea} $$
  • in 3D: $$ \mbox{Volume Fraction} = \frac{Volume3d}{imageVolume} $$
Floating point [label] FRACTION
InverseCircularity2d The inverse circularity shape factor, close to 1 for a disk, and greater for star-shaped objects.
The formula to compute this factor is: $$ \frac{CroftonPerimeter2d^2}{4\pi \times Area2d} $$
Floating point [label] RATIO
InverseSphericity3d The inverse sphericity shape factor, close to 1 for a ball, and greater for tortuous boundary objects.
The formula to compute this factor is: $$ \frac{Area3d^3}{36\pi \times Volume3d^2} $$
Floating point [label] RATIO
BorderPixelCount The number of pixels or voxels touching the image bounding box. Some components of the image volume might be intersected by the Bounding Box of the image volume. This value is the number of voxels that are touching this boundary. The component might not be fully within the image. Floating point [label] COUNT
HoleCount2d The number of holes inside the object. Integer [label] COUNT
Anisotropy The anisotropy factor of a shape, which measures the object shape deviation from a sphere.
It is equal to 1 minus the ratio of the smallest to the largest eigenvalue of the covariance matrix.
  • In 2D $$ a=1-\frac{\lambda_2}{\lambda_1} $$
  • In 3D: $$ a=1-\frac{\lambda_3}{\lambda_1} $$
Floating point [label] RATIO
Elongation The elongation factor of a shape, which is close to 0 for elongated objects.
It is equal to the ratio of the medium to the largest eigenvalue of the covariance matrix. Elongated objects have small values close to 0, while sherical objects have values close to 1. $$ e=\frac{\lambda_2}{\lambda_1} $$
Floating point [label] RATIO
Flatness3d The flatness factor of a shape, which is close to 0 for flat three-dimensional objects.
It is equal to the ratio of the smallest to the medium eigenvalue of the covariance matrix. covariance matrix. Flat objects have small values close to 0, while thick objects have greater values. $$ f=\frac{\lambda_3}{\lambda_2} $$ This value is only available in 3D.
Floating point [label] RATIO
Eccentricity2d The eccentricity of the object, which is a shape factor indicating the elongation of a particle.
The eccentricity is defined as: $$ Ec_=(4\pi)^2\frac{(\lambda_1-\lambda_2)^2}{A^2(X)}=(4\pi)^2\frac{(M_{2x}-M_{2y})^2+4M_{2x}^2}{A^2(X)} $$ $\lambda_1$ and $\lambda_2$ are the covariance matrix eigenvalues.
A disk or a cross has a null eccentricity since $\lambda_1=\lambda_2$. The eccentricity increases with the difference between the eigenvalues, and thus measures the elongation of the object.
In some cases, it also indicates a privileged direction, corresponding to a large eigenvalue and a small one; for instance, $(\lambda_1-\lambda_2)^2$ has a high value, though two orthogonal privileged directions mean two large eigenvalues and a smaller difference $(\lambda_1-\lambda_2)^2$.
More information is available in the Moments of inertia section.
Floating point [label] RATIO
Symmetry2d The trend of a shape to be symmetric or not. It is close to 1 for a symmetric shape and decreases with asymmetry.
This measurement is lower than 0.5 if the gravity center is outside the particle as illustrated by the figure below. It is measured using the following formula for a particle of index $i$: $$ S(i) = \frac{1}{2}(1 + MIN_{n}(\frac{R_{min}}{R_{max}})) $$ with $R_{min} = MIN(\overline{I_{a}G_{c}},\overline{I_{b}G_{c}})$, $R_{max} = MAX(\overline{I_{a}G_{c}},\overline{I_{b}G_{c}})$ and $MIN_{n}$ the minimum value operator over all the angles $\theta_{n}\in \lbrack0,\pi\lbrack$.
<b>Figure 3.</b> Computation of $R_{min}$ and  $R_{max}$
Figure 3. Computation of $R_{min}$ and $R_{max}$

<b>Figure 4.</b> Examples of symmetry measurements
Figure 4. Examples of symmetry measurements

In the examples of figure 4, the symmetry factor is from left to right equal to 0.99, 0.879, 0.775, 0.723 and 0.214.
Floating point [label] COEFFICIENT
Orientation2d The 2D orientation of the particle, in degrees in the range [-90,+90], computed from the inertia moments.
The orientation of the largest eigenvalue of the covariance matrix.
Floating point [label] ANGLE
Orientation1Phi3d The polar angle of the particle 3D orientation, in degrees in the range [0,+90], computed from the inertia moments.
It corresponds to the phi orientation of the largest eigenvalue of the covariance matrix.
Floating point [label] ANGLE
Orientation1Theta3d The azimuthal angle of the particle 3D main orientation, in degrees in the range [-180,+180], computed from the inertia moments.
It corresponds to the theta orientation of the largest eigenvalue of the covariance matrix.
Floating point [label] ANGLE
Orientation3Phi3d The polar angle of the particle 3D minor orientation, in degrees in the range [0,+90], computed from the inertia moments.
It corresponds to the phi orientation of the smallest eigenvalue of the covariance matrix.
Floating point [label] ANGLE
Orientation3Theta3d The azimuthal angle of the particle 3D minor orientation, in degrees in the range [-180,+180], computed from the inertia moments.
It corresponds to the theta orientation of the smallest eigenvalue of the covariance matrix.
Floating point [label] ANGLE
Euler2d The Euler2d characteristic, which is a topological invariant indicator. In 2D it corresponds to 1 minus the number of holes.

More information is available in the EulerNumber2d algorithm description.
Integer [label] COUNT
Euler3d The Euler3d characteristic, which is a topological invariant indicator.

More information is available in the EulerNumber3d algorithm description.
Floating point [label] COUNT
IntegralMeanCurvature Computes the integral of mean curvature of objects in a three-dimensional binary image.

More information is available in the CurvatureIntegrals3d algorithm description.
Floating point [label] UNKNOWN
IntegralTotalCurvature Computes the integral of total curvature of objects in a three-dimensional binary image.

More information is available in the CurvatureIntegrals3d algorithm description.
Floating point [label] UNKNOWN
NeighborCount The number of objects close to the current object. It is possible to configure two parameters: Cut-off distance and minimum overlap. This measurement can be used for identifying particles belonging to a cluster.
Let $COD$ be the cut-off distance representing the distance from the boundary of the considered object to the candidate neighbor objects. $COD$ defines a sphere of influence $SOI$. To be counted as a neighbor of the current label $i$, a label $j$ must have a minimum overlap with $SOI(i)$. The overlap $Ov$ is defined by: $$ Ov(i,j) = \frac{Volume(SOI(i)\cap j)}{Volume(j)} $$ where $Volume$ represents the Area2d measurement in 2D, Volume3d in 3D and $\cap$ the intersection operator.
<b> Figure 5.</b> Neighbor counting for label 3 with 3 potential neighbors
Figure 5. Neighbor counting for label 3 with 3 potential neighbors

From the example in figure 5, consider the red particle with label 3 and different attribute configurations, the results are:
  • Cut-off distance = COD1 and Minimum overlap = 100%: NeighborCount = 0
  • Cut-off distance = COD1 and Minimum overlap = 0%: NeighborCount = 1 (particle 2)
  • Cut-off distance = COD2 and Minimum overlap = 100%: NeighborCount = 0
  • Cut-off distance = COD2 and Minimum overlap = 50%: NeighborCount = 1 (particle 2)
  • Cut-off distance = COD2 and Minimum overlap = 0%: NeighborCount = 3 (particle 1, 2 and 4)

  • The cut-off distance and minimum overlap parameters of this measurement are customizable with the NeighborCount attributes.
    Integer [label] COUNT

    Object methods

    Method Description
    void toDataFrame() Convert the measurement to an IOLink.DataFrame
    Method Description
    void ToDataFrame() Convert the measurement to an IOLink.DataFrame
    Method Description
    void to_data_frame() Convert the measurement to an IOLink.DataFrame