Hi,
I have phase and magnitude data acquired with a Siemens PRISMA scanner at a reasonably low SNR. I tried applying dwidenoise in the complex data but I am not sure it is performing better. For instance, I can see the noise floor reduced in some parts and maybe less blurriness when denoising the complex data, but it also returns lower SNR/CNR and visually looks noisier than denoising the magnitude data. I wonder whether this is the behaviour expected or I am doing something wrong. So far, I followed similar steps commented on in previous forum entries (Unwrapping before dwidenoise on complexvalued data) or your guidelines (https://readthedocs.org/projects/mrtrix/downloads/pdf/latest/):
 Rescale phase from (4096:4096) to (0,2pi).
 mrcalc Mag.nii.gz Ph_rad.nii.gz polar complex.nii.gz
 dwidenoise complex.nii.gz denoised.nii.gz noise noisemap.nii.gz
 mrcalc denoised.nii.gz abs abs_denoised.nii.gz
Attached is a screenshot of what I get when applied to magnitude vs complex data.
Thank you so much for your help!
1 Like
Hi @josepman,
OK, that’s clearly not what we would have expected… My guess is that the initial conversion of the phase is not quite right, but I have to admit there may be more going on. I’ve looked into this a bit yesterday as we are also in the process of setting up a protocol here, here are my findings so far (I’ll need to dig deeper in due course, but that’ll have to wait till after the Easter break).
I’ve tested 3 cases, all on the same 1.3mm isotropic, b = 0, 1000, 2500 s/mm², 131 volume 7T dataset:
The results look like this:
DW volumes
two examples – all on the same intensity scale:
Noise maps:
All on the same intensity scale:
What does this tell us?
Main takehome points:

if the phase is not converted correctly, the estimated noise level is higher, and the images produced appear somewhat noisier (compared to magnitude or correctlyconverted complex), and it looks like the intensity itself is lower than expected in places.

if the phase is correctly converted, the estimated noise level is similar to that estimated from the magnitude data – if anything, very slightly higher. But the images produced appear significantly noisier than those from the magnitude data.

the Rician / magnitude noise bias is considerably lower using complex data – as expected.
So all in all, it looks like the initial phase conversion could be an issue (hard to tell from what you show without knowing the intensity scale on the noise map), but even with the correct phase, the denoised complex images do indeed appear slightly noisier than I would have expected, based on my experiences a while back when we were initially tinkering with these concepts (quite a few years ago now…). So I will be looking into this more closely when I next get the chance…
Any thoughts about this, @dchristiaens…?
Cheers!
Donald.
1 Like
Quick update on this topic while I have a minute…
It looks like the essential step missing for complex denoising to work well is the phase correction. There are different ways of implementing this step, but the simplest is probably just to run a first pass MPPCA on the complex DWI, then use the phase of this output to correct the phase of the raw DWI, then run MPPCA again on that (steps to reproduce below).
With this, I get these outputs:
These correspond to the (top to bottom):
 original magnitude data
 magnitude data, denoised using regular MPPCA
 complex data, denoised asis using complex MPPCA, followed by magnitude transform
 complex data, phasecorrected from firstpass complex MPPCA, then denoised again using complex MPPCA, followed by magnitude transform
You can see that the phase correction really seems to help here, and provides outputs that are visually at least as clean as magnitude MPPCA, but with better rectification of the noise floor.
For reference, these are the corresponding noise maps produced:
Cheers,
Donald.
Steps to reproduce:
 convert DICOM data to complex
 run firstpass complex MPPCA
 correct phase of original data based on phase of firstpass MPPCA run
 run secondpass MPPCA on phasecorrected data
 perform final magnitude transform
These are implemented below assuming magnitude & phase DICOM data stored in the DICOM_DWI_mag
and DICOM_DWI_phase
folders respectively:
mrcalc DICOM_DWI_mag/ DICOM_DWI_phase/ pi 4096 div mult polar complex.mif
dwidenoise complex.mif complex_dn.mif noise noisemap.mif
mrcalc complex.mif complex_dn.mif complex_dn.mif abs div conj mult complex_pc.mif
dwidenoise complex_pc.mif denoised_pc_dn.mif noise noisemap_pc.mif
mrcalc denoised_pc_dn.mif abs denoised_pc_dn_mag.mif