> I'm confident you've already read it, but here's another paper that
> describes the ringing effect (par 5.2), although the authors do their
> best to dismiss it.
> http://bigwww.epfl.ch/publications/thevenaz9901.pdf
I guess we'll have to agree to disagree. There are times when linear
higher degree interpolation methods are not good. For example, when
interpolating probability images or histograms (where -ve values should
not exist). Tensor fields should probably also not be interpolated
using simple methods (as +ve definateness may be lost). Higher degree
interpolation methods are also not good if you know that the underlying
function should be piecewise linear. If this is the case, then you would
model it as such.
The very nature of an MR image (reconstructed via an inverse FT), is such
that each voxel is a sinc function (ignoring the effects of taking
magnitudes of the complex data). Therefore, the best representation of
the data is by a linear combination of sinc functions. Higher degree
B-spline representations are approximations of this ideal case.
An illustration using a profile through a real MR image should illustrate
a better interpolation using higher degree B-splines.....
v = [...
40 40 38 21 26 23 27 35 48 55 45 38 56 69 72 67 63 49 50 58 65 ...
67 58 53 67 63 64 65 67 68 75 76 82 87 73 72 67 67 66 72 66 52 ...
61 67 57 64 79 93 82 81 62 43 21 6 7 7 22 18 11 51 82 84 76 ...
83 83 84 85 94 87 77 64 62 56 69 67 66 66 88 72 77 74 29 8 28 ...
46 43 39 90 56 73 56 71 66 70 75 72 54 45 54 61 67 70 89 119 137 ...
142 147 152 143 140 128 114 106 103 103 83 45 37 73 56 51 44 64 47 54 45 ...
63 96 100 67 50 39 34 34 43 56 90 98 99 88 98 96 95 102 95 62 78 ...
76 94 115 133 121 111 60 35 26 34 31 36 33 36 49 103 115 119 113 116 108 ...
83 75 81 86 87 85 79 87 84 94 88 63 59 84 87 81 94 89 68 60 62 ...
67 75 81 87 81 84 87 84 82 73 71 73 64 65 57 51 51 43 58 51 49 ...
44 60 70 64 67 58 6 14 17 22 11 13 31 34 70 113 94 43 4 4 5 ...
5 3 5 3 1 4 4 5 5 7 5 4 2 4 4 5 4 4 3 5 4 ...
1 3 3 38]';
d = [7 7 7 0 0 0];
vc = spm_bsplinc(v,d);
[x,y,z]= ndgrid(1:0.1:length(v),1,1);
vi= spm_bsplins(vc,x,y,z,d);
vl= spm_bsplins(v,x,y,z,[1 1 1 0 0 0]);
plot([1:length(v)]',v,'ko',x,vi,'k-',x,vl,'r-');
zoom on
Best regards,
-John
--
Dr John Ashburner.
Functional Imaging Lab., 12 Queen Square, London WC1N 3BG, UK.
tel: +44 (0)20 78337491 or +44 (0)20 78373611 x4381
fax: +44 (0)20 78131420 http://www.fil.ion.ucl.ac.uk/~john
|