Skip to content

Cuberille: nondeterministic vertex count for itk::Mesh output (QuadEdgeMesh stable) #6301

@hjmjohnson

Description

@hjmjohnson

Discovered while taking over the archived ITKCuberille#80 reproducer and fixing the unrelated out-of-range crash (see #6284, #6285).

CuberilleImageToMeshFilter produces a nondeterministic vertex count when the output mesh is a plain itk::Mesh (the itk::QuadEdgeMesh instantiation is stable).

Repro: TC_prob_float_9021791_96M_right_cropped.nrrd (from ITKCuberille#80), float input image, iso-value 0.5, CuberilleTest01 (runs the QEMesh then the Mesh instantiation).

Across 5 consecutive runs of the same binary on the same input:

Mesh type Points Cells
itk::QuadEdgeMesh 134 (stable) 222 (stable)
itk::Mesh 132 / 132 / 137 / 134 / 132 230 (stable)

The point count for the itk::Mesh path varies run-to-run while the cell count is stable, which points at an order-/thread-dependent vertex de-duplication or point-insertion path specific to the non-QuadEdge mesh output (the filter uses itk::PoolMultiThreader, 16 threads).

This is a separate defect from the out-of-range crash fixed for #6284/#6285 (that fix — keying the vertex lookup by the full (z,y,x) grid identity — is deterministic and regression-free for the tibial and prostate fixtures). TC_prob is therefore not included as a CTest in the supersedes-#80 PR; this issue tracks the remaining nondeterminism.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions