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

Domain Decomposed CPU/GPU implementation of Non Local Means Filtering in 3D using Convolution
60 Downloads
Updated 16 Nov 2021
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 (2024). Fast 3D Non Local Means Filtering using Convolutions CPU/GPU (https://github.com/yingDaWang-UNSW/nonLocalMeansMatLab3DConvolutions), GitHub. Retrieved .

MATLAB Release Compatibility
Created with R2021a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Versions that use the GitHub default branch cannot be downloaded

Version Published Release Notes
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.