使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

这篇具有很好参考价值的文章主要介绍了使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前期准备

Linux系统安装Freesurfer、MATLAB插件spm12、fieldtrip,Windows下载mricron、Slicer3D(需要插件SlicerFreeSurfer)软件

文件准备

  1. ct 和mri t1 文件,格式为dicom,需要转换为 nii 格式(可在spm中转换)转换nii详细介绍
  2. edf 文件,包含脑电的所有数据
  3. 电极位置图,手术计划

二、Ubantu下进行脑区分割

准备工作

1、安装好matlab和freesurfer

2、在目标位置创建文件夹
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
3、开放权限
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
4、将需要计算的nii文件放入文件夹
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

使用matlab进行计算

需要提前下载好fieldtrip并解压,设置路径(包括全部子文件夹)
1、打开mri_cut.m文件,修改位置subject00x,和ct文件的名字(代码可参考fieldtrip官网)

clc; clear; close all;

subjID = 'subject006';
ct_fname = 's0001195183-0005-00001-000384-01.nii';
mri =ft_read_mri(fullfile('/media/huang/data2/zhuqianyun/sEEG',subjID,ct_fname));

ft_determine_coordsys(mri);
cfg = [ ];
cfg.method = 'interactive';
cfg.coordsys = 'acpc';
 mri_acpc = ft_volumerealign(cfg,mri);
cfg = [ ];
cfg.filename = ['/media/huang/data2/zhuqianyun/sEEG/',subjID, '/',subjID, '_MR_acpc'];
cfg.filetype = 'nifti';
cfg.parameter = 'anatomy';
ft_volumewrite(cfg, mri_acpc)

fshome = '/home/zhuqianyun/freesurfer/';
subdir     = ['/media/huang/data2/zhuqianyun/sEEG/',subjID, '/'];
mrfile     = [cfg.filename,'.nii'];
system(['export FREESURFER_HOME=' fshome '; ' ...
'source $FREESURFER_HOME/SetUpFreeSurfer.sh; ' ...
'mri_convert -c -oc 0 0 0 ' mrfile ' ' [subdir '/tmp.nii'] '; ' ...
'recon-all -i ' [subdir '/tmp.nii'] ' -s ' 'freesurfer' ' -sd ' subdir ' -all'])

2、运行程序
3、定位(需要自己确认)

采用的方向是RAS,右前上(具体方向介绍见fieldtrip官网)
RAS表示第一维指向右,第二维指向前,第三维指向上。
ACPC 坐标系中使用的界标是前连合和后连合(AC 和 PC)

  • TT坐标系原点在AC
  • y 轴沿着连接 PC 和 AC 的线朝向大脑前部(p 到 a)
  • z 轴朝向大脑的顶部(s 到 i)
  • x轴朝向大脑的右侧(l 到 r)

代码运行后,先弹出坐标轴方向,确认为RAS(一般都正确),在命令行输入n,不用修改
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
然后进行acpc定位

1. To change the slice viewed in one plane, either:
   a. click (left mouse) in the image on a different plane. Eg, to view a more
      superior slice in the horizontal plane, click on a superior position in the
      coronal plane, or
   b. use the arrow keys to increase or decrease the slice number by one
2. To mark a fiducial position or anatomical landmark, do BOTH:
   a. select the position by clicking on it in any slice with the left mouse button
   b. identify it by pressing the letter corresponding to the fiducial/landmark:
      press a for ac, p for pc, z for xzpoint
      press r for an extra control point that should be on the right side
   You can mark the fiducials multiple times, until you are satisfied with the positions.
3. To change the display:
   a. press c on keyboard to toggle crosshair visibility
   b. press f on keyboard to toggle fiducial visibility
   c. press + or - on (numeric) keyboard to change the color range's upper limit
4. To finalize markers and quit interactive mode, press q on keyboard

首先定位ac和pc,选好后键盘分别按a和p。
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
接下来是头顶,键盘按z
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
最后是右耳,键盘按r,注意是切线位置
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
最后输入q完成定位
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
需要等待比较久的时间进行计算。

生成文件

最终生成freesurfer文件夹和两个另外的nii文件
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
将这些文件拷贝下来就可以到Windows系统里进行配准和定点了

三、配准(Windows操作)

在matlab中打开spm,选择fMRI后界面如下
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
配准选择(Est & Res)
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
导入两个数据(nii),ref选择MRI(MR-acpc),source选择CT
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

