FreeSurfer的安装及使用(个人踩坑记录)

article/2025/11/5 7:49:13

一、环境要求

目前只支持在Linux和MacOS系统,虽然可以用 -parallel 进行多线程处理,但基本消耗的是CPU内存。

二、FreeSurfer的下载与安装

1. 下载安装包

官网链接:rel7downloads - Free Surfer Wiki

根据自己系统型号下载对应安装包,我的电脑是Ubantu18.2的,下载的是freesurfer-linux-centos6_x86_64-7.2.0.tar.gz,记得科学上网,不然下载要二十多个小时。

或者直接在官网复制下载链接后,在自己想要安装的路径下打开终端,使用如下命令下载安装包

wget https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/7.2.0/freesurfer-linux-centos6_x86_64-7.2.0.tar.gz

2. FreeSurfer的安装

FreeSurfer没有繁琐的安装过程,对下载的压缩包进行解压即可,解压后目录下会生成名为freesurfer的文件夹,记住这个路径,之后配置环境需要用到

解压命令:

tar -zxv -f freesurfer-linux-centos6_x86_64-7.2.0.tar.gz

3. 注册

软件需要官方授权,只需要在网站进行注册,官方会在发送一封邮件,把附件的license.txt放在刚才生成的freesurfer文件夹下即可

注册网站:FreeSurfer Registration form

4. 安装tcsh

在终端输入:

sudo apt-get install tcsh

5. 配置环境

根据解压的路径设置文件夹权限,命令:

sudo chmod -R 777 ./freesurfer

添加环境变量,这里需要修改为自己电脑freesurfer解压的路径:

使用 vi ~/.bashrc 打开系统环境文件,在~/.bashrc文件中添加如下两句:

export FREESURFER_HOME=/home/LYL/freesurfer #freesurfer解压路径
source $FREESURFER_HOME/SetUpFreeSurfer.sh
export SUBJECTS_DIR=/home/LYL/data/Brain/MRI #处理结果保存路径

添加结束后后,按Esc,输入:wq 即可退出并保存,在终端输入

source ~/.bashrc #环境修改立即生效

输入recon-all --help,未报错则安装成功。

三、FreeSurfer的使用

官方教程:recon-all - Free Surfer Wiki,ReconAllDevTable - Free Surfer Wiki

注意:数据需要全部放在同一文件夹下,且并列排布,不要文件夹下再包含文件。

1. 启动

一般选择在MRI数据所在目录或freesurfer安装目录打开终端,每次重新打开时都要输入命令:

export FREESURFER_HOME=/home/LYL/freesurfer #freesurfer解压路径
source $FREESURFER_HOME/SetUpFreeSurfer.sh

2. 基础语句介绍

freesurfer一共有31个处理步骤,使用recon-all可完成全部处理步骤,如只需部分可应用其他语句,这里稍作介绍。

recon-all -i  1.nii -s  AD1 -sd /home/LYL/data/AD/MRI/ -all
# 1.nii为需处理的nii图
# AD为处理后的存放的文件夹名字(处理结束后自动生成)
# /home/LYL/data/AD/MRI/为处理结果存放位置

2.1 recon-all全步骤

01.    运动校正与确认
02.    NU (非均匀强度标准化处理)
03.    Talairach 变换计算
04.    强度标准化1
05.    去除脑壳
06.    EM登记 (线性体积登记)
07.    CA 强度标准化
08.    CA 非线性体积登记
09.    去除颈部
10.    脑壳LTA
11.    CA标记 (体积标记, 如Aseg)和统计
12.    强度标准化2 (控制点开始)
13.    白质分割
14.    白质ASeg编辑
15.    填充(开始白质编辑)
16.    Tessellation细分曲面技术 (开始每个脑半球的操作)
17.    平滑1
18.    胀平1
19.    QSphere
20.    自动化局部解剖修复
21.    最终的曲面 (从这里开始编辑软脑膜)
22.    平滑2
23.    胀平2
24.    球形映射
25.    球形登记
26.    球形登记,对侧半球
27.    Subject平均曲率映射
28.    皮质划分 - Desikan_Killian和Christophe 分类
29.    皮质划分统计
30.    皮质色带覆盖
31.    皮质划分到aseg映射

每一步的输入输出和参数可参考:FreeSurfer核心命令之recon-all - FreeSurfer使用手册 - 秋月斋人 | 豆瓣阅读

2.2 分步骤处理

语句对应操作

-autorecon1

完成步骤 1-5 

-autorecon2

完成步骤 6-23

完成 autorecon2后, 检查最终曲面:

a. 如果需要编辑白质,执行 -autorecon2-wm,完成步骤15-23

b. 如果需要增加控制点,执行 -autorecon2-cp,完成步骤12-23

c. 如果需要修正软脑膜,执行 -autorecon2-pial,完成步骤21-23

d. 继续执行 -autorecon3,完成步骤24-31

