Diff for "DiffusionFdtNotes" - MRC CBU Imaging Wiki
location: Diff for "DiffusionFdtNotes"
Differences between revisions 8 and 9
Revision 8 as of 2007-04-30 15:56:25
Size: 7252
Editor: l18
Comment:
Revision 9 as of 2007-04-30 16:57:00
Size: 7425
Editor: devel03
Comment:
Deletions are marked like this. Additions are marked like this.
Line 72: Line 72:
FDT requires a binary brain mask in the same space as the diffusion data. This has to be really binary (value 1 for in brain, value 0 for outside. There are two ways of getting there. One is to run FSL BET on the 0 gradient acquisition. I did the following: FDT requires a binary brain mask in the same space as the diffusion data. This has to be really binary (value 1 for in brain, value 0 for outside). There are two obvious ways of getting there. One is to run FSL BET on the 0 gradient acquisition, or the structural.  You'd have to reslice the structural mask to the same space as the diffusion afterwards. I could not get BET to work well on the structural, so I did the following:

Fdt diffusion analysis

For CBU data.

These are just notes of work in progress by MatthewBrett.

Extracting the bvals, bvecs values from Siemens data

See: http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI

Note that the B gradient=0 has no direction information.

So, for the example dataset I have been playing with, you can fetch the diffusion directions from the DICOM headers, by getting the DICOM file names from a diffusion dataset into the matlab string matrix input_files, and doing something like:

hdr = spm_dicom_headers(input_files);
n = length(hdr);
bvals = zeros(n, 1);
bvecs = zeros(n, 3);

for i = 1:n
  H = hdr{i};
  bvals(i) = str2num(H.CSAImageHeaderInfo(7).item(1).val);
  if bvals(i) == 0 % no gradient
    continue
  end
  d_info = H.CSAImageHeaderInfo(22).item;
  for D = 1:3
    bvecs(i,D)= str2num(d_info(D).val);
  end
end

I've implemented this as cbu_diffusion_params.m in the SPM common directory at the CBU. There is also a file to write out the bvals and bvecs files described below - cbu_write_fdt.m.

  • attachment:cbu_diffusion_params.m
  • attachment:cbu_write_fdt.m

We then have to write out the gradient values and directions in a format that FDT understands - see dtifit documentation in the FDT pages: http://www.fmrib.ox.ac.uk/fsl/fdt/index.html.

bvals

All one one line, one value per DWI acquisition, appears to be exponential format separated by 3 spaces per value, and needs new line at end of file. For example:

   0.0000000e+00   0.0000000e+00   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03  1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   0.0000000e+00   0.0000000e+00   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   1.0000000e+03   0.0000000e+00l

(Note new line at end of file).

bvecs

One line per direction (one line for X direction, one line for Y direction, one line for Z direction). New line at end of each. Need to include zeros for no diffusion gradient acquisitions. E.G:

0  0.0000000e+00   7.6937618e-01   9.9999924e-01   4.0214920e-02   1.9526217e-01   5.1096926e-01   6.4449110e-01   1.1639260e-01  4.1472436e-01   6.8663556e-01   3.8949705e-01   5.0524772e-01   1.1717751e-01   7.6094012e-01   7.8334360e-01   4.4028061e-01   2.0589133e-01   1.3436626e-01   2.7000378e-01   4.4543086e-01   2.1816264e-01   3.6644717e-01   1.9651463e-01   5.6797954e-01   4.2364378e-01   4.8425159e-01   4.8837442e-01   7.1876309e-01   9.3607570e-02   1.7722160e-01 0 0.0000000e+00   5.1711309e-01   7.5808487e-01   8.0234240e-01   1.9735010e-02   3.3516758e-01   6.3448454e-01   8.1168960e-02   1.0445113e-01   2.6766319e-01   6.7016636e-01   1.5391958e-01   4.1367573e-01   8.8398617e-01   2.1753901e-01   9.3271228e-01   6.9488384e-01   8.8211118e-01   6.9509295e-01   8.7347998e-01   7.5283496e-01   8.8371946e-01   8.8840244e-01   5.5232725e-01   9.3679074e-01   9.4961311e-01   6.4277964e-01   3.4381087e-01   9.9971116e-01   9.9821503e-01   4.6606173e-01   1.3874523e-01 0
0  0.0000000e+00   6.6306062e-01   1.6707810e-02  -9.9903292e-01   7.6591725e-01   7.7929365e-01  -7.8747432e-01  -9.9961185e-01 -8.8677651e-01   3.4283814e-01  -4.8693386e-01   8.8074278e-01  -8.8352002e-01  -7.8999910e-02   2.6876947e-01   2.5290552e-01   9.3262713e-01  -3.3491810e-01   3.2593888e-01   7.5894353e-01  -2.6638000e-03  -9.4866592e-01   9.9998147e-01  -7.8726452e-01  -7.2459950e-01  -6.4709189e-01  -1.7825689e-01   5.5582022e-01   8.8285078e-01   4.8544349e-01 0  0.0000000e+00   4.7983043e-01  -4.9330514e-01  -6.0886478e-01  -4.8934133e-01   9.3013284e-01  -3.1901719e-01  -1.8293329e-01  -6.6242333e-01  -8.8671109e-01  -4.2004243e-01  -7.2580995e-01  -9.4553600e-02   4.6713278e-01   6.6282962e-01   3.7641775e-01  -6.4060372e-01  -4.9143385e-01   1.4877920e-02  -1.6054820e-01   5.4879866e-01  -2.8861432e-01   1.8916095e-01   1.5049253e-01   6.7304890e-02  -3.1584415e-01   7.6457665e-01  -4.3058758e-01  -1.6450303e-01   1.8210187e-01   5.8200226e-01   1.4422617e-01 0
0 -0.0000000e+00  -9.1990930e-02  -1.9943366e-01  -2.0091641e-01  -6.4443377e-01  -4.1432263e-01   6.7578430e-02   1.6516763e-01  2.8580159e-01  -6.7159887e-01   8.0699374e-01  -9.5227750e-02   4.9569470e-01   6.7437421e-01   5.9513629e-01  -8.8444514e-01  -3.5758470e-01   9.5384852e-01   9.2785410e-01   5.1541002e-01   9.9621754e-01  -7.6163460e-02  -3.8346860e-02  -3.1251438e-01   5.7925205e-01  -6.2195169e-01   8.7736329e-01   4.6313598e-01   5.0186008e-01  -8.7919767e-01 0  -0.0000000e+00   7.3648370e-01  -4.7117809e-01  -1.5994303e-01  -8.9454291e-01   2.5013402e-01  -7.3192133e-01  -9.9999922e-01   7.6833373e-01  -4.2679184e-01   6.4381118e-01  -6.9968571e-01  -9.2735292e-01   2.0101452e-01   7.4389858e-01  -1.6854941e-01   3.8316412e-01   1.4291280e-01  -7.4610714e-01  -5.0130672e-01  -4.1486259e-01   4.1927689e-01  -4.6369242e-01   8.4400121e-01   3.9742244e-01  -1.9628767e-01   2.0568982e-01  -8.5816073e-01   1.1648077e-01   1.0225989e-01  -6.9578104e-01  -1.0000000e+00 0

Y direction appears to be flipped in our acquisitions

The Y direction from our Siemens acquisitions seems to be inverted (so Tim Behrens tells me). We will have to work out why this is. For the moment, I've put an ugly hack into the script to write out bvecs, that just flips the Y direction.

Brain mask

FDT requires a binary brain mask in the same space as the diffusion data. This has to be really binary (value 1 for in brain, value 0 for outside). There are two obvious ways of getting there. One is to run FSL BET on the 0 gradient acquisition, or the structural. You'd have to reslice the structural mask to the same space as the diffusion afterwards. I could not get BET to work well on the structural, so I did the following:

  • Trimmed the structural image with trim_img utility to remove the neck tissue.

  • Segmented using SPM segment, writing out CSF partitions as well as default gray and white matter.
  • Make binary brain mask using imcalc on gray, white, csf images, with formula (i1 + i2 + i3) > 0.5

  • Resliced binary brain mask to space of DWI data with SPM coregister reslice.
  • Made the image true binary with avwmath++ rbrainmask -bin nodif_brain_mask

CbuImaging: DiffusionFdtNotes (last edited 2013-03-07 21:23:56 by localhost)