On 3 November 2010 17:09, Paloyelis, Yannis <[log in to unmask]> wrote:
> Thanks very much for your prompt response. If you could bear with me a
> little be longer, I have one more question trying to understand all this!
> Say I1 is the original DICOM converted image (where N.mat and N.mat0 are
> almost identical as we established), and rI1 is the same image after I
> manually reorient it using "Display" and involving some translations and
> rotations (to match the MNI template).
There are some additional fields that modify some of the behaviour in
SPM. These are the N.mat_intent and N.mat0_intent. When images are
converted from DICOM, these fields are set to encode that the
orientation information relates to the coordinate system of the
scanner.
Most parts of SPM just set the intent codes to "aligned" rather than
"scanner", but the original conversion sets them to "scanner".
> In the rI1, the V.mat and Vmat0 matrices differ again (see below). The rI1
> V.mat0 matrix remains identical to the I1 V.mat0 matrix, but the rI1 V.mat
> matrix has changed (to reflect the re-orientation I suppose).
This is as intended. When an image is reoriented and its mat0_intent
is set to "aligned", then mat0 is set to be equivalent to that of mat.
If the mat0_intent is not set to "aligned", then its code remains
unchanged. This allows the original orientation within the scanner to
be determined from data that may have been manually reoriented (if
mat0_intent is set to "scanner" then mat0 remains unchanged).
> So the input
> image to VBM/DARTEL (rI1) will contain V.mat and V.mat0 that are different
> (not only in translations, but in rotations too -examples provided below).
> Will this be a problem?
No. The time when it is a potential problem is when the matrix in
N.mat can not be represented by a 9-parameter affine transform. If
the mat_intent and mat0_intent fields are both set to "aligned", then
these fields are identical, but in this case they will differ.
SPM only uses the mat0 field of DARTEL imported images (and flow
fields). It does not use the mat0 fields of other images. The
problem only occurs when it needs to generate a mat0 for the imported
images, and the mat in the original image can not be accurately
represented with the 9-parameters.
I think in an earlier email, I'd forgotten about the behaviour when
mat0_intent is not set to "aligned".
> If I use reorient5.m with this image (rI1), the V.mat and V.mat0 of the
> output image (r_rI1) are identical (would this overcome the problem above?).
reorient5.m sets the mat0_intent fields to "aligned", so any further
additional rotations and translations will also be propagated to the
mat0.
> Surprisingly (to me at least!), when I now manually reorient this image
> (r_rI1) using Display, the V.mat and V,mat0 remain identical.
In this case, the transforms are applied to both mat and mat0.
> If I
> understand this correctly, this is how it should be, since my manual
> rotations and translations are represented by the 9-parameters. Which leaves
> wondering why this was not the case above...
It's all in the "mat0_intent" field. My original intention was to
have the mat0 as a way of deriving scanner positioning in all images
that had been rigidly aligned (including those that have been
resliced), but I didn't get around to converting all the incidences of
where the spm_vol structure was used to the newer nifti objects.
> I would really appreciate any comments you may have on the above, as apart
> from achieving the goal of using the appropriate scans for VBM/DARTEL, i
> would love to understand as well what is happening!
In this case, all should be fine. The following shows that the shears
are all pretty small
and that your N.mat can be well represented by a 9-parameter affine transform.
mat=[ -1.0900 0.0893 0.0162 134.6756
0 0.1941 -1.0825 92.7824
0.0908 1.0727 0.1945 -185.7497
0 0 0 1.0000];
spm_imatrix(mat);
ans(10:12)
Best regards,
-John
>
> N.mat(I1)
> -1.0900 0.0893 0.0162 134.6756
> 0 0.1941 -1.0825 92.7824
> 0.0908 1.0727 0.1945 -185.7497
> 0 0 0 1.0000
> N.mat0(I1)
> -1.0900 0.0893 0.0162 134.6756
> -0.0000 0.1941 -1.0825 92.7824
> 0.0907 1.0727 0.1945 -185.7496
> 0 0 0 1.0000
> N.mat(rI1)
> -1.0882 -0.0380 0.1041 136.9317
> -0.1088 0.2021 -1.0755 71.9838
> -0.0180 1.0743 0.2060 -170.9349
> 0 0 0 1.0000
> N.mat0(rI1)
> -1.0900 0.0893 0.0162 134.6756
> -0.0000 0.1941 -1.0825 92.7824
> 0.0907 1.0727 0.1945 -185.7496
> 0 0 0 1.0000
> %%using reorient5 on rI1
> N.mat(r_rI1)
> -1 0 0 157
> 0 1 0 -167
> 0 0 1 -175
> 0 0 0 1
>
> N.mat0(r_rI1)
> -1 0 0 157
> 0 1 0 -167
> 0 0 1 -175
> 0 0 0 1
>
> %%After changing the orientation of r_rI1 with Display
> N.mat(r_rI1)
> -0.8776 0 0.4794 33.8810
> 0 1.0000 0 -167.0000
> 0.4794 0 0.8776 -228.8468
> 0 0 0 1.0000
> N.mat0(r_rI1)
> -0.8776 0 0.4794 33.8810
> 0 1.0000 0 -167.0000
> 0.4794 0 0.8776 -228.8468
> 0 0 0 1.0000
>
>
> On 3 Nov 2010, at 13:35, John Ashburner wrote:
>
> These misregistrations are all fairly small, so I don't envisage any
> real problems.
>
> Best regards,
> -John
>
> On 3 November 2010 12:57, Paloyelis, Yannis <[log in to unmask]>
> wrote:
>
> Dear John,
>
> Thank you very much for your response and your time. The reason the
>
> discrepancies appeared in the translations was that I was silly! I compared
>
> the N.mat and N.mat0 after I had manually changed the origin of the axes so
>
> that it fell on the AC!
>
> Doing it properly this time, there were no differences in the translations,
>
> but very small differences in the other columns. I used the script you
>
> posted (attached below embedded in a loop), and for a group of 30-something
>
> scans the misregistrations (in mm) for the given voxel (100, 200, 50) for
>
> each scan are presented below. Given these misregistrations, would you think
>
> that I should avoid using DARTEL with the DICOM-converted scans (and use
>
> instead UNC-converted scans in Analyze format that present no
>
> misregistrations - I try to avoid this because there is no orientation
>
> information in the files), or would you think that the misregistrations
>
> below are so small that it wouldn't probably make a difference? (Or am I
>
> doing something wrong here?)
>
> Thanks a million for your help!
>
> Kind regards,
>
> yannis
>
> Misregistrations:
>
> EDU>> M'
>
> ans =
>
> 0.0013
>
> 0.1005
>
> 0.0011
>
> 0.0611
>
> 0.0005
>
> 0.0016
>
> 0.0010
>
> 0.0015
>
> 0.0975
>
> 0.0014
>
> 0.0031
>
> 0.0000
>
> 0.0005
>
> 0.0023
>
> 0.0817
>
> 0.0014
>
> 0.0022
>
> 0.0473
>
> 0.0333
>
> 0.0008
>
> 0.0011
>
> 0.0003
>
> 0.0028
>
> 0.0664
>
> 0.0011
>
> 0.0003
>
> 0.0020
>
> 0.0021
>
> 0.0014
>
> 0.0016
>
>
> +++++SCRIPT++++++++
>
> [ConvertedFiles,dirs] = cfg_getfile('FPList', [root],'^D.*\.nii$');
>
> i=100; j=200; k=50; %voxel
>
> scan=1
>
> for f=1:length(ConvertedFiles)
>
> display (char(ConvertedFiles(f)))
>
> N=nifti(char(ConvertedFiles(f)));
>
> N.mat
>
> N.mat0
>
>
>
> D=N.mat-N.mat0;
>
> M(scan)=sqrt(sum((D(1:3,1:4)*[i j k 1]').^2))
>
> scan=scan+1
>
> end
>
>
>
>
> On 2 Nov 2010, at 08:41, John Ashburner wrote:
>
> If these are the mat and mat0 fields, then the only difference I see
>
> is in the translations (2mm in x, 44mm in y and 1mm in z). If there
>
> is some form of shearing in the data, I'd expect the rotation and
>
> zooming part to differ. I'm not sure why the translations differ, but
>
> don't think this should be a problem for Dartel.
>
> Best regards,
>
> -John
>
> On 1 November 2010 16:28, Yannis Paloyelis <[log in to unmask]>
>
> wrote:
>
> Dear John,
>
> I am coming back to this issue as I am not sure I understand how to deal
>
> with it. I get this warning when displaying with "Display" DICOM-converted
>
> images (T1-weighted volumes, using the SPM tool -scanner was a General
>
> Electric SIGNA HDx 3.0T). Comparing the V.mat and V.mat0 for some images
>
> reveals no difference up to the 4th decimal, whereas for others there is a
>
> big difference at values in the 4th column (see below for example). My aim
>
> is to do VBM using DARTEL. I am not sure I understood how to deal with this
>
> - should I try some other utility to convert the DICOM files (are there any
>
> you would recommend?). Is it right that I cannot use DARTEL for VBM while
>
> N.mat and N.mat0 differ like this?
>
>
> Thanks very much for help in advance.
>
> Kind regards,
>
> yannis
>
> ans =
>
> -1.0906 0.0005 0.0846 134.5624
>
> -0.0841 -0.0062 -1.0967 100.3869
>
> 0 1.0938 -0.0063 -153.4530
>
> 0 0 0 1.0000
>
>
> ans =
>
> -1.0906 0.0005 0.0846 132.5624
>
> -0.0841 -0.0062 -1.0967 144.3869
>
> -0.0000 1.0938 -0.0063 -154.4530
>
> 0 0 0 1.0000
>
>
> ---------------------------------------------
>
> Yannis Paloyelis, BSc (Hons) MSc MSc
>
> PhD Student
>
> Office C3.18 (P080)
>
> MRC Social Genetic and
>
> Developmental Psychiatry Centre
>
> Institute of Psychiatry,
>
> King's College London
>
> De Crespigny Park
>
> SE5 8AF London
>
> Tel. +44-20-7848-5403
>
> Fax +44-20-7848-0866
>
>
> ---------------------------------------------
> Yannis Paloyelis, BSc (Hons) MSc MSc
> PhD Student
> Office C3.18 (P080)
> MRC Social Genetic and
> Developmental Psychiatry Centre
> Institute of Psychiatry,
> King's College London
> De Crespigny Park
> SE5 8AF London
> Tel. +44-20-7848-5403
> Fax +44-20-7848-0866
>
|