ENH: Ingest ITKThickness3D into Modules/Filtering/Thickness3D#6268
Merged
hjmjohnson merged 45 commits intoMay 15, 2026
Conversation
Include ITKBinaryThinning3D into the ITKThickness3D module. Add BinaryThinningImageFilter3D as a native filter.
Merge ITKBinaryThinning3D into master
Conform to function naming coding guidelines: functions names should start with a capital letter and be written in camel case as per the `C.6.6 Naming Methods and Functions` ITK Software Guide section.
Conform to ITK coding style guidelines: - Use the `this` keyword to call to member functions. - Document the methods when being declared. - Use braces for flow control loops, even if they consist of a single line. - Use `unsigned int` types for indexing. - Make flow control loop variables have a local scope. - Use pre-increment in recursive control loops. - Use the appropriate indentation. - Start comments with capitals. - Make `PrintSelf` be the last method of the implementation body. - Remove uninformative `PrintSelf` `std::cout` message. - Remove `itkDebugMacro` messages.
…lines STYLE: Conform to ITK coding style guidelines.
Make the tests quantitative: add baseline image comparison.
Improve tests: - Use the `TRY_EXPECT_NO_EXCEPTION` macro to update filters and avoid boilerplate code. - Exercise the basic object methods using the `EXERCISE_BASIC_OBJECT_METHODS` macro. - Remove the `using namespace std` as per ITK guidelines. - Some style changes to conform to the ITK Software Guide.
MedialThicknessImageFilter3D (#13) * BUG: Double the distance 'skeleton to shell' in the MedialThicknessImageFilter3D output Thickness should be the equivalent *diameter* and not *radius* (i.e. double the distance from the medial axis to the outter shell) - Filter code was fixed (add MultiplyImageFilter to the pipeline) - Behavior was explicited in the README.rst - Output test data were adjusted to the new behavior * REL: Increment version number
Add the `override` keyword to overriding methods. Fixes the dashboard errors: ``` include/itkBinaryThinningImageFilter3D.h:141:8: warning: 'PrintSelf' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] ``` and ``` include/itkBinaryThinningImageFilter3D.h:144:8: warning: 'GenerateData' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] ``` reported at: http://testing.cdash.org/viewBuildError.php?type=1&buildid=5818150
Use the `ITK_DISALLOW_COPY_AND_ASSIGN` macro to enhance consistency across the the toolkit when disallowing the copy constructor and the assign operator. Move the `ITK_DISALLOW_COPY_AND_ASSIGN` calls to public section following the discussion in https://discourse.itk.org/t/itk-disallow-copy-and-assign/648
…/AddOverrideKeywordToOverridenMeth ods COMP: Add the `override` keyword to overriding methods.
…/UseDisallowCopyAndAssignMacro COMP: Use and move ITK_DISALLOW_COPY_AND_ASSIGN calls to public section.
This check replaces default bodies of special member functions with `= default;`. The explicitly defaulted function declarations enable more opportunities in optimization, because the compiler might treat explicitly defaulted functions as trivial. Additionally, the C++11 use of `= default` more clearly expresses the intent for the special member functions.
…/PreferDefaultToExplicitTrivialImp lementations STYLE: Pefer = default to explicitly trivial implementations
…m#21) Prefer C++11 type alias over typedef for the reasons stated here: http://review.source.kitware.com/#/c/23103/
…Consortium#24) m_MultiplyFilter must be instantiated.
changed the reference output image for quantitative tests
This allows compiling with disabled legacy code
Compile with legacy disabled
The check converts the usage of typedef with using keyword. SRCDIR= #My local SRC BLDDIR= #My local BLD cd run-clang-tidy.py -extra-arg=-D__clang__ -checks=-*,modernize-use-using -header-filter=.* -fix # https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-using.html
Find and remove redundant void argument lists.
The check finds function parameters of a pointer type that could be changed to point to a constant type instead. When const is used properly, many mistakes can be avoided. Advantages when using const properly: - prevent unintentional modification of data; - get additional warnings such as using uninitialized data; - make it easier for developers to see possible side effects. This check is not strict about constness, it only warns when the constness will make the function interface safer.
The mission of NumFOCUS is to promote open practices in research, data, and scientific computing. https://numfocus.org
Fixes changes made in InsightSoftwareConsortium#2053. ITK_DISALLOW_COPY_AND_ASSIGN will be used if ITK_FUTURE_LEGACY_REMOVE=OFF.
The ability to include either .h or .hxx files as header files required recursively reading the .h files twice. The added complexity is unnecessary, costly, and can confuse static analysis tools that monitor header guardes (due to reaching the maximum depth of recursion limits for nested #ifdefs in checking).
Member
Author
|
@greptileai review this draft before I make it official |
1 similar comment
Member
Author
|
@greptileai review this draft before I make it official |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
…ncludes Duplicate ReleaseDataFlagOn on m_ThinningFilter was a copy-paste error; target m_MaskFilter so its output buffer is released, halving peak memory. Unused itkImageRegionIterator* includes removed.
…code Use double-quote includes (ITK convention), 'typename' template parameters, NumericTraits OneValue()/ZeroValue() in place of deprecated One/Zero data members, and remove commented-out SetNthOutput remnant.
Member
Author
|
/azp run |
Member
Author
|
Addressed 11 P1+P2 Greptile findings in 3 append commits preserving merge topology (7 merges intact). CI rerun triggered. |
Mirrors the annotation already carried by BinaryThinningImageFilter3D so that Windows shared-library builds export the explicit template instantiations produced by the Python wrapping layer when ENABLE_SHARED is active for this module.
IsEulerInvariant and IsSimplePoint are invoked once per foreground voxel per border pass. Taking the 27-element neighborhood by const reference removes the per-call copy without changing semantics; the bodies only read neighbors.
Member
Author
|
Addressed two outside-diff Greptile findings:
/azp run |
Member
Author
|
/azp run |
The if(NOT ITK_SOURCE_DIR) branch (find_package(ITK) + include(ITKModuleExternal)) only executes when building the module standalone outside ITK. In-tree builds always take the itk_module_impl() else branch. Drop the dead branch following the cleanup pattern from InsightSoftwareConsortium#6272/InsightSoftwareConsortium#6279.
63 tasks
Replace the in-tree binary input.tiff with an ExternalData .sha512
content-link. The blob is already resolvable on data.kitware.com
(no upload required).
Modules/Filtering/Thickness3D/test/Input/input.tiff (162358 bytes)
sha512: f12b054803bd9745fce7e34f3e54bfa593e6adbe2a04d33d5d7483c36dc876252f9d48c89af7e99f4ac5b8fa8c54e6cba9a855aff6474bde79b86b636ca5a904
status: already on data.kitware.com
Member
Author
|
/azp run |
Member
Author
|
/azp run |
238c54b to
6ae191d
Compare
Member
Author
|
Rewrote history with |
Member
Author
|
/azp run |
Member
Author
|
@greptileai review |
dzenanz
approved these changes
May 15, 2026
366ccd8
into
InsightSoftwareConsortium:main
20 of 21 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ingest the ITKThickness3D remote module into
Modules/Filtering/Thickness3D(group: Filtering). Source upstream:InsightSoftwareConsortium/ITKThickness3D. Tracking issue: #6160.Ingest stats
Utilities/Maintenance/RemoteModuleIngest/INGESTION_STRATEGY.md)Modules/Filtering/Thickness3D/: 149a625a6daf2f3f81eaf713372294fe715a41393bExternal-data fixtures
CID / .sha512 content-links present in this ingest:
If any fixtures resolve via ITKTestingData, that repo must contain the matching content-link before this PR can merge cleanly.
Follow-on commits (on top of the unrelated-histories merge)