本文是关于医学图像配准软件 ANTs(Advanced Normalization Tools)的安装和使用说明。

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 的安装

ANTs 的安装主要有两种形式,一种是基于源码的安装,安装完毕后可以直接在命令行调用相应的功能,另一个种是基于 python 的安装,安装完毕后可以在 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 的图片如下:

(2) 基于 python 安装 antspy

安装方法请参考github。

antspy现在应该只支持macos和linux系统,windows暂不支持,我ubuntu下是用以下命令安装的:

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

antspy的使用方法可以见官方使用手册,如果是做配准相关的,只需要看Core和Registration对应的内容,下面我也对配准中常用的函数做了下整理:

import os
import glob
import ants
import numpy as np
import SimpleITK as sitk# ants图片的读取
f_img = ants.image_read("./data/f_img.nii.gz")
m_img = ants.image_read("./data/m_img.nii.gz")
f_label = ants.image_read("./data/f_label.nii.gz")
m_label = ants.image_read("./data/m_label.nii.gz")'''
ants.registration()函数的返回值是一个字典:warpedmovout: 配准到fixed图像后的moving图像 warpedfixout: 配准到moving图像后的fixed图像 fwdtransforms: 从moving到fixed的形变场 invtransforms: 从fixed到moving的形变场type_of_transform参数的取值可以为:Rigid:刚体Affine:仿射配准,即刚体+缩放ElasticSyN:仿射配准+可变形配准,以MI为优化准则,以elastic为正则项SyN:仿射配准+可变形配准,以MI为优化准则SyNCC:仿射配准+可变形配准,以CC为优化准则
'''
# 图像配准
mytx = ants.registration(fixed=f_img, moving=m_img, type_of_transform='SyN')
# 将形变场作用于moving图像,得到配准后的图像,interpolator也可以选择"nearestNeighbor"等
warped_img = ants.apply_transforms(fixed=f_img, moving=m_img, transformlist=mytx['fwdtransforms'],interpolator="linear")
# 对moving图像对应的label图进行配准
warped_label = ants.apply_transforms(fixed=f_img, moving=m_label, transformlist=mytx['fwdtransforms'],interpolator="linear")
# 将配准后图像的direction/origin/spacing和原图保持一致
warped_img.set_direction(f_img.direction)
warped_img.set_origin(f_img.origin)
warped_img.set_spacing(f_img.spacing)
warped_label.set_direction(f_img.direction)
warped_label.set_origin(f_img.origin)
warped_label.set_spacing(f_img.spacing)
img_name = "./result/warped_img.nii.gz"
label_name = "./result/warped_label.nii.gz"
# 图像的保存
ants.image_write(warped_img, img_name)
ants.image_write(warped_label, label_name)# 将antsimage转化为numpy数组
warped_img_arr = warped_img.numpy(single_components=False)
# 从numpy数组得到antsimage
img = ants.from_numpy(warped_img_arr, origin=None, spacing=None, direction=None, has_components=False, is_rgb=False)
# 生成图像的雅克比行列式
jac = ants.create_jacobian_determinant_image(domain_image=f_img, tx=mytx["fwdtransforms"][0], do_log=False, geom=False)
ants.image_write(jac, "./result/jac.nii.gz")
# 生成带网格的moving图像,实测效果不好
m_grid = ants.create_warped_grid(m_img)
m_grid = ants.create_warped_grid(m_grid, grid_directions=(False, False), transform=mytx['fwdtransforms'],fixed_reference_image=f_img)
ants.image_write(m_grid, "./result/m_grid.nii.gz")'''
以下为其他不常用的函数:ANTsTransform.apply_to_image(image, reference=None, interpolation='linear')
ants.read_transform(filename, dimension=2, precision='float')
# transform的格式是".mat"
ants.write_transform(transform, filename)
# field是ANTsImage类型
ants.transform_from_displacement_field(field)
'''print("End")

