Dwidenoise empty noisemap

Dear MRtrix3 team,

I would like to denoise some DSI data with 257 volumes. When I run dwidenoise with -extent 7,7,7 or 9,9,9 it produces an empty noisemap and only when I reduce the window to 5,5,5 I obtain some output but the noise values are very low and they don’t look correct, at least to me. Furthermore, when I run them with the extent flag 3,3,3 the output seems more like I would expect it to be but isn’t the kernel way too small? I was wondering if these noisemaps look correct (please find a picture just below) and if not what could be the reason that makes mppca fails?

Suspecting the empty noisemap was due to a memory error I also tried to run dwidenoise with a mask and the volume split in two but the results were the same.
The picture also shows the results of the same brain computed with a Matlab implementation of mp-pca that I had at hand for comparison and the intensities histogram of the 3 noisemaps


edited for clarity

Hi @T_P,

I’m not sure what’s going on here, but the first thing to note is that going beyond a 5×5×5 kernel (125 voxels) to a 7×7×7 kernel (343 voxels) changes the behaviour of the algorithm as you’re switching from full column rank (more measurements than voxels) to full row rank (more voxels than measurements). The implementation in MRtrix is supposed to handle this properly, so I’m surprised to see you end up with an empty noise map, but I have a feeling this will have something to do with it.

As to why the behaviour changes so drastically between 3×3×3 and 5×5×5… Again, I’m not sure. But I strongly suspect these two issues are related, and will probably be due to some violation of the underlying assumption in the MP-PCA method: that the noise is Gaussian with constant standard deviation across volumes. One potential source of problem could arise when merging data acquired across different acquisitions, as they may be scaled differently – was this the case? Is there any chance we could have a look at these data to investigate?

All the best,