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


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