mmcfilters
Public API documentation
Loading...
Searching...
No Matches
Attribute catalog

This reference lists the scalar attributes exposed by the public API. C++ uses the PascalCase enumerators from Attribute, for example Attribute::Area. Stable symbolic names use uppercase snake case in string requests, returned layouts, and Python, for example "AREA" and mmcfilters.Attribute.AREA.

Every listed attribute produces one value per node in the returned AttributeNames layout. For usage patterns and output-space rules, see Attributes. Family-specific mathematical conventions are kept in focused guides such as Distance-transform attributes.

The Contract column classifies the input required by the attribute:

  • Topology/support: does not read node altitudes. Some attributes use only finite smallest-node mapping; others additionally declare regular 2D geometry or adjacency requirements.
  • Altitude-aware: reads the node altitude buffer and therefore requires a ValuedMorphologicalTree<T> or ValuedMorphologicalTreeView<T>.
  • Tree topology: uses only parent/child relations in the hierarchy.

The Attribute class column classifies monotonicity under support inclusion. For node supports \(X\) and \(Y\) with \(X \subseteq Y\):

  • Increasing means that \(A(X) \leq A(Y)\) is guaranteed by the attribute contract.
  • Non-increasing means that this increasing-order guarantee does not hold in general. It does not assert that the attribute is monotonically decreasing.

The classification is unconditional over the full documented input contract. A property that holds only under an additional restriction is therefore Non-increasing; for example, VOLUME is increasing for non-negative altitudes, and GRAY_LEVEL_HEIGHT is increasing on globally monotone max-tree and min-tree hierarchies, but neither restriction is required by its public computation contract.

The Groups column lists non-ALL group memberships. Rows are sorted by the first listed group; attributes that belong to more than one group appear only once. ALL expands to every attribute in this table.

The complete capability matrix is:

Attributes Altitude Grid 2D Adjacency Monotone order Altitude for directional adjacency Canonical 4/8
AREA, SUBTREE_HEIGHT through BALANCE_NODE, AVG_CHILD_HEIGHT_NODE no no none no no no
VOLUME, RELATIVE_VOLUME, GRAY_LEVEL_HEIGHT, MEAN_GRAY_LEVEL, GRAY_LEVEL_VARIANCE yes no none no no no
bounding boxes, central/Hu moments, moment-derived attributes, CONTOUR_* no yes none no no no
BITQUAD_*, FILLED_*, HOLE_AREA_FRACTION no yes uniform or directional no yes yes
MAX_DIST_EXACT, MAX_DIST, MAX_SQUARED_DIST*, MAX_DIST_CENTER_*, DIST_* no yes none no no no

C++ callers can query attributes::registry::capabilityRequirements(attribute). Python callers use mmcfilters.Attribute.requirements(attribute). Group requests are expanded to scalar attributes before these requirements are validated.

