◆李文霞 张玉 刘德桦 张坤 马英婕 杨秀云
基于Python与OpenCV医学图像配准软件的实现
◆李文霞1张玉1刘德桦1张坤1马英婕1杨秀云2
(1.山东第一医科大学(山东省医学科学院)医学信息工程学院 山东 271016;2.山东第一医科大学(山东省医学科学院)现代教育技术中心 山东 271016)
医学图像配准是医学图像分析的基础课题,具有重要理论研究和临床应用价值。Python和OpenCV提供了适合医学图像处理与分析的丰富开源工具包,本文采用Python和OpenCV两种工具包的集成方式设计并实现了一套基于Python与OpenCV 医学图像配准软件。配准算法采用自己提出的CNN-SIFT特征融合的配准策略,能够完成医学图像的多模态配准任务,基本满足实际应用的需求。
Python;OpenCV;多模态;医学图像配准
目前医学图像配准在临床医学界是研究的热点,医学图像配准技术对临床医生辅助诊断病情具有很大的实用价值。采用合理的图像配准算法可以将多模态的医学图像信息准确地集成到同一图像中,使医生更方便、更精确地从多个角度观察器官的结构和病灶。同时,通过对不同设备、不同时间采集的器官图像进行配准与融合,可以较准确地定量分析病灶和器官的变化情况,使得医生制定放射治疗计划、手术计划以及医疗诊断更准确可靠。
目前已有大量的应用系统软件应用于医学图像处理和分析的生产环境中,在这些应用软件中Python和OpenCV已投入使用,其中Python提供了很多医学图像配准的开源工具包,OpenCV也提供了大量用于医学图像配准的算法。本文联合Python和OpenCV两种开发工具设计开发了一套基于Python与OpenCV 医学图像配准软件,可用于多模态的图像配准工作。
Python是一门开源的高级计算机程序设计语言,应用于计算机视觉、云计算、人工智能等多个领域。Python自带了很多可以免费获取的强大而便捷的图像处理工具包,如图像处理工具包(PIL)、Matplotlib类库、NumPy工具包等。
PIL提供了免费的通用的图像处理算法,以及大量有用的基本图像操作,比如图像缩放、旋转、裁剪、改变图像大小、格式及颜色转换、图像增强、插值和滤波等。
Matplotlib是一个Python的2D绘图库,具有强大的绘制图表、点线等功能,如可以生成绘制图表或者直方图,功率谱,以及在图像上绘制点、直线和曲线等。
NumPy是Python科学计算工具包,可用来存储和处理大型矩阵,可以实现矩阵转置、乘积、向量乘积、解方程系统和归一化等功能,为建模、图像分类、图像聚类、图像变形等提供了基础。
OpenCV是一个开源C++库,用于处理计算机视觉问题。OpenCV自带大量丰富的算法和函数,并提供了完善的Python接口,而且方便调用。OpenCV提供的一些图像处理函数与Python形成了很好的互补。
Caffe是一种高效的基于C++架构的深度学习框架,支持Python、MATLAB接口以及命令行,模块化设计,能使用Caffe提供的各层类型来自定义模型,并且自定义的模型在海量数据的情况下Caffe上运行速度快。
医学图像配准指将不同时间、不同成像设备或不同光照、摄像角度等条件下的两个图像坐标系之间的变换矩阵计算,可以分为刚性配准、非刚性配准、同模态图像配准和多模态图像配准等。本文重点研究了多模态医学图像配准,多模态医学图像配准是指将两幅来源于不同成像设备的待配准的图像经寻找一个对应的空间变换后完整地融合在一幅图像中。本文采用常用的基于特征的图像配准方法,主要分图像预处理、特征提取、特征匹配、空间变换模型的确定与参数估计、图像的插值与坐标变换等五个步骤。
AlexNet是卷积神经网络(Convolutional Neural Networks,CNN)典型的网络模型之一,包含5层卷积层、2层全连接层和1层分类器。由于医学样本数量有限,首先使用大量丰富的ImageNet图像数据集在caffe框架中训练,然后利用卷积神经网络的迁移学习法设定初始化训练参数,接着使用自己制作的脑部2000个样本的训练集和100个样本的测试集进一步训练AlexNet网络模型,训练批次为500次。
CNN提取的图像特征在图像分类和检索方面表现出很好的性能,为图像提供了大量的中高层信息。AlexNet模型的FC8阶段的1000个神经元一般用来图像检索分类,因此在实验中丢弃FC8层,直接采用FC6层输出的4096个维度作为CNN图像特征与SIFT特征融合,融合后的特征描述符作为特征匹配的对象。
SIFT算法是在图像配准时的常用方法,但只使用了一些低层信息来进行图像配准,丢失了许多中高层信息,对于多模态医学图像的配准效果并不可观。本文提出的CNN-SIFT特征融合的基本思想是首先采用SIFT选定一批优质的候选特征点,然后从图像中以候选特征点为中心提取64×64像素的图像块,分别计算SIFT描述子和提取CNN特征描述子,根据二者关联关系,将两个向量归一化为一个向量来表示新的候选特征点。最后采用Lower提出的一种稳健的匹配准则进行新的候选特征点匹配,该匹配准则是使用这两个特征距离和两个最匹配特征距离的比率,使用该方法可以使错误的匹配数降低。
基于Python与OpenCV 医学图像配准基本流程如图1所示。
图1 基于CNN-SIFT特征融合的医学图像配准基本流程
(1)利用SIFT算法分别读取参考图像和待配准图像的优质候选特征点;
(2)以每个优质特征点为中心分别提取参考图像和待配准图像的64×64像素的图像块;
(3)调用训练好的卷积神经网络模型读取图像块的CNN特征描述子;
(4)将SIFT描述子和提取CNN特征描述子两个向量归一化为一个向量作为新的候选特征点;
(5)新的候选特征点匹配;
(6)空间变换模型的确定与参数估计,重复(3)~(5)步,直到取得最优值;
(7)采用三次样条插值法图像插值与坐标变换;
(8)配准结束,输出配准后的图像。
本文开发的医学图像配准软件用于脑部MRI-PET图像配准的效果如图2所示。
图2 MRI图像 PET图像 配准后图像
利用Python与OpenCV的工具包,通过调用caffe训练的AlexNet卷积神经网络模型,设计并开发了一套医学图像配准软件,配准过程采用了CNN-SIFT特征融合的多模态配准策略,并用于实现了脑部MRI-PET图像的配准。
[1]郑亚琴,田心. 一种射野图像和参考图像的自动配准方法[J]. 国医学物理学杂志,2009,26(6):1481-1484.
[2]侯艳阳.基于OpenCV的医学图像处理软件设计与实现[J].无线互联科技,2020(7).
[3]李钦,游雄,李科,等. 图像深度层次特征提取算法[J]. 模式识别与人工智能,2017,30(2):127-136.
[4]江彤彤,成金勇,鹿文鹏. 基于卷积神经网络多层特征提取的目标识别[J].计算机系统应用,2017.
山东省级大学生创新创业训练计划项目(S201910439045)