一种结合CV模型与贝叶斯的肺实质分割方法
2020-04-10于莲芝刘海宁
于莲芝,刘海宁
(上海理工大学 光电信息与计算机工程学院,上海 200093)
1 引 言
计算机断层扫描(ComputerTomography,CT)技术与医学影像处理技术的快速发展,极大地帮助了医生对病人病情做出及时、正确的诊断,并且能够提升放射科医师的工作效率与诊断准确性.在构成完整的计算机辅助诊断系统[1]所有环节中,肺实质分割[2]这一环节可以有效的排除诸如胸廓、心脏、检查床等无关影响因素的干扰[3],从而提高辅助诊断系统的精确性.
肺部CT图像分割算法主要以基于阈值的方法为主,这种方法虽然能够对左右肺的大致轮廓进行快速的分割,但是往往将诸如胸膜结节此类的病变结节漏分、错分[4],而这些信息往往是医疗工作人员诊断病情的关键所在[5].胸膜结节在CT图像中的密度与其他器官组织,尤其是肺边缘组织密度十分接近.胸膜结节的形状大小及位置均存在很大的差异性[6],要解决这类结节的分割问题需要重新设计一种针对此类结节分割问题的算法.
目前针对胸膜结节的分割算法,大多还是基于传统图像分割算法中的阈值分割[7]和区域生长的方法或者是几种方法的组合,其分割思想大致为:第一步对肺部CT影像图像进行粗分割,得到肺实质的大概轮廓,再经过形态学膨胀腐蚀和孔填充运算得到相对精确的轮廓,以此来弥补在第一步分割过程中因病变导致错误分割而缺失的部分.针对传统阈值分割算法对此类分割问题的不足,研究人员又提出了很多更加优化的分割算法:文献[8]提出了一种基于边界逼近的分割方法,依据图形学中的Graham 扫描算法得到最小凸多边形端点的序列,提出了一种边界逼近的方法,根据h与W值对凸多边形端点序列进行修正,虽然该算法对含有胸膜结节的肺实质能够进行有效的分割,但该算法需要根据特定的肺部影像进行h与W参数的设定,鲁棒性较差;文献[9]中提到的“滚球算法”基本原理是:用球半径为R的球对没有分割的肺轮廓进行修补,判断是否进行轮廓修补的依据是滚动过程中球内的点是否互为连通.该算法球中半径R依照经验设定,经常出现过修补的现象;文献[10]提出了一种双项链码的算法来对边界点进行筛选,并将候选点输入到训练好的SVM分类器中,得到需要进行轮廓修补的边界点,并用直线将这些边界点连接起来,从而达到修补边界的目的,但由于肺部结构的不确定性,对于一些特殊的胸膜结节将肺部区域断开的情况则不能进行很好的分割;该算法无法将此类情况的边界进行修补;文献[11]中提出了一种基于改进凸包算法的肺实质分割方法,首先运用传统分割方法对肺部轮廓进行粗提取,在此基础上采用Graham二维凸包经典算法分别处理左肺和右肺,得到结果存放在边缘堆栈中,利用改进算法筛选出正确的边缘,并得到掩模图像.该算法有效地去除了肺部CT图像中的纵膈部分,边缘清晰准确,但对于肺部内轮廓出现病灶的情况经常出现欠分割,算法精确度差;文献[12]中提出了一种快速边界行进算法来分割肺实质,该算法结合D-P算法和自适应边界行进算法,有效地分离胸膜与纵膈相连的肺结节,大大的降低了肺部分割的时间开销,但容易受到局部噪声的影响,鲁棒性差.文献[13]提出了一种融合Harris角点检测算法,首先运用最大类间方差法将CT图像转化为二值图像,然后运用凸包检测以及角点检测方法来修正边界,从而得到完整的模板,该算法不依赖手动设置参数,具有很好的自适应性,但是在某些非连通的区域分割效果不是很好.
图1 算法程序流程图Fig.1 Algorithm program flow chart
针对上述不足,为了解决肺部CT图像中存在的胸膜结节被错误排除的问题,本文依据LIDC数据集中每组病人的CT影像特点得出:肺部轮廓在框架上轻微且均匀地扩张或收缩,不管肺部轮廓的变化模式如何变化,胸膜结节均具有一致的外观,由此提出了一种基于活动轮廓模型的贝叶斯方法,该方法是基于上一帧图像或相邻的上一帧图像或者是相邻帧的图像中分割的肺部轮廓来预测待分割的肺部轮廓.本算法的流程图如图1所示.通过本文提出的贝叶斯方法,在多帧图像之间对肺的轮廓进行预测和更新,之后提取CV模型[14]和贝叶斯方法结果中的差异之处,最后利用凹点检测算法和圆/椭圆霍夫变换来检测分离出来的差异图像中是否含有胸膜结节或者肺壁,最后将病变结节信息添加到CV模型分割的轮廓中形成完整的轮廓线.
2 采用CV模型提取肺部轮廓
首先为了分割肺的轮廓,本文采用了CV模型[14].CV模型算法的基本原理是:构建的能量驱动函数通过演化是其达到最小,能量函数把目标分割图像分成分割对象与分割背景两个部分,分别是Ωi和Ωo,肺部CT图像空间中CV模型的能量泛函[14]定义为:
(1)
其中:C是需要演化的目标分割对象的轮廓线;I表示的是目标分割图像;μ和υ分别表示为轮廓线的长度加权值与曲线内部对象的区域面积加权值;Area(inside(C))是曲线内部所包围的面积;Length(C)表示的是轮廓曲线的绝对值长度;c1和c2代表的是拟合中心,分别代表的是分割图像与分割背景的图像灰度平均值.使用水平集合函数[15]将式(1)中的曲线C替换掉,则可以将求解能量泛函问题转化成求解水平集演化方程的问题.文中算法的水平集函数φ选用了距离符号函数来表示(SignedDistanceFunction,SDF),定义如公式(2):
(2)
其中:参数d表示是高维空间中的点到水平集的距离,负数表示在轮廓内.本文中采用欧式距离函数表示,使用公式(2)替换后得到含有水平集合的能量泛函表达式:
(3)
其中:H(φ)表示单位阶跃函数;H′(φ)表示狄拉克测度函数.单位阶跃函数和狄拉克测度函数涉及到数值计算方面的转换,单位阶跃函数和狄拉克测度函数的表达式如式(4)和式(5)所示.
(4)
(5)
其中:ε表示是常量,可以根据实验效果设定最优值.依据变分原理对能量泛函式(1)进行数学推导,得到能量泛函的偏微分方程如下:
(6)
最小化式(6)即可得到最优的零水平集,也是所求的最优轮廓.对于初始化曲线,采用式(7)的方程,这样c1和c2就能从初始曲线不断更新迭代.
(7)
肺部CT图像经过CV模型分割过后,可以看到肺实质内部区域的结节和组织都能够被有效的分离.为了将它们分离出来,选择了两个最长的轮廓线,分别对应了左肺和右肺的轮廓.图2(a)和图2(b)图均为CV模型分割正常肺的轮廓线,可以看出分割轮廓精准,具有不错的效果;图2(c)图是CV模型分割含有胸膜结节的肺,分割轮廓能够把胸膜结节的一部分包含进去,说明CV模型对此类结节具有一定的分割能力,而在图2(d)图中,由于胸膜结节的灰度和周围组织的灰度十分接近,CV模型的分割结果完全绕过了胸膜结节,将之排除在外.为了解决图1(d)中出现的这种情况,本文将采用贝叶斯模型来减少胸膜结节的错误分割问题.
图2 使用CV模型的分割结果Fig.2 Results segmented using the CV model
3 待检测胸膜结节贝叶斯方法
3.1 贝叶斯模型的建立
(8)
(9)
(10)
(11)
由式(10)和式(11)可以得到:
(12)
(13)
(14)
至此,根据连续的CT图像轮廓状态向量建立了贝叶斯状态估计器,在下面一节将介绍贝叶斯状态估计器的预测与更新.
3.2 轮廓线的预测与更新
图3 (a)预测曲线.外侧为收缩轮廓线,内侧为扩张轮廓线;(b)第n帧轮廓线;(c)预测轮廓线与十分吻合;与的重合部分Fig.3 (a)Predicted curve.Outside is the contraction contour and inner is the expansion contour;(b)Nth frame outline;
3.3 轮廓线的差异化筛选
通过将更新后的轮廓与实际轮廓线对比得到的差异化轮廓,如图4(a),可以得知被分开的区域包含了真正的结节,也包含了不相关的线段,凸包等等,如图4(b),所以最终的肺部轮廓线可以通过添加真正的结节来修正.
图4 (a)局部细节轮廓;(b)差异化轮廓Fig.4 (a)Local detail contour; (b)Differentiated contour
为了筛选出真正的结节,首先需要判断这些候选结节轮廓中是否包含到待更新轮廓中心的凹点.定义每个候选结节轮廓的轮廓点为:
(15)
其中:I是所有候选结节轮廓的个数,J是第i个候选结节的边界点个数.
图5 (a)计算来判定是否包含凹点;(b)所有候选结节;(c)霍夫变换筛选后的结节Fig.5 (a)Calculate the to determine if concave points are included;(b)All candidate nodules;(c)Hough transform selected nodules
在所有的候选结节轮廓中,本文采用霍夫变换筛选其中的圆形轮廓或者类圆轮廓.计算筛选出来的包含凹点的候选结节轮廓的圆相似度,设定相似度大于0.5的轮廓,如图5所示,图5(b)是经过预测更新过后第n帧待分割CT图像中所有候选结节的二值图像,从图可以看出二值图像包含了需要分割的胸膜结节以及其他无关的部分;图5(c)则是通过霍夫变换并设置合适阈值将感兴趣的胸膜结节部分筛选出来.最后把筛选出来的真正的结节添加到待更新轮廓上,即可以得到包含胸膜结节肺实质完整轮廓分割图像.
4 实验与结果分析
4.1 实验方法
实验的数据来自公开数据集LIDC的1010位病人的肺部CT影像.由于本算法考虑的是对含有胸膜结节的分割性能,故从1010位病人中共计244,527张CT影像中挑选出了32位病人含有胸膜结节的CT影像源数据.源数据中CT图像的大小都是512像素乘以512像素.仿真实验平台所搭载的操作系统是Windows10,主频参数为2GHz,内存参数是8GB.开发环境为Matlab2016b.
将本文算法与文献中第1节中提到的CV模型方法、“滚球法”、边界逼近、“角点检测”的分割算法作对比,根据放射科医师提供的分割结果金标准判断分割效果.文献[8]提到的基于边界跟踪的算法设定合理的h值与W值.水平集方法的初始演化矩形设置为宽为150像素,高200像素,迭代次数为300次.文献[9]提到的“滚球法”的半径参数设置为最优的10.文献[13]提到的角点检测算法无需手动设置参数.
4.2 算法评价指标
为定量分析实验结果的优劣,本文采取数据集中32位病人存在病灶的样本图像,基于统计学原理将分割结果与目标图像的Ground Truth的面积进行测试对比.
本文分别采用了准确率(Precision)、召回率(Recall)、F值(F-Measures)、DSC(dice similarity coefficient)这4种评测指标[16]对本文提及算法进行实验结果评估.DSC表示两个集合的相似性,在本文中是用于比较分割轮廓与医生手动分割的金标准轮廓的相似程度,DSC指标的取值范围是0~1,0表示两个集合之间没有相关性,1表示两个集合之间有着很高的相似性,4种指标在本文中的表达公式如下:
(16)
(17)
(18)
(19)
其中:TP表示将正类预测成正类数;FP表示将负类预测成正类的数目;FN表示将正类预测成负类数;α是P和R的权重系数,一般取1,就是常见的F1,也即是:
(20)
4.3 实验结果分析与对比
4.3.1 实验结果分析
如图6所示,在相同的实验平台和开发环境中,针对前面提到的CV模型、“滚球算法”、“边界逼近算法”,“角点检测算法”做出了实验结果对比,用医生分割的金标准分割结果为评判标准,判断是否能够正确的分离出包含胸膜结节的外部轮廓线.图6(a)组实验结果中CV模型分割结果对正常肺部区域(左肺)能够精准分割,但是未能将右肺中胸膜结节一起分割开来;“滚球”模型包含部分结节信息,分割边缘不太光滑;“边界逼近算法”分割结果能够很好的将胸膜结节分割出来,但是分割细节处理的不够好,图6(a)中最后一幅图是本文算法的分割结果,分割轮廓光滑自然,能够正确包含胸膜结节,比较接近医生手动分割的结果.
4.3.2 量化结果分析
图6 算法分割结果对比.(a)、(b)两组实验结果从左到右依次表示的是原始图像、CV模型算法分割结果、“滚球模型”分割结果、“边界逼近”算法分割结果和本文算法分割结果Fig.6 Comparison of several algorithm segmentation results.(a),(b)The experimental results of the two groups from left to right represent the original image,the CV model algorithm segmentation result,the“rolling ball model”segmentation result,the“boundary approximation”algorithm segmentation result and the algorithm segmentation result.
为了定量分析本文算法在分割胸膜结节的有效性,在相同实验条件下,分别绘制不同分割算法的P-R曲线.如图7所示,横坐标为Recall,纵坐标为Precision,图中实线曲线为本文算法的P-R预测曲线,均将基于边界逼近、滚球法、角点检测算法的曲线包围,说明本文算法优于其他三种算法.
图7 不同算法的P-R曲线Fig.7 P-R curve of different methods
为进一步的验证本文提出的方法,将测试数据集扩大到N=234,分别计算不同分割算法的DSC指标,实验结果如表1所示,滚球模型算法的DSC平均值在0.734,标准差为0.114,
表1 四种不同方法的DSC指标比较Table 1 Comparison of DSC indicators of four different methods
明显高于其他几种算法,而边缘逼近算法要比滚球算法稍微高一点,但是分布也不稳定,鲁棒性差.本文提出的算法在DSC指标上,结果稳定分布在0.95到0.97之间,平均值在0.962,最高的也能达到0.98以上,说明分割结果与医生手动分割的金标准相似度高,算法精确度高,具有很强的适应性.
表2表示的是使用不同分割算法对数据集进行仿真实验的评判结果.可以看出,单独使用CV模型算法结节分割准确率很低,只有24.5%;使用滚球法和边界逼近的算法,在准确率和召回率比较CV模型有了很大的提升,其中边界逼近算法的召回率还略高于本文算法,角点检测算法与本文分割效果相似,但在非连通区域分割效果上差于本文算法,本文算法的结节分割正确率都高于文中所列算法,三种综合指标均高于90%,因此在整体上较文中其他对比算法有更好的分割精度和效果.
表2 本文算法以及几种对比算法的分割精度Table 2 Comparison of average segmentation accuracy of different segmentation methods
5 结束语
本文提出了基于CV模型的含胸膜结节的肺实质分割方法,基于CV模型初步分割出肺部轮廓,以此为基础建立贝叶斯预测更新模型,提取相邻帧的信息添加到修正轮廓上,最后得到包含病变结节信息的肺实质完整轮廓线.实验结果表明,本算法采用贝叶斯模型的预测更新方法,较好的弥补了其他算法的欠分割、过分割的不足 ,保留了病变结节的边缘信息,对于完善计算机辅助诊断系统具有一定的实用价值.