完成后点击运行
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

完成后会在文件夹里生成一个rs的nii文件
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

在mricron软件中打开rs文件看是否配准,这样就是完成啦
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
如果在配准过程出现如下情况,就是距离原点太远使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
需要手动选择original,一个一个看
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
这个图像的原点在头颅内部
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
这个不在内部,需要手动调整
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

三、电极定点(Windows操作)

软件:3D slicer,matlab

模型生成

使用slicer4.11的软件,记得要添加SlicerFreeSurfer插件
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

  1. 文件导入slicer中
    (1)分割的freesurfer文件夹下的 aparc+aseg.mgz
    (2)生成的MR_acpc文件
    (3)配准的rs 文件
    使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
    导入后生成可视化图
    使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
    调整透明度和需要显示的区域,这里显示的是左脑皮层部分
    使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
    使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

电极定位

三视图放大,按照电极位置进行定位,需要手动定两个点,一个最里面的一个最外面的
调整一下rs文件的阈值,电极点可以显示出黑色圆圈,方便定点
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
最里面的电极点需要三个视图都在中心,最外面的电极点可以定在颅骨上,按照电极名称修改电极点名称。勾选菜单栏下的persistent可以连续点基准点。
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
全部电极标记完成后,保存整个文件夹为slicer0后关闭软件。
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

计算电极位置(自动定点)

打开matlab,运行cclt_coordinate_v2.m程序(需要提前设置路径,jsonlab-master。注意把程序放在与slicer0同一个文件夹下)

cood_info = inputdlg({'Two section','label','number of electrodes'},...,
    'Calculate coordinates of electrode V2',1,{'0','',''},'on');
