Hi-
(Apologies in advance for bright coloration of formulae below, but I couldn't get the useful spacing to be enforced without it...)
I should first note, that 3dProbTrackID currently doesn't use the b-value for anything, actually (future versions might, so it's there now, but no need to worry about having multiple values). You can just put `1000' or anything really as a placeholder in the `-algopt FILE'.
As with AFNI reconstruction in 3dDWItoDT, when a single DW factor (e.g., the commonly used b=1000 s/mm^2) is used, then that bvalue is not really utilized in the DT reconstruction (right now)-- one can say that diffusion results are given in units of something scaled by the actual b-value, or in units where the b-value is unity. Thus, only the gradients matter (because they all have the same b-value, they'd all be in the same units).
When multiple DW factors (i.e., multiple b-values) have been used, then the b-value has to be used in the DT reconstruction to have all measures `in the same units'. In this case, one has to use both the b-value and gradients to fit the DT, so the `b-matrix' format is used to gather this information; using such is signaled to 3dDWUncert with using the `-bmatr FILE' option *instead of* the `-grad FILE' one.
The b-matrix is defined as the outer product (or dyad) of a gradient times the scalar b-value. Thus, it would look like a 3x3 matrix (me typing this out will look ugly, but I'll try; a better version could be seen in many places, e.g., the 2nd article in a nice series by P. Kingsley-- Introduction to Diffusion Tensor Imaging Mathematics: Part II. Anisotropy, Diffusion-Weighting Factors, and Gradient Encoding Schemes, in this case for Eq. 134-135):
let the gradient (column) vector be written in terms of components as g = (g_x , g_y , g_z), the scalar DW factor is simply `b', and a given b-matrix component is written with two subscripts as, e.g., `b_xz'. Then, the b-matrix is given by the equivalent forms:
b-matrix = b . g x g^T
=
[[ b g_x g_x b g_x g_y b g_x g_z ]
[ b g_y g_x b g_y g_y b g_y g_z ]
[ b g_z g_x b g_z g_y b g_z g_z ]]
==
[[ b_xx b_xy b_xz ]
[ b_yx b_yy b_yz ]
[ b_zx b_zy b_zz ]] .
This matrix is symmetric, so that, e.g., b_xz = b_zx. Therefore there are 6 unique components of it. Therefore, the matrix is often written in a squished linear/vector-type form with values as:
b-squished = [ b_xx 2*b_xy 2*b_xz b_yy 2*b_yz b_zz ] .
Note that the `off-diagonals' are multiplied by 2 (this is because it's essentially to have it prepared to be multiplied by another squished vector thing, imitating what would happen if full matrix forms were multiplied). As a sidenote, the order of these components in this form have been chosen to match those output in the *.bmtxt file of TORTOISE.
Ok, so, finally the b-matrix file you read into 3dDWUncert is a series of the squished b-matrix things-- one squished b-matrix per line, and each one corresponding to the given DWI file you have. And you have to include b=0 things as well. Thus, as an example, if you had three b=0 images and then some b>0 DW images, your file could look like:
0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
265.752 -213.462 -857.290 42.8651 344.304 691.384
266.464 207.368 -859.558 40.3447 -334.464 693.191
29.3848 138.588 -308.024 163.406 -726.368 807.209
....
(in this case, each b>0 image had b=1000, but that just depends on your scan data.)
--pt
Edited 2 time(s). Last edit at 07/17/2012 12:56PM by ptaylor.