-hemi ?h

用参数声明仅处理lh还是rh(默认均处理)

3. 颅骨剥离+仿射对齐

如果是需要做颅骨剥离和对齐,可以用下面这段代码批量处理,将如下代码存为preprocessing.py文件,在终端输入 python preprocessing.py ,回车即可

#!/media/milab-2080ti/LabData/LYL/freesurfer/python/bin/python3.6
import os
import globpath = r"/media/milab-2080ti/LabData/LYL/1-DATA-ORIGINAL/EMCI/MRI" #数据读取目录
new_path = r"/media/milab-2080ti/LabData/LYL/2-DATA-pre/EMCI/MRI" #结果保存目录images = glob.glob(os.path.join(path,"*.nii")) #读取path下的nii文件
# 下面为freesurfer的环境配置命令
a = "export FREESURFER_HOME=/media/milab-2080ti/LabData/LYL/freesurfer;"
b = "source $FREESURFER_HOME/SetUpFreeSurfer.sh;"
c = "export SUBJECTS_DIR="+new_path+";"for image in images:
# 将文件路径和文件名分离filename = os.path.split(image)[1] # 将路径名和文件名分开filename = os.path.splitext(filename)[0] #将文件名和扩展名分开,如果为.nii.gz,则认为扩展名是.gzfilename = filename[:15] #根据扩展名的不同,只保留文件名即可,这里需要做更改#cur_path=os.path.join(path,filename)  #存原始目录#cur_path = os.path.join(path, filename)cur_path = os.path.join(new_path, filename)# print("file name: ", cur_path)# freesurfer环境配置、颅骨去除、未仿射对齐mpz转nii、仿射对齐、仿射对齐mpz转nii.gz格式# recon-all是数据开始处理的命令, -parallels指并行处理,-autorecon1 -subjid指只使用recon-all的前五步:运动校正、非均匀强度归一化、Talairach变换、强度归一化,去颅骨,具体见recon-all介绍# mri_convert是进行格式转换,从mgz转到nii.gz,只是为了方便查看# --apply_transform:仿射对齐操作cmd = a + b + c \+ "recon-all -parallel -i " + image + " -autorecon1 -subjid " + cur_path + "&&" \+ "mri_convert " + cur_path + "/mri/brainmask.mgz " \+ cur_path + "/mri/" + filename + "_brainmask.nii.gz;"\+ "mri_convert " + cur_path + "/mri/brainmask.mgz --apply_transform " \+ cur_path + "/mri/transforms/talairach.xfm -o " \+ cur_path + "/mri/brainmask_affine.mgz&&" \+ "mri_convert " + cur_path + "/mri/brainmask_affine.mgz " \+ cur_path + "/mri/"+filename+"_affine.nii.gz;"# print("cmd:\n",cmd)os.system(cmd)

完成一个后,会在SUBJECTS_DIR目录下生成一个以原图名称命名的文件夹

文件夹的子目录mri中存放的是完成预处理的结果

剥离颅骨结果:brainmask.mgz

仿射校正结果:brainmask_affine.mgz

剥离颅骨转成nii结果:ADNI_011_S_0003_brainmask.nii.gz

仿射校正转成nii结果:ADNI_011_S_0003_brainmask_affine.nii.gz

官方安装教程:FS7_linux - Free Surfer Wiki


http://chatgpt.dhexx.cn/article/wTTIPHcm.shtml

相关文章

【数学建模】统计回归模型

一、 多元线性回归 matlab统计工具箱 [b,bint,rint,stats]regress(y,x,alpha) 输入 y~n维数据向量数据矩阵,第1列为全1向量alpha(置信水平,0.05) 输出 b~β的估计值bint~b的置信区间r~残差向量y-xbrint~r的置信区间(置信区间包含0则对y的影响不太显…

统计学习模型——决策树

决策树学习的三个步骤:特征选择、决策树的生成和决策树的修剪 一、决策树模型(分类与回归方法) 1.1 基本概念 决策树可为多叉树,是描述对实例进行分类的树形结构决策树由结点和有向边组成。其中结点又分为:内部结点…

机器学习的概率统计模型(附代码)(一)

目录 概率论 1.1 离散随机变量分布 1)伯努利分布 2)二项分布 3)泊松分布 1.2 连续随机变量分布 1)均匀分布 2)指数分布 3)正态分布 总结 系列文章目录 概率论 概率论,是研究随机现象数量规…

【统计模型】缺失数据处理方法

目录 一、缺失数据定义 二、缺失数据原因 三、缺失数据处理步骤 四、数据缺失机制 1.完全随机缺失(MCAR) 2.随机缺失(MAR) 3.非随机、不可忽略缺失(NMAR) 五、缺失数据处理方法 1.直接删除 2.缺失值…

数学统计建模

