医学图像配准 Registration

0,目标:

0.1 内容概括

本文调研做配准的目的是把配准作为一种预处理,而不是作为创新点的调研。所以更多的是涉及到传统的配准方法。主要包含以下几个方面。

1,了解什么是配准?医学图像配准的目的是什么?都有那些配准方式?
2,了解那些名词,MNI,atlas,配准模板等专业名词
3,配准有那些公开的库antspy,配准工具箱等
4,如何进行配准操作? 同一脑部模态内如何配准?

1,什么是配准?

1.1 什么是配准?

Image registration 图像配准,是图像处理研究领域中的一个典型问题和技术难点,其目的在于比较或融合针对同一对象在不同条件下获取的图像,例如图像会来自不同的采集设备取自不同的时间不同的拍摄视角等等,有时也需要用到针对不同对象的图像配准问题。
具体地说,对于一组图像数据集中的两幅图像,通过寻找一种空间变换把一幅图像(浮动图像,moving image)映射到另一幅图像(参考图像,fixed image)上,使得两图中对应于空间同一位置的点一一对应起来,从而达到信息融合的目的。

医学图像配准:
在这两张图片上,很容易看出它们没有对齐,左边相对右边倾斜,虽然我们人类视觉系统还是能把对应的解剖关系连系在一起,但是我们使用计算机分析时确不能够。
image.png
因此,我们希望相同的解剖结构对齐,用坐标表示的话,希望他们在相同的坐标上。如下图
image.png
对齐这些解剖结构的过程就叫做配准(register)
因此,配准的目的也是使相同的解剖结构在同一个位置,便于分析。可以将CT和MRI配准,看同一结构在两个模态上的变化,更易于疾病的诊断。同理PET-MRI等也可以进行配准。不同的MRI序列之间也可以配准。同一个MRI序列,前后做的两次图像也可以配准,等等。

注:其实配准就是解决不同数据的尺度等的大小不一,为了定量分析而做的标准化操作。
注:如果是配准脑部,最好先去头骨等组织。因为我们只希望配准脑组织,并不关心鼻子,眼睛是否配准,而他们会干扰配准的速度和准确性。
image.png

1.2 配准的分类

根据准则不同,配准方法可以有以下分类方式:
image.png

1.2.1 根据空间维数

若仅考虑空间维数,可以划分为2D/2D, 2D/3D, 3D/3D。若考虑时间序列因素,还存在对在不同时刻提取的两幅图像进行配准的问题。

1.2.2 根据算法所基于的特征及相似性测度

  • 基于内部特征
    内部特征指的是从图像内部本身提取的信息:
    • 基于特征点:在几何上有特别意义的可以定位的特征点集(比如不连续点,图形的转折点,线交叉点等),在医学图像上更可以是具有解剖意义的点。
    • 基于表面:用分割的方法提取出感兴趣的部分的轮廓(曲线或曲面),以作为用来比较的特征空间[4][5]
    • 基于像素值:利用整幅图像的像素或体素(Intensity-Based)来构成特征空间。根据像素值的统计信息来计算相似性测度又可划分为最小二乘法,傅里叶法,互相关法,互信息法等等。
  • 基于外部特征
    在医学图像中,通过在患者身上固定标记物或向体内注入显影物质以获得在图像上的确定的标记点,称为外部特征点。

1.2.3 根据变换性质

对图像进行空间变换可以分为刚体变换(rigid)和非刚体变换(non-rigid,deformable)。通常有刚体变换,仿射变换,投影变换和曲线变换。
(1) 刚体变换: 所谓刚体 ,是指物体内部任意两点间的距离保持不变。例如 ,可将人脑看作是一个刚体。处理人脑图像 ,对不同方向成像的图像配准常使用刚体变换 [4] 。 刚体变换可以分解为旋转和平移
(2) 仿射变换: 仿射变换 [5] 将直线映射为直线 ,并保持平行性。具体表现可以是各个方向尺度变换系数一致的均匀尺度变换或变换系数不一致的非均匀尺度变换及剪切变换等。 均匀尺度变换多用于使用透镜系统的照相图像 ,在这种情况下 ,物体的图像和该物体与成像的光学仪器间的距离有直接的关系 ,一般的仿射变换可用于校正由 CT 台架倾斜引起的剪切或 MR梯度线圈不完善产生的畸变。
(3) 投影变换: 与仿射变换相似 ,投影变换 [6] 将直线映射为直线 ,但不再保持平行性质。投影变换主要用于二维投影图像与三维体积图像的配准。
(4) 非线性变换: 非线性变换 [7] 也称做弯曲变换 (curved transformation) ,它把直线变换为曲线。 使用较多的是多项式函数 ,如二次、三次函数及薄板样条函数。 有时也使用指数函数。 非线性变换多用于使解剖图谱变形来拟合图像数据或对有全局性形变的胸、腹部脏器图像的配准。
image.png

