I have a question about how to generate seed points in the -seed_gmwmi.
I use the command tckgen -act 5tt.nii -backtrack -crop_at_gmwmi -seed_gmwmi gw.nii -maxlength 250 -number -output_seeds to generate the fiber number of 0.1m,1m,10m .
The number of voxels in the seed mask increases as the fiber number.
fiber number = 0.1m seed number = 38.717
fiber number = 1m seed number = 55.875
fiber number = 10m seed number = 60.799
Does it mean that if the fiber number is big enough,the seed number trends to be equal to the voxel number of -seed_gmwmi gw.nii?
I think I understand what you’re asking, but I’m not 100% sure. It seems that subsequent to the tracking experiment, you’re using the output from the
-output_seeds option to generate a mask image of those voxels containing at least one streamline point. In that case, it is inevitable that the number of voxels in this image can’t increse forever, and must tend toward some upper bound, which is the number of voxels that can conceivably support a GM-WM interface streamline seed at any position within its volume.
Your terminology is perhaps a little misleading: by ‘seed number’ you are referring to the number of voxels containing at least one streamline seed. The number of lines in the file generated by the
-output_seeds command, and hence the ‘number of seeds’, should be precisely equivalent to the number of streamlines in the output track file. So what you’re quantifying is neither the ‘number of seeds’, nor the ‘number of voxels in the seed mask’ (which would normally be interpreted as the number of voxels in an input seed image), but the ‘number of voxels containing at least one streamline seed’.
Furthermore, I don’t think you’ll be able to precisely equate this quantification with the number of voxels in the input GMWMI seed image, due to the mechanisms by which this seeding algorithm works.
Firstly, unlike in the ACT publication, the image created by the
5tt2gmwmi command is in fact not a binary mask, but a floating-point image, which is subsequently used in a rejection sampling framework. This provides a seed point density that is more homogeneous along the interface, and less affected by the discrete nature of the voxel grid.
Secondly, this image is only used to initialise seed points; each seed point is then iteratively optimised toward the interface using the 5TT image. For some seed points, this optimisation will not succeed; for others, the voxel occupied by the optimised seed point may not be the same as the voxel occupied by the initial seed point.
In a way though, your result demonstrates how even with what many would consider to be a ‘large’ number of streamlines, the domain of possible streamline seed points is still not being exhaustively sampled from, as new voxels that do not yet contain a streamline seed are still being found.
Thanks you very much.
You fully understand what I want to ask ! I’m sorry for my ambiguous terminology to make you confused.It is an problem that I should improve.
But I’m a little confused with the seeding algorithm you said,especially the second.More specifically, For some seed points, this optimisation will not succeed; for others, the voxel occupied by the optimised seed point may not be the same as the voxel occupied by the initial seed point. What will happen if the optimisation don’t succeed ? What’s the meaning of the voxel occupied by the optimised seed point may not be the same as the voxel occupied by the initial seed point?
-seed_gmwmi option has functionality above and beyond just using a seeding mask that corresponds to the GM-WM interface. The ACT paper includes some details on how this works - see in particular Figure 3.
For some seed points, this optimisation will not succeed
Initially, seed points are determined by:
- Selecting at random a voxel within the seeding image.
- Selecting a random sub-voxel position within that voxel.
From here, the seed point is optimised toward the local GM-WM interface, based on the local gradient in the 5TT segmentation image. However, in some cases it is possible for the local tissue gradient at the precise sub-voxel position to be zero. In such cases, it is impossible to know in which direction to move the seed point in order to reach the interface.
What will happen if the optimisation don’t succeed ?
When this occurs, the seed point is simply discarded, and the process is repeated by drawing a new seed point at random.
the voxel occupied by the optimised seed point may not be the same as the voxel occupied by the initial seed point?
Because each seed point is being spatially perturbed from its starting position toward the GM-WM interface, depending on the local tissue geometry, it may be perturbed across a boundary from one voxel into another.