本文是关于医学图像配准软件 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. c语言饭卡管理系统链表文件,C语言《学生信息管理系统》链表+文件操作
  2. txt文件可存储最大值_403元可存储22.5TB文件 Quantom LTO-7磁带开售
  3. 程序员必读的涨薪指南
  4. 简单七步,快速入门 JMeter原生压测
  5. 高德JS依赖分析工程及关键原理
  6. cad连续标注数字123怎么弄_实例讲解CAD模型与布局中的各种比例
  7. 组合数学:容斥原理(HDU1976)
  8. centos+gitlab+mysql_centos7安装配置gitlab(使用外部nginx)
  9. linux怎么添加DSL,如何在redhat上进行DSL 拨号
  10. oracle 左连接 简写,SQL左连接
  11. 让你嘿嘿嘿!最新windows7升级win10方法!
  12. PMP知识点:项目成本管理计算公式
  13. osgearth各版本源码下载
  14. python生成摸头GIF动态图
  15. QSlider功能作用和信号
  16. (Pytorch) YOLOV4 : 训练自己的数据集【左侧有码】
  17. linux进程kill命令关不掉
  18. 《可可西里》:一只被人类轮奸的藏羚羊
  19. Automated_bounty_Hunter全自动漏*洞赏金猎人使用场景二
  20. PDF加密文件解密方法(解除复制打印限制)——转帖

热门文章

  1. Win7或是过渡品Win8前瞻消息全预览
  2. mysql decimal长度_mysql decimal类型与decimal长度用法详解
  3. Windows 注册表相关API总结
  4. 彩票 量子计算机,科学家发明了能预测未来的量子计算机?且慢,它还不能预测彩票中奖号码...
  5. docker搭建java测试环境_基于docker构建测试环境
  6. Python 判断哪年哪月有几天
  7. codeblocks 13.12中文完整版(带GNW编译器)
  8. '963c705a8a4135a3bc70e72a6ec43c39' /堡垒之夜
  9. html js相册样式,JavaScript+CSS相册特效实例代码
  10. 【区块链 | EVM】深入理解学习EVM - 深入Solidity数据存储位置