Dwidenoise on complex k-space rather than image domain


I’m writing to ask if it’s reasonable to apply dwidenosie on the original k-space (where the noise should also be gaussian) before the off-line reconstruction. If so, are there any special things I need to pay attention to?

Thank you for your help and all the best,


Hi Yixin,

There is indeed an advantage to denoising the complex dMRI data, as the noise distribution is then Gaussian (avoids Rician bias). You could indeed also denoise in k-space instead of image space, but the advantage not so clear since the Fourier transform that connects them does not affect the noise distribution. This is only partly true because all modern data is subsampled with partial Fourier and SENSE/GRAPPA, but as we showed the noise correlations that this introduces can also be modelled in image space.


1 Like

Hi Dann,

Thank you very much for your reply. I’ll read more carefully on your paper. Can I ask a few more questions:

  1. To run dwidenoise on complex image domain: Because I was using Matlab niftiwrite function and it can handle only real datatype. So I’ll need to generate a real volume and a complex volume separately for dwidenoise. Does it matter if I use dwidenoise separately on real image volume and complex image volume? Or I have to write them into complex datatype. I would guess it would be better to write the volume in complex datatype from the beginning ( I also just found that mrcalc -complex can create a complex volume from real and imaginary volumes). Does the dwidenoise take care of the phase rather than just denoise on real and part separately?

  2. I tried to run dwidenoise on raw k-space data and it’s doing some good job there. However, I found that the phase is a little strange after denoise on real and imaginary k-space separately, which made the SENSE reconstruction fail. Do you think what I observe is reasonable?

  3. Another question is that if I run dwidenoise on raw kdata from different coil and different EPI shots, different DWI directions. What would be the best way to concatenate coil/shots/DWdir to form the 4D volume? Does dwidenoise expect some signal intensity or noise level conformity along the 4th dimension?

Thank you very much for your help and all the best,


I would recommend passing an image with complex datatype to dwidenoise, since this will ensure that the estimated noise level (which is always real) is equal in the real and imaginary components. If you separately denoise the real and imaginary parts, this fundamental property cannot be guaranteed.

If you can only export real datatypes from Matlab, you can recombine them into a complex image with:

mrcalc real.nii imag.nii -complex complex.mif


mrcalc magnitude.nii phase.nii -polar complex.mif

As said I’d recommend denoising in complex datatype, which should preserve the phase. However, the diffusion preparation destroys phase coherence between slices and volumes. Several works therefore apply phase demodulation, to take out linear or low order phase components before denoising. For linear phase correction, this means shifting the spectral peak to the centre of k-space.

Greg Lemberskiy (NYU) presented an abstract on denoising across coil channels at the last ISMRM. dwidenoise indeed assumes a uniform local noise level across all images in the 4th dimension.

1 Like