[FieldTrip] How do I use an atlas to find regions on an individual MRI?

Andreja Kostić andrejakosticln at gmail.com
Wed Jul 6 18:20:48 CEST 2016


Hello Jan-Mathijs and thank you very much for your answer!!

Since my approach is not producing results, I'm naturally very open to
different strategies!



Unfortunately, I do not understand how exactly your suggested process of
creating a mask works.

Namely, at least for me, the mri2.tissue is a 3D matrix that has the same
size as the anatomy. Result of strcmp(atlas.tissuelabel,
‘yourfavoritebrodmannarea’) is a vector that has a 1 at the index of my
favorite Brodmann area. Matlab does not allow comparison between two of
them.

At first I thought that the value in the tissue structure is a number
matching the index of a label, but then I saw that there are also decimal
numbers in the mri2.tissue as well, which confused me.

I also tried with following:
mri2.mask = mri2.tissue==find(strcmp(atlas.tissuelabel,'brodmann area
17'));

which does return something, but the mask has points spread around the
whole brain, so this obviously doesn't work the way I thought it does.

So I'm not really sure how to make this mask work.


All the best,
Andreja Kostić

2016-07-06 16:06 GMT+02:00 Schoffelen, J.M. (Jan Mathijs) <
jan.schoffelen at donders.ru.nl>:

> Dear Andreja,
>
> I have never understood ft_volumelookup myself, so I wonder whether you
> would be helped by proposing a different strategy…
>
> I would do the following:
>
> % read in the atlas
> atlas = ft_read_atlas(‘somefilename’);
>
> % read in and normalise the anatomical image
> mri = ft_read_mri(‘someotherfilename’)
> mri = ft_volumenormalise([], mri);
>
> % assuming that both atlas and mri are in the same coordinate system
> cfg = [];
> cfg.parameter = ‘tissue’;
> mri2 = ft_sourceinterpolate(cfg, atlas, mri);
>
> The last step gives you the atlas interpolated onto the anatomical MRI.
>
> It should be straightforward to create a boolean mask from here that
> specifies a particular ROI
>
> mri2.mask = mri2.tissue==strcmp(atlas.tissuelabel,
> ‘yourfavoritebrodmannarea’);
>
>
> I hope this helps.
>
> Best wishes,
> Jan-Mathijs
>
>
>
> On 06 Jul 2016, at 15:33, Andreja Kostić <andrejakosticln at gmail.com>
> wrote:
>
> Hello dear Fieldtrippers!
>
> This is my first post on the mailing list, so I apologize if this looks a
> bit confused.
>
>
> So I'm trying to use the WFU PickAtlas for Brodmann areas in what I think
> are MNI coordinates to find specific regions inside of a brain (I'm coming
> from electrical engineering background, so I can't do that "by hand") in an
> individual whole-head MRI and I'm having issues getting sane results.
>
> I suspect that my workflow is the problem, so I would be very grateful if
> someone could provide some advice as to what I should be actually doing.
>
> My original idea was to take MRI in CTF coordinates, convert it to MNI
> coordinates and then just use atlas to make masks. From what I could
> gather, it's not that simple.
>
> So here are examples of what I'm doing right now:
>
> ft_defaults;
>
> %Let's read atlas
>
> atlas =
> ft_read_atlas('C:\REALY_LONG_PATH_TO_PICKATLAS\wfu_pickatlas\MNI_atlas_templates\TD_brodmann.nii');
>
>
> %Using Subject01from FT tutorials right now, for simplicity's sake.
> mri = ft_read_mri('Subject01\Subject01.mri');
>
>
> %Reslice, apply transformations
> cfg=[];
> cfg.dim=[256 256 256];
> mri_resliced=ft_volumereslice(cfg, mri);
>
> cfg=[];
> mri_norm1=ft_volumenormalise(cfg,mri_resliced);
>
> %Unfortunately, this cuts off everything below the nose!
>
> %Still let's take a look at the visualization with atlas
>
> cfg=[];
> cfg.inputcoord='mni';
> cfg.atlas=atlas;
> cfg.roi='brodmann area 4';
>
> mask4 = ft_volumelookup(cfg, mri_norm1);
> mri_norm1.mask4=mask4;
>
> cfg=[];
> cfg.atlas=atlas;
> cfg.funparameter = 'mask4';
> ft_sourceplot(cfg,mri_norm1)
>
>
> %The result doesn't look so good, big part of the area seems to fit inside
> of the gaps between brain tissue!
>
> So this doesn't seem to have worked out. My next attempt was to directly
> use ft_convert_coordsys. This fixed the cutting issue, but it didn't solve
> the problem of results looking strange.
>
> So my other idea was to try with
>
> template=ft_read_mri('C:\PathToFT\external\spm8\templates\T1.nii');
>
> cfg=[];
> cfg.method='spm';
> cfg.coordsys='spm';
> mri_realigned=ft_volumerealign(cfg,mri_resliced,template);
>
> But this produces very obviously wrong results, like coronal slices on
> sagittal plane.
>
> I'm also not sure if I should be trying to somehow transform an atlas to
> fit the individual MRI that I'm using?
>
> All the best,
> Andreja Kostić
>
>
>
>
>
>
>
>
>
> _______________________________________________
> fieldtrip mailing list
> fieldtrip at donders.ru.nl
> https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>
>
>
> _______________________________________________
> fieldtrip mailing list
> fieldtrip at donders.ru.nl
> https://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20160706/04d9ca25/attachment-0001.html>


More information about the fieldtrip mailing list