I have a limited amount of time to analyse strucutural neuroimaging from a sample of patients. My objective is to simply extract volumes from selected fronto-parietal areas.

I have no previous knowledge on using SPM nor FreeSurfer. Which should I learn? Which has the fastest learning curve?

I usually prefer working with free and open source software in research, so if any of these two is able to plug into R, for example, it would be a plus.

  • $\begingroup$ It is really difficult to give you an objective answer. I know fans of both tools. I have used both but my group mostly used FreeSurfer. SPM is a MATLAB mex, but FreeSurfer only can be used on POSIX-like Operating Systems (so Linux and MacOS but not Windows natively). "Simply extracting volumes" is not something I really believe in. Both tools have a different set of hypothesis underneath them. If you only knows Windows, then FreeSurfer starts lagging for you. I used it in Windows by means of a VirtualBox image of a Linux machine with FreeSurfer installed and also directly on a Mac machine. $\endgroup$ Dec 13, 2015 at 3:57
  • $\begingroup$ I used SPM only when I got access to a machine with a licensed MATLAB. I know it is possible to get a standalone SPM but this scenario exclude the use of contributed SPM toolboxes. Perhaps core SPM could suffice for you. $\endgroup$ Dec 13, 2015 at 4:07
  • $\begingroup$ OK, so maybe that is my answer... Freesurfer runs on Linux natively... I am an exclusive Linux user for some years now.... $\endgroup$
    – lf_araujo
    Dec 13, 2015 at 4:10
  • $\begingroup$ I prefer FreeSurfer's approach and it was what I used for my Master's. In fact, I have used R but not integrated with FreeSurfer. However it wasn't difficult to read what I needed from FreeSurfer in R. $\endgroup$ Dec 13, 2015 at 4:14
  • $\begingroup$ I would suggest you to read a little about surface based morphometry (what FreeSurfer implements) and voxel based morphometry (which is the approach behind SPM) before settling your choice. $\endgroup$ Dec 13, 2015 at 4:20

1 Answer 1


SPM and FreeSurfer are similar in the sense that both are morphometry tools. However, they belong to different kinds.

SPM implements voxel-based morphometry while FreeSurfer represents surface-based morphometry. It is really difficult to do an objective choice here. I don't know a truly impartial comparison of both methods. As a disclaimer, I should say that I prefer surface-based morphometry, and I would suggest as a comparison for you the PDF An Absolute Beginner’s Guide to Surface- and Voxel-based Morphometric Analysis and, as it is written by researchers at the home of FreeSurfer, it is somewhat inclined to FreeSurfer's approach. But its references are good for both SPM and FreeSurfer if you want to know them better.

Putting morphometric technicalities aside, other aspect setting them apart is that SPM is a MATLAB toolbox, so despite being free, it relies on a non-free software. SPM project, under request, are able to provide a standalone version, but this precludes contributed SPM toolboxes. This can be an option when core SPM is enough for your needs. Regarding FreeSurfer, it can be used on a mostly free platform (not free as in Free Software Foundation's sense but more like what you would find in Ubuntu's based software). FreeSurfer runs natively on POSIX-like operating systems (Linux and MacOS) and the project has virtual machine images for VirtualBox, so Windows users can run a virtualized XUbuntu with FreeSurfer installed.

Finally, in terms of integration with R, FreeSurfer project lacks an official integration as it tries to be self contained and includes some statistical analysis capabilities on its own. I have used R to analyze data from FreeSurfer and it wasn't particularly difficult as it is stored in textual form. I heard about an R package, freesurfR — I don't know if it is still maintained — that could do some things in a two-way fashion.

SPM, being aimed at MATLAB, makes an integration with R a somewhat challenging manual task. I heard about an attempt to implement it in R, by means of a package called spmR. When I have used SPM, I had access to a licensed MATLAB and R integration was not that important so I have not insisted. Perhaps it can be done on a more natural way.

In the context of my Master's, FreeSurfer was our choice.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.