ENH: Ingest ITKIsotropicWavelets into Modules/Filtering#6267
Merged
hjmjohnson merged 356 commits intoMay 19, 2026
Merged
Conversation
todo: move that into an app or example.
Right now, not applying any factor to the approx image (last low pass).
They do not apply the reconstruction factor to each band in the wavelet inverse. Go figure why not mention that in the paper, works beautifully though.
Copy methods dealing with metadata from ShrinkFilterImageFilter.
…ImageInformation Change ImageInformation:Spacing for WaveletForward Output and layout of output list (approx image is now last instead of first).
WaveletForward/Inverse ENH: Store the filter bank from ForwardWavelet and allow to use it in WaveletInverse.
…ore_filter_bank Store pointers to access Wavelets. Store FilterBankPyramid for reuse in InverseWavelet Fix InsightSoftwareConsortium#25 Fix InsightSoftwareConsortium#18
Expand RieszFrequencyFunction to a generalized version. Based on: [3D Steerable Wavelets in Practice, Chenouard et al.](https://www.researchgate.net/publication/228103987_3D_Steerable_Wavelets_in_Practice) N := order of generalized riesz function. Precondition: N>=1 n = (n1,n2,...nd) := indices vector. d-array, where d is the Dimension of the image. Precondition: sum(n1,n2,...,nd) = N R^n = (-j)^N * sqrt(N!/(n1!*n2!...nd!)) * (w1^n1 * w2^n2 * ... wd^nd) * 1.0 / ||w||^N R^n = complex_component * normalizing_factor * frequency_factor * 1.0/freq_magnitude_factor The number of output components of the scalar to vector RieszTransform is: p(N,d) = (N+d - 1)! / (d -1)! N! if N = 1 , p(1,d) = d if N = 2, p(2,d) = (d+1)*d / 2 For example, d = 3. N = 1 -> p(1,3) = 3 where the indices would be: (1,0,0) , (0,1,0), (0,0,1) N = 2 -> p(2,3) = 6 (2,0,0), (0,2,0), (0,0,2) , (1,1,0), (1,0,1), (0,1,1) Add: EvaluateWithIndices(freq, indices) m_Order TODO: Refactor old Evaluate methods (they assume Order=1)
Add unit test to RieszFrequencyFunction. TODO: improve docs, remove todos
C++11 array would be optimal. std::sort does not work in FixedArray, FixedArray::ReverseIterator has no operator -.
Add higher order tests.
…neralized_riesz_function ENH: Expand RieszFrequencyFunction to a generalized version.
Also copy metadata from input image when projecting the image.
IsotropicWavelets is now part of the ITK source tree at Modules/Filtering/IsotropicWavelets/. The configure-time remote fetch stub is no longer needed.
Add -DModule_IsotropicWavelets:BOOL=ON to the configure-ci pixi task so the in-tree IsotropicWavelets module is built and tested in CI.
Apply clang-format and gersemi cleanups to the IsotropicWavelets tree that the v4 sanitize-history per-blob pass did not normalize. Pure formatting; no behavior change.
975890f to
95dd477
Compare
Member
Author
|
Rebased to fix ghostflow prefix gate: 5 upstream |
This comment was marked as resolved.
This comment was marked as resolved.
dzenanz
reviewed
May 14, 2026
…keLists The if(NOT ITK_SOURCE_DIR) branch (find_package(ITK) + ITKModuleExternal + -Wno-undefined-var-template) only executed when building IsotropicWavelets standalone outside ITK. In-tree builds always take the itk_module_impl() else branch. Following the cleanup pattern from InsightSoftwareConsortium#6279, drop the dead branch entirely.
63 tasks
Replace include_directories(SYSTEM ...) with target_include_directories on IsotropicWaveletsTestDriver so VTK headers do not leak to other targets in the test/ subdirectory. Also clarify the ITK_VISUALIZE_TESTS comment to distinguish #ifdef (existence) from #if (value).
Member
Author
|
/azp run |
6c27201 to
901a513
Compare
Member
Author
|
Rewrote history with New tip: |
Member
Author
|
/azp run |
Member
Author
|
@greptileai review |
dzenanz
approved these changes
May 18, 2026
450255a to
4313a64
Compare
76067ab
into
InsightSoftwareConsortium:main
19 of 20 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
ITKIsotropicWaveletsfrom its standalone remote-module repo intoModules/Filtering/IsotropicWavelets/(Wave 2 of remote-module consolidation, tracking #6160). Merge topology is preserved (Mode A--no-ff --allow-unrelated-histories); the.remote.cmakeshim is removed and the module is enabled in the configure-ci pixi task.Ingest stats
upstream/main— full upstream merge topology preserved peringest-merge-topology.md.ingest-archive-readme.mdafter this lands).External data (CIDs)
.sha512/.cidcontent-links).checkershadow*.jpgfixtures that were committed as raw bytes in the remote module and converted to.cidcontent-links during ingest (commit1d0688876b).Follow-on commits beyond the Mode-A merge
Verification
pre-commit run --all-filespassed against tip975890f2cfimmediately before push.git rev-list --count --merges upstream/main..HEAD= 72 (topology preserved; non-zero merge count confirms no linearization).