从MRI到3D Modeling

IU的Psychological & Brain Science部门每个学期都进行着各式各样的项目在招募志愿者。这些实验的范围从面对面采访,调查问卷,基于电脑的任务,再到跟机器人互动,头戴EEG(脑电图描记器)在校园逛一圈,或戴着VR头显在MRI(核磁共振成像)里玩刺激的游戏。大部分都是有偿的。去年我在参加了一个神经语言学相关的实验,需要被试者躺在核磁共振里完成一系列语言学的任务。在完成长达一小时的枯燥的反复的语义理解任务后,我获得了一张包含我自己的脑成像光盘,以及40刀现金。

这几天我把光盘找了出来,在网上找了教程,把这些数据转换成3D模型,用3D打印机打印出了我的大脑。

  

主要参考的是Nikki Marinsek的How to 3D print your brain(阅读原文). Nikki这篇教程写于2015年,那会儿3D打印还没有现在这么普及,价格也相对较高。遵循她的教程所建的模型,左右半脑是分开的,我猜这可能跟她有神经动力学PhD的背景有关。虽然Nikki在2017年对她的教程做了更新,但距离现在也有1年多了。我在这个教程中做了一些更新,并且加入了新的步骤。

第一步:准备

去Psychological and Brain Science逛一圈,看看墙上有哪些用到MRI的实验在招募志愿者。邮件联系负责人,预约时间,完成MRI实验,获取关于你的脑成像。读取光盘,把文件夹传到自己的电脑里。检查是否含有名为DICOM的文件夹,并且进入子目录,查看是否含有后缀为.dcm的文件。

如果你的文件都有.dcm后缀,请直接跳过以下内容。

我的DICOM文件夹里有200多个无后缀文件,可能跟我使用的电脑是MacOS有关,Windows和Linux不清楚。接下来我们用OsiriX Lite把这些文件转换成.dcm。

下载OsiriX Lite,需要输入邮箱,下载链接在邮件里。下载完成后,打开OsiriX Lite:

Import -> DICOM (选取的是整个文件夹) -> Export -> 得到一个新的包含所有.dcm文件的文件夹

需要注意的是,最好是T1类型的解刨成像。如果你不知道自己的脑部成像类型,可以问问给你做实验的人。

第二步:配置

下载并安装FreeSurfer,这是一个由哈佛计算神经影像实验室开发的开源软件,用于分析和可视化结构性或功能性脑部成像。仅限Linux和MacOS,不支持Windows。如果你的电脑操作系统是Windows,可以使用虚拟机。具体步骤我在这里不做阐述,google一下就有。

MacOS