1.2.4 根据优化算法

当比较特征采用特征点集的形式时,可以通过联立方程组来找到变换的解。但一般情况下,配准问题都会转化为求解相似性测度最优值的问题,在计算方法中通常需要采用合适的迭代优化算法,诸如梯度下降法、牛顿法、Powell法、遗传算法等。

扫描二维码关注公众号,回复: 16518075 查看本文章

1.3 医学图像配准

1.3.1 根据图像模态

由于医学成像设备可以提供关于患者不同信息不同形式的图像(计算机断层扫描CT,核磁共振MRI,正电子发射断层成像PET,功能核磁共振fMRI等),所以根据模态又可以划分为单模态多模态(Multi-modal)。
( 1)单模 ( monomodality )医学图像配准: 是指待配准的两幅图像是用同一种成像设备获取的。
( 2)多模 ( multimodality)医学图像配准:是指待配准的两幅图像来源于不同的成像设备

1.3.2 根据主体

可分为Intrasubject(图像来自于同一病人,Intersubject(来自不同的病人)和Atlas(病人数据和图谱的配准)三种。

(1)自身图像配准(intra-subject)
待配准的图像可以是同一个人的 ,属于患者自身图像配准 (intra-subject)。对同一病人在不同时间获取同一器官或解剖部位的图像 ,可以用于对比 ,从而监视疾病的发展及治疗过程。如果没有局部的组织切除 ,这种配准一般用刚体变换就可以了。

(2)人间图像配准 (inter-subject)
除此之外 ,有时要将被试者的图像与典型正常人相同部位的图像对比 ,以确定被试者是否正常;如果异常 ,也许还要与一些疾病的典型图像对比 ,确定患者是否属于同类。 这些都属于不同人间的图像配准 (inter-subject) [10] 。由于个体解剖的差异 ,后者的配准显然要难于前者。

(3)图像与图谱配准 ( Atlas Method)或与物理空间配准
由于不同人在生理上存在差异 ,同一解剖结构的形状、大小、位置都会很不相同 ,这就使不同人的图像配准问题成为当今医学图像分析中的最大难题。 在对比和分析不同的医学图像时 ,很难精确找出对应的解剖信息。这要求有一个详细标记人体各个解剖位置的计算机化的标准图谱
常见的方法大致有两类:** 一是借助一个共同的标准来比较** ,例如要对两个病人的 PET 或 MR图像 [11] 进行比较 ,首先要把二者的图像都映射到一个共同的参考空间去 ,然后在此空间中对二者进行比较 ,使用较多的是** Talairach标准空间** ,可以对不同的人脑图像进行比较;**二是非线性形变法 **,模仿弹性力学方法 ,将一个人的 3D图像逐步变换 ,使它最终能较好地与另一个人的3D图像最佳匹配。

2 医学图像配准专业名词及知识

MNI,atlas,配准模板

2.1 配准模板:

说到registration,就必须要首先介绍一下模板.由于人脑存在个体差异, 扫描时候的图像在空间中的坐标也不同, 研究时必须要首先消除个体差异,统一坐标, 也就是需要将被试人员的大脑全部”订正/配准”到标准模板上, 这样后续才能进行统计分析.

2.2 图像空间

图像空间包含3种:标准空间,结构空间,功能空间
image.png
每个空间又可以有不同的分辨率,比如标准空间模板MNI152,就有1mm,2mm,0.5mm的分辨率。
image.png
提供了各种分辨率,各种需求的模板。我们可以将自己的数据配准到标准空间上,作为预处理的一部分。
https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/Atlases

把图像配到标准空间:
在使用多个数据集进行训练网络时,每个数据集都有不同的分辨率,大小。而我希望所有数据集都有相同的分辨率,并且可以指定它的分辨率应该怎么做?
比如brain MRI 数据集,有Brats(240x240x155), IXI(256x256xz,z=28-136), 这两个数据集要用在同一个网络训练,肯定要统一分辨率和大小。
最好的方法就是把他们配到同一个标准空间(如 MNI152)

问:
MNI152是只有T1数据吗?

2.1 MNI空间

目前国际上最广泛使用的标准模板是MNI152. MNI是加拿大的蒙特利尔神经科学研究中心 “Montreal Neurosciences Institute”的缩写. MNI152采用了152个健康人的152 3D T1数据加权平均得到. 根据平均算法不同, 分为线性linear和非线性nonlinear两种.
image.png
上图来自:https://nist.mni.mcgill.ca/atlases/,其中152 nonlinear 6th generation是指在加权平均之前,先用高维非线性配准过的MNI152模板.
Talairach脑 是从著名的Talairach和Tournoux 图谱 切片并拍摄得到的。该图谱有对应的大致一致的Brodmann大脑分区标记。
MNI305是MNI152的前身, 顾名思义来自305个健康人的MRI扫描图像. 脑成像国际联盟(The international consortium for brain mapping ,ICBM)采用了MNI305 作为他们的模板, 这就是后续的
SMP99
标准模板. 脑成像国际联盟推荐的另外一个模板是ICBM152, 在神经成像研究中,大部分研究者均采用该模板作为大脑模板。
随后,脑成像国际联盟ICBM又推出一个更具有代表性的模板**:ICBM452**,将452个人大脑通过转换与ICBM305匹配之后的结果,但是目前ICBM452的使用范围比较小。
脑成像模板的大致历程可以总结为:
MNI305 → MNI152ICBM152 → ICBM452

3,相关开源工具

3.1 工具概括

传统经典工具:
Material Presented at ITK Tutorials
https://www.kitware.com//courses-in-medical-image-analysis-that-use-itk/
MeVisLab
https://www.mevislab.de/mevislab/
FSL:https://blog.csdn.net/u014264373/article/details/124852831

MATLAB:

PYTHON:

其他:
https://paperswithcode.com/task/image-registration

3.2 医学图像配准软件 ANTs(Advanced Normalization Tools)

由于不同个体的大脑形态不同,为了比较不同个体在大脑结构和功能上的差异,需要先将不同个体配准到一个标准大脑模板上。配准的过程就对个体大脑图像进行变形,使得个体大脑与模板图像尽可能一致。
其实配准并不一定需要一个模板,也可以是你找一个病人的脑子作为模板,其他所有的病人都配到和他一样的空间里。

3.2.1 ANTs说明

医学图像配准软件 ANTs(Advanced Normalization Tools),是基于 C 语言的一个医学图像处理的软件,速度比较快。
ANTs 支持 2D 和 3D 的图片,包括以下格式的文件:
• Nifti (.nii, .nii.gz)
• Analyze (.hdr + .img / .img.gz)
• MetaImage (.mha)
• Other formats through itk::ImageFileWriter / itk::ImageFileWriter such as jpg, tiff, etc. See ITK documentation.

ANTs官方文档:http://stnava.github.io/ANTsDoc/

3.2.2 ANTs 的安装及使用

ANTs 的安装主要有两种形式:
一种是基于源码的安装,安装完毕后可以直接在命令行调用相应的功能
另一个种是基于 python 的安装,即antspy库,安装完毕后可以在 python 中直接调用相应的包进行使用。两种方式暂时只支持 Linux 和 Mac 系统。

(1),基于源码安装 ANTs

  • 首先要安装 git , cmak 和 c++ 编译器;
  • 在命令行里运行:
git clone git://github.com/ANTsX/ANTs.git  #从github上克隆相应的仓库,保存在当前目录下的ANTs文件夹下
mkdir antsbin  #创建antsbin文件夹
cd antsbin  #进入antsbin文件夹
ccmake ../ANTs  #进入cmake界面,然后依次按下'C'键,稍作等待,再按下'C'键和'G'键,分别完成设置和生成后回到命令行
make -j 4  #进行编译,需要运行较长时间

如果遇到 cmake 或 ccmake 版本不匹配的问题需要将其卸载重装,并更新环境变量。

  • 编译完之后如果在 antsbin 目录下出现 bin 目录,则可以进行下一步了,若没有 bin 目录,需要自己建立 bin 目录,并把三个地方的文件拷贝进去,具体做法如下:
# 在 antsbin 目录下
mkdir bin #在antsbin下建立bin目录
cp ./ANTS-build/Examples/* ./bin # 将ANTS-build/Examples下的文件复制到bin目录中
cp ./staging/bin/* ./bin #将staging/bin下的文件复制到bin目录中
cp ../ANTs/Scripts/* ./bin #将ANTs/Scripts下的文件复制到bin目录中
  • 设置环境变量,更改.bashrc或.profile文件
cd ~  #回到home文件夹下
vi ~/.bashrc  #打开vi进行编辑,按'i'进入插入模式,并在文档末尾插入以下内容
export ANTSPATH=/home/username/antsbin/bin/
export PATH=“$ANTSPATH:$PATH” 
#以上路径要和真实路径一致,然后依次按'ESC'键,'Shift'+':'键,'w'键和'q'键,然后回车保存并退出
source ~/.bashrc  #激活相应的环境配置

ANTs 的使用
在 ANTs/Scripts 路径下有各种各样的 .sh 文件,较为常用的有antsRegistrationSyN.sh 等,为了方便调用可以将 .sh 文件的路径添加到环境变量中去:

vi ~/.bashrc  #打开.bashrc文件并在末尾添加以下内容
export PATH=$PATH:/home/username/ANTs/Scripts
#保存并退出
source ~/.bashrc  #使环境变量生效

然后直接在命令行使用 antsRegistrationSyN.sh ,如果给出该命令的使用方法,则配置成功,如果给出报错信息则配置失败。
因为我手中没有 .nii 格式的配准数据,就用 .jpg 格式的图像做的实验,使用的 fixed image(上图)和 moving image(下图)如下:


配准命令为:

antsRegistrationSyN.sh -d 2 -f fixed_img.jpg -m moving_img.jpg -o output

其中 -d 2 表示数据是 2 维图像,-f fixed_img.jpg 是 fixed image 对应的图像名称,-m moving_img.jpg 是 moving image 对饮的图像名称,-o output 是输出结果的前缀名。输出的数据如下:

output0GenericAffine.mat , output1Warp.nii.gz 分别表示线性变换和非线性变换估计出的映射关系,outputWarped.nii.gz 表示将 moving_img.jpg 配准到 fixed_img.jpg 后的图像,outputInverseWarped.nii.gz 表示将 fixed_img.jpg 配准到 moving_img.jpg 后的图像。outputWarped.nii 和 outputInverseWarped.nii 的图片如下:

3.2.3 antspy

a,基于 python 安装 antspy

安装方法请参考:
https://github.com/ANTsX/ANTsPy

image.png
For MacOS and Linux:
注:安装时是antspyx

pip install antspyx

antspy现在应该只支持macos和linux系统,windows暂不支持,也可以使用Git安装:

git clone https://github.com/ANTsX/ANTsPy
cd ANTsPy
python3 setup.py install

上面的安装方法,只能安装 0.1.4版本,这个版本在使用时,会存在一些小Bug,比如:move到fix的配准,必须将 int类型转换为 float类型;
而 0.1.8版本不存在这样的问题,具体安装办法很简单,一行代码搞定:

pip install git+https://github.com/ANTsX/ANTsPy.git  #可能不能一次性成功,数个小时差不多

b, antspy使用

antspy的使用方法可以见官方使用手册:
https://antspyx.readthedocs.io/en/latest/registration.html
如果是做配准相关的,只需要看Core和Registration对应的内容。

import ants
def registration(fix_path,move_path,save_path,label_path =None,save_label_path = None):
    types = ['Translation', 'Rigid', 'Similarity', 'QuickRigid', 'DenseRigid', 'BOLDRigid', 'Affine', 'AffineFast', 'BOLDAffine',
         'TRSAA', 'ElasticSyN', 'SyN', 'SyNRA', 'SyNOnly', 'SyNCC', 'SyNabp', 'SyNBold', 'SyNBoldAff', 'SyNAggro', 'TVMSQ']
    fix_img = ants.image_read(fix_path)
    move_img = ants.image_read(move_path)
    outs = ants.registration(fix_img,move_img,type_of_transform=types[1])
    reg_img = outs['warpedmovout']
    ants.image_write(reg_img,save_path)
    if label_path != None:
        move_label_img = ants.image_read(move_path)
        reg_label_img = ants.apply_transforms(fix_img,move_label_img,transformlist = out['fwdtransforms'],interpolator='nearestNeighbor')
        ants.image_write(reg_label_img,save_label_path)

##将 move向 fix配准
fix_path = 'MNI152_T1_2mm_brain.nii.gz'
move_path = 'sub_strokecace0011_gaojinping_dwi_raw.nrrd'
save_path = 'reg_2min.nii.gz'
registration(fix_path,move_path,save_path)


效果见图:分别是配准后,模板,以及原始
image.png

参考:
医学图像配准技术综述 - 妙祖的文章 - 知乎 https://zhuanlan.zhihu.com/p/267339046
【MRI多序列,多中心数据集预处理–使用FSL-Flirt 配准数据】
原文链接:https://blog.csdn.net/u014264373/article/details/124852831
【核磁数据处理之配准标准模板】
https://blog.csdn.net/happyhorizion/article/details/79579453
【图像配准综述】
https://zhuanlan.zhihu.com/p/80985475
【使用 ANTs 进行 MRI (结构、功能)图像配准——安装,配准详细解答】
https://blog.csdn.net/xj4math/article/details/120895684
【医学图像配准软件 ANTs(Advanced Normalization Tools)的安装和使用说明】
https://blog.csdn.net/zuzhiang/article/details/104930000

猜你喜欢

转载自blog.csdn.net/Alexa_/article/details/131955127
今日推荐