Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
539 commits
Select commit Hold shift + click to select a range
b9fc33d
ENH: add Ti64Cylinder tests
dzenanz May 9, 2019
c02a922
COMP: Linux requires this-> prefix
dzenanz May 10, 2019
8121da9
COMP: Fix unused variable warning
jhlegarreta May 18, 2019
c0fe564
Merge pull request #104 from jhlegarreta/FixUnusedVariableWarning
jhlegarreta May 19, 2019
6fe8ec1
COMP: double-conversion is only a private dependency, not a public one
dzenanz May 24, 2019
ce6e8d2
ENH: tests now handle image spacing correctly
dzenanz May 25, 2019
424104d
BUG: fix spacing support
dzenanz May 25, 2019
fee9262
ENH: replace pixels by physical units in file pairs test parameters
dzenanz May 27, 2019
6bc0fc7
BUG: read CRLF line endings without crashing
dzenanz May 27, 2019
e82829e
Merge pull request #106 from dzenanz/fixSpacing
dzenanz May 27, 2019
f29f25f
DOC: expose transform writing in usage
dzenanz May 20, 2019
e92e874
BUG: with peak merging enabled a peak can have a brighter pixel nearby
dzenanz May 29, 2019
a96fe3c
Merge pull request #107 from dzenanz/minorUpdates
thewtex Jun 6, 2019
46ae600
ENH: do not require unnecessary maxima
dzenanz Jun 7, 2019
d8366e3
BUG: cosine interpolation avoids NaNs for additional candidates
dzenanz Jun 7, 2019
6b52edd
STYLE: rename directory of Ti7Al test case
dzenanz Jun 6, 2019
55f3318
ENH: adding Ti7/Region1_10_Mosaic36 and Ti7/Region1_10_Mosaic180 tests
dzenanz Jun 6, 2019
0b97a33
ENH: Adding Medium Carbon Steel 1701701_000000 test (UES corporation)
dzenanz May 29, 2019
8757a0c
ENH: adding 05MAR09_run2_64-Raw test data from CMU
dzenanz Jun 7, 2019
528b6e6
ENH: add the problematic region of S200 as a standalone test case
dzenanz Jun 7, 2019
81335a3
BUG: correctly offset translations by position of tile 0
dzenanz Jun 7, 2019
e298852
BUG: fix calculation of average tile displacement error
dzenanz Jun 7, 2019
68efe6d
ENH: account for accumulation of errors
dzenanz Jun 7, 2019
d36d13f
ENH: Ti64 tests are no longer failing
dzenanz Jun 10, 2019
30642b2
ENH: reorganizing test names and output locations
dzenanz Jun 11, 2019
0efb0c8
ENH: expose allowing accumulation of errors (drift) in tests
dzenanz Jun 11, 2019
1a39d1f
Merge pull request #110 from dzenanz/testImprovements
dzenanz Jun 13, 2019
dcffd0f
ENH: global optimization with outlier detection and removal
dzenanz May 8, 2019
f3d750d
ENH: increase test success threshold from 1.0 to 1.2 pixels
dzenanz Jun 13, 2019
984c278
ENH: use translation offsets instead of transforms internally
dzenanz Jun 14, 2019
a1bab3b
ENH: move more test to expected to pass category
dzenanz Jun 14, 2019
3bc7a4d
STYLE: review suggestions
dzenanz Jun 14, 2019
8f973a9
BUG: fix re-ordering of peak maxima during zero suppression
dzenanz Jun 17, 2019
444b0e0
ENH: expose position precision in TileMontage class
dzenanz Jun 17, 2019
328d662
ENH: rewrite position tolerance to be expressed in pixels
dzenanz Jun 17, 2019
2e97914
ENH: use tile position tolerance in tests. Closes #105.
dzenanz Jun 18, 2019
8e8ac03
ENH: reduce evaluations of exp function
dzenanz Jun 18, 2019
5555069
Merge pull request #113 from dzenanz/positionTolerance
thewtex Jun 19, 2019
3901442
ENH: write input images after FFT band-pass filtering
dzenanz Jun 21, 2019
0a8945b
ENH: crop images to overlapping portion for cross-correlation
dzenanz Jun 18, 2019
9912d65
ENH: expand the cropping region
dzenanz Jun 20, 2019
ddf8994
BUG: fix wrong test parameters
dzenanz Jun 19, 2019
258d8c3
ENH: allow drift for MNML5
dzenanz Jun 20, 2019
0b5143a
ENH: adding first registration pair of 10-129-C_2 as a separate test
dzenanz Jun 19, 2019
e1ceb33
BUG: I forgot to update sheet/line zero suppression formula
dzenanz Jun 19, 2019
7434da3
ENH: do zero suppression only if needed
dzenanz Jun 19, 2019
20db6c5
ENH: make zero suppression more consistent and less pronounced
dzenanz Jun 19, 2019
cfdb4de
ENH: prevent translations being rejected simply for being large
dzenanz Jun 19, 2019
b474557
ENH: more informative outlier reporting
dzenanz Jun 19, 2019
bfc0c16
ENH: adding problematic S200 pairs as separate tests
dzenanz Jun 20, 2019
488acaa
BUG: better message for wrong number of parameters
dzenanz Jun 20, 2019
b9a68b7
BUG: merge peak distance was not respected (1 was always used)
dzenanz Jun 20, 2019
90124cd
BUG: fix and slightly optimize zero suppression
dzenanz Jun 20, 2019
636ae36
ENH: allow more low frequencies to pass by default
dzenanz Jun 21, 2019
6712409
STYLE: simplifying type specification
dzenanz Jun 21, 2019
f5d099c
ENH: allowing specification of real type used in FFTs
dzenanz Jun 21, 2019
cfebfae
BUG: residuals were not properly divided by spacing
dzenanz Jun 21, 2019
ffe3ff5
ENH: use registration confidence in equations and cost
dzenanz Jun 21, 2019
7c0771b
ENH: more granular progress reporting (per pair, not per tile)
dzenanz Jun 22, 2019
672123c
ENH: output indication of failing tile and average error to TSV file
dzenanz Jun 22, 2019
d136e0f
STYLE: avoid specifying ITK namespace when already inside it
dzenanz Jun 24, 2019
6192910
ENH: only two tests still fail
dzenanz Jun 24, 2019
1f1d935
ENH: change parameters of large tests to reduce peak memory use
dzenanz Jun 24, 2019
e5be8f7
ENH: the stitched mosaic does not have to be written
dzenanz Jul 5, 2019
5aade8b
ENH: all tests write their result except S200
dzenanz Jul 5, 2019
75967fb
Merge pull request #116 from dzenanz/master
dzenanz Jul 5, 2019
0c3f8ce
COMP: ITK testing macros have ITK_ prefix since version 5.0+
dzenanz Jul 9, 2019
3c7bef3
Reduce majority of duplication in synthetic tests
dzenanz Jul 18, 2019
0e97c8c
ENH: parallel generation of synthetic sphere image
dzenanz Jul 17, 2019
e85c0a8
ENH: increase parallelism and cache tiles
dzenanz Jul 5, 2019
30b1b36
ENH: checking whether interpolation is needed
dzenanz Jul 21, 2019
0db8f60
Merge pull request #118 from dzenanz/master
thewtex Jul 23, 2019
404bdb5
COMP: fix unused variable warning
dzenanz Aug 1, 2019
dc6db79
BUG: Old .bmp named file was a TIFF
dzenanz Aug 7, 2019
22febe1
ENH: adding ground truth creator. Closes #108.
dzenanz Jul 29, 2019
b0e2ec9
ENH: WindowedSincInterpolateImageFunction for better resampling quality
dzenanz Aug 9, 2019
99a4ef2
Merge pull request #125 from dzenanz/master
hjmjohnson Aug 22, 2019
3d38e64
BUG: file opening was not checked for success. Closes #122.
dzenanz Aug 27, 2019
fc6915d
BUG: conversion from linear to nD index was wrong for 3D montages
dzenanz Aug 27, 2019
923c341
ENH: add 3D ground truth case
dzenanz Aug 27, 2019
e852aae
Merge pull request #126 from dzenanz/master
dzenanz Aug 28, 2019
4cd79ff
COMP: Change to enum to new enum class definitions
mseng10 Aug 19, 2019
3e00202
Merge pull request #129 from mseng10/enh-move-enum-class-modules
dzenanz Aug 29, 2019
0af82ac
STYLE: applying new ITK style
dzenanz Sep 2, 2019
b3b5599
STYLE: fixing KWStyle error
dzenanz Sep 2, 2019
7d9a5bf
STYLE: manual fix of KWSTyle alignment error
dzenanz Sep 2, 2019
b5f29a6
STYLE: rename itkParseTileConfiguration into itkTileConfiguration
dzenanz Sep 2, 2019
174480f
STYLE: converting README.rst into README.md. Closes #128.
dzenanz Sep 2, 2019
3670d09
Merge pull request #130 from dzenanz/master
thewtex Sep 3, 2019
2433d61
ENH: support multi-dimensional tile configuration. Closes #127.
dzenanz Sep 2, 2019
a54c521
Merge pull request #132 from dzenanz/master
thewtex Sep 30, 2019
526cd68
ENH: Update InMemoryMontageTest to use nD structure
dzenanz Oct 4, 2019
c883a04
Merge pull request #133 from dzenanz/updateInMemoryTest
thewtex Oct 8, 2019
7b46e79
ENH: add 2D sample data to examples (from ground truth creator)
dzenanz Oct 3, 2019
e5cd0e9
ENH: updating examples to work with nD montages
dzenanz Oct 2, 2019
fa92542
ENH: Removing Parse/Write TileConfiguration2D
dzenanz Oct 7, 2019
916c7a2
ENH: resolving TODOs
dzenanz Oct 9, 2019
65b03e7
Merge pull request #134 from dzenanz/master
thewtex Oct 11, 2019
e9791e5
ENH: add calculation of systematic translation bias to pair-wise test
dzenanz Oct 14, 2019
9c4a5e0
Merge pull request #135 from dzenanz/master
thewtex Oct 14, 2019
99439f7
COMP: fixing example compile warnings on GCC 5.4.0
dzenanz Oct 25, 2019
a56dc75
BUG: fix buffer overflow on float to string conversion
dzenanz Oct 26, 2019
519927e
BUG: 1701701_000000_Fused is in TIF format
dzenanz Oct 27, 2019
039c30e
ENH: better exception reporting in test
dzenanz Oct 27, 2019
2a0dfc6
ENH: better error reporting in GroundTruthCreator
dzenanz Oct 27, 2019
62a6566
Merge pull request #136 from dzenanz/master
thewtex Oct 29, 2019
d168518
COMP: fixing warnings
dzenanz Nov 8, 2019
80a9428
Merge pull request #138 from dzenanz/master
dzenanz Nov 8, 2019
14ff3a9
COMP: follow rename of ImageIOFactory FileModeType into FileModeEnum
dzenanz Dec 14, 2019
bdaf2a2
Merge pull request #142 from dzenanz/master
thewtex Dec 16, 2019
2752e2a
ENH: add single-layer 3D test which currently crashes
Dec 14, 2019
24d5909
ENH: add a fake input data file to make the configurations valid
dzenanz Dec 16, 2019
d6f9eab
BUG: fix AxisSize when final dimension is 1
Dec 15, 2019
f7fe022
Merge pull request #144 from dzenanz/master
dzenanz Dec 17, 2019
6d9b35d
BUG: ITK_USE_FFTW definitions were not propagated in external builds
dzenanz Dec 17, 2019
9259104
BUG: position of tile 0 was not subtracted for origin adjustment
dzenanz Dec 17, 2019
848d02a
ENH: do not force full parallelism
dzenanz Dec 18, 2019
9028d0b
Merge pull request #145 from dzenanz/master
thewtex Dec 19, 2019
7e2ea20
STYLE: Apply clang-format for ITK Coding Style
thewtex Jan 11, 2020
0b7ce2b
STYLE: Apply clang-format for ITK Coding Style
thewtex Jan 11, 2020
4dbef57
ENH: Wrap PhaseCorrelationImageRegistrationMethod for all scalar pixe…
thewtex Jan 12, 2020
19ec3c7
ENH: Wrap MaxPhaseCorrelationOptimizer
thewtex Jan 12, 2020
6147b15
ENH: Add wrapping for NMinimaMaximaImageCalculator
thewtex Jan 12, 2020
290becf
ENH: Wrap Tile, TileConfiguration
thewtex Jan 12, 2020
96b99d1
ENH: Add TileMontage wrapping
thewtex Jan 13, 2020
1efc89b
ENH: Add TileMergeImageFilter wrapping
thewtex Jan 13, 2020
05d7766
COMP: Patch igenerator.py for enum wrapping
thewtex Jan 13, 2020
5e463ae
COMP: NMinimaMaximaImageCalculator initialization
thewtex Jan 13, 2020
abc9f87
Merge 704dc56219cd912a22e4ebf3c44da83798589c9b into eba24acb3981bc02d…
thewtex Jan 13, 2020
8fc7bd0
COMP: Make TileMergeImageFilter::ContinuousIndexType more explicit
thewtex Jan 13, 2020
0d23da4
Merge pull request #153 from InsightSoftwareConsortium/wrap-all-classes
thewtex Jan 13, 2020
7f541d0
BUG: correctly handle tiles with non-zero starting indices
dzenanz Feb 12, 2020
c2c4542
Merge pull request #156 from dzenanz/master
thewtex Feb 13, 2020
8b865e8
STYLE: Remove CMake-language block-end command arguments
hjmjohnson Feb 16, 2020
624419e
STYLE: Convert CMake-language commands to lower case
hjmjohnson Feb 16, 2020
1f5ca43
STYLE: Remove redundant void argument lists
hjmjohnson Feb 17, 2020
ebff585
COMP: Use nullptr instead of 0 or NULL
hjmjohnson Feb 17, 2020
4d49d61
STYLE: Use override statements for C++11
hjmjohnson Feb 17, 2020
eda3bdd
STYLE: Prefer = default to explicitly trivial implementations
hjmjohnson Feb 17, 2020
9dd9fba
PERF: emplace_back method results in potentially more efficient code
hjmjohnson Feb 17, 2020
7b5de7c
STYLE: Use range-based loops from C++11
hjmjohnson Feb 18, 2020
f58bd1f
STYLE: Use auto for variable type matches the type of the initializer…
hjmjohnson Feb 18, 2020
4740936
DOC: Update copyright assignment to NumFOCUS
hjmjohnson Feb 19, 2020
dc22f32
ENH: Update enums from changes in ITK
mseng10 Feb 19, 2020
fc341ed
COMP: fix type conversion error
dzenanz Feb 26, 2020
7b54d77
Fix compiler error due to use of non Enum macro.
imikejackson Feb 26, 2020
91284f9
Merge pull request #158 from InsightSoftwareConsortium/ITKv5_1rc2
dzenanz Feb 26, 2020
b443673
ENH: rename EnableFailingTests option for better grouping
dzenanz Jun 2, 2020
6ae8d0b
ENH: adding public release numbers for MNML datasets
dzenanz Jun 3, 2020
94b8ff4
DOC: number of steps clarified
dzenanz Jun 9, 2020
48f4569
Merge pull request #161 from dzenanz/master
dzenanz Jun 10, 2020
842bee6
BUG: Remove patched igenerator.py
thewtex Jun 17, 2020
f9b0898
Merge pull request #167 from thewtex/igenerator-patch
thewtex Jun 17, 2020
ee2d70d
ENH: Factor output SamplePeakCorrelationOptimizer
thewtex Dec 26, 2019
af2a11f
PERF: Avoid AdjustedImage memory reallocation
thewtex Dec 28, 2019
a945f7e
ENH: Use correlation image for peak interpolation
thewtex Dec 29, 2019
81f7aa5
STYLE: Remove trailing whitespace in test/CMakeLists.txt
thewtex Dec 30, 2019
67487d6
ENH: PhaseFrequencyCorrelationOptimizer initial addition
thewtex Dec 30, 2019
ef58e84
STYLE: Using static constexpr for ImageDimension
thewtex Dec 30, 2019
b240410
STYLE: PeakInterpolationMethod -> PeakInterpolationMethodEnum
thewtex Dec 30, 2019
e2f98f7
ENH: Move PeakInterpolationMethodEnum to PhaseCorrelationOptimizer
thewtex Dec 31, 2019
c9367ac
STYLE: PaddingMethod -> PaddingMethodEnum
thewtex Jan 1, 2020
2f412fb
ENH: Add PhaseCorrelationOptimizer::SupportsPeakInterpolationMethod
thewtex Jan 1, 2020
00d7b88
STYLE: Run clang-format
thewtex Jan 30, 2020
98358c6
COMP: GetSamplePeakOptimizer -> GetModifiableSamplePeakOptimizer
thewtex Jan 30, 2020
db64631
ENH: Iterate all supported interpolation methods in PairwiseTestHelper
thewtex Jan 11, 2020
8f8f42e
DOC: Update copyright assignment to NumFOCUS
thewtex Mar 11, 2020
0e798d8
BUG: itkMontageTestHelper peak interpolation method selection
thewtex Mar 11, 2020
a5352eb
ENH: Add PeakInterpolationMethod::PhaseFrequencySlope
thewtex Mar 12, 2020
aa1411d
ENH: PhaseCorrelationOptimizer class consolidation
thewtex Jun 18, 2020
ffe3e23
STYLE: Run clang-format
thewtex Jun 18, 2020
338d103
COMP: constexpr std::initializer_list on macOS
thewtex Jun 23, 2020
9c95ab9
BUG: Update wrapping of itkPhaseCorrelationOptimizer
thewtex Jun 25, 2020
8c8e287
Merge pull request #146 from thewtex/complex-phase-fit
thewtex Jun 25, 2020
6fe26b5
STYLE: remove debugging output
dzenanz Jul 13, 2020
3928183
COMP: change ordinary setter into enum setter
dzenanz Jul 13, 2020
3fcebc1
ENH: add ostream operator for printing padding method enumeration
dzenanz Jul 14, 2020
59b839d
Merge pull request #171 from dzenanz/master
thewtex Jul 16, 2020
5fda163
ENH: Improve test output formatting
thewtex Jul 20, 2020
5011fbf
Merge pull request #172 from thewtex/test-ouput
thewtex Jul 20, 2020
d011860
ENH: updating reference montages using Fiji 1.52p
dzenanz Jul 21, 2020
5d11a35
ENH: adding more ground truth test cases
dzenanz Jul 21, 2020
b550a1f
BUG: iteration over peak methods was not working properly
dzenanz Jul 21, 2020
0864550
STYLE: improve console output for padding method
dzenanz Jul 21, 2020
5ab2aae
ENH: less strict ground truth testing
dzenanz Jul 22, 2020
a60707e
ENH: use a different split into tiles to avoid a single pair's failure
dzenanz Jul 22, 2020
a2e80b5
ENH: write ground truth to a different file
dzenanz Jul 23, 2020
3c0ee01
ENH: run ground truth tests with just the default set of parameters
dzenanz Jul 23, 2020
cacfc7f
WIP: trying to force enum values to be sequential in Release mode
dzenanz Jul 23, 2020
69b28f3
BUG: requesting to try all peak methods works around the issue
dzenanz Jul 23, 2020
fcf6b0e
Merge pull request #174 from dzenanz/master
dzenanz Jul 24, 2020
9f9bde5
ENH: reduce number of tiles in 3D ground truth test
dzenanz Jul 24, 2020
40c41ba
Merge pull request #175 from dzenanz/master
thewtex Jul 27, 2020
91c5da7
ENH: add a concept check to make sure we are not instantiated with bool
dzenanz Aug 3, 2020
e0f38bc
Merge pull request #177 from dzenanz/master
dzenanz Aug 4, 2020
d95b06f
COMP: Fix variable shadowing and unused variable warnings
jhlegarreta Jul 30, 2020
ef55c69
Merge pull request #176 from jhlegarreta/FixWarnings
jhlegarreta Aug 4, 2020
bd103d1
STYLE: Fix clang format
mseng10 Nov 18, 2020
93a3dc3
Merge pull request #179 from mseng10/update-github-actions
dzenanz Nov 20, 2020
1756257
STYLE: Rename ITK_DISALLOW_COPY_AND_ASSIGN to ITK_DISALLOW_COPY_AND_MOVE
mseng10 Oct 16, 2020
26a7900
Merge pull request #178 from mseng10/rename-disallow-copy-and-assign
hjmjohnson Dec 17, 2020
0d50468
STYLE: Force semi-colon at end of macros
hjmjohnson Dec 28, 2020
dc74894
STYLE: minor corrections
dzenanz Feb 25, 2021
8877cfd
STYLE: allow wider range of types for instantiating merge filter
dzenanz Mar 15, 2021
1c4742b
ENH: add getters and setters to Tile and TileConfiguration for Python…
dzenanz Feb 26, 2021
2131a33
ENH: avoid deadlock when invoked via Python
dzenanz Mar 11, 2021
89b097b
ENH: support RGB and RGBA pixel types for TileMergeImageFilter
dzenanz Mar 15, 2021
5c13c27
Merge pull request #184 from dzenanz/master
dzenanz Mar 18, 2021
2c082ca
COMP: Fix initializer list lifetime warning
jhlegarreta Oct 4, 2021
7ef8543
COMP: avoiding deprecated itkGetStaticConstMacro
dzenanz Oct 5, 2021
42bbac5
Default to C++14
tbirdso Dec 13, 2021
93eedc6
COMP: Remove inclusion of .hxx files as headers
hjmjohnson Dec 17, 2021
981fe53
STYLE: Prefer itk::Math::abs for consistency.
hjmjohnson Dec 17, 2021
c946644
STYLE: Prefer itk::Math::abs for consistency.
hjmjohnson Dec 17, 2021
5e94388
STYLE: Match clang-format style
hjmjohnson Dec 17, 2021
12181bb
ENH: Use higher precision pixel accumulation type in Python wrapping
dzenanz Jan 12, 2022
c2d377b
COMP: Update type correctness of point and vector math
dzenanz Mar 7, 2022
7fafe4c
ENH: Bump ITK and replace http with https using script
tbirdso May 31, 2022
424ce44
BUG: Do not wrap duplicate complex double dependencies
thewtex Dec 20, 2022
c129dca
Merge pull request #211 from thewtex/wrapping-complex-double
thewtex Dec 21, 2022
c6e7782
COMP: Fix discarding return value warning introduced by ITK 5.4
dzenanz Apr 11, 2023
0102566
BUG: erase confidence together with the translation candidate
dzenanz Apr 25, 2023
314a2d0
COMP: Update minimum CMake version from 3.10.2 to 3.16.3
dzenanz Apr 25, 2023
b73d8a2
BUG: Avoid appearance of NaN values
dzenanz Apr 25, 2023
db34a71
STYLE: Use trailing return type instead of typename + dependent type
dzenanz Apr 27, 2023
86b6d02
COMP: Fix HyperSphereImageSource class name in type macro (was Image)
dzenanz Jan 4, 2024
74f6472
Merge pull request #224 from dzenanz/master
jhlegarreta Jan 8, 2024
cfe3634
ENH: Compute and expose per-tile registration reliability
dzenanz Apr 19, 2024
d4c8aed
Merge pull request #225 from dzenanz/master
dzenanz Apr 22, 2024
f907f48
ENH: Enable unit tests which are no longer failing
dzenanz Apr 25, 2024
523eaba
ENH: Add per-test regression intensity tolerance
dzenanz Apr 25, 2024
ad67734
DOC: Improve class description and documentation of parameters
dzenanz Apr 25, 2024
6e07e10
Merge pull request #226 from dzenanz/testsAndDocs
thewtex Apr 26, 2024
56b6b32
ENH: Support nearest neighbor interpolator for montaging label maps
dzenanz May 7, 2024
c9a5b3c
COMP: Get ITK_USE_FLOAT_SPACE_PRECISION=ON to compile again
dzenanz Aug 16, 2024
3a23240
STYLE: Add itkVirtualGetNameOfClassMacro + itkOverrideGetNameOfClassM…
hjmjohnson Jan 26, 2025
34fa7ed
STYLE: CoordRepType -> CoordinateType code readability
hjmjohnson Jan 26, 2025
a929737
STYLE: Update to match clang-format-19 from ITK
hjmjohnson Jan 27, 2025
9b62c6e
Merge pull request #235 from InsightSoftwareConsortium/use-Coordinate…
dzenanz Mar 18, 2025
e47c5c0
COMP: Add extra double parameter to InterpolateImageFunction wrapping…
darrent1974 Aug 20, 2025
90c92c0
Merge pull request #236 from darrent1974/main
dzenanz Aug 28, 2025
8b45047
COMP: Fix compiler warning about lifetime extension
hjmjohnson Nov 11, 2025
794db52
ENH: Convert from md5 to .cid tags.
hjmjohnson Apr 22, 2026
52c8af5
ENH: Ingest ITKMontage into Modules/Registration
hjmjohnson Apr 24, 2026
e2e444f
COMP: Fix upstream itk-module.cmake README.md read in ingested Montage
hjmjohnson Apr 22, 2026
46e93a1
DOC: Add README.md pointing at archived upstream for Montage
hjmjohnson Apr 22, 2026
c701c97
COMP: Remove Montage.remote.cmake; now in-tree
hjmjohnson Apr 22, 2026
33f13a5
ENH: Enable Montage in CI via configure-ci
hjmjohnson Apr 22, 2026
991d671
STYLE: Apply ITK gersemi formatting to ingested Montage
hjmjohnson Apr 22, 2026
f9fd225
COMP: Drop unused upstream _meta.xml archives + fix _readme.txt EOLs
hjmjohnson Apr 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
45 changes: 45 additions & 0 deletions Modules/Registration/Montage/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
cmake_minimum_required(VERSION 3.16.3)

