Hi Sangma,<div><br></div><div>I had a look at the values you sent, and I get the right values, although there are a couple of issues that complicate things. If the mrinfo-supplied transform matrix is R (only the upper left 3x3 part - i.e. without the translation terms), and the DICOM-supplied gradient direction is g (= -0.002, 1.000, 0.000), then R*g is pretty close to the right answer (&#39;0.0025, 0.9989, 0.0459&#39;), although it&#39;s the opposite direction to the MRtrix-supplied gradient. However, it&#39;s exact if the y component of g is inverted (i.e. g = -0.002, -1.000, 0.000), so that presumably is the actual conversion that&#39;s taking place.</div>

<div><br></div><div>I think what is going on is that the MRtrix-supplied transformation matrix that you&#39;re using has been modified by MRtrix to match its coordinate system, which will probably involve a flip of the x or y axis depending on the actual row &amp; column direction (cosine) vectors as specified in the DICOM headers - MRtrix will modify these if they don&#39;t point in the expected left-&gt;right and posterior-&gt;anterior directions (actually, it does a fair bit more than that: it reshuffles the matrix around so that the rotation part is as close to identity as possible, and modify the data strides to match - it&#39;s bit beyond this discussion though). You can verify whether this is indeed the case by looking at the output of mrinfo: if the &#39;layout&#39; entry starts with &#39;-0,+1&#39; or &#39;+0,-1&#39;, then the transformation matrix will have been modified from what it was in the DICOM headers and the images strides modified to match (essentially, a negative sign in the layout means that the order of traversal of the voxels is backwards for that axis, if that makes any sense...). If the column (y) vector was pointing antrior-&gt;posterior, then MRtrix will have flipped its direction and specified a negative stride for that axis, to indicate that the voxel values are actually to be traversed in the opposite order. This modification to the transformation matrix happens after the DICOM gradient import, so the mrinfo-supplied matrix that you&#39;re using would be different from what was actually used to modify the gradients. Hope I&#39;m making sense, this stuff can get pretty complicated...</div>

<div><br></div><div>Your best bet is to form the transformation matrix yourself from the DICOM header entry &quot;ImageOrientationPatient&quot; (tag: 0x0020, 0x0037), which essentially forms the first and second columns of the transformation matrix (the third is the slice normal vector, which is their cross product). I&#39;m assuming that this will differ from the mrinfo-supplied matrix in that the 2nd column will be inverted, and so multiplication of the DICOM-supplied gradient direction by that matrix should now give you the correct answer...</div>

<div><br></div><div>Another way to check is to insert the line:</div><div>   VAR (image_transform); </div><div>at line 444 of file lib/file/dicom/image.cpp, which will cause the actual matrix used for this step to be printed on the terminal (you&#39;ll to ./build and ./build install again before these changes take effect). </div>

<div><br></div><div>Hope this helps...</div><div>Cheers,</div><div><br></div><div>Donald.</div><div><br></div><div>
<br><div class="gmail_quote">On 8 April 2013 13:40, smxie_nlpr <span dir="ltr">&lt;<a href="mailto:smxie@nlpr.ia.ac.cn" target="_blank">smxie@nlpr.ia.ac.cn</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<u></u>





<div style="MARGIN:10px">
<div style="FONT-FAMILY:Times New Roman"><span>Dear Dr 
<font style="FONT-FAMILY:Times New Roman" size="3" face=""><span>J-Donald Tournier,</span></font></span></div>
<div style="FONT-FAMILY:Times New Roman"><span><font style="FONT-FAMILY:Times New Roman" size="3" face=""><span>       </span></font></span></div>
<div style="FONT-FAMILY:Times New Roman"><span><font style="FONT-FAMILY:Times New Roman" size="3" face=""><span>Thank you for your help. And I have another question. I 
have a dataset from GE scanner. I get one of the gradient directions is &#39;-0.002, 
1.000, 0.000&#39; with the command &#39;dicominfo&#39; in Matlab. The gradient direction 
achieved with the command &#39;mrinfo&#39; in Mrtrix is &#39;-0.00650699, -0.998944, 
-0.0454892 &#39;, and the transform matrix achieved with &#39;mrinfo &#39; is [0.9951 
0.004517 0.09862 -136.6; -0 0.9989 -0.04591 -104.6; -0.09873 0.04569 0.9941 
-50.04; 0 0 0 1]. Can I transform the direction  &#39;-0.002, 1.000, 0.000&#39; to 
&#39;-0.00650699, -0.998944, -0.0454892 &#39; with the transform matrix. No matter 
flipping the sign of z component or not, I cannot get &#39;-0.00650699, -0.998944, 
-0.0454892 &#39; from &#39;-0.002, 1.000, 0.000&#39;. Are there other steps for 
the transfromation to get  &#39;-0.00650699, -0.998944, -0.0454892 &#39; 
.</span></font></span></div>
<div style="FONT-FAMILY:Times New Roman"><span><font style="FONT-FAMILY:Times New Roman" size="3" face=""><span></span></font></span> </div>
<div style="FONT-FAMILY:Times New Roman"><span><font style="FONT-FAMILY:Times New Roman" size="3" face=""><span>
<div><font size="3" face="Times New Roman">Thanks.</font></div>
<div> </div>
<div><font size="3" face="Times New Roman"></font></div>
<div><font size="3" face="Times New Roman">Regards,</font></div>
<div><font size="3" face="Times New Roman">Sangma Xie</font></div>
<div></div></span></font></span></div><div>
<div style="FONT-FAMILY:Times New Roman"><span><font style="FONT-FAMILY:Times New Roman" size="3" face=""><span>      </span></font></span><span><font style="FONT-FAMILY:Times New Roman" size="3" face=""><span></span></font></span></div>



<div style="FONT-FAMILY:Times New Roman"><span><font style="FONT-FAMILY:Times New Roman" size="3" face=""><span></span></font></span> </div>
<div style="FONT-FAMILY:Times New Roman"><span><font style="FONT-FAMILY:Times New Roman" size="3" face=""><span> </span></font></span></div>
<div> </div>
<hr style="WIDTH:210px;min-height:1px" align="left" color="#b5c4df" size="1">

<div><span>
<div><span style="font-size:10.5pt;font-family:宋体"><span style="FONT-FAMILY:Times New Roman"><span style="FONT-SIZE:10.5pt"><span style="FONT-SIZE:10.5pt">Sangma Xie , Master </span> </span>
<div><span style="FONT-FAMILY:Times New Roman">Brainnetome Center 
<div style="FONT-FAMILY:Times New Roman">National Laboratory of Pattern 
Recognition (NLPR)</div>Institute of Automation, Chinese Academy of Sciences 
(CASIA)<br>95 Zhong Guan Cun East Road, Hai Dian District, Beijing 100190, 
P.R.China</span></div></span><br><br></span></div></span></div></div></div>
<div> </div>
<div style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;PADDING-BOTTOM:0cm;PADDING-LEFT:0cm;PADDING-RIGHT:0cm;BORDER-TOP:#b5c4df 1pt solid;BORDER-RIGHT:medium none;PADDING-TOP:3pt">
<div style="padding-right:8px;padding-left:8px;padding-top:8px;font-size:12px;background:#efefef;padding-bottom:8px">
<div><b>From:</b> <a href="mailto:d.tournier@brain.org.au" target="_blank">Donald 
Tournier</a></div>
<div><b>Date:</b> 2013-04-03 11:26</div>
<div><b>To:</b> <a href="mailto:smxie@nlpr.ia.ac.cn" target="_blank">smxie</a></div>
<div><b>CC:</b> <a href="mailto:mrtrix-discussion@www.nitrc.org" target="_blank">mrtrix-discussion</a></div>
<div><b>Subject:</b> Re: [Mrtrix-discussion] Question about the gradient 
direction table used in Mrtrix</div></div></div><div><div>
<div>
<div>
<div>Hi Sangma,<br><br>OK, there&#39;s quite a few issues at play here. First off, 
the convention used in MRtrix is that the gradients are specified with respect 
to the DICOM patient coordinate system. This is essentially the same convention 
as for DICOM images produced on Siemens and Philips scanners, and the newer 
standard DICOM tags recently introduced, with one notable exception: the DICOM 
patient-centered coordinate system has its x-axis running right-to-left and its 
y-axis running anterior-posterior, whereas MRtrix assumes these axes run in the 
opposite direction (as per the NIfTI standard). So MRtrix will flip the x &amp; 
y components to account for this. </div>
<div><br></div>
<div>For Siemens &amp; Philips images, that&#39;s essentially all that happens to 
the DW gradients. For GE images, it&#39;s a little different, since in this case the 
gradients are (or at least, used to be) stored with respect to the images axes. 
This means that to convert to MRtrix convention, they must be re-oriented back 
into the patient-centered coordinate system. This is what the rotate_DW_scheme 
flag specifies: when the DW gradient information was read from a GE-specific 
tag, this is set to true and the gradients are then rotated according to the 
direction of the images axes. In this case, the z component is inverted, since 
flipping the x &amp; y is essentially the same as flipping z, given the symmetry 
of diffusion.</div>
<div><br>As far as I know, dcm2nii provides the DW directions with respect to 
the image axes (in the NIfTI coordinate system). To convert these back to MRtrix 
convention, the same transformation as you highlighted is needed, but 
<i>without</i> the negative sign. The transform you highlighted also accounts 
for differences in the directions of these axes due to the different conventions 
used for DICOM versus NifTI/MRtrix, so is not appropriate as-is to do convert a 
dcm2nii-supplied gradient table into one suitable for MRtrix. This is 
because the dcm2nii gradient table is provided with respect to the image axes in 
NIfTI coordinate space, and in MRtrix they are provided with respect to the 
original axes, also in NIfTI coordinate space. <br><br>To get back to your 
question, what do you mean when you say &#39;the original gradient table&#39;? The one 
supplied by dcm2nii (in which case converting using the highlighted section of 
code would not work, as explained above), or the actual ones as read directly 
from the DICOM headers? If the latter, then unless your images were acquired on 
a GE scanner, then that also would not work, since that section of code would 
only be used for GE images. If you are trying to convert non-GE DW directions 
read directly from the DICOM headers, then all you need to do is flip the sign 
of the x &amp; y components. </div>
<div><br></div>
<div>Basically, it&#39;s really hard to keep track of all the possible conventions 
and what each step in the processing pipeline might have done to the DW 
gradients. Hopefully the above will help you figure out where the problem might 
be...</div>
<div><br></div>
<div>Hope this helps.</div>
<div>Cheers,</div>
<div><br></div>
<div>Donald.</div>
<div><br></div>
<div><br>
<div class="gmail_quote">On 3 April 2013 12:57, smxie_nlpr <span dir="ltr">&lt;<a href="mailto:smxie@nlpr.ia.ac.cn" target="_blank">smxie@nlpr.ia.ac.cn</a>&gt;</span> wrote:<br>
<blockquote style="BORDER-LEFT:#ccc 1px solid;MARGIN:0px 0px 0px 0.8ex;PADDING-LEFT:1ex" class="gmail_quote"><u></u>
  <div style="MARGIN:10px">
  <div>
  <div><span style="TEXT-TRANSFORM:none;TEXT-INDENT:0px;LETTER-SPACING:normal;DISPLAY:inline!important;FONT:12pt Times New Roman;WHITE-SPACE:normal;FLOAT:none;WORD-SPACING:0px">Hi,</span></div>
  <div>
  <div><span style="TEXT-TRANSFORM:none;TEXT-INDENT:0px;LETTER-SPACING:normal;DISPLAY:inline!important;FONT:12pt Times New Roman;WHITE-SPACE:normal;FLOAT:none;WORD-SPACING:0px"></span> </div>
  <div><span style="TEXT-TRANSFORM:none;TEXT-INDENT:0px;LETTER-SPACING:normal;DISPLAY:inline!important;FONT:12pt Times New Roman;WHITE-SPACE:normal;FLOAT:none;WORD-SPACING:0px">I 
  have a question about the gradient direction table used in Mrtrix. The 
  gradient direction table achieved from the DICOM images with dcm2nii is 
  different from the table achieved with the command &#39;mrinfo DICOMDIR -grad 
  encoding.b&#39;. I checked the source code of Mrtrix and found the following codes 
  &#39;</span></div>
  <div><span style="TEXT-TRANSFORM:none;TEXT-INDENT:0px;LETTER-SPACING:normal;DISPLAY:inline!important;FONT:12pt Times New Roman;WHITE-SPACE:normal;FLOAT:none;WORD-SPACING:0px"></span><span style="TEXT-TRANSFORM:none;TEXT-INDENT:0px;LETTER-SPACING:normal;DISPLAY:inline!important;FONT:12pt Times New Roman;WHITE-SPACE:normal;FLOAT:none;WORD-SPACING:0px">if(rotate_DW_scheme)</span></div>



  <div style="TEXT-TRANSFORM:none;TEXT-INDENT:0px;LETTER-SPACING:normal;FONT:medium Tahoma;WHITE-SPACE:normal;WORD-SPACING:0px">
  <div style="FONT-FAMILY:Times New Roman;FONT-SIZE:12pt">{</div>
  <div style="FONT-FAMILY:Times New Roman;FONT-SIZE:12pt">G(n,0) = 
  image_transform(0,0) * d[0] + image_transform(0,1) * d[1] - 
  image_transform(0,2) * d[2];</div>
  <div style="FONT-FAMILY:Times New Roman;FONT-SIZE:12pt">G(n,1) = 
  image_transform(1,0) * d[0] + image_transform(1,1) * d[1] - 
  image_transform(1,2) * d[2];</div>
  <div style="FONT-FAMILY:Times New Roman;FONT-SIZE:12pt">G(n,2) = 
  image_transform(2,0) * d[0] + image_transform(2,1) * d[1] - 
  image_transform(2,2) * d[2];</div></div>
  <div><span style="TEXT-TRANSFORM:none;TEXT-INDENT:0px;LETTER-SPACING:normal;DISPLAY:inline!important;FONT:12pt Times New Roman;WHITE-SPACE:normal;FLOAT:none;WORD-SPACING:0px">}</span><span style="TEXT-TRANSFORM:none;TEXT-INDENT:0px;LETTER-SPACING:normal;DISPLAY:inline!important;FONT:12pt Times New Roman;WHITE-SPACE:normal;FLOAT:none;WORD-SPACING:0px">&#39; 
  in image.cpp.</span></div>
  <div><span style="TEXT-TRANSFORM:none;TEXT-INDENT:0px;LETTER-SPACING:normal;DISPLAY:inline!important;FONT:12pt Times New Roman;WHITE-SPACE:normal;FLOAT:none;WORD-SPACING:0px">I 
  transformed the original gradient table with similar code in Matlab, but the 
  result is not equal to the table achieved with mrinfo. So I want to know the 
  procedure of transforming the original gradients to the gradients achieved 
  with mrinfo. And why is it &#39;</span><span style="TEXT-TRANSFORM:none;TEXT-INDENT:0px;LETTER-SPACING:normal;DISPLAY:inline!important;FONT:12pt Times New Roman;WHITE-SPACE:normal;FLOAT:none;WORD-SPACING:0px">G(n,0) 
  = image_transform(0,0) * d[0] + image_transform(0,1) * d[1] - 
  image_transform(0,2) * d[2];</span><span style="TEXT-TRANSFORM:none;TEXT-INDENT:0px;LETTER-SPACING:normal;DISPLAY:inline!important;FONT:12pt Times New Roman;WHITE-SPACE:normal;FLOAT:none;WORD-SPACING:0px">&#39; 
  rather than &#39;</span><span style="TEXT-TRANSFORM:none;TEXT-INDENT:0px;LETTER-SPACING:normal;DISPLAY:inline!important;FONT:medium Tahoma;WHITE-SPACE:normal;FLOAT:none;WORD-SPACING:0px"><span style="FONT-FAMILY:Times New Roman;FONT-SIZE:12pt">G(n,0) = 
  image_transform(0,0) * d[0] + image_transform(0,1) * d[1] + 
  image_transform(0,2) * d[2];&#39; ?</span></span></div></div></div>
  <div style="FONT-FAMILY:Times New Roman;FONT-SIZE:12pt"> </div>
  <div style="FONT-FAMILY:Times New Roman;FONT-SIZE:12pt">Thanks.</div>
  <div>
  <div style="FONT-FAMILY:Times New Roman;FONT-SIZE:12pt"> </div>
  <div style="FONT-FAMILY:Times New Roman;FONT-SIZE:12pt">Sangma Xie</div>
  <hr style="MIN-HEIGHT:1px;WIDTH:210px" align="left" color="#b5c4df" size="1">

  <div><span>
  <div><span style="FONT-FAMILY:宋体;FONT-SIZE:10.5pt"><span style="FONT-FAMILY:Times New Roman"><span style="FONT-SIZE:10.5pt"><span style="FONT-SIZE:10.5pt">Sangma Xie , Master </span> </span>
  <div><span style="FONT-FAMILY:Times New Roman">Brainnetome Center 
  <div style="FONT-FAMILY:Times New Roman">National Laboratory of Pattern 
  Recognition (NLPR)</div>Institute of Automation, Chinese Academy of Sciences 
  (CASIA)<br>95 Zhong Guan Cun East Road, Hai Dian District, Beijing 100190, 
  P.R.China</span></div></span><br><br></span></div></span></div></div></div><br>_______________________________________________<br>Mrtrix-discussion 
  mailing list<br><a href="mailto:Mrtrix-discussion@www.nitrc.org" target="_blank">Mrtrix-discussion@www.nitrc.org</a><br><a href="http://www.nitrc.org/mailman/listinfo/mrtrix-discussion" target="_blank">http://www.nitrc.org/mailman/listinfo/mrtrix-discussion</a><br>


<br></blockquote></div><br><br clear="all">
<div><br></div>-- <br><font color="#ff6600" size="1"><b>Dr Jacques-Donald 
Tournier<br></b></font>
<div><font color="#ff6600" size="1">Research Fellow</font></div>
<div><font size="1"><br></font></div>
<div><font size="1">The Florey Institute of Neuroscience and Mental 
Health</font></div>
<div><font size="1">Melbourne Brain Centre - Austin Campus</font></div>
<div><font size="1">245 Burgundy Street</font></div>
<div><font size="1">Heidelberg  Vic  3084</font></div>
<div><font size="1">Ph:  +61 3 9035 7033</font></div>
<div><font size="1">Fax:  +61 3 9035 7307</font></div>
<div><font size="1"><a href="http://www.florey.edu.au" target="_blank">www.florey.edu.au</a></font></div><br></div></div></div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><font color="#ff6600" size="1"><b>Dr Jacques-Donald Tournier<br></b></font><div><font color="#ff6600" size="1">Research Fellow</font></div><div><font size="1"><br>


</font></div><div><font size="1">The Florey Institute of Neuroscience and Mental Health</font></div><div><font size="1">Melbourne Brain Centre - Austin Campus</font></div><div><font size="1">245 Burgundy Street</font></div>


<div><font size="1">Heidelberg  Vic  3084</font></div><div><font size="1">Ph:  +61 3 9035 7033</font></div><div><font size="1">Fax:  +61 3 9035 7307</font></div><div><font size="1"><a href="http://www.florey.edu.au" target="_blank">www.florey.edu.au</a></font></div>


<br>
</div>