Interpolation Algorithms

Hi MRTrixler,

I’ve seen you have 4 of them, but which one is the best? Is there a paper or something out there. And why did you choose the cubic as standard? Something to read about it out there?



1 Like

Hello @Ralf ,

NearestNeighbor may be better.


Hi Ralf,

There are definitely specific contexts in which one interpolation strategy is preferable / necessary for a specific purpose. E.g. “index” images require nearest neighbour in order to preserve the respective labels; we use linear during tractography as it’s faster than more complex techniques.

In the very general case of an arbitrary context-less image being resampled to a new image grid, I have some recollection of a bit of a debate having happened about what should be the default. Personally I had advocated for sinc being the default as it’s considered “optimal” from an information theory perspective. From memory, in the context of upsampling DWI data for the FBA pipeline, it was observed that using tri-cubic led to FODs that were somehow “preferable”, though I don’t recall the details. I believe a lot of other softwares use b-splines; which we don’t have implemented, but with the structure of the MRtrix3 C++ API such additions are entirely feasible.

Curious to hear others’ thoughts on this one

Thanks for the answers so far. Are the 4 algorithms the standard wikipedia mathematic algorithms? I will try all for and will see if I get some numbers.
The B-spline is often in use in other software packages, I heard about that. I have a feeling that the sinc is better than the cubic if you calculate to a higher resolution.

I’ve got a feeling that what’s referred to throughout as “cubic” is actually invoking a Hermite interpolator (relevant code here and here) (we also use Hermite for streamlines interpolation, though with non-zero tension).

The sinc interpolator incorporates a Lanczos window.

Hi and thanks for the answer,

I didnt see at… sorry.
But its still an answer I need right now.