C++ enumerator Stable/Python name Groups Contract Attribute class Description
Attribute::Volume VOLUME GRAY_LEVEL Altitude-aware Non-increasing Sum of altitude-weighted support contributions over the node subtree. It behaves like the gray-level mass or integral of the image over the connected component support.
Attribute::RelativeVolume RELATIVE_VOLUME GRAY_LEVEL Altitude-aware Increasing Recursive contrast volume R(n) = area(n) + sum_c [R(c) + area(c) * abs(altitude(c) - altitude(n))] over the direct children c.
Attribute::GrayLevelHeight GRAY_LEVEL_HEIGHT GRAY_LEVEL Altitude-aware Non-increasing Maximum absolute altitude difference between the node and any node in its subtree. On monotone max-tree and min-tree hierarchies this reduces to the traditional one-sided span; it also applies to hierarchies with unconstrained altitude order. Leaves have value 0.
Attribute::MeanGrayLevel MEAN_GRAY_LEVEL GRAY_LEVEL Altitude-aware Non-increasing Arithmetic mean of the image values over the full node support: sum(f(x), x in X) / card(X).
Attribute::GrayLevelVariance GRAY_LEVEL_VARIANCE GRAY_LEVEL Altitude-aware Non-increasing Population variance of the image values over the full node support, with denominator card(X).
Attribute::Area AREA SHAPE Topology/support Increasing Number of pixels in the full node support. Equivalently, it is the sum of proper-part cardinalities over the node's subtree.
Attribute::BoundingBoxWidth BOUNDING_BOX_WIDTH SHAPE Topology/support Increasing Width, in columns, of the smallest axis-aligned bounding box enclosing the node support.
Attribute::BoundingBoxHeight BOUNDING_BOX_HEIGHT SHAPE Topology/support Increasing Height, in rows, of the smallest axis-aligned bounding box enclosing the node support.
Attribute::DiagonalLength DIAGONAL_LENGTH SHAPE Topology/support Increasing Euclidean diagonal length of the bounding box, sqrt(width^2 + height^2).
Attribute::Rectangularity RECTANGULARITY SHAPE Topology/support Non-increasing Ratio AREA / (BOUNDING_BOX_WIDTH * BOUNDING_BOX_HEIGHT). Values closer to 1 indicate that the support fills its bounding box densely.
Attribute::RatioWh RATIO_WH SHAPE Topology/support Non-increasing Bounding-box aspect ratio, max(width, height) / min(width, height) for non-degenerate boxes. Values are at least 1.
Attribute::BoxColumnMin BOX_COLUMN_MIN SHAPE Topology/support Non-increasing Minimum image column index covered by the node support.
Attribute::BoxColumnMax BOX_COLUMN_MAX SHAPE Topology/support Increasing Maximum image column index covered by the node support.
Attribute::BoxRowMin BOX_ROW_MIN SHAPE Topology/support Non-increasing Minimum image row index covered by the node support.
Attribute::BoxRowMax BOX_ROW_MAX SHAPE Topology/support Increasing Maximum image row index covered by the node support.
Attribute::MaxDistExact MAX_DIST_EXACT SHAPE, DIST_TRANSF_EXACT Topology/support Increasing Maximum exact Euclidean distance, in pixels, from a support pixel to the foreground 4-connected contour. It is the square root of MAX_SQUARED_DIST_EXACT.
Attribute::MaxDist MAX_DIST SHAPE, DIST_TRANSF Topology/support Increasing Maximum of the approximate distance field, in pixels. It is the square root of MAX_SQUARED_DIST and may differ from MAX_DIST_EXACT.
Attribute::MaxSquaredDistExact MAX_SQUARED_DIST_EXACT DIST_TRANSF_EXACT Topology/support Increasing Maximum exact squared Euclidean contour distance, in squared pixels. This exposes the maximum integer cost of the exact field without applying a square root.
Attribute::MaxSquaredDist MAX_SQUARED_DIST DIST_TRANSF Topology/support Increasing Maximum approximate squared contour-distance cost, in squared pixels.
Attribute::DistSquaredSumExact DIST_SQUARED_SUM_EXACT DIST_TRANSF_EXACT Topology/support Increasing Sum of the exact squared Euclidean distance to the foreground A4 contour over every support pixel.
Attribute::DistSquaredMeanExact DIST_SQUARED_MEAN_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Arithmetic mean of the exact squared contour-distance field over the node support.
Attribute::DistRmsExact DIST_RMS_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Root mean square Euclidean contour distance, sqrt(mean(d^2)), in pixel units. This is not the arithmetic mean of d.
Attribute::DistSquaredVarianceExact DIST_SQUARED_VARIANCE_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Population variance of the exact squared contour-distance samples, mean((d^2)^2) - mean(d^2)^2, in fourth-power pixel units.
Attribute::DistSquaredSum DIST_SQUARED_SUM DIST_TRANSF Topology/support Non-increasing Sum of the approximate squared-distance field over the node support.
Attribute::DistSquaredMean DIST_SQUARED_MEAN DIST_TRANSF Topology/support Non-increasing Arithmetic mean of the approximate squared-distance field over the node support. It need not equal DIST_SQUARED_MEAN_EXACT.
Attribute::DistRms DIST_RMS DIST_TRANSF Topology/support Non-increasing Root mean square distance derived from the approximate field, sqrt(mean(cost)), in pixel units.
Attribute::DistSquaredVariance DIST_SQUARED_VARIANCE DIST_TRANSF Topology/support Non-increasing Population variance of the approximate squared-distance samples.
Attribute::MaxDistCenterRowExact MAX_DIST_CENTER_ROW_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Zero-based row of the exact support pixel attaining MAX_DIST_EXACT. If several pixels attain the maximum, the smallest row-major pixel is selected.
Attribute::MaxDistCenterColumnExact MAX_DIST_CENTER_COLUMN_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Zero-based column of the same deterministic exact maximum-distance center. Request row and column together to recover its position.
Attribute::MaxDistCenterRow MAX_DIST_CENTER_ROW DIST_TRANSF Topology/support Non-increasing Zero-based row of the support pixel attaining the approximate maximum. The same smallest-row-major tie rule is applied.
Attribute::MaxDistCenterColumn MAX_DIST_CENTER_COLUMN DIST_TRANSF Topology/support Non-increasing Zero-based column of the same deterministic approximate maximum-distance center. Approximate and exact centers may differ even when their maximum values agree.
Attribute::MaxDistPlateauAreaExact MAX_DIST_PLATEAU_AREA_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Number of support pixels attaining the exact maximum squared contour distance.
Attribute::MaxDistPlateauCentroidRowExact MAX_DIST_PLATEAU_CENTROID_ROW_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Arithmetic mean of the row coordinates over the exact maximum-distance plateau. It may be fractional.
Attribute::MaxDistPlateauCentroidColumnExact MAX_DIST_PLATEAU_CENTROID_COLUMN_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Arithmetic mean of the column coordinates over the exact maximum-distance plateau. It may be fractional.
Attribute::MaxDistPlateauArea MAX_DIST_PLATEAU_AREA DIST_TRANSF Topology/support Non-increasing Number of support pixels attaining the approximate maximum. It may differ from the exact plateau area.
Attribute::MaxDistPlateauCentroidRow MAX_DIST_PLATEAU_CENTROID_ROW DIST_TRANSF Topology/support Non-increasing Arithmetic mean of row coordinates over the approximate maximum plateau.
Attribute::MaxDistPlateauCentroidColumn MAX_DIST_PLATEAU_CENTROID_COLUMN DIST_TRANSF Topology/support Non-increasing Arithmetic mean of column coordinates over the approximate maximum plateau.
Attribute::DistSum DIST_SUM DIST_TRANSF Topology/support Non-increasing Sum of Euclidean distances sqrt(z) over the approximate distance field, in accumulated pixel units.
Attribute::DistMean DIST_MEAN DIST_TRANSF Topology/support Non-increasing Arithmetic mean of Euclidean distances over the approximate field, in pixels.
Attribute::DistVariance DIST_VARIANCE DIST_TRANSF Topology/support Non-increasing Population variance of Euclidean distances, mean(z) - mean(sqrt(z))^2, in squared pixels.
Attribute::DistMedian DIST_MEDIAN DIST_TRANSF Topology/support Non-increasing Lower empirical median of the approximate Euclidean-distance field.
Attribute::DistMode DIST_MODE DIST_TRANSF Topology/support Non-increasing Most frequent approximate Euclidean distance; ties select the smallest distance.
Attribute::DistQ25 DIST_Q25 DIST_TRANSF Topology/support Non-increasing Lower empirical 25th percentile of the approximate Euclidean-distance field.
Attribute::DistQ75 DIST_Q75 DIST_TRANSF Topology/support Non-increasing Lower empirical 75th percentile of the approximate Euclidean-distance field.
Attribute::DistQ90 DIST_Q90 DIST_TRANSF Topology/support Non-increasing Lower empirical 90th percentile of the approximate Euclidean-distance field.
Attribute::DistEntropy DIST_ENTROPY DIST_TRANSF Topology/support Non-increasing Shannon entropy in bits of the normalized approximate squared-distance histogram.
Attribute::DistPositiveArea DIST_POSITIVE_AREA DIST_TRANSF Topology/support Increasing Number of support pixels whose approximate squared-distance cost is positive.
Attribute::DistLevelCount DIST_LEVEL_COUNT DIST_TRANSF Topology/support Non-increasing Number of represented approximate squared-distance levels, including zero.
Attribute::DistWeightedCentroidRow DIST_WEIGHTED_CENTROID_ROW DIST_TRANSF Topology/support Non-increasing Zero-based row centroid weighted by approximate Euclidean distance. All-zero fields use the ordinary support centroid.
Attribute::DistWeightedCentroidColumn DIST_WEIGHTED_CENTROID_COLUMN DIST_TRANSF Topology/support Non-increasing Zero-based column centroid weighted by approximate Euclidean distance. All-zero fields use the ordinary support centroid.
Attribute::DistWeightedCentralMoment20 DIST_WEIGHTED_CENTRAL_MOMENT_20 DIST_TRANSF Topology/support Non-increasing Unnormalized approximate distance-weighted central column moment.
Attribute::DistWeightedCentralMoment02 DIST_WEIGHTED_CENTRAL_MOMENT_02 DIST_TRANSF Topology/support Non-increasing Unnormalized approximate distance-weighted central row moment.
Attribute::DistWeightedCentralMoment11 DIST_WEIGHTED_CENTRAL_MOMENT_11 DIST_TRANSF Topology/support Non-increasing Unnormalized approximate distance-weighted mixed row-column moment.
Attribute::DistWeightedAxisOrientation DIST_WEIGHTED_AXIS_ORIENTATION DIST_TRANSF Topology/support Non-increasing Principal axis of the approximate distance-weighted second moments, in degrees; isotropic fields return zero.
Attribute::DistWeightedEccentricity DIST_WEIGHTED_ECCENTRICITY DIST_TRANSF Topology/support Non-increasing Major/minor eigenvalue ratio of the approximate distance-weighted second moments, capped at 1e6.
Attribute::DistSumExact DIST_SUM_EXACT DIST_TRANSF_EXACT Topology/support Increasing Sum of exact Euclidean contour distances over the support, in accumulated pixel units.
Attribute::DistMeanExact DIST_MEAN_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Arithmetic mean of exact Euclidean contour distances, in pixels.
Attribute::DistVarianceExact DIST_VARIANCE_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Population variance of exact Euclidean contour distances, in squared pixels.
Attribute::DistMedianExact DIST_MEDIAN_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Lower empirical median of the exact Euclidean-distance field.
Attribute::DistModeExact DIST_MODE_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Most frequent exact Euclidean distance; ties select the smallest distance.
Attribute::DistQ25Exact DIST_Q25_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Lower empirical 25th percentile of the exact Euclidean-distance field.
Attribute::DistQ75Exact DIST_Q75_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Lower empirical 75th percentile of the exact Euclidean-distance field.
Attribute::DistQ90Exact DIST_Q90_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Lower empirical 90th percentile of the exact Euclidean-distance field.
Attribute::DistEntropyExact DIST_ENTROPY_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Shannon entropy in bits of the normalized exact squared-distance histogram.
Attribute::DistPositiveAreaExact DIST_POSITIVE_AREA_EXACT DIST_TRANSF_EXACT Topology/support Increasing Number of support pixels whose exact squared contour distance is positive.
Attribute::DistLevelCountExact DIST_LEVEL_COUNT_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Number of represented exact squared-distance levels, including zero.
Attribute::DistWeightedCentroidRowExact DIST_WEIGHTED_CENTROID_ROW_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Zero-based row centroid weighted by exact Euclidean distance. All-zero fields use the ordinary support centroid.
Attribute::DistWeightedCentroidColumnExact DIST_WEIGHTED_CENTROID_COLUMN_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Zero-based column centroid weighted by exact Euclidean distance. All-zero fields use the ordinary support centroid.
Attribute::DistWeightedCentralMoment20Exact DIST_WEIGHTED_CENTRAL_MOMENT_20_EXACT DIST_TRANSF_EXACT Topology/support Increasing Unnormalized exact distance-weighted central column moment.
Attribute::DistWeightedCentralMoment02Exact DIST_WEIGHTED_CENTRAL_MOMENT_02_EXACT DIST_TRANSF_EXACT Topology/support Increasing Unnormalized exact distance-weighted central row moment.
Attribute::DistWeightedCentralMoment11Exact DIST_WEIGHTED_CENTRAL_MOMENT_11_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Unnormalized exact distance-weighted mixed row-column moment.
Attribute::DistWeightedAxisOrientationExact DIST_WEIGHTED_AXIS_ORIENTATION_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Principal axis of the exact distance-weighted second moments, in degrees; isotropic fields return zero.
Attribute::DistWeightedEccentricityExact DIST_WEIGHTED_ECCENTRICITY_EXACT DIST_TRANSF_EXACT Topology/support Non-increasing Major/minor eigenvalue ratio of the exact distance-weighted second moments, capped at 1e6.
Attribute::CentralMoment20 CENTRAL_MOMENT_20 MOMENTS, SHAPE Topology/support Increasing Second-order central moment mu20 around the support centroid. It measures horizontal spread using column coordinates as x.
Attribute::CentralMoment02 CENTRAL_MOMENT_02 MOMENTS, SHAPE Topology/support Increasing Second-order central moment mu02 around the support centroid. It measures vertical spread using row coordinates as y.
Attribute::CentralMoment11 CENTRAL_MOMENT_11 MOMENTS, SHAPE Topology/support Non-increasing Mixed second-order central moment mu11. It measures covariance between column and row coordinates.
Attribute::CentralMoment30 CENTRAL_MOMENT_30 MOMENTS, SHAPE Topology/support Non-increasing Third-order central moment mu30. It captures horizontal asymmetry of the support around its centroid.
Attribute::CentralMoment03 CENTRAL_MOMENT_03 MOMENTS, SHAPE Topology/support Non-increasing Third-order central moment mu03. It captures vertical asymmetry of the support around its centroid.
Attribute::CentralMoment21 CENTRAL_MOMENT_21 MOMENTS, SHAPE Topology/support Non-increasing Mixed third-order central moment mu21. It captures combined horizontal spread and vertical asymmetry.
Attribute::CentralMoment12 CENTRAL_MOMENT_12 MOMENTS, SHAPE Topology/support Non-increasing Mixed third-order central moment mu12. It captures combined vertical spread and horizontal asymmetry.
Attribute::HuMoment1 HU_MOMENT_1 MOMENTS, SHAPE Topology/support Non-increasing First Hu moment invariant computed from normalized central moments. It follows the standard second-order Hu expression.
Attribute::HuMoment2 HU_MOMENT_2 MOMENTS, SHAPE Topology/support Non-increasing Second Hu moment invariant. It emphasizes anisotropy between horizontal and vertical spread while remaining invariant to translation, scale, and rotation.
Attribute::HuMoment3 HU_MOMENT_3 MOMENTS, SHAPE Topology/support Non-increasing Third Hu moment invariant. It captures third-order skewness and asymmetry patterns in the support distribution.
Attribute::HuMoment4 HU_MOMENT_4 MOMENTS, SHAPE Topology/support Non-increasing Fourth Hu moment invariant. It combines third-order normalized moments to describe diagonal and off-axis symmetry.
Attribute::HuMoment5 HU_MOMENT_5 MOMENTS, SHAPE Topology/support Non-increasing Fifth Hu moment invariant. It is sensitive to more complex orientation-dependent asymmetries and reflection-related differences.
Attribute::HuMoment6 HU_MOMENT_6 MOMENTS, SHAPE Topology/support Non-increasing Sixth Hu moment invariant. It combines second- and third-order normalized moments to capture elliptical asymmetry and curvature-related shape variation.
Attribute::HuMoment7 HU_MOMENT_7 MOMENTS, SHAPE Topology/support Non-increasing Seventh Hu moment invariant. It is highly sensitive to fine asymmetries and helps distinguish mirror-related shapes.
Attribute::Inertia INERTIA MOMENTS, SHAPE Topology/support Non-increasing Sum of normalized second-order central moments, mu20 / area^2 + mu02 / area^2. This is the same scalar expression as the first Hu moment invariant.
Attribute::RawInertia RAW_INERTIA MOMENTS, SHAPE Topology/support Increasing Unnormalized polar second central moment, mu20 + mu02. Equivalently, it is the sum of squared Euclidean distances from support pixels to the support centroid.
Attribute::Compactness COMPACTNESS MOMENTS, SHAPE Topology/support Non-increasing Area normalized by second-order dispersion, (1 / (2*pi)) * area / (mu20 + mu02) when the denominator is positive. Higher values indicate more compact supports.
Attribute::Eccentricity ECCENTRICITY MOMENTS, SHAPE Topology/support Non-increasing Ratio of the largest to smallest eigenvalue of the second-moment matrix. Values near 1 indicate isotropic shapes; larger values indicate elongation. Degenerate line-like supports saturate at the finite value 1e6.
Attribute::LengthMajorAxis LENGTH_MAJOR_AXIS MOMENTS, SHAPE Topology/support Non-increasing Length proxy for the major axis of the equivalent second-moment ellipse, derived from the largest inertia eigenvalue and area.
Attribute::LengthMinorAxis LENGTH_MINOR_AXIS MOMENTS, SHAPE Topology/support Non-increasing Length proxy for the minor axis of the equivalent second-moment ellipse, derived from the smallest inertia eigenvalue and area.
Attribute::AxisOrientation AXIS_ORIENTATION MOMENTS, SHAPE Topology/support Non-increasing Principal-axis orientation in degrees, 0.5 * atan2(2*mu11, mu20 - mu02), normalized to a non-negative angle.
Attribute::Circularity CIRCULARITY MOMENTS, SHAPE Topology/support Non-increasing Ratio lambda2 / lambda1 of second-moment eigenvalues. Values near 1 indicate circular or isotropic supports; values near 0 indicate elongation.
Attribute::BitquadArea BITQUAD_AREA BOUNDARY, SHAPE Topology/support Non-increasing Duda-style sub-pixel area estimator derived from aggregated 2x2 bitquad pattern counts.
Attribute::BitquadNumberEuler BITQUAD_NUMBER_EULER BOUNDARY, SHAPE Topology/support Non-increasing Euler characteristic estimated from bitquad family counts under an explicit connectivity projection. For a tree of shapes, non-root connectivity is selected from exact lower/upper shape polarity; the root has no polarity.
Attribute::BitquadNumberHoles BITQUAD_NUMBER_HOLES BOUNDARY, SHAPE Topology/support Non-increasing Number of holes inferred from the bitquad Euler characteristic for a single connected support.
Attribute::BitquadPerimeter BITQUAD_PERIMETER BOUNDARY, SHAPE Topology/support Non-increasing Discrete boundary-length estimate from bitquad edge-contributing patterns.
Attribute::BitquadPerimeterContinuous BITQUAD_PERIMETER_CONTINUOUS BOUNDARY, SHAPE Topology/support Non-increasing Smoothed continuous perimeter estimate from bitquad counters, using weighted transitions across local 2x2 configurations.
Attribute::BitquadCircularity BITQUAD_CIRCULARITY BOUNDARY, SHAPE Topology/support Non-increasing Bitquad compactness measure (4*pi*BITQUAD_AREA) / BITQUAD_PERIMETER_CONTINUOUS^2. Values closer to 1 indicate rounder supports. Degenerate zero-perimeter supports return 0.
Attribute::BitquadPerimeterAverage BITQUAD_PERIMETER_AVERAGE BOUNDARY, SHAPE Topology/support Non-increasing Average continuous perimeter per connected component, computed from bitquad perimeter and Euler-count estimates. Euler estimates <= 0 return 0.
Attribute::BitquadLengthAverage BITQUAD_LENGTH_AVERAGE BOUNDARY, SHAPE Topology/support Non-increasing Average longitudinal extent proxy, derived as half of the average continuous perimeter. Euler estimates <= 0 return 0.
Attribute::BitquadWidthAverage BITQUAD_WIDTH_AVERAGE BOUNDARY, SHAPE Topology/support Non-increasing Average transverse extent proxy, computed as 2 * BITQUAD_AREA / BITQUAD_PERIMETER_CONTINUOUS with a zero fallback when the continuous perimeter is degenerate.
Attribute::ContourPixels CONTOUR_PIXELS BOUNDARY, SHAPE Topology/support Non-increasing Number of support pixels that touch the 4-neighbor complement by at least one side.
Attribute::ContourPerimeter CONTOUR_PERIMETER BOUNDARY, SHAPE Topology/support Non-increasing Total number of exposed 4-neighbor sides over the support. This is the side-count perimeter, not a Euclidean perimeter estimate.
Attribute::ContourSideNorth CONTOUR_SIDE_NORTH BOUNDARY, SHAPE Topology/support Non-increasing Number of exposed north-facing sides over support pixels.
Attribute::ContourSideWest CONTOUR_SIDE_WEST BOUNDARY, SHAPE Topology/support Non-increasing Number of exposed west-facing sides over support pixels.
Attribute::ContourSideEast CONTOUR_SIDE_EAST BOUNDARY, SHAPE Topology/support Non-increasing Number of exposed east-facing sides over support pixels.
Attribute::ContourSideSouth CONTOUR_SIDE_SOUTH BOUNDARY, SHAPE Topology/support Non-increasing Number of exposed south-facing sides over support pixels.
Attribute::SubtreeHeight SUBTREE_HEIGHT TREE_TOPOLOGY Tree topology Increasing Longest child-edge path from the node to any leaf in its subtree. Leaves have height 0.
Attribute::DepthNode DEPTH_NODE TREE_TOPOLOGY Tree topology Non-increasing Number of parent-edge steps from the node to the root. The root has depth 0.
Attribute::IsLeafNode IS_LEAF_NODE TREE_TOPOLOGY Tree topology Non-increasing Boolean scalar encoded as 1 when the node has no children and 0 otherwise.
Attribute::IsRootNode IS_ROOT_NODE TREE_TOPOLOGY Tree topology Increasing Boolean scalar encoded as 1 for the tree root and 0 for all other nodes.
Attribute::NumChildrenNode NUM_CHILDREN_NODE TREE_TOPOLOGY Tree topology Non-increasing Number of direct child nodes. It measures the immediate branching factor of the hierarchy at the node.
Attribute::NumSiblingsNode NUM_SIBLINGS_NODE TREE_TOPOLOGY Tree topology Non-increasing Number of other nodes sharing the same parent. The root has 0 siblings.
Attribute::NumDescendantsNode NUM_DESCENDANTS_NODE TREE_TOPOLOGY Tree topology Increasing Number of internal tree nodes strictly below this node in its subtree.
Attribute::NumLeafDescendantsNode NUM_LEAF_DESCENDANTS_NODE TREE_TOPOLOGY Tree topology Increasing Number of leaf nodes in the node subtree. A leaf node contributes 1 for itself.
Attribute::LeafRatioNode LEAF_RATIO_NODE TREE_TOPOLOGY Tree topology Non-increasing Ratio of leaf descendants to subtree size, leaf_descendants / (descendants + 1). Leaves return 1.
Attribute::BalanceNode BALANCE_NODE TREE_TOPOLOGY Tree topology Non-increasing Difference between maximum and minimum child-subtree heights. It is 0 for leaves and increases when child depths are uneven.
Attribute::AvgChildHeightNode AVG_CHILD_HEIGHT_NODE TREE_TOPOLOGY Tree topology Non-increasing Average height of direct child subtrees. Leaves return 0; non-leaf nodes average direct child heights.
Attribute::FilledArea FILLED_AREA FILLED_SHAPE Topology/support Increasing Number of pixels enclosed by the unique external boundary, including holes; requires exactly one external boundary per live node.
Attribute::FilledCentroidRow FILLED_CENTROID_ROW FILLED_SHAPE Topology/support Non-increasing Zero-based mean row of the filled region pixels.
Attribute::FilledCentroidColumn FILLED_CENTROID_COLUMN FILLED_SHAPE Topology/support Non-increasing Zero-based mean column of the filled region pixels.
Attribute::FilledLengthMajorAxis FILLED_LENGTH_MAJOR_AXIS FILLED_SHAPE Topology/support Non-increasing Major-axis length proxy of the filled region, in pixels; follows LENGTH_MAJOR_AXIS.
Attribute::FilledLengthMinorAxis FILLED_LENGTH_MINOR_AXIS FILLED_SHAPE Topology/support Non-increasing Minor-axis length proxy of the filled region, in pixels; follows LENGTH_MINOR_AXIS.
Attribute::FilledAxisOrientation FILLED_AXIS_ORIENTATION FILLED_SHAPE Topology/support Non-increasing Non-negative principal column-axis orientation in degrees; isotropic regions return 0.
Attribute::FilledAxisOrientationSigned FILLED_AXIS_ORIENTATION_SIGNED FILLED_SHAPE Topology/support Non-increasing Signed principal column-axis orientation in degrees, 0.5 * atan2(2*mu11, mu20-mu02), in [-90,90]; positive row direction is downward. Isotropic regions return 0. The existing FILLED_AXIS_ORIENTATION remains its absolute value.
Attribute::FilledEccentricity FILLED_ECCENTRICITY FILLED_SHAPE Topology/support Non-increasing Major/minor eigenvalue ratio of the filled region moments, capped at 1e6; one pixel returns 1.
Attribute::FilledInertia FILLED_INERTIA FILLED_SHAPE Topology/support Non-increasing Sum of the filled region second central moments divided by squared filled area.
Attribute::HoleAreaFraction HOLE_AREA_FRACTION FILLED_SHAPE Topology/support Non-increasing Fraction of filled area occupied by holes: 1 - AREA / FILLED_AREA.
Attribute::FilledCentroidDisplacementNormalized FILLED_CENTROID_DISPLACEMENT_NORMALIZED FILLED_SHAPE Topology/support Non-increasing Euclidean distance between support and filled-region centroids divided by the square root of filled area.
Attribute::FilledCompactness FILLED_COMPACTNESS FILLED_SHAPE Topology/support Non-increasing FILLED_AREA / (2*pi*(mu20 + mu02)), using filled-region second central moments; zero dispersion returns 0.
Attribute::FilledCircularity FILLED_CIRCULARITY FILLED_SHAPE Topology/support Non-increasing Minor/major eigenvalue ratio of the filled-region second moments; one pixel returns 1 and a nontrivial line returns 0.
Attribute::AxisOrientationSigned AXIS_ORIENTATION_SIGNED SHAPE, MOMENTS Topology/support Non-increasing Signed principal column-axis orientation of the node support: 0.5 * atan2(2*mu11, mu20-mu02) in degrees, in [-90,90]; positive row direction is downward. Isotropic and one-pixel supports return 0; the axis is defined modulo 180 degrees. AXIS_ORIENTATION remains its absolute value.