热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c++打印html文件_我的脑子—从核磁共振图像到3D打印

从MRI到3DModelingIU的Psychological&BrainScience部门每个学期都进行着各式各样的项目在招募志愿者。这些实验的范围从面对面采访,调
从MRI到3D Modeling

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

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

b22ced4cf12e2917cd8bc97f58631af9.png  2c3edec023341a3617ef9c2ba45e622f.png

主要参考的是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的内容也有所差异。以下是我的:

17b7315f24438f005fd225914ac4dd2a.png

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

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

97f4cc552e29b20c4311afb11a061e98.png

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。

330ad531ca4085b05752280fcbc5cec5.png

用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,左右半球就合并成一个完整的?了。

2cc9c14674add7d031b6abf6409a0642.png

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

送去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打印大脑的价格:

ScaleWeight (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建模/打印的疑问,欢迎后台留言。

(谢谢)




推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • 在Windows10系统上使用VMware创建CentOS虚拟机的详细步骤教程
    本文详细介绍了在Windows10系统上使用VMware创建CentOS虚拟机的步骤,包括准备条件、安装VMware、下载CentOS ISO文件、创建虚拟机并进行自定义配置、设置虚拟机的ISO与网络、进行安装和配置等。通过本文的指导,读者可以轻松地创建自己的CentOS虚拟机并进行相应的配置和操作。 ... [详细]
  • #这段代码的作用是实现在地图中随机导航。在ros下需要先加载机器人和相关配置,详请参阅古-月的博客http:blog.csdn.nethcx25909articledetails121 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • UMTS基础知识汇总
    协议框架23G接口UMTS实体EntityNameDescriptionAuCAuthenticationCenterCBCCellBroadcastCenterC-RNCCon ... [详细]
author-avatar
ni是我的另一半
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有