赞
踩
Linux系统安装Freesurfer、MATLAB插件spm12、fieldtrip,Windows下载mricron、Slicer3D(需要插件SlicerFreeSurfer)软件
1、安装好matlab和freesurfer
2、在目标位置创建文件夹
3、开放权限
4、将需要计算的nii文件放入文件夹
需要提前下载好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)
代码运行后,先弹出坐标轴方向,确认为RAS(一般都正确),在命令行输入n,不用修改
然后进行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。
接下来是头顶,键盘按z
最后是右耳,键盘按r,注意是切线位置
最后输入q完成定位
需要等待比较久的时间进行计算。
最终生成freesurfer文件夹和两个另外的nii文件
将这些文件拷贝下来就可以到Windows系统里进行配准和定点了
在matlab中打开spm,选择fMRI后界面如下
配准选择(Est & Res)
导入两个数据(nii),ref选择MRI(MR-acpc),source选择CT
完成后点击运行
完成后会在文件夹里生成一个rs的nii文件
在mricron软件中打开rs文件看是否配准,这样就是完成啦
如果在配准过程出现如下情况,就是距离原点太远
需要手动选择original,一个一个看
这个图像的原点在头颅内部
这个不在内部,需要手动调整
软件:3D slicer,matlab
使用slicer4.11的软件,记得要添加SlicerFreeSurfer插件
三视图放大,按照电极位置进行定位,需要手动定两个点,一个最里面的一个最外面的
调整一下rs文件的阈值,电极点可以显示出黑色圆圈,方便定点
最里面的电极点需要三个视图都在中心,最外面的电极点可以定在颅骨上,按照电极名称修改电极点名称。勾选菜单栏下的persistent可以连续点基准点。
全部电极标记完成后,保存整个文件夹为slicer0后关闭软件。
打开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');
按照手术计划表写电极名称和电极点数量
生成了.mrk.json文件
打开修改里面的括号和crtl+F 替换数字(1→1.0)
替换slicer文件夹里相应的json文件
再打开3Dslicer即完成了电极定点
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。