数据预处理 数据清洗 无量纲处理 检验数据来自哪个分布 正态分布检验 K-S检验的P值检验正态性 非正态数据处理 数据偏态处理 BOX-COX变换 成分数据处理 clr变换 ilr变换 logit变换 属性数据 相关性检验 假设检验方法使用时应首先判断数据是否为正态数据。如果是&#x…

【数学建模】统计分析方法

文章目录 1.回归分析2. 逻辑回归3. 聚类分析4. 判别分析5. 主成分分析6. 因子分析7. 对应分析 1.回归分析 数据量要多,样本总量n越大越好——>保证拟合效果更好,预测效果越好 一般n>40/45较好 方法 建立回归模型 yiβ0β1i……βkxkiεi 所估计的…

统计模型分类

传统统计模型->回归模型(可解决过去和预测未来) 数据挖掘模型->决策树、神经网络等(只能预测未来) 横截面模型:多元回归,逻辑回归,托宾回归(涉及到泊松分布) 向量…

(R语言)R的统计模型

1定义统计模型的公式 下面统计模型的模板是一个基于独立的方差齐性数据的线性模型 用矩阵术语表示,它可以写成 其中y是响应向量,X是模型矩阵(model matrix)或者设计矩阵(design ma- trix)。X的列 是决定变…

【统计学习方法】模型评估与模型选择

一、训练误差与测试误差 首先引入误差的概念,误差(error)是指:学习器的实际预测输出与样本的真实输出之间的差异。类似地,学习器在训练集上的误差被称之为训练误差(training error)或者经验误差…

statsmodels︱python常规统计模型库

之前看sklearn线性模型没有R方,F检验,回归系数T检验等指标,于是看到了statsmodels这个库,看着该库输出的结果真是够怀念的。。 文章目录 1 安装2 相关模型介绍2.1 线性模型2.2 离散选择模型(Discrete Choice Model, DCM)2.3 非参数…

数学建模——统计回归模型

前言:看完数学建模的统计回归模型,更是感到了数学建模的“细腻”之处,对比与机器学习,如果说机器学习像是“打一场仗”,那数学建模更是像“做一场手术”,一个简单的回归问题也可以从中感觉到他“细腻”的美…

统计模型 | 学习笔记

一.概述 任何统计模型都是对现实世界复杂联系的简化 根据目的分类 聚类方法(细分类模型):市场细分,协同推荐 预测方法:回归模型,时间序列模型 关联归纳方法:购物篮分析,序列分析…

七大统计模型

一、多元回归 1、概述: 在研究变量之间的相互影响关系模型时候,用到这类方法,具体地说:其可以定量地描述某一现象和某些因素之间的函数关系,将各变量的已知值带入回归方程可以求出因变量的估计值,从而可…

03 常用统计模型简述

逻辑回归模型(LR) 原理:分类模型,依据逻辑斯蒂分布,将线性模型转化为逻辑回归模型,使结果分布0~1之间。 前置条件: 自变量为连续变量,分类变量转为虚拟变量(哑变量)使用 自变量与因…

不可不知的七大统计模型

一、多元回归 1、概述: 在研究变量之间的相互影响关系模型时候,用到这类方法,具体地说:其可以定量地描述某一现象和某些因素之间的函数关系,将各变量的已知值带入回归方程可以求出因变量的估计值,从而可…

数学建模笔记(十一):统计模型(MATLAB计算,函数参数解释待补充)

文章目录 一、概述二、参数估计——区间估计1.糖果称重(求总体均值 μ \mu μ的双侧置信区间)(一)根据公式计算结果(二)直接使用 t t e s t ( ) ttest() ttest()函数 2.灯泡寿命( μ \mu μ的单…

scss和sass的区别,scss的基本使用

scss的官方文档 https://www.sass.hk/ sass和scss有什么关系? 1、sass和scss其实是一样的css预处理语言,SCSS 是 Sass 3 引入新的语法,其后缀名是分别为 .sass和.scss两种。 2、SASS版本3.0之前的后缀名为.sass,而版本3.0之后…

vue 安装 scss

安装scss (安装sass-loader node-sass 前者依赖于后者) sass-loader:把 sass编译成css node-sass:nodejs环境中将sass转css npm install sass-loader --save-dev npm install node-sass --sava-dev 安装指定版本:当由于版本过高报错时&#…

scss、sass 和 css 的区别

项目中,会经常使用诸如scss、sass的style样式,它们和css有什么区别呢? less大家应该都不陌生,同样的scss、sass一样,它们都可以称为:CSS预处理器语言。 简单来说,scss和sass的区别,就…

Scss 基本使用(变量、嵌套)

1. Scss 简介 Sass (Syntactically Awesome Stylesheets) 是一种动态样式语言,Sass 语法属于缩排语法,比 css 比多出好些功能 (如:变量、嵌套、运算,混入(Mixin)、继承、颜色处理,函数等),更容易阅读。 Sass 的缩排语…