医学图像分析工具01:FreeSurfer || Recon -all 全流程MRI皮质表面重建
FreeSurfer是什么
FreeSurfer 是一个功能强大的神经影像学分析软件包,广泛用于处理和可视化大脑的横断面和纵向研究数据。该软件由马萨诸塞州总医院的Martinos生物医学成像中心的计算神经影像实验室开发,旨在为神经科学研究人员提供一个高效、精确的数据分析平台。
FreeSurfer的官网可以通过此链接访问,源代码也托管在GitHub上,方便研究人员进行个性化定制或贡献代码。

FreeSurfer的功能和应用
FreeSurfer 提供了一整套完整的工具链,涵盖了结构性和功能性MRI数据的全面分析。其主要功能包括但不限于:
- 线性与非线性配准:用于将不同时间或不同个体的脑影像数据对齐。
- 皮质和皮质下分割:精确分割大脑皮层和皮质下结构,帮助识别和量化脑区。
- 皮质表面重建:重建大脑的皮质表面,为后续的分析提供高精度的脑部表面模型。
- 群体形态统计分析:支持对多个人群或实验组的数据进行统计分析,探究大脑形态学的群体差异。
- 扩散MRI分析:分析水分子在大脑白质中的扩散过程,用于研究大脑的连接结构。
- PET分析:支持对PET影像数据进行处理与分析,结合功能性影像数据进行大脑活动研究。
此外,FreeSurfer 是人类连接组计划(Human Connectome Project, HCP)的首选结构MRI分析工具,是神经影像学研究中不可或缺的分析软件。
如何安装FreeSurfer
如果你计划使用FreeSurfer,可以通过以下步骤安装:
- 访问FreeSurfer的下载页面:FreeSurfer下载与安装。
- 按照页面上的指示进行安装。
- 安装完成后,需要设置相应的环境变量以确保FreeSurfer正常运行。
需要注意的是,目前FreeSurfer只提供Linux版本,Windows用户可以通过虚拟机或远程桌面环境来使用。若你的计算环境为Linux服务器,通常可以通过远程桌面进行操作,确保能够利用FreeSurfer强大的功能进行数据处理和分析。
命令行大全
recon-all 是 FreeSurfer 中最重要的命令之一,用于自动化处理和分析磁共振成像(MRI)数据,执行一系列的预处理、分割、配准、表面建模和标注等步骤。其目标是为大脑图像提供精确的结构性分析,包括皮层和白质的分割,皮层厚度的计算,以及大脑区域的标注等。
recon-all 分为不同的 subcommands(如 -autorecon1, -autorecon2, -autorecon3 等)。每个步骤执行特定的任务。
其中,阶段1主要是进行数据的初步预处理,进行MRI数据的转换和配准;阶段2进一步处理数据,进行大脑区域的标注和分割;阶段3更加深入的脑区分割、标注和计算。
recon-all -autorecon1
| Step | Individual Flag | Input | Command Line | Output | 中文说明 |
|---|---|---|---|---|---|
| Import Input Volume | -i <invol1> | invol1.dcm or .nii or .mgz | mri_convert invol1.dcm orig/001.mgz | orig/001.mgz | 输入第一个图像文件,支持 DICOM、NIfTI 或 MGZ 格式,转为标准格式并保存为 orig/001.mgz |
| Optional Second Volume | -i <invol2> (optional) | invol2.dcm or .nii or .mgz | mri_convert invol2.dcm orig/002.mgz | orig/002.mgz | 可选输入第二个图像文件,转换并保存为 orig/002.mgz |
| T2 or FLAIR Input | -T2 <invol> or -FLAIR <invol> | invol.dcm or .nii or .mgz | mri_convert --no_scale 1 invol.dcm orig/T2raw.mgz | orig/T2raw.mgz | 可选输入 T2 或 FLAIR 图像文件,处理后保存为 orig/T2raw.mgz |
| Motion Correction | -motioncor | orig/001.mgz, orig/002.mgz | mri_robust_template 生成 rawavg.mgz,然后 mri_convert rawavg.mgz orig.mgz --conform | orig.mgz | 进行运动校正,将多张原始图像对齐,生成标准化的原始图像 orig.mgz |
| Talairach Alignment | -talairach | orig.mgz | 一系列命令生成 transforms/talairach.xfm | transforms/talairach.xfm | 通过 Talairach 坐标系对图像进行对齐,生成对齐变换文件 transforms/talairach.xfm |
| NU Intensity Correction | -nuintensitycor | orig.mgz | mri_nu_correct.mni 生成 nu.mgz | nu.mgz | 对强度非均匀性进行校正,生成校正后的图像 nu.mgz |
| Normalization | -normalization | nu.mgz | mri_normalize 生成 T1.mgz | T1.mgz | 对 T1 图像进行标准化处理,生成标准化的 T1 图像 T1.mgz |
| Skull Strip | -skullstrip | nu.mgz, T1.mgz | mri_watershed 生成 brainmask.auto.mgz,然后拷贝为 brainmask.mgz | brainmask.mgz | 去除头骨信息,生成大脑掩膜 brainmask.mgz |
recon-all -autorecon2
| Step | Individual Flag | Input | Command Line | Output | 中文说明 |
|---|---|---|---|---|---|
| GCA Registration | -gcareg | brainmask.mgz | mri_em_register -uns 3 -mask brainmask.mgz nu.mgz $FREESURFER_HOME/average/RB_all_2016-05-10.vc700.gca transforms/talairach.lta | transforms/talairach.lta | 使用大脑掩膜进行 GCA 模型的配准,生成 Talairach 对齐文件 transforms/talairach.lta |
| CA Normalization | -canorm | brainmask.mgz, nu.mgz | mri_ca_normalize -mask brainmask.mgz nu.mgz $FREESURFER_HOME/average/RB_all_2016-05-10.vc700.gca transforms/talairach.lta norm.mgz | norm.mgz | 对图像强度进行标准化,生成校正后的图像 norm.mgz |
| CA Registration | -careg | brainmask.mgz, norm.mgz | mri_ca_register -mask brainmask.mgz norm.mgz $FREESURFER_HOME/average/RB_all_2016-05-10.vc700.gca transforms/talairach.m3z | transforms/talairach.m3z | 使用 CA 模型对图像进行配准,生成变换矩阵 transforms/talairach.m3z |
| CA Labeling | -calabel | norm.mgz, transforms/talairach.m3z | mri_ca_label 生成 aseg.auto_noCCseg.mgz | aseg.auto_noCCseg.mgz | 根据 CA 模型进行自动标注,生成初步分割结果 aseg.auto_noCCseg.mgz |
| WM Segmentation | -segmentation | brain.mgz, aseg.presurf.mgz | 一系列命令生成分割后的 WM 图像 wm.mgz | wm.mgz | 对白质区域进行分割,生成白质掩膜 wm.mgz |
| Fill | -fill | wm.mgz | mri_fill 生成填充后的图像 filled.mgz | filled.mgz | 填充白质区域与皮质区域之间的边界,生成填充图像 filled.mgz |
| Tessellation | -tessellate | filled.mgz | mri_tessellate 生成皮层表面网格文件 lh.orig.nofix 和 rh.orig.nofix | lh.orig.nofix, rh.orig.nofix | 对填充图像进行三角网格化,生成左右脑初步表面文件 |
recon-all -autorecon3
| Step | Individual Flag | Input | Command Line | Output | 中文说明 |
|---|---|---|---|---|---|
| Sphere Surface | -sphere | ?h.inflated | mris_sphere ?h.inflated ?h.sphere | ?h.sphere | 将表面展开为球形表面,生成 ?h.sphere 文件 |
| Surface Registration | -surfreg | ?h.sphere | mris_register 生成 ?h.sphere.reg | ?h.sphere.reg | 对球形表面进行配准,生成注册后的球面文件 ?h.sphere.reg |
| Cortical Parcellation | -cortparc | aseg.presurf.mgz | mris_ca_label 生成分区注释文件 label/?h.aparc.annot | label/?h.aparc.annot | 基于皮层分区模型进行分区注释,生成 label/?h.aparc.annot |
| Cortical Stats | -parcstats | label/?h.aparc.annot | mris_anatomical_stats 生成统计文件 stats/?h.aparc.stats | stats/?h.aparc.stats | 生成皮层分区的统计信息 |
常用示例
示例 1:运行完整的 recon-all 流程
处理一个单独的 MRI 数据集,包含从原始数据到最终皮质重建的所有步骤。
recon-all -all -s subject1 -i T1.mgz
- 解释:
-all:执行recon-all的完整流水线,包含autorecon1、autorecon2和autorecon3。-s subject1:指定受试者的 ID(subject1)。-i T1.mgz:输入 MRI 数据(支持.mgz,.nii,.dcm格式)。
- 输出:
- 在
SUBJECTS_DIR中创建名为subject1的目录,包含所有重建的中间文件和最终结果。
- 在
示例 2:只运行 autorecon1
仅进行初步处理,例如格式转换、运动校正和 Talairach 坐标系校准。
recon-all -autorecon1 -s subject1 -i T1.mgz
- 解释:
-autorecon1:执行recon-all的第一阶段(初步处理)。-s subject1和-i T1.mgz与上例相同。
- 输出:
- 生成初步结果,如:
orig.mgz(原始图像)nu.mgz(非均匀校正后的图像)talairach.xfm(Talairach 配准文件)
- 生成初步结果,如:
示例 3:运行 autorecon2 后续步骤
在 autorecon1 完成后,继续运行第二阶段以进行脑分割和白质表面生成。
recon-all -autorecon2 -s subject1
- 解释:
-autorecon2:执行recon-all的第二阶段。- 假设
autorecon1已成功完成。
- 输出:
- 生成如白质分割(
wm.mgz)和初始白质表面(lh.white,rh.white)等文件。
- 生成如白质分割(
示例 4:运行 autorecon3 最终步骤
在 autorecon2 完成后,生成高级表面和皮质分区。
recon-all -autorecon3 -s subject1
- 解释:
-autorecon3:执行第三阶段,用于生成球面表面(sphere)和分区注释(如aparc.annot)。- 假设
autorecon2已完成。
- 输出:
- 生成如球面注册(
lh.sphere,rh.sphere)、皮质厚度(lh.thickness,rh.thickness)、分区文件等。
- 生成如球面注册(
示例 5:多模态数据(T1 和 T2 或 FLAIR)
结合 T1 和 T2 或 FLAIR 图像,提高重建质量(如皮质-白质界面)。
recon-all -all -s subject1 -i T1.mgz -T2 T2.mgz
- 解释:
-T2 T2.mgz:额外提供 T2 图像以辅助重建。- 此外可用
-FLAIR flair.mgz添加 FLAIR 图像。
- 输出:
- 更高精度的皮质表面和分区,例如改进了皮质和白质的分割。
示例 6:指定已有 Talairach 配准
如果 Talairach 配准(talairach.xfm)已经存在,可直接指定以节省时间。
recon-all -all -s subject1 -i T1.mgz -talairach transforms/talairach.xfm
- 解释:
-talairach transforms/talairach.xfm:使用已存在的 Talairach 配准文件。
- 输出:
- 跳过 Talairach 配准步骤。
示例 7:并行化处理多个数据集
对多个数据集运行 recon-all,利用多线程并行处理。
recon-all -parallel -openmp 8 -all -s subject1 -i T1.mgz
- 解释:
-parallel:启用并行化。-openmp 8:使用 8 个线程进行处理。
- 输出:
- 更快完成整个重建流程。
示例 8:跳过特定步骤
仅运行感兴趣的步骤,避免重复已完成的部分。
recon-all -s subject1 -segmentation -tessellate
- 解释:
-segmentation:仅运行分割步骤。-tessellate:仅生成表面网格。
示例 9:检查数据质量
在重建完成后,使用内置工具检查数据质量。
freeview -v subject1/mri/T1.mgz subject1/mri/brainmask.mgz subject1/surf/lh.white subject1/surf/lh.pial
- 解释:
- 使用
freeview可视化 T1 图像、脑掩膜、白质表面和皮层表面。
- 使用
示例 10:重新运行失败的部分
如果某个步骤失败,可以从该部分重新运行。
recon-all -autorecon2 -s subject1 -no-isrunning
- 解释:
-no-isrunning:忽略.isrunning文件(避免因意外中断导致无法重新运行)。
重要说明
-
SUBJECTS_DIR:运行命令前需要确保环境变量已设置为存储结果的目录。export SUBJECTS_DIR=/path/to/output/directory -
多模态支持:使用 T2 或 FLAIR 数据时,需确保输入数据与 T1 图像对齐。
相关文章:
医学图像分析工具01:FreeSurfer || Recon -all 全流程MRI皮质表面重建
FreeSurfer是什么 FreeSurfer 是一个功能强大的神经影像学分析软件包,广泛用于处理和可视化大脑的横断面和纵向研究数据。该软件由马萨诸塞州总医院的Martinos生物医学成像中心的计算神经影像实验室开发,旨在为神经科学研究人员提供一个高效、精确的数据…...
.NET框架用C#实现PDF转HTML
HTML作为一种开放标准的网页标记语言,具有跨平台、易于浏览和搜索引擎友好的特性,使得内容能够在多种设备上轻松访问并优化了在线分享与互动。通过将PDF文件转换为HTML格式,我们可以更方便地在浏览器中展示PDF文档内容,同时也更容…...
mamba-ssm安装
注意1:mamba-ssm要与casual-conv1d一起安装。 注意2:mamba-ssm与cuda、pytorch版本要对应。需要看你下载的代码的requirements.txt causal-conv1d与mamba的whl包官网下载: https://github.com/Dao-AILab/causal-conv1d/releases?page3 htt…...
网络IP协议
IP(Internet Protocol,网际协议)是TCP/IP协议族中重要的协议,主要负责将数据包发送给目标主机。IP相当于OSI(图1)的第三层网络层。网络层的主要作用是失陷终端节点之间的通信。这种终端节点之间的通信也叫点…...
双指针算法详解
目录 一、双指针 二、双指针题目 1.移动零 解法: 代码: 2.复写零 编辑 解法: 代码: 边界情况处理: 3.快乐数 编辑 解法:快慢指针 代码: 4.盛水最多的容器 解法:(对撞指针)…...
MySQL的最左匹配原则是什么
最左匹配原则是应用于联合索引的规则。 对于以下表F:f1,f2,f3;建立了联合索引(f2,f3),那么我们在查询的时候如果是: select * from F where f2 ? and f3 ?; 或 sele…...
LeetCode:106.从中序与后序遍历序列构造二叉树
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:106.从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder ,其中 inorder …...
22. 【.NET 8 实战--孢子记账--从单体到微服务】--记账模块--切换主币种
这篇文章我们将结合主币种设置以及收支记录实现切换主币种后重新计算以前记录的转换后的金额。那么,为什么要在切换主币种后要重新计算转换后的金额呢?有以下两个原因: 统一的币种,方便我们统计数据方便用户按照当地的币种查看收…...
01.02周四F34-Day43打卡
文章目录 1. 地是湿的。昨晚估计下雨了。2. 你可能把包丢在餐厅里了吧?3. 她说他可能误了航班。4. 我本来应该早点来的,但路上特别堵。5. 约翰可能在那次事故中受了重伤。6. 这是一个情景对话7. 我本可以走另一条路的。8. 我准是瘦了不少,你看我这裤子现在多肥。9. 钱没了!会…...
行业商机信息付费小程序系统开发方案
行业商机信息付费小程序系统,主要是整合优质行业资源,实时更新的商机信息。在当今信息爆炸的时代,精准、高效地获取行业商机信息对于企业和个人创业者而言至关重要。 一、使用场景 日常浏览:用户在工作间隙或闲暇时间,…...
cut-命令详解
一、命令 1.cut列截取命令 cut命令的默认分隔符是制表符 2.参数: -f 列号 #提取第几列-d 分隔符 #按照指定分隔符分割列-c 字符范围 #不依赖分隔符来区分列,而是通过字符范围(行首为0)来进行字段提取。“n-”表…...
Apache MINA 反序列化漏洞CVE-2024-52046
漏洞描述: Apache MINA 是一个功能强大、灵活且高性能的网络应用框架。它通过抽象网络层的复杂性,提供了事件驱动架构和灵活的 Filter 链机制,使得开发者可以更容易地开发各种类型的网络应用。 Apache MINA 框架的 ObjectSerializationDeco…...
二、AI知识(神经网络)
二、AI知识(神经网络) 1.常用算法 FNN CNN RNN LSTM DNN GRU 2.深度学习中概念及算法 1. 感知机 感知机(Perceptron)是一种最早的人工神经网络模型之一,通常用来解决二分类问题。它由弗兰克罗森布拉特&#…...
node.js之---子线程(child_process)模块
为什么需要子线程(child_process)模块 Worker Threads 的基本概念 如何使用 Worker Threads Worker Threads 的性能 Worker 线程的优势和限制 进阶用法:共享内存 为什么需要子线程(child_process)模块 在 Node.js…...
Json字符串解析失败
通过第三方服务,拿到响应体的data对象(拿到的时候对象是有值的) 通过JSON.parseObject方法,拿到的对象,值为null 通过查看对应的json字符串,发现命名不一样... JSONField SeriealizedName注解是用来解析j…...
LeetCode算法题——螺旋矩阵ll
题目描述 给你一个正整数n,生成一个包含1到n2所有元素,且元素按顺时针顺序螺旋排列的n x n正方形矩阵matrix 。 示例 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]题解 思路: 将整个过程分解为逐圈填充的过程…...
【开源社区openEuler实践】hpcrunner
title: 探索 Hpcrunner:高性能计算的得力助手 date: ‘2024-12-31’ category: blog tags: Hpcrunner高性能计算任务调度资源优化 sig: HPC archives: ‘2024-12’ author:way_back summary: Hpcrunner 作为高性能计算领域的一款实用工具,专注于优化任务…...
linux下安装达梦数据库v8详解
目录 操作系统、数据库 1、下载达梦数据库 2、安装前准备 2.1、建立数据库用户和组 2.2、修改文件打开最大数 2.3、挂载镜像 2.4、新建安装目录 3、数据库安装 4、配置环境变量 5、初始化数据库实例 6、注册服务 7、使用数据库 8、卸载数据库 9、多实例管理 10、…...
Redis的常用命令
Redis中文字典网站 redis 命令手册https://redis.com.cn/commands.html Keys * 查看当前库所有的key exists ke 判断某个key是否存在 type key查看你的key是什么类型 Del key删除执行的key数据 unlink key非阻塞删除,仅仅将keys从keyspace元数据中删除…...
Docker入门常用命令总结
1.从远程仓库拉取一个纯净的镜像 docker pull docker .io/centos 2.创建并进入容器(左外右内) docker run --name xxx -dit 镜像id(镜像名称:Tag) /bin/bash 【参数必须放在镜像ID之前】 -i 让Docker分配一个伪终端,并…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
路由基础-路由表
本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。 路由是数据通信网络中最基…...
Linux操作系统共享Windows操作系统的文件
目录 一、共享文件 二、挂载 一、共享文件 点击虚拟机选项-设置 点击选项,设置文件夹共享为总是启用,点击添加,可添加需要共享的文件夹 查询是否共享成功 ls /mnt/hgfs 如果显示Download(这是我共享的文件夹)&…...
SOC-ESP32S3部分:30-I2S音频-麦克风扬声器驱动
飞书文档https://x509p6c8to.feishu.cn/wiki/SKZzwIRH3i7lsckUOlzcuJsdnVf I2S简介 I2S(Inter-Integrated Circuit Sound)是一种用于传输数字音频数据的通信协议,广泛应用于音频设备中。 ESP32-S3 包含 2 个 I2S 外设,通过配置…...
篇章一 论坛系统——前置知识
目录 1.软件开发 1.1 软件的生命周期 1.2 面向对象 1.3 CS、BS架构 1.CS架构编辑 2.BS架构 1.4 软件需求 1.需求分类 2.需求获取 1.5 需求分析 1. 工作内容 1.6 面向对象分析 1.OOA的任务 2.统一建模语言UML 3. 用例模型 3.1 用例图的元素 3.2 建立用例模型 …...
