ENH: Add MinMaxCurvatureFlow alternate baselines for ITK 3D threshold fix#2627
ENH: Add MinMaxCurvatureFlow alternate baselines for ITK 3D threshold fix#2627hjmjohnson wants to merge 1 commit into
Conversation
Please create a PR for SimpleITK/SimpleITKExternalData with the data. I am unfortunately unable to locate developer documentation on uploading data. Hopefully making the PR to the data repo is straight forward enough. |
|
@hjmjohnson Please see the newly added sitk-upload-binary-data skill to upload data. |
|
Related to : InsightSoftwareConsortium/ITK#6667 for minimizing inter-project dependancies on test cases. |
… fix ITK PR InsightSoftwareConsortium/ITK#6603 corrects the polar angle in the 3D MinMaxCurvatureFlowFunction threshold (context in InsightSoftwareConsortium/ITK#6619), changing MinMaxCurvatureFlowImageFilter output on 3D volumes. Add the post-fix center slices as .1.nrrd alternate baselines so the defaults and longer tests pass with both current and fixed ITK. The Binary variant is unaffected.
72a81b9 to
1cb3913
Compare
|
Data uploaded per the sitk-upload-binary-data skill: SimpleITK/SimpleITKExternalData#50 (draft). The previous content-link hashes were transcribed and did not match any real file; the branch is now rebased onto |
Adds
.1.nrrdalternate baselines for theMinMaxCurvatureFlowImageFilterdefaultsandlongertests, so they pass with both current ITK and an ITK containing InsightSoftwareConsortium/ITK#6603 (3D polar-angle threshold fix; full context in InsightSoftwareConsortium/ITK#6619).Data: the two objects are staged in SimpleITK/SimpleITKExternalData#50 — CI cannot fetch them until that PR merges.
Why the output changes, and by how much
ITK's 3D
MinMaxCurvatureFlowFunction::ComputeThresholdnormalized the gradient to lengthStencilRadius(2) instead of unit length beforeacos(), silently selecting the wrong polar angle since 2002. ITK#6603 restores the published algorithm (Sethian 1999). Measured onRA-Float.nrrdwith this repo's exact test parameters, the center-slice RMS versus the current baselines is 343.0 (longer) against a tolerance of 0.01. The 2D dispatch andBinaryMinMaxCurvatureFlowImageFilter(user-supplied threshold, never callsComputeThreshold) are unaffected — their baselines need no change.How the alternates were generated and validated
The baselines are the actual harness outputs:
BasicFilters.MinMaxCurvatureFlowImageFilterwas run via ctest against an ITK main build containing the threshold fix, and the failing-compare outputs written byImageCompare(center z-slice, 64×64×1 float NRRD) were hashed directly, byte-identical across two runs. With the alternates placed in the ExternalData store, the test passes against ITK main; the primary baselines are untouched, so current-ITK builds keep passing viaImageCompare's best-RMS selection over thename.N.nrrdseries (sitkImageCompare.cxx). The generated test commands reference baselines asDATA{...nrrd,:}, so the.1.nrrdseries members are fetched automatically — no CMake changes needed.An earlier revision of this PR carried transcribed hashes that did not correspond to any real file; the content links now hold the verified hashes of the uploaded objects.