医学图像配准软件 ANTs(Advanced Normalization Tools)的安装和使用说明相关推荐

  1. 医学配准软件ants和相关python库antspy的介绍和安装

    医学配准软件和相关python库的介绍和安装 文章目录 医学配准软件和相关python库的介绍和安装 1. ants源码安装和使用介绍 1.1 ants介绍 1.2 ants安装 1.3 ants使用 ...

  2. Python在临床医学领域又一新突破 与OpenCV医学图像配准软件实现技术创新

    目前医学图像配准在临床医学界是研究的热点,医学图像配准技术对临床医生辅助诊断病情有很大的帮助.图像配准算法将多模态的医学图像信息准确地集成到同一图像中,医生可以更方便.更精确地从多个角度观察器官的结构 ...

  3. Li‘s 核磁共振影像数据处理-30-高级医学影像配准软件ANTs安装

    讲解视频内容请移步Bilibili: https://space.bilibili.com/542601735 入群讨论请加v hochzeitstorte 请注明"核磁共振学习" ...

  4. 基于深度学习的医学图像配准综述

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转载自:https://blog.csdn.net/weixin_ ...

  5. [骨科手术导航]2D/3D医学图像配准研究_罗博博_南方科技大学

    1.绪论 1.1 手术导航 #手术导航是以CT/MRI等医学影像数据为基础,通过虚拟现实技术,定位追踪后显示出手术器械相对病变组织的位置关系,从而实现对手术过程的实时引导. #在外科手术中,临床医生能 ...

  6. 医学图像配准:A Rigid Registration Method in TEVAR

    A Rigid Registration Method in TEVAR TEVAR 中的一种刚性配准方法 摘要 Since the mapping relationship between defi ...

  7. 基于深度学习的单模医学图像配准综述(附VoxelMorph配准实例)

    本文是基于深度学习的单模态医学图像配准的综述,除了介绍配准任务.配准过程之外,还会从实际操作出发,以经典的VoxelMorph为例做详细介绍.如果有什么讲的不清楚的地方欢迎大家留言讨论,如果有什么错误 ...

  8. ICCV 2019 | 微软开源无监督学习的医学图像配准方法:递归级联网络

    点击我爱计算机视觉标星,更快获取CVML新技术 编者按:目前,深度学习正广泛应用于医学图像配准领域.无监督机器学习方法能够广泛利用临床中产生的大量原始.无标注医学图像,然而现有算法对于变形大.变化复杂 ...

  9. 医学图像配准中的深度学习综述论文解读

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:https://zhuanlan.zhihu.com/p/9 ...

最新文章

  1. 透过水晶球一瞥下一代SOC
  2. UA MATH571A QE练习 R语言 单因子试验的回归分析
  3. JavaScript面向对象编程深入分析
  4. 简明Python教程学习笔记_4_数据结构
  5. 串口 接收端_嵌入式系统串口传输int float型数据的处理
  6. Scikit-Learn 十大实用功能来袭!
  7. NAGA-Ⅱ与QPSO算法求解下层为非合作博弈模型的双层规划组合优化模型(铁路开行方案)
  8. 三调 图斑地类面积_国土三调APP-GIS,地理信息,综合管网,地下空间,给水排水,通信管网,燃气管网,智慧旅游,...
  9. CPU的内部架构和工作原理(简介)
  10. 一张图让你掌握测试人员能力模型及研发测试流程规范
  11. 数据统计分析常用指标
  12. 我爱天文 - 月亮从哪边升出来?
  13. 如何使用Julius搭建一个语音识别引擎?
  14. [bzoj] 1597 土地购买 || 斜率优化dp
  15. graphql的调用
  16. 2019届校招实习生惨痛经历
  17. 关于Contiguous()方法
  18. 【计算机网络】TCP/IP协议(DNS协议、IP协议、TCP协议、UDP协议、三次握手、四次挥手)
  19. 一小球从100米高度落下,每次落地后反弹原来高度的一半,问第十次落地经过的路径多长?第十次落地后反弹多高?
  20. 转伟大诗人舒婷的 致橡树

热门文章

  1. pygame 学习笔记(4)推荐一本python入门游戏书籍《PYTHON游戏编程入门》
  2. 第二十八章、containers容器类部件QStackedWidget堆叠窗口部件详解
  3. windows中Linux进入d盘,DOS命令进入D盘文件夹怎么操作
  4. 微信应用号抢先玩一一小程序
  5. AssertValid和Dump函数的应用
  6. DeeplabV3+解码器复现
  7. 【数据结构与算法】小白入门
  8. bugku——md5 collision(NUPT_CTF)
  9. 使用阿里easyexcel 2.1.6版本遇到问题:NoSuchMethodError org.terracotta.statistics.StatisticsManager.tags
  10. html 设置body背景图片