Tomogram denoising
Important: Denoising is not recommended when the goal is subtomogram averaging, because any form of filtering removes high resolution information.
There is a trade-off between the speed of denoising algorithms and the quality of the resultant tomogram. The sections below start with best method and followed by other lesser ones. Limiting the resolution in the tomogram during or after reconstruction also removes high frequency noise, but that approach is not covered here.
Non-linear anisotropic diffusion: bnad
This algorithm aims to smooth the tomogram to remove noise while preserving features (Frangakis et al. 2001).
bnad -v 7 -dat float -iter 100 -slabsize 8 -out 10 map.mrc map_nad.mrc
Options
- -datatype: Converts the tomogram to floating point for processing.
- -iterations: Number of iterations.
- -slabsize: Number of z slices to process per thread
- -output: The frequency of writing intermediate maps.
Each slab is processed in a thread, allowing parallel processing. The combined memeory use of all the threads should not exceed the memry of the computer.
Bilateral filtering: bbif
bbif -verb 7 -dat float -space 1.5 -range 25 map.mrc map_bif.mrc
Median filtering: bmedian
bmedian -verb 7 -dat float -kernel 5 -iter 3 map.mrc map_med3.mrc
Gaussian smoothing filtering: bfilter
bfilter -verb 7 -dat float -gaussian 19,3 map.mrc map_g3.mrc
Averaging filtering: bfilter
bfilter -verb 7 -dat float -average 7 map.mrc map_a7.mrc
Denoising with limited memory
Tomograms are large and require considerable memory to denoise with the diffusion algorithm. There is an approach in Bsoft to divide the tomogram into overlapping tiles to allow piecewise and distributed denoising. The first program, btile, generates the tiles together with a small text file specifying how the tiles are organized. Each tile is then denoised with bnad, followed by reassembly with bpatch. The key parameter is the tile overlap, which must be at least as many pixels as the number of cycles used for denoising. The memory requirement is high, so the tiles should not be too large (1 Gb of memory would allow a block of maximum 400x400x200 to be denoised).
The tomogram is first tiled:
btile -v 7 -size 400,400,240 -overlap 100,100,0 gold3_rec.pif tile.mrc
Each tile is then denoised, using the script tomnad.
The tiles are finally reassembled into the full tomogram as floating point:
bpatch -v 7 -tiles tile.tiles -out patch.mrc tile_0??_nad.mrc
The tomogram is then truncated to the average +- 5*standard deviation
and converted to byte data type:
bimg -v 7 -dat byte -trunc 74,179 patch.mrc gold3_den.pif