MRIcroGL中文说明书(人工翻译版)实时交互式渲染MRIcroGL是一个用来展示3D医学影像的程序。通过你的电脑显卡,它可以进行实时交互式渲染。程序内还包括了一些脚本来展示它的功能。可以从NITRC来下载脚本介绍新用户们可以通过运行MRIcroGL的脚本来探索这个软件的特性。高级用户可以创建他们自己的脚本来避免冗长乏味的手动调节。只需从“View”菜单中选择“Scripting”按钮就可以运行或者创建脚本。当一个新的名为“Scripting”窗口打开时,你就可以使用“File”菜单来打开现存的脚本。当前打开的脚本则显示在文本编辑器中,并且你可以选择“Script”菜单中的“Run”来执行这个脚本。指南包含一个详尽的脚本可用命令参考。示例脚本这个脚本可以用来产生光源移动的图像来调整映像。CONSTksteps=220;kAziSpeed=1;kElevSpeed=1;kTime=1;VARi,az,el:integer;BEGINRESETDEFAULTS;BACKCOLOR(255,255,255);LOADIMAGE('ch256');COLORNAME('surface');SHADERADJUST('specular',0.9);FORi:=1TOkstepsDOBEGINaz:=(i*kAzispeed)mod360;el:=(i*kElevSpeed)-60;SHADERLIGHTAZIMUTHELEVATION(az,el);WAIT(ktime);END;END.脑玻璃样脚本这个脚本示范了2014年发布的‘overlayglass’着色器,这个着色器允许你独立的控制背景透明度和重叠影像。这个功能的辅导见demonstrationYouTubevideo。BEGINLOADIMAGE('mni152_2009bet');OVERLAYLOADSMOOTH(true);OVERLAYLOAD('motor');OVERLAYMINMAX(1,2.5,2.5);BACKCOLOR(255,255,255);SHADERNAME('overlay_glass');SHADERADJUST('edgeThresh',0.6);SHADERADJUST('edgeBoundMix',0.72);END.Clipping脚本这个脚本示范了2014年发布的‘overlay’着色器允许你独立的控制背景透明度和叠加影像。这个着色程序允许你决定剪贴的内容是只用在背景,还是同时用在背景和叠加影像上。你可以通过观看YouTube上overlayshaderdemonstrationvideo的提点来明白怎样来用这个着色器。BEGINLOADIMAGE('mni152_2009bet');BACKCOLOR(128,169,255);OVERLAYLOADSMOOTH(true);OVERLAYLOAD('motor');OVERLAYMINMAX(1,-4,-4);OVERLAYLOAD('motor');OVERLAYMINMAX(2,4,4);CUTOUT(0.0,0.45,0.5,0.75,1.0,1.0);SHADERNAME('overlay');END.挖剪图样脚本这个脚本是示范了产生剪贴画的功能。Note:我分别加载了统计地图“motor”两次和一次来展示当我左对抗右手更加活跃的区域和右手对抗左手工作更加活跃的区域(这是一个[1-1]t检验)。BEGINLOADIMAGE('mni152_2009bet');BACKCOLOR(128,169,255);OVERLAYLOADSMOOTH(true);OVERLAYLOAD('motor');OVERLAYMINMAX(1,-4,-4);OVERLAYLOAD('motor');OVERLAYMINMAX(2,4,4);CUTOUT(0.0,0.45,0.5,0.75,1.0,1.0);SHADERNAME('overlay');END.壳体脚本这个脚本突出了组织表面(亮的体素靠近暗的体素强烈的梯度数量级区域)。这个功能隐藏的区域图像亮度并没有改变,这导致脑室和皮质表现为一个中空的薄壳。BEGINLOADIMAGE('mni152_2009bet');OVERLAYLOADSMOOTH(true);OVERLAYLOAD('motor');BACKCOLOR(255,255,255);OVERLAYMINMAX(1,2,2);SHADERNAME('overlay_shell');SHADERADJUST('colorTemp',0.0);CLIPAZIMUTHELEVATION(0.35,0,140);END.3D马赛克这是通过任何着色器来创建一个3D马赛克的方法。我更喜欢‘explodedbrain’工具作为一个更简单的方法来交互式的使用并且你也不仅限于正交的切片。详见explodedbrain的一般说明。你可以展示左半球或者右半球通过设定AZIMUTHELEVATION(130,15)orAZIMUTHELEVATION(230,15)。CONSTkSegments=5;VARi:integer;start,thick:single;BEGINthick:=1/kSegments;RESETDEFAULTS;COLORBARVISIBLE(false);BACKCOLOR(255,255,255);LOADIMAGE('mni152_2009bet');OVERLAYLOAD('motor');OVERLAYMINMAX(1,-2,-2);AZIMUTHELEVATION(130,15);FORi:=1TOkSegmentsDOBEGINstart:=(i-1)*thick;CLIPAZIMUTHELEVATION(start,0,180);CUTOUT(0.0,0.0,0.0,1.0,1.0-start-thick,1.0);SAVEBMP('sector'+inttostr(i));END;END.ExplodedBrain这个脚本产生一系列的位图,你可以把这些位图“焊接”起来以此产生一个精美的图像。不同于‘3DMosaic’,这个需要‘Overlay’着色器。这个着色器有个名为“clipThick”的滑动条,可以让你来调整slices(片)平面的厚度。你也可以按下‘overClip’选择框来决定叠加图像是否从slice中突出(或者作为一个脚本使用‘SHADERADJUST(‘overClip’,1)’和‘SHADERADJUST(‘overClip’,0)’)。临界值是‘kSegments’-这里我产生了12个slabs(有厚度的片),你可以调节这个来控制slices的厚薄。这个脚本会产生一系列位图,这样你就可以使用你喜欢的图像编辑器(PS,Acorn,Pixelmator等等)。诀窍是羽化每个图像之间的边缘(这个程序通常包括一个‘magicwand’-如果你如果懂点PS的话你就知道这指的是模糊选择工具,简称魔棒~~呵呵,这样你就能把这些区域弄模糊了。)CONSTkSegments=12;VARi:integer;start,thick:single;BEGINthick:=1/kSegments;RESETDEFAULTS;COLORBARVISIBLE(false);BACKCOLOR(255,255,255);LOADIMAGE('mni152_2009bet');OVERLAYLOAD('motor');OVERLAYMINMAX(1,-4,-4);SHADERNAME('overlay');SHADERADJUST('specular',0.3);SHADERADJUST('overAlpha',0.6);SHADERADJUST('clipThick',thick*0.75);AZIMUTHELEVATION(255,25);FORi:=1TOkSegmentsDOBEGINCLIPAZIMUTHELEVATION(0.001+((i-1)*thick),0,180);SAVEBMP('sector'+inttostr(i));END;END.聚类阈值(ClusterThresholds)统计学地图产生需要通过SPM和FSL等工具,这可以没有阈值(绿色左上图)或者有阈值(绿色坐下图)。自从我们把这些低分辨率的图像来映成到高分辨率图像,使用没有阈值的图像就是一个好的想法:阈值图像是被人工地用虚假值包围起来,因此我们不能轻易篡改边界。Overlays(覆盖图)/Option(选择)/SmoothWhenLoading菜单允许你选择你的插入方法。如果这个选择没有核对,程序将使用最近邻的篡改手段并且你的图像将出现锯齿(左边的玻璃样脑)-如果你的图像以前就有阈值,那么这是最恰当的。然而,MRIcroGL有益处这些小簇的命令(右边的图像)。如果选择“SmoothWhenLoading”这一条,图像就会被三线滤波器进行平滑处理–这看起来非常霸气(中间的玻璃样脑)而且如果你的原始资料先前没有设定阈值也是恰当的。如果你的原始分析使用的是一种聚类阈值,那么你肯定会想用overlay窗口下的文件/AddOverlay(RemoveSmallClusters)选项。这个选项将移除小于已设定尺寸的簇。你也可以通过称为‘overlayloadcluster’的脚本功能。你要提供覆盖图的名称,亮度阈值和最小簇尺寸(立方毫米),并且选择你是否要把这临界覆盖图存到硬盘(trueorfalse)。值得注意的是设定的簇尺寸是以体积算的而不是以立体像素算的:如果你估计资料的一个关于簇随机区域场家族模样差别率的纠错阈值(randomfieldtheoryfamilywiseerrorcorrectedthreshold)至少为32个体素,也即等方向上3mm(3×3×3=27立方毫米/每像素),这样你就可以指定864立方毫米了。在下面的例子中我们保存了亮度超过2.0,至少有1立方厘米的簇的体素(1000立方毫米)并且选择不保存图像到硬盘。BEGINLOADIMAGE('mni152_2009bet');OVERLAYLOADCLUSTER('motor',2,1000,false);SHADERNAME('overlay_glass');END.环境光遮蔽(AmbientOcclusion)由于相对于盖外表面,环境光遮蔽ambientocclusion(环境照明)对隐藏在缝隙中的外表面几乎没有效果(光线照不到皮层沟壑)。为此,把沟槽显示的比脑回暗一些可以让图像显得更真实。MRIcroGL的“occlusion”着色器提供一个滑动器让你可以调整环境光遮蔽的量。下面的两个图像展示了反差很大的环境光遮蔽效果。BEGINLOADIMAGE('mni152_2009bet');OVERLAYLOADSMOOTH(true);OVERLAYLOAD('motor');OVERLAYMINMAX(1,2.6,2.6);BACKCOLOR(255,255,255);SHADERNAME('occlusion');AZIMUTHELEVATION(300,20);END.文件资源使用MRIcroGL最简单的途径是从主页上下载编译版本。然而,这个软件是开源的(如BSDlicense所描述)所以你可以修改和重新编译这个软件。更进一步讲,所有你需要编译的MRIcroGL都是开源的,所以你可以调整这个软件并且把他建立在许多应用平台上(迄今为止:Windows,OSXIntel,Linux32-bitIntel,Linux64-bitIntel)。下载并且安装下面的部分:1.LazarusIDEandFreePascalcompiler(Lazarus1.6orlaterrequired)2.安装“LazOpenGLContext”和“psacalscript”packages。3.获得MRIcroG