Skip to content

ENH: Ingest ITKSmoothingRecursiveYvvGaussianFilter into Modules/Filtering#6243

Open
hjmjohnson wants to merge 89 commits into
InsightSoftwareConsortium:mainfrom
hjmjohnson:ingest-SmoothingRecursiveYvvGaussianFilter
Open

ENH: Ingest ITKSmoothingRecursiveYvvGaussianFilter into Modules/Filtering#6243
hjmjohnson wants to merge 89 commits into
InsightSoftwareConsortium:mainfrom
hjmjohnson:ingest-SmoothingRecursiveYvvGaussianFilter

Conversation

@hjmjohnson
Copy link
Copy Markdown
Member

Ingest the standalone remote module
InsightSoftwareConsortium/ITKSmoothingRecursiveYvvGaussianFilter
into Modules/Filtering/SmoothingRecursiveYvvGaussianFilter/. Vliet/Young/Verbeek
recursive Gaussian smoothing — drop-in alternative to the canonical
itk::SmoothingRecursiveGaussianImageFilter. In-tree under
EXCLUDE_FROM_DEFAULT. GPU classes are gated on ITK_USE_GPU.

Built directly on upstream/main via the v4 ingestion pipeline (#6204).

Commits
# Subject
1 ENH: Ingest ITKSmoothingRecursiveYvvGaussianFilter into Modules/Filtering (Mode-A merge)
2 DOC: Add SmoothingRecursiveYvvGaussianFilter README and in-tree CMakeLists.txt
3 COMP: Remove SmoothingRecursiveYvvGaussianFilter .remote.cmake (in-tree)
4 ENH: Enable Module_SmoothingRecursiveYvvGaussianFilter in configure-ci
5 STYLE: gersemi-format SmoothingRecursiveYvvGaussianFilter src/CMakeLists.txt

Merge topology preserved: 24 merge commits, 87 commits unique to this PR.

OpenCL handling

The upstream top-level CMakeLists.txt carried bespoke
find_package(OpenCL) + try_run detection that conflicts with ITK's
in-tree GPU support (ITKGPUCommon). It is intentionally not migrated;
a clean three-line project() + itk_module_impl() form takes its
place. GPU sources continue to build under ITK_USE_GPU via
src/CMakeLists.txt.

Phase B follow-up

After merge, archive the upstream repo via the v4 archive script:

Utilities/Maintenance/RemoteModuleIngest/archive-remote-module.sh \
    SmoothingRecursiveYvvGaussianFilter

Irina Vidal and others added 30 commits July 9, 2013 15:48
Signed-off-by: Irina Vidal <irina.vidal-migallon@inria.fr>
Signed-off-by: Irina Vidal <irina.vidal-migallon@inria.fr>
Signed-off-by: Irina Vidal <irina.vidal-migallon@inria.fr>
Signed-off-by: Irina Vidal <irina.vidal-migallon@inria.fr>
Signed-off-by: Irina Vidal Migallon <irina_ext@maunakeatech.com>
Signed-off-by: Irina Vidal Migallon <irina_ext@maunakeatech.com>
Signed-off-by: Irina Vidal Migallon <irina_ext@maunakeatech.com>
Error lim for floats.

Signed-off-by: Irina Vidal Migallon <irina_ext@maunakeatech.com>
Signed-off-by: Irina Vidal Migallon <irina_ext@maunakeatech.com>
Signed-off-by: Irina Vidal Migallon <irina_ext@maunakeatech.com>
Smaller test images.

Signed-off-by: Irina Vidal <irina.vidal-migallon@inria.fr>
Signed-off-by: Irina Vidal <irina.vidal-migallon@inria.fr>
Following the new naming rules for ITK remote modules,
the remote module name should not contain the "ITK" prefix.
STYLE: Remove "ITK" from the module name.
EXCLUDE_FROM_ALL is replaced by EXCLUDE_FROM_DEFAULT
in ITK commit:e599fcaa09556992cb9a1c37ff5cf655b90ae4fc
FIX: ITK warnings of deprecated EXCLUDE_FROM_ALL.
Signed-off-by: Irina Vidal <irina.vidal-migallon@inria.fr>
Also clean up itkYvvWhiteImageTest.cxx to have proper whitespace.
Signed-off-by: Irina Vidal Migallon <irina_ext@maunakeatech.com>
Signed-off-by: Irina Vidal Migallon <irina_ext@maunakeatech.com>
This is required when building against an install tree with GPU support to
avoid linking errors.
BUG: Add itk_module_target call for library.
Additional Files for Python Wrapping
@hjmjohnson hjmjohnson marked this pull request as ready for review May 9, 2026 14:51
@dzenanz
Copy link
Copy Markdown
Member

dzenanz commented May 12, 2026

Ghostflow complains of large file (4M) and bad whitespace. These should be addressed before merging.

@hjmjohnson hjmjohnson force-pushed the ingest-SmoothingRecursiveYvvGaussianFilter branch from a1f3462 to c5456be Compare May 12, 2026 19:16
@hjmjohnson
Copy link
Copy Markdown
Member Author

@dzenanz Addressed via git filter-repo history rewrite (new HEAD c5456be4bc):

  1. Bad whitespace (src/CMakeLists.txt:7, "space before tab in indent" in upstream commit a2e92f5740) — rewrote the offending blob across history via git filter-repo --replace-text; ghostflow's per-commit content check is now satisfied.
  2. Large file (test/Input/256x256x64.tif, 4.1 MiB) — dropped from every commit in history via git filter-repo --invert-paths --path …. test/CMakeLists.txt still references it via DATA{Input/256x256x64.tif}; ExternalData will need a CID sidecar uploaded to ITKTestingData before the GPU/CPU similarity test can run. Tracking as a Phase B / pre-merge data-upload follow-up.

The third ghostflow note (a2e92f5740 not allowed; it is a root commit) is intrinsic to Mode-A --allow-unrelated-histories merges; the merged ingests that landed via the v4 pipeline (#6209, #6212, #6214, #6215, #6229, #6235, #6238, #6240, #6242) all carried the same ghostflow status and are non-blocking.

@github-actions github-actions Bot removed type:Infrastructure Infrastructure/ecosystem related changes, such as CMake or buildbots area:Python wrapping Python bindings for a class type:Testing Ensure that the purpose of a class is met/the results on a wide set of test cases are correct area:Filtering Issues affecting the Filtering module area:Remotes Issues affecting the Remote module labels May 12, 2026
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 12, 2026

Too many files changed for review. (3000 files found, 500 file limit)

@hjmjohnson hjmjohnson force-pushed the ingest-SmoothingRecursiveYvvGaussianFilter branch from 0723ecb to 1025c0b Compare May 12, 2026 19:46
@github-actions github-actions Bot added type:Infrastructure Infrastructure/ecosystem related changes, such as CMake or buildbots area:Python wrapping Python bindings for a class type:Testing Ensure that the purpose of a class is met/the results on a wide set of test cases are correct area:Filtering Issues affecting the Filtering module area:Remotes Issues affecting the Remote module labels May 12, 2026
Copy link
Copy Markdown
Member

@dzenanz dzenanz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new commit looks good. Ghostflow is taking its sweet time.

@dzenanz
Copy link
Copy Markdown
Member

dzenanz commented May 12, 2026

Ghostflow only has root-commit warning. Good to merge (if everything else comes back green).

…ring

Mode-A merge of upstream ITKSmoothingRecursiveYvvGaussianFilter into
ITK proper at Modules/Filtering/SmoothingRecursiveYvvGaussianFilter/,
ingested via the v4 pipeline (whitelist filter-repo + per-blob
sanitize + no-ff merge).

The filter implements Vliet/Young/Verbeek's recursive Gaussian
smoothing approximation as a drop-in alternative to the canonical
itk::SmoothingRecursiveGaussianImageFilter.  GPU classes are gated
on ITK_USE_GPU.

Upstream:
  https://github.com/InsightSoftwareConsortium/ITKSmoothingRecursiveYvvGaussianFilter

The upstream repository will be archived read-only after this PR
merges; it remains reachable at the URL above for historical
reference.  The upstream top-level CMakeLists.txt's bespoke OpenCL
detection is intentionally not migrated; a clean three-line
in-tree CMakeLists.txt is added in a follow-up commit.
…Lists.txt

The upstream top-level CMakeLists.txt carried bespoke find_package(OpenCL)
+ try_run detection that is unsuitable for an in-tree ITK module; replace
with the canonical three-line project() + itk_module_impl() form.  GPU
sources continue to build under ITK_USE_GPU via src/CMakeLists.txt.
SetSigmaArray() reads spacing from GetOutput()->GetSpacing() at
user-config time, where the output DataObject still carries the
default unit spacing (1.0 in every dimension). The CPU sibling
RecursiveLineYvvGaussianImageFilter recomputes the b-coefficients
and M-matrix in BeforeThreadedGenerateData() using the actual
input spacing.

Add the equivalent recomputation at the entry of GPUGenerateData()
so non-unit-spacing images (e.g. CT with 0.5 mm voxels) produce
correct Gaussian kernels on the GPU path.
Upstream benchmark referenced a 4 MB Input/256x256x64.tif blob that was
removed during ingest; no published ITKTestingData CID exists. 3D filter
coverage is retained by itkYvvWhiteImageTest3D and
itkGPURecursiveYvvGaussianImageFilterTest.
@hjmjohnson hjmjohnson force-pushed the ingest-SmoothingRecursiveYvvGaussianFilter branch from 1025c0b to c2940bf Compare May 13, 2026 00:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:Filtering Issues affecting the Filtering module area:Python wrapping Python bindings for a class area:Remotes Issues affecting the Remote module type:Enhancement Improvement of existing methods or implementation type:Infrastructure Infrastructure/ecosystem related changes, such as CMake or buildbots type:Testing Ensure that the purpose of a class is met/the results on a wide set of test cases are correct

Projects

None yet

Development

Successfully merging this pull request may close these issues.