ENH: Ingest ITKMontage remote module into Modules/Registration/Montage#6103
Merged
hjmjohnson merged 539 commits intoInsightSoftwareConsortium:mainfrom Apr 25, 2026
Merged
ENH: Ingest ITKMontage remote module into Modules/Registration/Montage#6103hjmjohnson merged 539 commits intoInsightSoftwareConsortium:mainfrom
hjmjohnson merged 539 commits intoInsightSoftwareConsortium:mainfrom
Conversation
Fix unused variable warning. Fixes: ``` Modules/Remote/Montage/include/itkMaxPhaseCorrelationOptimizer.hxx:305:10: warning: unused variable 'confidenceFactor' [-Wunused-variable] ``` raised at: http://testing.cdash.org/viewBuildError.php?type=1&buildid=5914663
…UnusedVariableWarning COMP: Fix unused variable warning
If on-disk images have non-unit spacing, this is correctly passed to the montaging classes. This uncovers some bugs regarding proper spacing support.
ITK does not have proper support for spacing specification in PNG. sCAL chunk is supported, pHYs chunk is not, see discussion https://itk.org/pipermail/insight-users/2012-December/046756.html and proposed patch https://review.source.kitware.com/%23/c/8884/ So we keep unit spacing for some of the tests using PNG input images.
If there was an empty line in a file with CRLF line endings it would cause a crash. This was due to CR character being removed after emptiness was checked.
This can cause ratio to be greater than 1.0, causing sine to be NaN, resulting in NaN being peak index and thus translation, potentially ruining the whole montage.
…dates Minor updates
"Ground truth" taken from MIST.
Move synthetic, numerous and other outputs which are not usually examined by hand into a sub-directory. Removing the word Test from test names. That makes the tests shorter and easier to distinguish.
…rovements Test improvements
* use Eigen (built into ITK) * computing the positions works * calculated residuals * outlier removal * use alternative registration candidates * reduce weight instead of eliminate equations * calculate outlier scores based on standard deviation * use zero-mean standard deviation for outlier score * use outlierScore in cost calculation * nudge towards zero * use outlier detection on translations instead of positions * score is an outlier only if it deviates by more than 3 * reducing amount of debug output using #ifndef NDEBUG * tweaking parameters * cleaning up debugging output * exposing outlier detection thresholds
Montage/include/itkPhaseCorrelationOptimizer.h: In static member
function ‘static const
std::initializer_list<itk::PhaseCorrelationOptimizerEnums::PeakInterpolationMethod>
itk::PhaseCorrelationOptimizerEnums::AllPeakInterpolationMethods()’:
Montage/include/itkPhaseCorrelationOptimizer.h:64:12: warning: returning
local ‘initializer_list’ variable ‘methods’ does not extend the lifetime
of the underlying array [-Winit-list-lifetime]
64 | return methods;
| ^~~~~~~
Montage/include/itkPhaseCorrelationOptimizer.h:57:58: note: declared
here 57 | const std::initializer_list<PeakInterpolationMethod>
methods{
| ^~~~~~~
dzenanz
approved these changes
Apr 22, 2026
Member
dzenanz
left a comment
There was a problem hiding this comment.
Mostly looks good. Thank you for working on this Hans.
Member
|
Some ghostflow messages reminded me that we might want to convert references to BibTeX format introduced somewhat recently. |
dc06091 to
0a7a33a
Compare
Contributor
|
Too many files changed for review. ( |
aa4104b to
be308ba
Compare
dzenanz
reviewed
Apr 23, 2026
e9e1bc7 to
3a67445
Compare
Brings Montage from a configure-time remote fetch into the ITK source tree at Modules/Registration/Montage/ using the v3 whitelist filter-repo pipeline. Upstream repo: https://github.com/InsightSoftwareConsortium/ITKMontage.git Upstream tip: f2ba56b24c81a0ac61639d349688d26673a65f73 Ingest date: 2026-04-24 Whitelist passes (git filter-repo): - --path include --path src --path test --path wrapping - --path CMakeLists.txt --path itk-module.cmake - --to-subdirectory-filter Modules/Registration/Montage - --prune-empty always - (if present) second pass: invert CTestConfig.cmake Outcome: 697 upstream commits -> 532 surviving; 20 distinct authors preserved; git blame walks across the merge boundary to original authors. Content-link inventory: .md5=0 .shaNNN=0 .cid=558 Primary author: Dženan Zukić <dzenan.zukic@kitware.com> Co-authored-by: Darren Thompson <darrent1974@users.noreply.github.com> Co-authored-by: Dzenan Zukic <dzenan.zukic@kitware.com> Co-authored-by: Francois Budin <francois.budin@kitware.com> Co-authored-by: haaput <haaput@instem> Co-authored-by: Hans J. Johnson <hans-johnson@uiowa.edu> Co-authored-by: Hans Johnson <hans.j.johnson@gmail.com> Co-authored-by: Hans Johnson <hans-johnson@uiowa.edu> Co-authored-by: Joey Kleingers <joey.kleingers@bluequartz.net> Co-authored-by: Jon Haitz Legarreta Gorroño <jon.haitz.legarreta@gmail.com> Co-authored-by: Luis Ibanez <luis.ibanez@kitware.com> Co-authored-by: Mathew J. Seng <mathewseng@gmail.com> Co-authored-by: Mathew Seng <mathewseng@gmail.com> Co-authored-by: Matt McCormick <matt.mccormick@kitware.com> Co-authored-by: Matt McCormick <matt@mmmccormick.com> Co-authored-by: Matt McCormick (thewtex) <matt@mmmccormick.com> Co-authored-by: Michael Jackson <mike.jackson@bluequartz.net> Co-authored-by: tabish <tabish@instem> Co-authored-by: Tom Birdsong <40648863+tbirdso@users.noreply.github.com> Co-authored-by: Tom Birdsong <tom.birdsong@kitware.com>
The upstream itk-module.cmake does `file(READ "${MY_CURRENT_DIR}/README.md"
DOCUMENTATION)` to populate the module description. The whitelist-based
ingest excludes README.md from the ingested tree, so the READ fails at
configure time. Replace with an inline `set(DOCUMENTATION ...)` that
gives Doxygen enough context without depending on any non-whitelisted
file.
Also dropped the commented-out `ITKIOHDF5` line and inline comments that
only made sense in the standalone upstream repo.
Upstream ITKMontage's CMakeLists.txt files predate the ITK gersemi pre-commit hook. Reformat the four ingested files to satisfy .gersemi.config (0.19.3): expand itk_add_test() arg lists, normalize command case, flatten short set() calls. No functional change.
Two pre-commit issues in the ingested Montage test/Input tree: 1. Seven `_meta.xml` files (57 KB to 3 MB) are upstream-archive metadata dumps from the EM-imaging capture tool. No test references them (grep across test/*.cxx is clean). They rode in via the whitelist but serve no in-tree purpose, and four exceed ITK's 100 KB large- file threshold enforced by kw-pre-commit. Deleted. 2. Two tiny `_readme.txt` files (`NoisyTiles/`, `Tiles/`) carried human-readable dataset provenance but lacked a trailing newline. Appended `\n` so `end-of-file-fixer` passes. Archival provenance for the deleted `_meta.xml` files remains in the upstream repository; nothing in-tree depends on them.
3a67445 to
f9fd225
Compare
1180a30
into
InsightSoftwareConsortium:main
11 of 16 checks passed
hjmjohnson
added a commit
to InsightSoftwareConsortium/ITKMontage
that referenced
this pull request
Apr 25, 2026
The ITKMontage module has been merged into the ITK monorepo at Modules/Registration/Montage/ via InsightSoftwareConsortium/ITK#6103 (commit 1180a300d4, 2026-04-25). This repository is being placed into archive (read-only) mode. Remove all source from HEAD and replace with a README pointer so that the GitHub landing page directs users to the ITK monorepo. Full development history is preserved in the git log.
This was referenced Apr 25, 2026
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.
Second representative case study for the whitelist-based remote-module ingest tooling (after AnisotropicDiffusionLBR in #6093, tooling from #6098 — both merged). Brings the ITKMontage phase-correlation / mosaic-stitching module in-tree under
Modules/Registration/Montage, migrates its content-links to CID, and bumps the PerformanceBenchmarking remote-module pin to current upstream.Re-ingested 2026-04-23 on top of current
upstream/main(no longer stacks on #6109).Merge-blocker: Montage CID blob upload is still outstanding (CIDs are in-tree but blobs aren't reachable on any ExternalData mirror; Pixi-Cxx will 404 until that's done).
Commit stack (top → bottom)
The previous .sha512→.cid migration commit became empty after re-ingest because upstream
ITKMontagenow provides.cidfiles directly (its commit794db52b77 ENH: Convert from md5 to .cid tags.is included in the ingested merge).CID migration status (MERGE BLOCKER)
Modules/Registration/Montage/test/Input/are.cidfiles (now provided directly by upstream).ITKTestingDatamirror return HTTP 404. Blobs have not yet been pushed. Pixi-Cxx will keep failing with the "9 mirrors all 404" pattern until this is done.Required before merge:
PerformanceBenchmarking pin bump
Modules/Remote/PerformanceBenchmarking.remote.cmakeGIT_TAGadvanced from7950c1d76095(~2024) to63fec3013cccfe7e8b1b88a1d2d889f7e64e4469(upstream master tip, 2026-04-23). Brings in:cf89d96eENH: ASV-over-native-ITK performance benchmark harness41bf1b9cBUG: Harden CopyIterationBenchmark against ITK 1d87efa+ regressionddeb770bENH: Convert from md5 to .cid tagsb24324f9COMP: Use ITK default branch origin/main in ASV config and docs63fec301COMP: Drop unusedInputPixelTypetypedefs in CopyIterationBenchmarkThe asv CI (PR #612, which consumes this remote module) is separately blocked on
ddeb770b's blob upload. The Montage side of this PR is independent.What is intentionally NOT ingested (Montage)
Excluded by the whitelist:
examples/— applied demonstration code + sample datasets. Stays in the archived upstream; selected examples may relocate to top-levelExamples/in a follow-up PR.LICENSE— ITK's own Apache 2.0 license covers the in-tree module.pyproject.toml,requirements.txt— standalone-repo packaging.CTestConfig.cmake— pointed at a standalone CDash project that no longer applies in-tree..github/workflows/— upstream CI config; ITK's in-tree CI covers the module.See
Modules/Registration/Montage/README.mdfor the full rationale.Post-merge follow-ups
InsightSoftwareConsortium/ITKMontagethat (a) deletes the whitelisted files, (b) addsMIGRATION_README.mdpointing at ITK in-tree, (c) states intent to archive.examples/content worth keeping into top-levelExamples/.