Adaptive denoising filter in ITK?

I’m guessing this is a question for @matt.mccormick and potentially others (e.g., @blowekamp @hjmjohnson).

With the most recent FreeSurfer release, the developers added some ITK-based functionality originally developed for the ANTs toolkit, specifically N4 and an adaptive denoising filter. Although the former has been in ITK for quite some time, the latter is not currently in ITK. And while I’d like to think I write somewhat decent code, I clearly recognize the significant potential improvements and vetting that can be provided by the ITK community and would love for this latter filter to go through the same process. That being said, what is the current mechanism for introducing new functionality to the toolkit?

ETA: I should mention that I wrote an Insight Journal article for this contribution some time ago.


Hello Nick,

How does creating a remote module sound for the contribution?

1 Like

Thanks Brad. I’m fine with whatever is deemed the most appropriate. If a remote module works, then let’s do that. How would I go about setting that up? Is there an example or a tutorial?

To complete Brad’s answer, remotes can easily be created using this template:

Instructions are provided, and it essentially requires giving cookiecutter the necessary input data.

Adding testing, examples and Python wrapping would test the robustness of the module, increase the adoption of the module, and allow the classes to make it into ITK proper in a shorter time. There is a scoring system based on the robustness and coverage, among others, of the remotes.

The template will add the testing workflows based on GitHub Actions.

So if you are able to provide testing data (or confirm if the data in the IJ journal still applies), the community can help to put in place the rest of the pieces :rocket:.

Other than that, at the time the IJ was written, was the code submitted to the Review folder that existed at the time in ITK? I seem not to find it: maybe the Review folder was pulled out of the source tree?

Thanks Nick :top: !


Thanks @jhlegarreta . I don’t believe it was ever submitted to the Review folder but it was a long time ago so I don’t remember. However, this module template is extremely helpful. Thanks again.

1 Like

:+1: Let us know how it goes or if you find difficulties. Tag us in GitHub if necessary !

Happy to help you with this !

1 Like

Just FYI for anyone who is interested, the module is here . Thanks everybody and @dzenanz for guiding me through the process. I’m assuming my responsibilities for this initial commit is complete and now the next steps are with the community for uptake, correct?


Yes, wait for people to start using it. That will be easier once 5.2 is released, which will include AdaptiveDenoising.

Maybe more important is to have an example image before and after denoising, so people can see what it is supposed to do. Maybe even compare it to some other common choices like bilateral or median. Probably the best place for that would be the readme.

Perfect. Thanks.