Open Lestropie opened 10 years ago
So it turns out this has nothing to do with the streamline mapping, or the quadratic v.s. linear cost function (that was an indirect solution). It's an effect of the SIFT algorithm itself, and the approximation it makes in order to make the execution time feasible.
So to solve it is going to require a fairly decent redesign of the sorting / filtering algorithm design, and will result in some amount of slowdown (I'll do my best to keep that to a minimum). But the eventual fix may affect anyone trying to use SIFT currently.
How does it affect SIFT2?
Haven't done extensive testing, but what running I have done on the phantom, there's no artefact with SIFT2.
Removed release milestone: I had code close to achieving this, but it got deleted when I moved my local repositories around following the updated_syntax
merge, and it's very much a non-trivial fix.
Listing this here so that people know I'm aware of the issue and don't waste their time trying to explain it.
If SIFT is used to filter a tractogram, and a high-resolution TDI is then generated based on the filtered tractogram, there's an unusual grid-like artefact where the TDI is brighter along the diffusion voxel edges than through the middle of the voxels. It's particularly prominent anywhere where the streamlines run parallel to the diffusion voxel grid.
Some observations I've made in trying to find the source of this problem:
PM.(u.TD - FOD)^2
toPM.|u.TD - FOD|
, the problem essentially disappears; this is however detrimental to the filtering process itself. Initially I thought this was related to the fact that the cost function change was calculated using a finite difference approach rather than partial derivatives, but changing to the latter didn't fix the problem either.