APP下载

DSA图像冠状动脉血管夹角的测量

2019-12-10王力孟庆民孙超郭永新姚吉进宗宝良焦青

中国医疗器械杂志 2019年6期
关键词:中心线像素角度

王力,孟庆民,孙超,郭永新,姚吉进,宗宝良,焦青

1 山东第一医科大学(山东省医学科学院)医学信息工程学院,泰安市,271016

2 泰安市中心医院 介入放射科,泰安市,271000

3 山东第一医科大学(山东省医学科学院)放射学院,泰安市,271016

0 引言

据《中国心血管病报告2017(概要)》显示,我国心血管病患病率及死亡率仍处于上升阶段,心血管病现患人数高达2.9亿。心血管病死亡占城乡居民总死亡原因的首位,农村为45.01%,城市为42.61%[1]。心血管病严重影响了人类健康和生活质量,给患者及其家庭乃至整个社会都造成沉重的负担。

数字减影成像(Digital Subtraction Angiography,DSA)是心血管疾病诊断的金标准[2],是目前临床广泛采用的诊断和治疗心血管疾病的手段之一[3]。根据DSA图像可以判断冠状动脉血管狭窄的程度,从而进行支架置入,将支架放置前后冠状动脉的狭窄程度进行对比,可评价治疗效果。DSA检查还可清晰地显示冠状动脉的侧支循环情况,对于冠状动脉搭桥手术的效果评价具有重要价值[4]。

由于受到流速、壁面剪切力和血管壁压力的局部血流动力学因素的影响,冠状动脉病变位置通常会出现在血管分叉、弯曲以及血管的开口处[5-6]。冠状动脉分叉病变在临床工作中十分常见,约占目前所有进行冠状动脉介入治疗量的15%~20%,此位置手术难度大,极具技术挑战性[7-8]。有些患者的冠状动脉血管会产生不同程度的变异,如冠状动脉血管分支较多,在常规体位下获取的冠状动脉血管图像的分支,会产生相互掩盖的现象,此时医生难以判断此处血管是否发生了病变。如果能得知分叉血管之间的角度,则可向DSA操作人员提供体位设置参考,因此确定冠状动脉分叉血管之间的角度对医生的决策具有重要指导意义。

该研究基于临床实践需要,在Windows7环境下,以Matlab为平台,首先对DSA图像进行平滑处理,然后提取冠状动脉血管的中心线及分叉点,从而实现DSA图像冠状动脉血管角度的测量。

1 提取冠状动脉血管的中心线

1.1 DSA图像平滑

DSA图像在采集、量化与传输过程中会由于一些干扰,致使图像包含很多离散随机的噪声,这种情况下通常采用平滑的方法对图像进行处理以消除噪声。在Matlab平台中读入DSA图像(图1(a)),使用rgb2gray函数将图像转化为8位灰度BMP图像,然后使用fspecial函数与imfilter函数进行高斯滤波。将fspecial函数中的HSIZE参数设置成较大数值(1 000),可获得图像的背景(图1(b)),将HSIZE参数设置成较小数值(10),可得到消除图像的噪声(图1(c))。高斯滤波是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到[9]。对于DSA二维图像,用二维零均值离散高斯函数做平滑滤波器,表达式如下:

式(1)中的x、y是DSA图像对应的矩阵坐标,G是模板系数,表示用邻域内像素的加权平均灰度值去替代模板中心像素点的值。σ是DSA图像像素的标准差。σ越大,高斯滤波器的频带越宽,平滑程度越好,通过调节σ的值,可在过平滑与欠平滑间取得折衷。经过处理后的图像既适合人眼的视觉、消除图像的干扰又能保护图像的边缘。

图1 图像处理Fig.1 Processed image

1.2 提取冠状动脉血管中心线

