工具介绍
1. PyMVPA
解析:PyMVPA(Python MultiVariate Pattern Analysis)是一个用来简化大型数据集的模式分类分析的Python模块。
提供一些高级的抽象的常用的处理步骤和一些常用算法的实现,而且它不仅仅局限于神经影像学领域。Windows下安
装方式为pip install pymvpa-0.4.8-cp27-none-win_amd64.whl。
2. Nilearn
解析:Nilearn是一个能够快速统计学习神经影像数据的Python模块。它利用Python语言中的scikit-learn工具箱和一些进行预测建模,分类,解码,连通性分析的应用程序来进行多元的统计。
3. Scikit-learn
解析:Scikit-learn是基于Scipy为机器学习建造的的一个Python模块,它的特色就是多样化的分类,回归和聚类的算法包括支持向量机,逻辑回归,朴素贝叶斯分类器,随机森林,Gradient Boosting,聚类算法和DBSCAN等。
4. Scikit-image
解析:Scikit-image是用于图像处理的Python包,使用原生的NumPy数组作为图像对象。
5. PyOpenCV(或CV2)
解析:PyOpenCV(或CV2)是一个用Python实现的OpenCV的API。但是,PyOpenCV与CV2的区别呢?
6. PyOpenGL
解析:PyOpenGL是一个用Python实现的OpenGL的API。
7. PIL
解析:PIL(Python Imaging Library)是Python中最常用图像处理库,它的功能非常强大,并且API非常简单易用。
8. FSL
解析:常用的分析fMRI的软件有SPM,FSL和AFNI。官网对FSL的介绍:FSL is a comprehensive library of image
analysis and statistical tools for fMRI, MRI and DTI brain imaging data. The suite consists of various command line
tools, as well as simple GUIs for its core analysis pipelines. Among others, FSL offers implementations of standard
GLM analysis, white matter tractography, tissue segmentation, affine and non-linear co-registration, and
independent component analysis.
FSL提供的工具,如下所示:
(1)Functional MRI: FEAT, MELODIC, FABBER, BASIL, VERBENA
(2)Structural MRI: BET, FAST, FIRST, FLIRT & FNIRT, FSLVBM, SIENA & SIENAX, fsl_anat
(3)Diffusion MRI: FDT, TBSS, EDDY, TOPUP
(4)GLM / Stats: GLM general advice, Randomise, Cluster, FDR, Dual Regression, Mm, FLOBS
(5)Other: FSLView, Fslutils, Atlases, Atlasquery, SUSAN, FUGUE, MCFLIRT, Miscvis, POSSUM, BayCEST
FSL安装,如下所示:
(1)下载FSL
(2)安装FSL
- sudo su
- mkdir /opt/software
- tar -zxvf fsl-5.0.9-centos6_64.tar.gz
(3)配置环境变量
- vim ~/.bashrc
- FSLDIR=/opt/software/fsl
- . ${FSLDIR}/etc/fslconf/fsl.sh
- PATH=${FSLDIR}/bin:${PATH}
- export FSLDIR PATH
说明:source ~/.bashrc即可,不需要重启计算机。
可能遇到的问题,如下所示:
- (1)error while loading shared libraries: libmng.so.1: cannot open shared object file: No such file or directory
解析:
- sudo apt-get install liblcms1 (http://packages.ubuntu.com/precise/libmng1)
- sudo dpkg -i libmng1_1.0.10-3_amd64.deb
9. FreeSurfer
解析:FreeSurfer是一个处理大脑3D结构像数据,进行自动皮层和皮下核团分割的软件。该软件是一款用于分析脑神
经数据的工具集合,它提供了一系列的算法来量化人脑的功能、连接以及结构属性,能对高分辨率的磁共振图像进行
三维重建,生成展平或胀平图像,并能得到皮质厚度、面积、灰质容积等解剖参数。
FreeSurfer安装,如下所示:
(1)配置环境变量
export FREESURFER_HOME=/home/ssw/freesurfer
source $FREESURFER_HOME/SetUpFreeSurfer.sh
(2)yum install tcsh
(3)将license复制到/home/ssw/freesurfer中。
(4)分别输入tkregister2、tkmedit、tksurfer 和recon-all --help。
(5)recon-all -s bert -autorecon1。
10. Slicer
解析:3D Slicer是一个跨平台的,免费和开源的数据可视化和医学图像计算软件包。
11. nipy,nibabel
解析:Python医疗影像开发包。pip install nipy-0.4.0-cp27-none-win_amd64.whl;pip install nibabel。
12. VTK
解析:VTK(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。
VTK是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个
类,还包含有几个转换界面,可以通过Python语言使用VTK。
参考文献:
[1] PyMVPA:http://www.pymvpa.org/
[2] Scikit-learn:https://scikit-image.org/
[3] PIL:http://www.pythonware.com/products/pil/
[4] PyOpenGL 3.x:http://pyopengl.sourceforge.net/
[5] 核磁共振成像:https://www.zhihu.com/topic/19613128/top-answers
[6] FSL:http://neuro.debian.net/install_pkg.html?p=fsl-complete
[7] ubuntu 12.04安装fsl:https://blog.csdn.net/lj695242104/article/details/17059625
[8] FreeSurfer使用手册:https://read.douban.com/column/594403/
[9] 3D Slicer:https://www.slicer.org/
[10] FreeSurfer Download and Install:http://surfer.nmr.mgh.harvard.edu/fswiki/DownloadAndInstall/
医学图像处理
医学图像数据格式
医学图像采用数字成像和通信(DICOM)作为存储和交换医学图像数据的标准解决方案。这个标准的第一个版本是在1985年发布的。发展到现在,该方案有了一些改变。该标准使用文件格式和通信协议。
文件格式 - 所有患者医疗图像都以DICOM文件格式保存。除了其他图像相关数据(例如用于拍摄图像的设备以及医疗处理的一些背景)之外,该格式具有关于患者的PHI(受保护的健康信息),例如姓名,性别,年龄。医学影像设备创建DICOM文件。医生使用DICOM查看器,可显示DICOM图像的计算机软件应用程序,读取和诊断图像中的发现。
通信协议 - DICOM通信协议用于搜索档案中的成像研究,并将成像研究恢复到工作站以显示。连接到医院网络的所有医疗成像应用程序都使用DICOM协议来交换信息,主要是DICOM图像,还包括患者和手术信息。还有更先进的网络命令,用于控制和跟踪治疗,调度程序,报告状态,分担医生和成像设备之间的工作量。关于DICOM标准细节,在这里推荐一个很好的博客http://dicomiseasy.blogspot.com
分析DICOM图像
用于分析DICOM图像的一个很好的python包是pydicom。初次之外,我们还可以用pandas,scipy, skimage,mpl_toolkit 进行数据处理和分析。
接下来,我们介绍一些可以获得DICOM 数据库,如下:
kaggle competitions and Datasets
- https://www.dicomlibrary.com/
- https://www.osirix-viewer.com/resources/dicom-image-library/
- Visible Human Datasets
- http://noodle.med.yale.edu/zubal/
在医学影像处理中使用的到的深度学习的模型框架主要有:
- SAE(stack auto-encoder) 无监督学习方案,逐层训练,得到特征描述为主
- RBM(restricted Boltzmann machine) 无监督学习方案,与SAE 类似
- CNN(convolutional neural network)
- 卷积神经网络,使用最为广泛,可以用来提取图片特征或者直接完成分类检测等任务
- RNN(recurrent neural network) 循环神经网络,用来获取时序上的信息,在CT等逐行扫描图像中使用
- U-net (with a single downsampling stage)
- 类似于带short-cut的全卷机网络,用来融合不同尺度的图像的特征
- FCNN(fully convolutional neural network)
- 全卷机网络,可以获取与原图相同分辨率的图片,常用于分割等任务 FRCNN(Faster Region-proposal based neural network)
深度学习框架
- caffe
- tensorflow
- torch
- Theano
暂时没有使用到的深度学习技术
- VAE
- GAN
State of Arts
深度学习在医学图像领域的一些限制
缺少高质量的标注的训练样本,因此训练出来的模型可能是过拟合的或者说推广性不好,因此需要将的到的模型放在各种情况下测试推广性]
深度学习得到的模型是一个黑盒子,无法解释其有效性,在一些特殊的情况下会出现非常奇怪无法解释的问题,因此在医疗行业中的接受度也是一个问题[^doc3]
在商业系统中使用临床上的图片资料会存在法律和伦理上的问题而不使用这样的样本无法进一步的提高深度学习模型的水平
2D VS 3D
从文献综述来看,大部分的工作都是基于2D图像的,其实在医学图像中,CT 和 MRI都是3D的数据2D化的结果,在医疗图像处理的算法中3D重建等等也是非常重要的一大类算法,但是现有的基于3D的算法一来耗时比较高,二来并没有比基于2D的算法提高很多,使用2D还是3D是一个值得思考的问题。
Feature vs Result
从文献综述中来看,稍微久远一些的算法就是把CNN当作是一个特征提取的算子获得图像的描述特征而最新的一些方法直接将CNN的结果就作为最终的输出结果来使用, 这里喔感觉直接使用CNN的输出作为结果,会涉及到文献中所说的黑盒子的限制,可解释型一般是比较差的,而作为特征来使用解释性可能会好一些,因为后续的一些后处理中可以增加的规则类的比较多,解释性会更佳
过滤 vs 诊断
一直以来作者觉得在医疗行业中,计算机能做的最大的贡献就是帮助医生做大量医学影像的过滤工作,至于使用诊断上最多也只是一个辅助的诊断工具,而机器学习到达了深度学习的时代,有些本来以为不太可能的任务都被深度学习算法一个一个的攻克了,在未来的工作做,计算机深度学习是不是可能独立的进行本属于医生独享的诊断工作我还是不得而知,然后我们可以知道的是,技术的发展使得过滤的正确率大大的提高,极大的提高生产的效率,这一方面是肯定有助于医疗行业的,相应深度学习在医疗领域的前景还是很广阔的。
原文:https://zhuanlan.zhihu.com/p/27568550
MR图像
磁共振成像(MRI)是无线电成像领域中使用最广泛的技术。作为一种动态且灵活的技术,MRI可以实现多变的图像对比度,该过程的实现是通过使用不同的脉冲序列和改变成像参数对应纵向松弛时间(T1)和横向松弛时间(T2),T1加权和T2加权成像的信号强度与特定组织的特征有关[10]。MR成像中,图像的对比度依赖于相位对比脉冲序列参数,最常见的脉冲序列是T1加权和T2加权自旋回波序列[12]。通过MR成像可以观察大脑、肝脏、胸、腹部和骨盆的结构细节,这有利于诊断检测或治疗[13]。
MRI对软组织有很好的成像能力;有非常高的分辨率;具有较高的信噪比;利用不同的脉冲序列可以得到对比度多变的多通道图像,进而用于不同解剖结构的目标分割和分类[14]。然而,在MRI中存在多种伪影,如部分容积、随机场噪声、强度不均匀性、梯度、运动、环绕、吉布斯振铃、磁化性等[15]。此外,相比于CT图像,MRI的获取需要相当长的时间,且通常条件下很难得到统一的图像质量。
CT图像
医学CT成像设备使用X射线(一种电磁波)得到人体的结构和功能信息。CT影像是基于X射线吸收剖面的重构图像,由于不同物质和组织吸收X射线能力不同,因此X射线可用于诊断[16]。CT成像作为当前多类疾病实体诊断的金标准,广泛应用于大脑、肝脏、胸部、腹部、骨盆、脊柱等身体部位以及CT血管造影的早期诊断筛查[17]。但是与MR图像相比较,CT图像敏感性和特异性相对较差。
CT成像中的伪影[18]包括:部分容积效应、条形伪影、运动伪影、束硬化伪影、环状伪影、金属伪影等。由于这些伪影的存在给CT图像分割带来了一定的难度,不同组织部位分割精度也不一样[19]。
医学图像分割的特点
医学图像分割是医学图像处理与分析领域的复杂而关键的步骤,其目的是将医学图像中具有某些特殊含义的部分分割出来,并提取相关特征,为临床诊疗和病理学研究提供可靠的依据,辅助医生做出更为准确的诊断[20]。图像分割过程是把图像分割成多个区域,这些区域内部有类似的性质,如灰度、颜色、纹理、亮度、对比度等。医学图像分割的目标是(以放射治疗为例)[21]:(1)研究解剖结构;(2)识别感兴趣区域(即定位肿瘤、病变和其他异常组织);(3)测量组织体积;(4)观察肿瘤生长或治疗中肿瘤体积的减少,为治疗前的计划和治疗中提供帮助;(5)辐射剂量计算。
从医学图像中自动分割出目标是个艰巨的任务,因为医学图像具有较高的复杂性且缺少简单的线性特征;此外分割结果的准确率还受到部分容积效应、灰度不均匀性、伪影、不同软组织间灰度的接近性等因素的影响[22]。针对通常采用的校正技术来说,可以将MR和CT图像中的伪影分类为[23]:(1)需要适当的滤波算法处理的伪影,如噪声伪影、敏感性伪影、存在非清晰边缘的伪影;(2)需要适当图像修复算法的伪影,如运动伪影;(3)需要特定算法的伪影,如部分容积和灰度不均匀性。图像处理领域尽管在已存在很多算法处理上述问题,但是医学图像分割仍然是个复杂和具有挑战性的问题。从医学图像处理过程的角度来看,基于灰度和基于纹理特征技术的分类是常规的分类方式[24]。此外,用机器学习的工具去优化这些图像分割算法是当前较受关注的技术[25].
CT和MR图像的分割主要涉及3个相关问题:变化的噪声、像素灰度分类的不确定性及灰度的非均衡性[26]。图像中单一组织的灰度水平一般是逐渐变化的,且其概率密度服从特定的分布函数,该组织对应的图像区域包含有限的像素(或体素)且满足部分容积平均,然而该区域中的单个像素(或体素)的灰度不与任何一类一致,往往被看作混合组织类[28]。
CT和MR图像分割常用的一些方法有:基于阈值[29]、基于区域[30]、基于形变模型[31]、基于模糊[32]及基于神经网络[34]。
当前,基于深度学习的方法已在图像分割领域取得了显著成就,其分割准确率已超过了传统分割方法。本文在对近几年深度学习和医学图像分割文献研习的基础上,对深度学习方法和常用的图像分割算法进行了深入的研究和比较,总结了各种深度学习方法的优缺点及其在医学图像分割领域的应用,最后展望了深度学习在医学图像分割领域的未来发展。