Print

Print


John,

I plotted the points with a color coding: blue points are the starting points of a track, white are the ends, reds are all the points in between. I plotted them all to a 3D volume, but only for illustrative purposes. The plot of the transformed points is also essentially for illustrative purposes, with the color coding kept the same for start and end points. The points were individually calculated in the manner I described previously, and the transformation that was used was calculated separately using the patients diffusion space T1 (which the tract points were already, originally co registered to) normalized to the MNI space T1.

I was just very surprised to see such periodic gaps. I am wondering if this method of transformation can be useful, since it does not appear anatomically realistic, since it is possible these voids are not indication I did something wrong? If I calculated my transformation between the
T1 images (again, the basis for my transformation)
in some "finer" method, would it potentially reduce the occurrence of these gaps?

Thank you again,

Eve LoCastro
Research Programmer - IDEAL Lab
Radiology Department
Weill Cornell Medical College
515 E. 71st St S118
Tel: 212-746-1289
Fax: 212-746-4189
________________________________________
From: John Ashburner [[log in to unmask]]
Sent: Tuesday, May 15, 2012 2:58 PM
To: Eve M. LoCastrO
Cc: [log in to unmask]
Subject: Re: [SPM] Deformation Point-Mapping Question

My query was more about how you generated the image of the mapped
points (with the red white and yellow dots) from the transformation
you generated.  Did you move all the points to their new locations and
then plot the x and y coordinates of only those points that had a z
coordinate between some range corresponding to a slice thickness?  If
this is the case, then I'd expect to see a few gaps.

Best regards,
-John


On 15 May 2012 19:06, Eve M. LoCastro <[log in to unmask]> wrote:
> Hi John,
>
> The deformation field is contained in the 'iy' variable which is referenced near the top of that script snippet I put in my last email. Assuming that I did the conversion from mm-to-voxels correctly as you say, then the problem is probably in the creation of that deformation field?
>
> As I said, I have a *sn.mat file that was generated when we did a non-linear normalisation of the diffusion-space image to MNI space. I loaded the *sn.mat and generated the deformation from Tr, then inverse-deformation field. This is where I'm most uncertain of my steps, because I based my code on other code that was based on spm_write_sn. If you could recommend any references that detail the steps of creating the deformation fields from Tr, I could really use them. Anyway, here is how I created the inverse 'iy', from start to finish.
>
> %%%
> load('-mat',Matname);
> mat=VF.mat;
>
> dim=VF.dim;
>
> x=1:VG(1).dim(1);
> y=1:VG(1).dim(2);
> z=1:VG(1).dim(3);
>
> BX=spm_dctmtx(VG(1).dim(1),size(Tr,1),x-1);
> BY=spm_dctmtx(VG(1).dim(2),size(Tr,2),y-1);
> BZ=spm_dctmtx(VG(1).dim(3),size(Tr,3),z-1);
>
> [X,Y]=ndgrid(x,y);
>
> y1 = single(0); y1(VG(1).dim(1),VG(1).dim(2),VG(1).dim(3)) = 0;
> y2 = single(0); y2(VG(1).dim(1),VG(1).dim(2),VG(1).dim(3)) = 0;
> y3 = single(0); y3(VG(1).dim(1),VG(1).dim(2),VG(1).dim(3)) = 0;
>
> wM = VG(1).mat;
>
> for j=1:length(z);
>
>    X1 = X    + BX*get_2Dtrans(Tr(:,:,:,1),BZ,j)*BY';
>    Y1 = Y    + BX*get_2Dtrans(Tr(:,:,:,2),BZ,j)*BY';
>    Z1 = z(j) + BX*get_2Dtrans(Tr(:,:,:,3),BZ,j)*BY';
>
>    y1(:,:,j) = single(wM(1,1)*X1 + wM(1,2)*Y1 + wM(1,3)*Z1 + wM(1,4));
>    y2(:,:,j) = single(wM(2,1)*X1 + wM(2,2)*Y1 + wM(2,3)*Z1 + wM(2,4));
>    y3(:,:,j) = single(wM(3,1)*X1 + wM(3,2)*Y1 + wM(3,3)*Z1 + wM(3,4));
> end
>
> disp(['Inverting the deformations field...']);
> aM = Affine/VG(1).mat; aM(4,:) = [0 0 0 1];
> [iy1,iy2,iy3] = spm_invdef(y1,y2,y3,VF.dim,aM,VG(1).mat);
>
> iy=cat(5,iy1,iy2,iy3);
>
> %%%%% Then for each point in my tractography path, I transformed a point C=[x y z] using
>
> dC=squeeze(iy(C(1),C(2),C(3),1,:));
>
> %%%%%
>
>
> Much thanks,
>
> Eve LoCastro
> Research Programmer - IDEAL Lab
> Radiology Department
> Weill Cornell Medical College
> 515 E. 71st St S118
> Tel: 212-746-1289
> Fax: 212-746-4189
> ________________________________________
> From: John Ashburner [[log in to unmask]]
> Sent: Tuesday, May 15, 2012 8:08 AM
> To: Eve M. LoCastro
> Cc: [log in to unmask]
> Subject: Re: [SPM] Deformation Point-Mapping Question
>
> The snippet of MATLAB code seems to be for transforming one set of
> coordinates to another.  How did you use this to generate the image in
> your email?
>
> Bye for now,
> -John
>
> On 14 May 2012 17:00, Eve LoCastro <[log in to unmask]> wrote:
>> Hello all,
>>
>> I have a set of tractography points that were externally calculated in the patient's DTI-space. My goal is to map the tracts into MNI space, and I have endeavored to do this by deformation-mapping the individual points. I am having a problem with the results, as there are strange, wavy voids appearing in the resultant mapping.
>>
>> I normalized the patient's diffusion-space ("s"-prefix) image to MNI space ("w"-prefix), generating a '*_sn.mat' file. I generated the 5-D inverse transform volume from the resultant Tr, and have been calculating the location of each s-point in w-space as follows:
>>
>> for l=1:size(sVoxPath,1)
>>                    C=[sVoxPath(l,1) sVoxPath(l,2) sVoxPath(l,3)];  %C(x,y,z) is the diffusion coordinate in voxels
>>                    dC=squeeze(iy(C(1),C(2),C(3),1,:));                    %iy is the inverse-deformation
>>                    N1=M1*[dC;1];                                                         %M(i,:) are the rows of the inverse of the MNI-vox-to-coord transform
>>                    N2=M2*[dC;1];
>>                    N3=M3*[dC;1];
>>                    wVoxPath(l,:)=[N1 N2 N3];                                     %Resulting N1, N2, N3 should be the C-coord in MNI voxels
>> end
>>
>> My result appears to be in the right space, but with these wavy artifacts that are obviously wrong (see attached image). Is there some step I'm missing? Please let me know if you would like the details of how I calculated the deformation map.
>>
>> Much thanks,
>> Eve LoCastro
>> Research Programmer - IDEAL Lab
>> Radiology Department
>> Weill Cornell Medical College
>> 515 E. 71st St S118
>> Tel: 212-746-1289
>> Fax: 212-746-4189