1. 下载FreeSurfer,点此(https://surfer.nmr.mgh.harvard.edu/fswiki/DownloadAndInstall)进入下载页面。

2. 双击运行FreeSurfer的安装包,留意README里的内容,我看到的是这样:

在Terminal中输入:

$> touch ~/.bash_profile; open ~/.bash_profile

修改你的.bash_profile,把README中的指令复制进去。根据使用情况的不同,.bash_profile的内容也有所差异。以下是我的:

3. 下载XQuartz(https://www.xquartz.org), 以便运行FreeSurfer。

4. 获取FreeSurfer的License(https://surfer.nmr.mgh.harvard.edu/registration.html)。填完之后会收到一份邮件,讲附件license.txt保存到FreeSurfer文件夹中。在MacOS里,FreeSurfer在Application中。如图:

Linux

1. 打开Termianl,输入以下指令:

$> tar -C /usr/local -xzvf freesurfer-Linux-centos6_x86_64-stable-pub-v6.0.0.tar.gz

2. bash下输入:

$> export FREESURFER_HOME=/usr/local/freesurfer

$> source $FREESURFER_HOME/SetUpFreeSurfer.sht

tcsh下输入:

$> setenv FREESURFER_HOME /usr/local/freesurfer

$> source $FREESURFER_HOME/SetUpFreeSurfer.csh 

在电脑上安装并配置好FreeSurfer后,要指定数据的路径(这一步MacOS和Linux都需要)

bash(MacOS中Terminal自带bash):

$> export SUBJECTS_DIR=

tcsh:

$> setenv SUBJECTS_DIR

在MacOS中,可以直接把文件拖到temrinal中,获取路径。

第三步:建模

打开Terminal,输入以下指令建立FreeSurfer:

$> source /Applications/freesurfer/SetUpFreeSurfer.sh  

$> recon-all -i -subjid -all  

举个例子,如果选择DICOM文件夹中名为IM-0001-0020.dcm的文件,该文件路径是/Users/hotthoughts/Desktop/brain/DICOM/IM-0001-0020.dcm 。假设用于储存模型的新文件夹命名为my_3d_brain的话,我们输入的指令如下:

$> recon-all -i /Users/hotthoughts/Desktop/brain/DICOM/IM-0001-0020.dcm -subjid my_3d_brain -all

接着需要调用recal-all函数来建模,把改成DICOM文件中的任意一个.dcm文件的路径,是用于储存建模数据的新文件夹的名字。

完成这一步后,如果一切顺利的话,后台就会开始分析数据并且给你的大脑建3D模型了。这一计算过程的耗时可能需要5~20小时。在Macbook Pro 256GB 16RAM上,我只花了大概5个小时。

切记不要让电脑在计算过程中进入睡眠状态。我使用Amphetamine来保持电脑活跃,在App Store中可以下载。Linux的话,推荐Caffeine.

分析完成后,所有输出数据都在你之前命名的文件夹中。在Termianl中进入子文件夹surf ,里面含有脑部表面重建的所有文件。我们需要把文件的格式转换到可用于3D打印的 .stl格式。用以下指令:

$> mris_convert lh.pial lh.pial.stl

$> mris_convert rh.pial rh.pial.stl

注:你需要懂一点shell,在terminal中进入surf。再执行这两条命令。换句话说,你需要位于surf目录下才能执行这两条命令。

以上分别转换了你的左右半球。

第四步:打印

优化大脑表面

目前我们的lh.pial.stl和rh.pial.stl还是比较粗糙的(如下图),用其他工具让脑子的表面磨皮使其光滑。我在这里介绍用Meshlab的Laplaican Smooth。点此(http://www.meshlab.net/#download)下载Meshlab。

用Meshlab打开lh.pial.stl,在上方工具栏,Fliters -> Smoothing, Fairing and Deformation -> Laplaican Smooth。在弹出窗口点击apply,然后保存。对rh.pial.stl重复这个步骤。

合并左右半球

左右半球的3D模型已经可以打印了,但是,我们也可以把左右半球合成一个完整的大脑。我用的是Meshmixer来合并两个3D模型。点此(http://www.meshmixer.com/download.html)下载Meshmixer。

下载完成后,再Meshmixer中打开lh.pial.stl,再导入rh.pial.stl。点击Combine,左右半球就合并成一个完整的?了。

导出,保存。可以打印了!

送去3D打印

我自己没有打印机,所以考虑了两种途径:

1. 使用3D打印服务的初创公司,例如3DHub,Shapeways等。优点是可选择的打印材料非常之多,缺点是价格高,时间久。

2. 在学校的3D打印实验室打印。优点是便宜,快捷。缺点是可选择打印材料只有几种。

如果你是IU的,可在这里(https://3dprint.uits.iu.edu)查看IUTS 3D Print Lab使用的器材和打印材料。

点此(https://3dprint.uits.iu.edu/request/index.html)提交打印请求。价格是$0.2每克。如果重量不满5刀,则会收取5刀的费用。

以下是我询问IUTS 3D Print Lab打印大脑的价格:

Scale Weight (grams) Cost
100% 622 $124.40
50% 124 $24.80
30% 39 $7.80
25% 26 $5.20

提交完请求后,工作人员会给你回邮件协商。协商满意后,要去给CrimsonCard充足够的钱,工作人员会在CrimsonCash上扣除相应的钱。打印好了工作人员会给你发邮件。我的大脑隔了一周才打印好。成品超级好,打印材料我选的Pearl(珍珠白),这是IUTS 3D Print Lab提供的最接近大脑的颜色了。当然如果你选择专业的3D打印公司,会找到接近大脑肤质的粉色材料。


如有任何3D建模/打印的疑问,欢迎后台留言。

(谢谢)

3d需要学linux_我的脑子—从核磁共振图像到3D打印相关推荐

  1. python图像处理:核磁共振图像(3D)的缩放

    基于skimage的transform模块,实现3D图像的缩放(reszie),.nii格式图像. 1. 代码功能:实现91*109*91图像,压缩为56*56*56大小 结果示意: size: 10 ...

  2. 3D建模学什么?细分的话,有这么多方向

    3D建模,我们经常听到的名字,现在很多高校开设了这门课程,但关于3D建模你了解多少? 什么是3D建模? 3D,Three-dimensional,三维图形,3D建模简单来讲就是利用三维软件构建出来的具 ...

  3. 想知道3D游戏建模师每天都在做什么吗?3D游戏建模的那些事

    想知道3D游戏建模师每天都在做什么吗?3D游戏建模的那些事 1.建模师的主要工作? 在游戏公司里,游戏建模主要分为3D场景建模和3D角色建模. 3D场景师的工作是根据原画设定及策划要求制作符合要求的3 ...

  4. CVPR 2017精彩论文解读:综合使用多形态核磁共振数据的3D生物医学图像分割方法 | 分享总结...

    雷锋网 AI 科技评论按:计算机视觉盛会 CVPR 2017已经结束了,雷锋网 AI 科技评论带来的多篇大会现场演讲及收录论文的报道相信也让读者们对今年的 CVPR 有了一些直观的感受. 论文的故事还 ...

  5. 游戏3D建模入行想要做到月薪8K,这些3D工具必不可少

    近年来游戏行业一直呈现火热的发展态势,人才紧缺的现象也随之越发明显.大多数人可能会觉得需要丰富的经验才能制作细致的游戏模型,因为在市场中对于手绘建模的需求再减少,越来越需要掌握次世代流程的3D建模师, ...

  6. 3D Slicer画病灶可能产生的问题+核磁共振影像数据处理-14-3d slicer画病灶“三宗罪”|常见bug(错误)汇总

    3D Slicer画病灶可能产生的问题+核磁共振影像数据处理-14-3d slicer画病灶"三宗罪"|常见bug(错误)汇总 讲解视频内容请移步Bilibili: https:/ ...

  7. 3d卷积神经网络_HSNets:使用卷积神经网络从2D轮廓预测3D人体模型

    文章摘要 本文使用人体二进制轮廓或阴影图像进行3D人体建模.利用参数化的人体模型,训练卷积神经网络(CNN)来学习从输入到形状参数的全局映射,这些参数用于在中性姿势下重构人体模型.同时还利用两个相互正 ...

  8. 3D物体分类---ModelNet .OFF格式生成多视角图像(Blender方法之第二步)

    3D物体分类---ModelNet .OFF格式生成多视角图像(Blender方法之第二步) 强烈建议使用Blender方法!!! 说明 2 python调用Blender生成多视角图像 2.1 Bl ...

  9. 用单张2D图像重构3D场景

    用单张2D图像重构3D场景 zouxy09@qq.com http://blog.csdn.net/zouxy09 之前看到Stanford大学的机器学习公开课程的lecture01中,Andrew ...

最新文章

  1. oracle11g自带优化吗,windows下Oracle11g的优化教程
  2. 谷歌前CEO:美国科技优势面临最危险时刻
  3. java递归url目录_Java递归实现某个目录下所有文件和目录
  4. 这场景像不像你修Bug的样子?
  5. WebRTC 之ICE浅谈
  6. 机器学习著名定理之—No Free Lunch定理详解
  7. log4j中用变量配置日志输出文件位置
  8. 防火墙未来的技术发展趋势
  9. MySQL中使用CASE出错,如何在MySQL中正确使用CASE..WHEN
  10. 右键计算机菜单,右键菜单设置方法步骤【图文】
  11. 使用svn进行本地代码管理
  12. 之前安装vmware player卸载失败出现msi '' failed,就安装不vmware station
  13. 找回计算机管理账户,怎样找回原来的电脑用户账号?
  14. 基于SpringBoot的宠物医院管理系统
  15. 两张ID卡,完美消除互相干扰合二为一,实现“一卡”正反两用。
  16. python转换字符编码_python 字符串编码转换
  17. linux学习计划书
  18. Cisco设备telnet登录设置
  19. delta和gamma中性_Delta中性
  20. VB虚拟机中ubuntu Linux系统安装使用MCNP5

热门文章

  1. ok计数器使用教程_EEGLAB教程系列数据叠加平均{1}(Data averaging)|EEGLAB(7)
  2. SAP UI5 应用开发教程之十三 - 如何添加自定义 CSS 类
  3. SAP Spartacus travis ci-scripts 下面 e2e-cypress.sh 的实现分析
  4. 在 Excel 里使用 ODBC 读取 SAP BTP 平台上 CDS view 的数据
  5. SAP ABAP 编程语言里的%_c_pointer代表什么
  6. 安装 Microsoft Command Line Utilities
  7. ABAP 中的变量和常量
  8. SAP Kyma能像SAP BYD那样做field extension吗
  9. SAP Spartacus的persist focus,触发map set的条件
  10. SAP Spartacus CmsComponentConnector