if(CMAKE_CXX_STANDARD EQUAL "98")
message(
FATAL_ERROR
"CMAKE_CXX_STANDARD:STRING=98 is not supported in ITK version 5 and greater."
)
endif()

if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17) # Supported values are ``17``, ``20``, and ``23``.
endif()
if(NOT CMAKE_CXX_STANDARD_REQUIRED)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()
if(NOT CMAKE_CXX_EXTENSIONS)
set(CMAKE_CXX_EXTENSIONS OFF)
endif()

project(Montage)

set(Montage_LIBRARIES Montage)

# Suppress warnings about potentially uninstantiated static members
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag(
"-Wno-undefined-var-template"
COMPILER_HAS_NO_UNDEFINED_VAR_TEMPLATE
)
if(COMPILER_HAS_NO_UNDEFINED_VAR_TEMPLATE)
set(CMAKE_CXX_FLAGS "-Wno-undefined-var-template ${CMAKE_CXX_FLAGS}")
endif()
endif()

if(NOT ITK_SOURCE_DIR)
find_package(ITK REQUIRED)
list(APPEND CMAKE_MODULE_PATH ${ITK_CMAKE_DIR})
include(ITKModuleExternal)
else()
set(ITK_DIR ${CMAKE_BINARY_DIR})
itk_module_impl()
endif()