获取DSA图像中冠状动脉血管中心线,是测量血管夹角的基础。将冠状动脉血管的中心线看作线条边缘,冠状动脉血管边界看作阶跃边缘[10]。线条边缘一阶导数值为零,二阶导数幅度最大,阶跃边缘一阶导数幅度最大,二阶导数值为零。根据此微分几何特征,可将血管中心线提取出来。

对于经平滑过程去除噪声后的DSA灰度图像(图1(c)),通过Hessian矩阵的增强滤波器对血管进行增强。图像平滑后的像素点(x,y)的 Hessian 矩阵[11]定义如下:

式(2)中的H是曲面的曲率,Ixx,Ixy,Iyx,Iyy分别为平滑后的灰度图像(图1(c))的二阶方向导数。

Hessian矩阵的特征向量和特征值表示了图像的本质特征。最大特征值和对应的特征向量表示三维曲面最大曲率的强度和方向,最小特征值对应的特征方向与最强曲率对应的方向垂直。Hessian矩阵的特征值和特征向量分别用λi(x,y)和vi(x,y)(i=1,2)表示,简记为λi和vi。设特征值|λ1|≤λ2|,在冠状动脉DSA图像上,假设(x,y)是冠状动脉血管上的点,λ1数值非常小,大的曲率垂直于血管,因此v2与局部血管的方向垂直,v1与局部血管轴的走向一致[12]。

通过高斯滤波去除噪声的干扰,在Matlab中使用struct函数构建多尺度立体数组,再使用sigma函数得到当前图像空间的值,在此基础上对Hessian矩阵使用atan2函数,获取不同方向的三维曲面的曲率,进而获得血管的走向。然后使用imerode函数、filter函数以及bwareaopen函数对图像进行腐蚀,消除冠状动脉DSA图像中垂直血管走向的干扰和较小的连通分支,最后使用bwmorph函数得到冠状动脉血管的中心线(图1(d))。

2 计算冠状动脉血管分叉处夹角

2.1 获取冠状动脉血管的分叉点

将DSA血管中心线图像(图2(a))经二值化处理,矩阵大小为512×512,冠状动脉血管的中心线像素值为“1”,图像背景像素值为“0”。以3×3矩阵(图2(b))为单位遍历整个矩阵,找到满足中心单元为“1”,周围8个单位中有3处为“1”的3×3矩阵。经过大量数据试验,满足此条件的是中心线的分叉点,中心线的纵截面最大是2个单位,避免了寻找到的点不是血管的分叉点,因此选择3×3矩阵。使用Matlab中的size函数获取DSA图像的矩阵大小,然后使用四个for循环遍历整个矩阵,以3×3矩阵为单位统计“1”的个数和位置,获取冠状动脉血管的分叉点。

图2 血管中心线图像矩阵Fig.2 Matrix of vessel central line image

2.2 寻找分支血管中心线上的两个点

对于DSA图像中冠状动脉血管的每个分叉结点(图2(a)中的a点),会存在两个位于分支血管上且距分叉点一定距离的点(图2(a)中的b、c点)。将血管交点为出发点,分上下两个方向,以2×2的矩阵为单位(图2中的矩形区域),寻找2×2矩阵中“1”的位置,如果有“1”,则将初始点移到此点,然后以该点为初始点,以包含该点的相邻2×2矩阵为单位继续寻找下一个为“1”的点,总共找寻8次、12次、16次(图2中箭头指示寻找过程),把最后为“1”的点(图2(a)中的 b、c点)的坐标输出。在Matlab中,使用两次for循环分别遍历矩阵中的分叉点和以分叉点为出发点的2×2矩阵,再使用if函数寻找满足条件的下一个为“1”的坐标,最后使用fprintf函数将目标点输出。

2.3 淘汰较小的冠状动脉血管

如图3所示,图3(a)为原始DSA血管图像,可见冠状动脉血管存在着较小的分支(图3(a)中的a、b处),处理后的图像会存在较短的中心线(图3(b)中的a、b、c、d处)。通常这种冠状动脉血管的细小分支临床意义不大,因此将其淘汰掉。

