Noise Filtering¶
Noise Filtering denoises a greyscale image without segmenting it, so a threshold or a trained classifier sees cleaner grey levels. It filters each slice independently, in the plane you choose (XY, XZ or YZ), and writes a single-precision image in the original intensity units.
- Solves denoising of each slice in one plane
- Filters Gaussian (default), median, total variation and non-local means, from SciPy and scikit-image
- Reports a filtered greyscale image at the source's size and voxel size
- How to run it Noise Filtering in the User guide
The method¶
- Scale. Intensities are scaled to \([0, 1]\) with the image's recorded minimum and maximum, the same bounds for every slice.
-
Filter each slice in the chosen plane with one filter:
Filter What it does Settings Gaussian (default) Smooths with a Gaussian kernel Sigma (voxels) 0.1–8 (default 1) Median Median of a square window; preserves edges and removes isolated bright or dark speckles Neighbourhood size 3 × 3, 5 × 5 or 7 × 7 Total variation Chambolle TV denoising:1 smooths noise while keeping edges sharp Weight 0.001–1 (default 0.1), Stopping tolerance \(10^{-6}\)–\(10^{-2}\) (default \(10^{-4}\)), Maximum iterations 1–500 (default 200) Non-local means Averages pixels whose surrounding patches look alike, wherever they are in the slice;2 keeps fine texture that local filters blur Smoothing strength 0.001–1 (default 0.08), Noise standard deviation 0–1 of the normalised range (0 = don't correct), Patch size 3 × 3, 5 × 5 or 7 × 7, Search radius (voxels) 1–7 (default 3) -
Scale back to the original intensity range and store in single precision.
The total variation weight, and the non-local means strength and noise standard deviation, act on the normalised \([0, 1]\) intensities, so the same settings mean the same thing for an 8-bit and a 16-bit scan.
Reading the result¶
- Slices are filtered independently. Nothing is shared between neighbouring slices, so noise that differs from slice to slice can remain as faint streaks across the filtering plane. Choosing the plane normal to the scan's slowest-varying axis usually helps.
- Smoothing moves boundaries. Any filter strong enough to remove noise also softens the pore walls, which shifts where a later threshold falls and can close narrow throats. Use the weakest filter that makes the histogram's two peaks separable.
- Edge-preserving filters. Median, total variation and non-local means keep walls sharper than a Gaussian of similar strength; non-local means also keeps repeated fine texture.
References¶
-
A. Chambolle, "An algorithm for total variation minimization and applications," Journal of Mathematical Imaging and Vision 20 (2004) 89–97. doi:10.1023/B:JMIV.0000011325.36760.1e ↩
-
A. Buades, B. Coll, J.-M. Morel, "A non-local algorithm for image denoising," IEEE CVPR 2005, vol. 2, 60–65. doi:10.1109/CVPR.2005.38 ↩