d = 3.5;
path = [pwd,'\'];
labeln = cell2mat(cood_info(4));
jsfile = loadjson([path,'slicer0\',labeln,'.mrk.json']);
jsfile.markups.controlPoints(3:str2num(cell2mat(cood_info(5)))) = jsfile.markups.controlPoints(2);
x1 = jsfile.markups.controlPoints(1).position;
xn = jsfile.markups.controlPoints(2).position;
for n = 2:8
    jsfile.markups.controlPoints(n).id = num2str(n);
    jsfile.markups.controlPoints(n).label = [labeln,'-',num2str(n)];
    k = ((xn(1)-x1(1))^2+(xn(2)-x1(2))^2+(xn(3)-x1(3))^2)^0.5/3.5/(n-1);
    jsfile.markups.controlPoints(n).position = x1+(xn-x1)/k;
end
if ~str2num(cell2mat(cood_info(3)))
    for n = 9:str2num(cell2mat(cood_info(5))) %% 16
        jsfile.markups.controlPoints(n).id = num2str(n);
        jsfile.markups.controlPoints(n).label = [labeln,'-',num2str(n)];
        k = ((xn(1)-x1(1))^2+(xn(2)-x1(2))^2+(xn(3)-x1(3))^2)^0.5/3.5/(n-1);
        jsfile.markups.controlPoints(n).position = x1+(xn-x1)/k;
    end
else
    for n = 9:str2num(cell2mat(cood_info(5)))
        jsfile.markups.controlPoints(n).id = num2str(n);
        jsfile.markups.controlPoints(n).label = [labeln,'-',num2str(n)];
        k = ((xn(1)-x1(1))^2+(xn(2)-x1(2))^2+(xn(3)-x1(3))^2)^0.5/(7*3.5+10+2*(n-8)+(n-9)*1.5);
        jsfile.markups.controlPoints(n).position = x1+(xn-x1)/k;
    end
end

savepath = [path,'chanloc\'];
if exist(savepath)==0
    mkdir(savepath);
end
savejson('',jsfile,'filename',[savepath,labeln,'.mrk.json'],'IntFormat','%8.1f');

按照手术计划表写电极名称和电极点数量
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
生成了.mrk.json文件
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

打开修改里面的括号和crtl+F 替换数字(1→1.0)
替换slicer文件夹里相应的json文件
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)

再打开3Dslicer即完成了电极定点
使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)文章来源地址https://www.toymoban.com/news/detail-461653.html

到了这里,关于使用freesurfer和3Dslicer进行脑区分割和电极定点(详细版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用freesurfer对扩散指标(FA,MD)进行VBA分析(基于体素的分析)-dt_recon

    freesurfer官网–https://surfer.nmr.mgh.harvard.edu/fswiki/dt_recon 步骤:需要对3DT1图像进行renconall预处理 将输入转换为 nifti(创建 dwi.nii) 使用 FSL 的 eddy_correct进行涡流和运动校正,创建 dwi-ec.nii。可能需要 1-2 小时。 DTI GLM 拟合和张量构造。包括创建: tensor.nii – maps of the tensor (9 fra

    2024年01月22日
    浏览(40)
  • 一个用于Allen脑图谱基因数据的工具箱|abagen详细使用教程-获取基于脑区的基因表达矩阵(脑区*gene)

    艾伦人类脑图谱(Allen Human Brain Atlas) 艾伦人类脑图谱是一个由艾伦脑科学研究所(Allen Institute for Brain Science)开发的在线基因表达图谱数据库,旨在提供人类大脑各个区域的细胞类型和基因表达信息。 这个数据库包含了人类全基因组微阵列数据集、RNA测序数据集等,并使用标

    2024年02月16日
    浏览(58)
  • 使用SAM进行遥感图像语义分割

    Segment Anything Model(SAM)论文 Segment Anything Model(SAM)模型解读及代码复现 Scaling-up Remote Sensing Segmentation Dataset with Segment Anything Model论文 The success of the Segment Anything Model (SAM) demonstrates the significance of data-centric machine learning. However, due to the difficulties and high costs associated with annotating Rem

    2024年02月07日
    浏览(42)
  • 使用MMDetection进行目标检测、实例和全景分割

    MMDetection 是一个基于 PyTorch 的目标检测开源工具箱,它是 OpenMMLab 项目的一部分。包含以下主要特性: 支持三个任务 目标检测(Object Detection)是指分类并定位图片中物体的任务 实例分割(Instance Segmentation)是指分类,分割图片物体的任务 全景分割(Panoptic Segmentation)是统一

    2024年02月07日
    浏览(61)
  • 使用 PyTorch 进行高效图像分割:第 4 部分

            在这个由 4 部分组成的系列中,我们将使用 PyTorch 中的深度学习技术从头开始逐步实现图像分割。本部分将重点介绍如何实现基于视觉转换器的图像分割模型。   图 1:使用视觉转换器模型架构运行图像分割的结果。         从上到下,输入图像、地面实况分

    2024年02月12日
    浏览(40)
  • 使用 PyTorch 进行高效图像分割:第 2 部分

            这是由 4 部分组成的系列的第二部分,旨在使用 PyTorch 中的深度学习技术从头开始逐步实现图像分割。本部分将重点介绍如何实现基线图像分割卷积神经网络(CNN)模型。 图 1:使用 CNN 运行图像分割的结果。按从上到下的顺序,输入图像、地面实况分割掩码、预

    2024年02月12日
    浏览(39)
  • 使用低空无人机图像对树种进行实例分割

    在这项试点研究中,利用低空无人机图像开发了一种针对当地树种的机器学习实例分割模型,用于生态调查目的。实例分割包括个体树冠描绘和物种分类。 20 种树种及其相关学名已通过无人机图像进行了训练和收集,用于机器学习过程。为了评估 ML 模型的准确性,半监督分

    2024年04月14日
    浏览(40)
  • PCL 使用LCCP算法进行点云分割

      LCCP是Locally Convex Connected Patches的缩写,算法大致可以分成两个部分: 基于超体聚类的过分割。 在超体聚类的基础上再聚类。 /

    2024年02月12日
    浏览(51)
  • 【使用OpenCV进行目标分割与计数的代码实例详解】

    在当今数字图像处理领域,图像分割技术是一项至关重要的任务。图像分割旨在将图像中的不同目标或区域准确地分开,为计算机视觉、图像识别和机器学习等领域提供了坚实的基础。在图像分割的广泛应用中,二值化、形态学预处理、距离变换以及分水岭算法等技术被广泛

    2024年02月04日
    浏览(39)
  • 详细介绍如何使用HuggingFace和PyTorch进行医学图像分割-附源码

      医学图像分割是一种创新过程,使外科医生能够拥有虚拟的“X 射线视觉”。它是医疗保健领域非常有价值的工具,可提供非侵入性诊断和深入分析。考虑到这一点,在这篇文章中,我们将探索 威斯康辛大学麦迪逊分校胃肠道图像分割 Kaggle 挑战数据集。作为该项目的一部

    2024年02月15日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包