在DSA图像的中心线矩阵(512×512)中,以血管交点为中心,截取上下60行,左右24列的矩阵,在交点右侧距离12个单位(较小分叉点的长度小于12个单位)做平行于y轴的直线,在这个范围内,如果直线(图3(b)中的直线1)与血管中心线有两个交点(图3(b)中的e、f点),则该点(图3(b)中g点)保留;如果直线(图3(b)中的直线2)与血管中心线有一个或零个交点(图3(b)中的h点),则说明此处的中心线较短,淘汰掉这样的分叉点(图3(b)中的i点)。最后保留下来的点,均为较长血管的交点。

图3 血管中心线图像Fig.3 Central line image

在Matlab中,首先使用两个for循环遍历整个矩阵,得到冠状动脉血管的分叉点,然后以此分叉点为中心,横坐标增加12个单位,统计此长度中“1”的数量,最后将数量不是2的分叉点淘汰掉,保留较大的分叉点。

2.4 获取冠状动脉血管分叉处的角度

图4所示计算结果,其中第1至第14列为经过循环步骤计算后DSA图像像素点的坐标值,第15列为血管分叉处的角度,并在第16列说明是否淘汰了该交叉点。图4中的1区域所指为交叉点坐标,在这些像素中,2区域的点所指即较小的冠状动脉血管,被淘汰掉。只保留冠状动脉血管的分叉点及与分叉点有一定距离且在血管中心线上的两个点的坐标,在进行8次、12次、16次迭代之后,获得了的这三个点坐标(图4中的3区域)。在Matlab 中,使用sqrt和acos函数计算冠状动脉血管分叉处的夹角,最后使用mean函数获得冠状动脉血管分叉处(图4A中a、b、c所示)角度的平均值。

图4 血管分叉角度测量Fig.4 Vessel angle measurement

3 讨论

该文在Matlab平台下,通过对DSA图像进行平滑,提取冠状动脉血管中心线及分叉点,从而实现了DSA图像冠状动脉血管分叉角度的测量。本研究具有图像处理精确度高、算法简单而高效以及算法自动化程度高、易于扩展等特点。

该文采用高斯滤波和中值滤波的方法对DSA图像进行处理,使得处理后的心血管图像适合人眼的视觉,消除了图像的干扰且保护了血管边缘。针对Hessian矩阵的特点,消除了垂直血管走向的干扰分支与较短的连通分支,使得提取的冠状动脉血管中心线精确度高,实用价值大。针对每一个夹角,算法可自动获取多组坐标组合,并求取角度的平均值,进一步提高了角度测量的精确度。

根据血管分叉点处的矩阵特点,本文在Matlab平台上,采用3×3矩阵获得冠状动脉血管分叉处的坐标,使用2×2矩阵获取冠状动脉血管中心线上的两个点的坐标,用三个点坐标求角度,算法简单而高效。

算法自动化程度高,用户只需读入DSA图像,平台就会将处理后的图像、冠状动脉血管夹角处像素的坐标,以及冠状动脉血管分叉处的角度予以自动显示。算法易于扩展,将算法代码在Matlab上生成文件包,并与Java web相融合,可简单高效地运行于医院网络图像系统。

该研究可对冠状动脉血管DSA图像进行自动处理,提取血管分叉点及中心线,并最终给出血管分叉角度,这些信息均丰富了操作人员的经验,可为操作人员设定体位提供参考。另外该研究可供一线临床科研人员分析冠状动脉DSA临床数据,也可以作为教学工具为学生展示DSA相关信息,界面友好,操作方便,具有一定的实用价值。

猜你喜欢

中心线像素角度
像素前线之“幻影”2000
神奇的角度
立式水轮发电机组“三条线”浅析
浅析某船重要设备底座与基准平台偏差的纠正措施
树叶竞技场
“像素”仙人掌
一个涉及角度和的几何不等式链的改进
角度不同
人啊
高像素不是全部