itk_module_examples()
60 changes: 60 additions & 0 deletions Modules/Registration/Montage/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Montage

Mosaic-stitching and 3D reconstruction of large datasets from a
collection of partially-overlapping 2D slices, built around phase
correlation image registration. Core classes:

- `itk::PhaseCorrelationImageRegistrationMethod`
- `itk::PhaseCorrelationOperator`
- `itk::PhaseCorrelationOptimizer`
- `itk::TileMontage`
- `itk::TileMergeImageFilter`
- `itk::TileConfiguration`
- `itk::NMinimaMaximaImageCalculator`

## Upstream

This module was originally developed and maintained as a standalone
remote module at
<https://github.com/InsightSoftwareConsortium/ITKMontage>. The
contents of `include/`, `src/`, `test/`, `wrapping/`, and the two
CMake build descriptors (`CMakeLists.txt`, `itk-module.cmake`) were
ingested into ITK via `Utilities/Maintenance/RemoteModuleIngest/`
(see PR #6098 for the tooling).

The standalone upstream repository should be treated as archived
once this ingest lands. Refer to its tags and release history for
provenance, but future development happens in-tree here.

## What is intentionally NOT ingested

The whitelist-based ingest deliberately excludes the following
upstream content from ITK:

- `examples/` — applied demonstration code and sample datasets;
lives with the archived upstream (and selectively relocated to
[`Examples/`](https://github.com/InsightSoftwareConsortium/ITK/tree/main/Examples)
in a follow-up PR if broadly useful).
- `.github/workflows/` — upstream-specific CI configuration; ITK's
in-tree CI covers the module via the central pipeline.
- `CTestConfig.cmake` — pointed at a standalone CDash project that
no longer applies in-tree.
- `README.md`, `LICENSE`, `requirements.txt`, `pyproject.toml` and
similar scaffolding — top-level packaging files that are either
inherited from ITK's own policy (Apache 2.0 license, etc.) or
irrelevant in-tree.

If you need any of the above, consult the archived upstream.

## Compliance level

Previously tracked as a level-3 remote module (see the superseded
`Modules/Remote/Montage.remote.cmake`). In-tree placement does not
automatically raise the compliance level; continued stewardship is
needed to reach levels 4 and 5.

## Contact

Originally authored and maintained by Dženan Zukić
&lt;dzenan.zukic@kitware.com&gt;. In-tree maintenance follows ITK's
standard review process.
158 changes: 158 additions & 0 deletions Modules/Registration/Montage/include/itkNMinimaMaximaImageCalculator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
/*=========================================================================
*
* Copyright NumFOCUS
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*=========================================================================*/
#ifndef itkNMinimaMaximaImageCalculator_h
#define itkNMinimaMaximaImageCalculator_h

#include "itkMacro.h"
#include "itkObject.h"
#include "itkObjectFactory.h"
#include <mutex>
#include <vector>

namespace itk
{
/** \class NMinimaMaximaImageCalculator
* \brief Computes the N highest and/or lowest intensity values of an image.
*
* This class is templated over input image type. If only Maxima or
* Minima are needed, just call ComputeMaxima() or ComputeMinima().
* Compute() will compute both.
*
* \ingroup Operators
* \ingroup ITKCommon
* \ingroup Montage
*/
template <typename TInputImage>
class ITK_TEMPLATE_EXPORT NMinimaMaximaImageCalculator : public Object
{
public:
ITK_DISALLOW_COPY_AND_MOVE(NMinimaMaximaImageCalculator);

/** Standard class type aliases. */
using Self = NMinimaMaximaImageCalculator;
using Superclass = Object;
using Pointer = SmartPointer<Self>;
using ConstPointer = SmartPointer<const Self>;

/** Method for creation through the object factory. */
itkNewMacro(Self);

/** Run-time type information (and related methods). */
itkOverrideGetNameOfClassMacro(NMinimaMaximaImageCalculator);

/** Type definition for the input image. */
using ImageType = TInputImage;

/** Pointer type for the image. */
using ImagePointer = typename TInputImage::Pointer;

/** Const Pointer type for the image. */
using ImageConstPointer = typename TInputImage::ConstPointer;

/** Type definition for the input image pixel type. */
using PixelType = typename TInputImage::PixelType;

/** Image dimensionality */
static constexpr unsigned int ImageDimension = TInputImage::ImageDimension;
// constexpr unsigned ImageDimension = TInputImage::VImageDimension;

/** Type definition for the input image index type. */
using IndexType = typename TInputImage::IndexType;

/** Type definition for the input image region type. */
using RegionType = typename TInputImage::RegionType;

/** Sorted vector of minima or maxima. */
using ValueVector = std::vector<PixelType>;

/** Sorted vector of pixel indices of minima or maxima. */
using IndexVector = std::vector<IndexType>;


/** Set the input image. */
itkSetConstObjectMacro(Image, ImageType);

/** Compute the minimum value of intensity of the input image. */
void
ComputeMinima();

/** Compute the maximum value of intensity of the input image. */
void
ComputeMaxima();

/** Compute the minimum and maximum values of intensity of the input image. */
void
Compute();

/** Return the N minimum intensity values. */
itkGetConstReferenceMacro(Minima, ValueVector);

/** Return the N maximum intensity values. */
itkGetConstReferenceMacro(Maxima, ValueVector);

/** Return the indices of the N minimum intensity values. */
itkGetConstReferenceMacro(IndicesOfMinima, IndexVector);

/** Return the indices of the N maximum intensity values. */
itkGetConstReferenceMacro(IndicesOfMaxima, IndexVector);

/** Set the region over which the values will be computed */
void
SetRegion(const RegionType & region);

/** Get/Set the number of extreme intensity values to keep. */
itkGetConstMacro(N, SizeValueType);
itkSetMacro(N, SizeValueType);

protected:
NMinimaMaximaImageCalculator();
~NMinimaMaximaImageCalculator() override = default;
void
PrintSelf(std::ostream & os, Indent indent) const override;

template <typename TComparator = std::less<PixelType>>
void
SortedInsert(ValueVector & vals,
IndexVector & indices,
const PixelType & val,
const IndexType & ind,
TComparator comp = TComparator());
void
InternalCompute();

private:
ImageConstPointer m_Image;
ValueVector m_Minima;
ValueVector m_Maxima;
IndexVector m_IndicesOfMinima;
IndexVector m_IndicesOfMaxima;
SizeValueType m_N{ 7 };

RegionType m_Region;
bool m_RegionSetByUser{ false };
bool m_ComputeMaxima{ true };
bool m_ComputeMinima{ true };
std::mutex m_Mutex;
};
} // end namespace itk

#ifndef ITK_MANUAL_INSTANTIATION
# include "itkNMinimaMaximaImageCalculator.hxx"
#endif

#endif /* itkNMinimaMaximaImageCalculator_h */
Loading
Loading