📄 convert_mri2brainstorm.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head> <title>Description of convert_mri2brainstorm</title> <meta name="keywords" content="convert_mri2brainstorm"> <meta name="description" content="Script to convert freesurfer analyze files into brainstorm format"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="generator" content="m2html © 2003 Guillaume Flandin"> <meta name="robots" content="index, follow"> <link type="text/css" rel="stylesheet" href="../m2html.css"></head><body><a name="_top"></a><div><a href="../index.html">Home</a> > <a href="index.html">mri_toolbox</a> > convert_mri2brainstorm.m</div><!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png"> Master index</a></td><td align="right"><a href="index.html">Index for mri_toolbox <img alt=">" border="0" src="../right.png"></a></td></tr></table>--><h1>convert_mri2brainstorm</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>Script to convert freesurfer analyze files into brainstorm format</strong></div><h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>This is a script file. </strong></div><h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre class="comment"> Script to convert freesurfer analyze files into brainstorm format
The Freesurfer analyze files were created using
mri_convert -oid 1 0 0 -ojd 0 1 0 -okd 0 0 1 orig subject_orig_axial_ras.img
to create an axial volume in with neurological orientation,
ie, +x is Right, +y is Anterior, +z is Superior (RAS).</pre></div><!-- crossreference --><h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>This function calls:<ul style="list-style-image:url(../matlabicon.gif)"><li><a href="avw2brainstorm.html" class="code" title="function avw2brainstorm(avw,Segment,Scalp,PCS,Comment)">avw2brainstorm</a> avw2brainstorm - Convert Analyze struct into BrainStorm file</li><li><a href="mri_open.html" class="code" title="function [mri] = mri_open(mri)">mri_open</a> mri_open - function to call various mri data tools</li></ul>This function is called by:<ul style="list-style-image:url(../matlabicon.gif)"></ul><!-- crossreference --><h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre>0001 0002 <span class="comment">% Script to convert freesurfer analyze files into brainstorm format</span>0003 <span class="comment">% The Freesurfer analyze files were created using</span>0004 <span class="comment">% mri_convert -oid 1 0 0 -ojd 0 1 0 -okd 0 0 1 orig subject_orig_axial_ras.img</span>0005 <span class="comment">% to create an axial volume in with neurological orientation,</span>0006 <span class="comment">% ie, +x is Right, +y is Anterior, +z is Superior (RAS).</span>0007 0008 clear all0009 0010 coregister = 0;0011 elecplot = 0;0012 0013 0014 <span class="comment">% Fiducial points in RAS volume, obtained using avw_view (in meters)</span>0015 <span class="comment">%</span>0016 <span class="comment">% Nasion Right Left</span>0017 <span class="comment">%</span>0018 mriFID.sub{ 1} = <span class="string">'c01'</span>;0019 mriFID.xyz{ 1} = [ 0.005 0.097 -0.022; 0.071 0.023 -0.052; -0.072 0.016 -0.050 ];0020 mriFID.sub{ 2} = <span class="string">'c02'</span>;0021 mriFID.xyz{ 2} = [ 0.007 0.088 -0.007; 0.081 0.015 -0.046; -0.070 0.012 -0.051 ];0022 mriFID.sub{ 3} = <span class="string">'c03'</span>;0023 mriFID.xyz{ 3} = [ -0.002 0.098 -0.008; 0.055 0.040 -0.038; -0.095 0.030 -0.046 ];0024 mriFID.sub{ 4} = <span class="string">'c04'</span>;0025 mriFID.xyz{ 4} = [ 0.000 0.092 0.000; 0.070 0.024 -0.036; -0.076 0.031 -0.036 ];0026 mriFID.sub{ 5} = <span class="string">'c05'</span>;0027 mriFID.xyz{ 5} = [ 0.010 0.094 -0.010; 0.075 0.024 -0.048; -0.072 0.024 -0.052 ];0028 mriFID.sub{ 6} = <span class="string">'c06'</span>;0029 mriFID.xyz{ 6} = [ -0.002 0.088 0.000; 0.077 0.008 -0.048; -0.075 -0.008 -0.048 ];0030 mriFID.sub{ 7} = <span class="string">'c07'</span>;0031 mriFID.xyz{ 7} = [ -0.001 0.097 -0.018; 0.078 0.008 -0.055; -0.076 0.008 -0.055 ];0032 mriFID.sub{ 8} = <span class="string">'c08'</span>;0033 mriFID.xyz{ 8} = [ 0.000 0.096 -0.019; 0.087 0.005 -0.039; -0.065 0.004 -0.038 ];0034 mriFID.sub{ 9} = <span class="string">'c09'</span>;0035 mriFID.xyz{ 9} = [ 0.010 0.086 -0.020; 0.100 -0.020 -0.080; -0.060 0.020 -0.058 ];0036 mriFID.sub{10} = <span class="string">'c10'</span>;0037 mriFID.xyz{10} = [ 0.000 0.091 -0.018; 0.076 0.011 -0.052; -0.068 0.006 -0.052 ];0038 0039 mriFID.sub{11} = <span class="string">'p02'</span>;0040 mriFID.xyz{11} = [ 0.002 0.091 0.016; 0.080 0.025 -0.036; -0.080 0.015 -0.043 ];0041 mriFID.sub{12} = <span class="string">'p04'</span>;0042 mriFID.xyz{12} = [ -0.001 0.086 -0.009; 0.086 0.002 -0.062; -0.070 0.003 -0.065 ];0043 mriFID.sub{13} = <span class="string">'p05'</span>;0044 mriFID.xyz{13} = [ -0.002 0.094 -0.001; 0.068 0.025 -0.040; -0.071 0.005 -0.042 ];0045 mriFID.sub{14} = <span class="string">'p06'</span>;0046 mriFID.xyz{14} = [ -0.002 0.084 0.000; 0.082 0.013 -0.050; -0.066 0.013 -0.052 ];0047 mriFID.sub{15} = <span class="string">'p07'</span>;0048 mriFID.xyz{15} = [ 0.001 0.092 0.015; 0.080 0.003 -0.033; -0.070 0.004 -0.032 ];0049 mriFID.sub{16} = <span class="string">'p08'</span>;0050 mriFID.xyz{16} = [ -0.003 0.095 -0.002; 0.070 0.018 -0.040; -0.074 0.022 -0.035 ];0051 mriFID.sub{17} = <span class="string">'p09'</span>;0052 mriFID.xyz{17} = [ -0.002 0.100 0.004; 0.100 0.002 -0.028; -0.050 0.000 -0.036 ];0053 0054 0055 0056 0057 0058 data = <span class="string">'d:\matlab\brainstorm_v1\subjects\'</span>;0059 0060 cd(data);0061 0062 <span class="comment">% Load data</span>0063 <span class="keyword">for</span> s = {<span class="string">'c01'</span>,<span class="string">'c02'</span>,<span class="string">'c03'</span>,<span class="string">'c04'</span>,<span class="string">'c05'</span>,<span class="string">'c06'</span>,<span class="string">'c07'</span>,<span class="string">'c08'</span>,<span class="string">'c09'</span>,<span class="string">'c10'</span>,<span class="keyword">...</span>0064 <span class="string">'p02'</span>, <span class="string">'p04'</span>,<span class="string">'p05'</span>,<span class="string">'p06'</span>,<span class="string">'p07'</span>,<span class="string">'p08'</span>,<span class="string">'p09'</span>},0065 0066 sub = sprintf(<span class="string">'%s'</span>,char(s));0067 cd(sub)0068 0069 p = eeg_toolbox_defaults;0070 0071 <span class="comment">% Load the MRI volume (256^3, 1mm^3)</span>0072 p.mri.path = sprintf(<span class="string">'d:\\freesurfer\\subjects\\ptsdpet-%s\\mri\\analyze\\'</span>,char(sub));0073 p.mri.file = sprintf(<span class="string">'%s_orig_axial_ras.img'</span>,char(sub));0074 p.mri.plot = 0;0075 p = <a href="mri_open.html" class="code" title="function [mri] = mri_open(mri)">mri_open</a>(p);0076 0077 <span class="comment">% -- Create the Patient Coordinate System (PCS) struct</span>0078 0079 <span class="comment">% Get surface fiducials from mriFID struct above</span>0080 Nfid = strmatch(sub,mriFID.sub);0081 <span class="comment">% 3x4, nasion, right, left, origin fiducial points in rows</span>0082 <span class="comment">% Multiply the FID points by 1000 to get mm, rather than meters</span>0083 <span class="comment">% Also add the origin (128)</span>0084 p.mriFID = [mriFID.xyz{Nfid} .* 1000 + 128; 128 128 128]';0085 0086 PCS.R = eye(3); <span class="comment">% [3x3 double] rotations</span>0087 PCS.t = zeros(3,1); <span class="comment">% [3x1 double] translations</span>0088 PCS.Comment = <span class="string">'NEUROMAG'</span>;0089 PCS.PCSFiducial(:,1) = p.mriFID(:,1); <span class="comment">% NAS</span>0090 PCS.PCSFiducial(:,2) = p.mriFID(:,3); <span class="comment">% LPA</span>0091 PCS.PCSFiducial(:,3) = p.mriFID(:,2); <span class="comment">% RPA</span>0092 PCS.PCSFiducial(:,4) = p.mriFID(:,4); <span class="comment">% Origin</span>0093 PCS.CubeFiducial = PCS.PCSFiducial;0094 PCS.FiducialName = {<span class="string">'NAS'</span> <span class="string">'LPA'</span> <span class="string">'RPA'</span> <span class="string">'Origin'</span>};0095 0096 <span class="comment">% Load the scalp mesh</span>0097 p.mesh.path = sprintf(<span class="string">'d:\\data_source\\%s\\meshes\\'</span>,char(sub));0098 p.mesh.file = sprintf(<span class="string">'%s_scalp.wfr'</span>,char(sub));0099 p.mesh.type = <span class="string">'emse'</span>;0100 p = mesh_open(p);0101 0102 Scalp = p.mesh.data.vertices{1}';0103 0104 <span class="comment">% The electrodes have already been coregistered and the transformed</span>0105 <span class="comment">% coordinates saved, otherwise this code might do the job</span>0106 0107 <span class="keyword">if</span> coregister,0108 0109 <span class="comment">% Get surface fiducials from mriFID struct above</span>0110 Nfid = strmatch(sub,mriFID.sub);0111 <span class="comment">% 3x3, nasion, right, left fiducial points in rows</span>0112 p.mriFID = mriFID.xyz{Nfid};0113 0114 <span class="comment">% Load the electrode data</span>0115 p.elec.path = sprintf(<span class="string">'d:\\data_source\\%s\\meshes\\'</span>,char(sub));0116 p.elec.file = sprintf(<span class="string">'%s_124fit.txt'</span>,char(sub));0117 p.elec.plot = 0;0118 p = elec_open(p);0119 0120 <span class="comment">% Get electrode fiducials</span>0121 Efid = [p.elec.data.nasion; p.elec.data.rpa; p.elec.data.lpa];0122 0123 <span class="comment">% Calculate coregistration transform</span>0124 T = elec_coregister(Efid,p.mriFID);0125 <span class="comment">% Create the PCS struct</span>0126 PCS.R = T([1:3;1:3]);0127 PCS.t = T(4,1:3);0128 <span class="keyword">end</span>0129 0130 <span class="keyword">if</span> elecplot,0131 patch(<span class="string">'vertices'</span>,p.mesh.data.vertices{1},<span class="string">'faces'</span>,p.mesh.data.faces{1},<span class="keyword">...</span>0132 <span class="string">'FaceColor'</span>,[1 0 0],<span class="string">'Edgecolor'</span>,<span class="string">'none'</span>,<span class="string">'FaceAlpha'</span>,.6);0133 lighting phong, material dull, camlight headlight, hold on0134 <span class="comment">% Load the electrode data</span>0135 p.elec.path = sprintf(<span class="string">'d:\\matlab\\brainstorm_v1\\studies\\%s\\'</span>,char(sub));0136 p.elec.file = sprintf(<span class="string">'%s_channel.mat'</span>,char(sub));0137 p.elec.type = <span class="string">'brainstorm'</span>;0138 p.elec.plot = 0;0139 p = elec_open(p);0140 plot3(p.elec.data.x,<span class="keyword">...</span>0141 p.elec.data.y,<span class="keyword">...</span>0142 p.elec.data.z,<span class="string">'bo'</span>)0143 daspect([1 1 1]); axis tight0144 mouse_rotate0145 <span class="keyword">return</span>0146 <span class="keyword">end</span>0147 0148 0149 <span class="comment">% Maybe use FSL FAST result here?</span>0150 Segment = [];0151 0152 p.mri.data.fileprefix = sprintf(<span class="string">'%s'</span>,char(sub));0153 <a href="avw2brainstorm.html" class="code" title="function avw2brainstorm(avw,Segment,Scalp,PCS,Comment)">avw2brainstorm</a>(p.mri.data,Segment,Scalp,PCS);0154 0155 cd ..0156 0157 <span class="keyword">end</span></pre></div><hr><address>Generated on Fri 21-May-2004 12:38:21 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> © 2003</address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -