Hi Dave and Matt,
thanks a lot for your explanations. I used MRIConvert and get bvecs
that give reasonable results (I checked with fslview the RGB-Colourmap
as well as the 'Red-Lines-Map'). However I looked at the bvecs of
different subjects and they are all exactly the same. I wonder how
that's possible since the angulation angles are for sure not exactly
the same for all subjects.
Of course now I have my doubts that my results are really correct
(probably they are just approximately correct). Or would you expect
all the bvecs to be exactly the same?
Thanks for your help, Michael
On 9-Jan-09, at 3:28 AM, David Lythgoe wrote:
> On 09/01/2009 04:11, "Matt Glasser" <[log in to unmask]> wrote:
>
>> Here is an explanation of the GE DICOM header for the purpose of
>> rotating
>> gradient fields provided by Jolinda Smith, the author of MRIConvert:
>>
>> "Image Orientation Patient" is the correct field for getting the
>> slice
>> prescription angles. The six values are the direction cosines for
>> the rows
>> and columns in the image. In other words, they are the first two
>> rows in the
>> rotation matrix you'll need to transform your gradient table from
>> "scanner
>> space" to "image space". (The third row is the cross product of the
>> first
>> two rows.)
>
> Hi,
>
> On GE scanners, the gradient directions are already in image space,
> so you
> don't need to transform the directions from scanner space to image
> space. On
> the other hand, if you want to go from image space to scanner space,
> or some
> other arbitrary direction, you would need the information in
> ImageOrientationPatient.
>
>
> Dave
>
>>
>> Here's the math. r[0] through r[5] are the six values in Image
>> Orientation
>> Patient.
>>
>> r[6] = r[1]*r[5] - r[2]*r[4];
>> r[7] = r[2]*r[3] - r[0]*r[5];
>> r[8] = r[0]*r[4] - r[1]*r[3];
>>
>> xGrad_rotated = r[0]*xGrad + r[1]*yGrad + r[2]*zGrad; yGrad_rotated =
>> r[3]*xGrad + r[4]*yGrad + r[5]*zGrad; zGard_rotated = r[6]*xGrad +
>> r[7]*yGrad + r[8]*zGrad;
>>
>> If MRIConvert is able to read the gradient table in the DICOM file,
>> it does
>> this transformation when writing the bvecs file for the FSL Nifti
>> output, so
>> you don't need to do it again."
>>
>> If you use MRIConvert you should get appropriately corrected bvecs
>> files.
>>
>> Peace,
>>
>> Matt.
>>
>> -----Original Message-----
>> From: FSL - FMRIB's Software Library [mailto:[log in to unmask]] On
>> Behalf
>> Of Michael Scheel
>> Sent: Thursday, January 08, 2009 9:54 PM
>> To: [log in to unmask]
>> Subject: [FSL] read DICOM header to correct bvec for angulation
>>
>> Hi everybody,
>>
>> i have a question if anybody can give me some advise on a problem
>> with a DTI series acquired on a General Electric Signa 3T.
>> I have a diffusion DICOM dataset and the file for the gradient
>> directions in the Scanner Coordinates.
>> To avoid artefacts we aquired the data parallel to a plane (frontal
>> sinus - cerebellum) - that gives quite a big angulation of the xy-
>> plane.
>> What I need to do is to take into account this angulation and correct
>> the gradient-direction-file.
>> My problem is that I don't know how to extract the amount of
>> angulation from the DICOM header.
>>
>> So I guess my question boils down to:
>>
>> How do I extract the angulation parameters from the DICOM header and
>> use it to correct the gradient-direction-file?
>>
>> Here is what the header says:
>> ....
>> ImagePositionPatient (0020,0032) -129.492\-147.271\35.8859
>> value -129.492
>> value -147.271
>> value 35.8859
>> ImageOrientationPatient (0020,0037) 1\-0\0\-0\0.844841\-0.535018
>> value 1
>> value -0
>> value 0
>> value -0
>> value 0.844841
>> value -0.535018
>> .....
>>
>> I just don't know how to translate this, especially why are there 6
>> values for the orientation when there are 3 planes that can be
>> angulated?
>>
>> Thanks a lot, Michael.
|