Fast 3D Non Local Means Filtering using Convolutions CPU/GPU

Domain Decomposed CPU/GPU implementation of Non Local Means Filtering in 3D using Convolution

https://github.com/yingDaWang-UNSW/nonLocalMeansMatLab3DConvolutions

You are now following this Submission

A fast 3D non local means filter cast using the convn function for improved scalability.
Also features a bounding box serialiser to fit volumes into memory.
Usage:
[nlmf] = serialGPUNLMF(domain,locSize,DoS,k,npasses,gpuFlag)
nlmf: the output domain
domain: the input 3D array
locSize: the subdomain size in X,Y,Z. e.g. locsize=256 will partition the domain into subvolumes of 256^
DoS: the degree of smoothing (commonly 0.05 to 0.2)
k: the filter window size as an odd number (3 is minimum, performance penality high for large numbers, recommend 5-7)
npasses: the number of times the filter is applied
gpuFlag: boolean, use gpu or not. (convn is commonly known to be slower on a GPU for cases where locSize is small. At this point, while GPU arrays work with this code, it is seemingly not very fast).
[nlmf] = serialGPUNLMF(domain,256,0.1,5,2,0)

Cite As

Ying Da Wang (2026). Fast 3D Non Local Means Filtering using Convolutions CPU/GPU (https://github.com/yingDaWang-UNSW/nonLocalMeansMatLab3DConvolutions), GitHub. Retrieved .

General Information

MATLAB Release Compatibility

  • Compatible with any release

Platform Compatibility

  • Windows
  • macOS
  • Linux

Versions that use the GitHub default branch cannot be downloaded

Version Published Release Notes Action
1.0.2

- fixed boundary edge effects when kernel is larger than 3
- removed local maximum normalisation - users are expected to pre-normalise global image to [0,1]

1.0.1

description proofing

1.0.0

To view or report issues in this GitHub add-on, visit the GitHub Repository.
To view or report issues in this GitHub add-on, visit the GitHub Repository.