血管矢量图模型生成方法及装置与流程

文档序号:20786106发布日期:2020-05-19 21:43阅读:225来源:国知局
血管矢量图模型生成方法及装置与流程

本发明涉及计算机信息技术的图像处理技术领域,尤其涉及一种血管矢量图模型生成方法及装置。



背景技术:

在现有技术中,需要描述目标对象的血管的状态,除文字描述外,采用示意图的形式的描述更为直观。

目前,现有技术中可基于ct(computedtomography,电子计算机断层扫描)或mri(magneticresonanceimaging,磁共振成像)等设备的扫描图像重建血管形状。

但是,由于扫描图像不可避免地存在失真问题,而且扫描图像也容易因病人的体位发生变化而出现缺失问题,因此,直接通过扫描图像生成的血管计算机三维模型的尺寸精度低,从而依据血管计算机三维模型制作的血管模型尺寸精度也低。

鉴于此,如何在计算机中生成血管矢量图模型成为目前需要解决的技术问题。



技术实现要素:

针对现有技术存在的问题,本发明实施例提供一种血管矢量图模型生成方法及装置。

本发明实施例提供一种血管矢量图模型生成方法,包括:

根据检测到的绘制血管的鼠标轨迹,利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的主支血管;

若检测到下一次绘制血管的鼠标轨迹的起点位于血管矢量图模型中已建立的血管内,则将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管;

若所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的非分支血管,则利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的所述下一次绘制血管的鼠标轨迹所绘制的血管;

若所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的分支血管,则利用建立分支血管的数学模型算法,建立血管矢量图模型中的当前的主支血管的分支血管。

可选地,所述建立单支无关联血管的数学模型算法,包括:

检测绘制血管的鼠标轨迹,将检测到的绘制血管的鼠标轨迹转换为一个矢量曲线;

基于预先设置的血管开口直径do和末端直径de、直径指数α,将所述矢量曲线转换为双线的血管模型。

可选地,所述检测绘制血管的鼠标轨迹,将检测到的绘制血管的鼠标轨迹转换为一个矢量曲线,包括:

令绘制血管的鼠标轨迹所产生的血管中心线的原始点集合为mouse_points;

对mouse_points进行矢量化处理产生一系列的连续的三次贝塞尔曲线所需要的控制点集合bcontrol_points;

将由bcontrol_points控制的三次贝塞尔曲线转换为svg路径crtpath和均匀分布的中心线centerline,centerline的点集合为cl_points,cl_points中点数量为n,n≥2,cl_pointsn(xn,yn)为cl_points中的第n个点对应坐标值,n∈[1,n]。

可选地,所述基于预先设置的血管开口直径do和末端直径de、直径指数α,将所述矢量曲线转换为双线的血管模型,包括:

定义血管模型type,血管开口直径do和末端直径de,直径指数α,满足de≤do,其中:type=1为等粗型血管,de=do,α=0;type=2为半开口直线缩减型血管,α=1;type=3为封闭曲线缩减型血管,de=0,α=3;type=4为除了等粗型血管、半开口直线缩减型血管和封闭曲线缩减型血管之外的其他血管类型,α取正整数;

获取cl_points中第1点到第2点的向量至第n-1点到第n点的向量的集合并获取的长度n∈[1,n-1]:

获取cl_points中第n点到第n-1点的向量vs[n]和vs[n]的长度

获取的总长度l:

获取cl_points中第n个点cl_pointsn到第1个点cl_points1的长度ln:

l1=0

获取ln在的总长度l中的占比rn=ln÷l;

计算血管中心线的两侧血管壁点集合vw1_points和vw2_points,包括:

定义vw1_pointsn为vw1_points集合中的第n个点,vw2_pointsn为vw2_points集合中的n个点;

通过函数计算出cl_pointsn点处血管直径dn=do-(do-de)×rnα;定义cl_pointsn为pt1(x1,y1),cl_pointsn+1为pt2(x2,y2),对应向量以pt1(x1,y1)点为圆心,半径为的圆与从pt1(x1,y1)经pt2(x2,y2)形成的射线的交点定义为pta(xa,ya);pta(xa,ya)绕pt1(x1,y1)逆时针旋转θ角得到ptb(xb,yb);

其中,xb,yb的计算过程为:

若n∈[1,n-1],则

若n=n,则

xb=(xa-x1)×cosθ-(ya-y1)×sinθ+x1,

yb=(xa-x1)×sinθ+(ya-y1)×cosθ+y1,

将计算所得ptb(xb,yb)作为vw1_pointsn,取将计算所得ptb(xb,yb)作为进而最终得到血管中心线的两侧血管壁点集合vw1_points和vw2_points。

可选地,所述将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管,包括:

将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,定义当前的主支血管的数据集,包括:定义当前的主支血管的中心线为centerline1,centerline1的点集合为cl1_points,cl1_points中点数量为n1,n1≥2,cl1_pointsn(xn,yn)为cl1_points中的第n个点对应坐标值,n∈[1,n];定义当前的主支血管的血管壁为vesselwall1,点集合vw1.1_points代表当前的主支血管的中心线起点至终点左侧血管壁,点集合vw1.2_points代表当前的主支血管的中心线起点至终点右侧血管壁,vw1.1_points和vw1.2_points中点数量均为n1;

将当前检测到的所述下一次绘制血管的鼠标轨迹转换为一个矢量曲线,包括:定义所述下一次绘制血管的鼠标轨迹所产生的血管中心线的原始点集合为mouse_points’;对mouse_points’进行矢量化处理产生一系列的连续的三次贝塞尔曲线所需要的控制点集合bcontrol_points’;将由bcontrol_points’控制的三次贝塞尔曲线转换为svg路径crtpath和均匀分布的中心线centerline2,centerline2的点集合为cl2_points,cl2_points中点数量为n2,n2≥2,cl2_pointsn(xn,yn)为cl2_points中的第n个点对应坐标值,n∈[1,n2];

遍历法计算centerline2与当前的主支血管的血管壁vesselwall1的交点,记录交点的顺序及交点所对应的主支血管的血管壁的位置,按照预设策略,判断centerline2对应的血管是否为当前的主支血管的分支血管。

可选地,所述按照预设策略,判断centerline2对应的血管是否为当前的主支血管的分支血管,包括:

若centerline2与当前的主支血管的血管壁vesselwall1无任何交点,则确定centerline2对应的血管为当前的主支血管的非分支血管;

若centerline2与当前的主支血管的血管壁vesselwall1有且只有一个交点,则确定centerline2对应的血管为当前的主支血管的分支血管;

若centerline2与当前的主支血管的血管壁vesselwall1存在两个或两个以上的交点,则在第一个交点和第二个交点均是与当前的主支血管的同一侧血管壁相交时,确定centerline2对应的血管为当前的主支血管的分支血管;

在第一个交点和第二个交点是与当前的主支血管的双侧血管壁相交时,确定centerline2对应的血管为当前的主支血管的非分支血管。

可选地,所述建立分支血管的数学模型算法,包括:

定义所述第一个交点所对应的主支血管壁的数据集合为vw1_points’,将分支血管中心线centerline2与vw1_points’的第一个交点定义为pt1,交点pt1所在血管壁的线段的起点vw1_pointsn’,终点vw1_pointsn+1’,n∈[1,n1-1];

血管壁的线段的起点vw1_pointsn’,终点vw1_pointsn+1’对应的中心线的控制点为cl1_pointsn,cl1_pointsn+1,cl1_pointsn与cl1_pointsn+1两点形成的直线定义为linen,n∈[1,n1-1];

计算pt1至直线linen的垂线,得到交点pt2;

计算pt1到pt2的距离的2倍作为分支血管的开口直径do,根据分支血管模型type定义分支血管末端直径de和直径指数α;

将cl2_points中分支血管的中心线centerline2上pt1之前的点舍弃,将pt2和pt1加入构建新的分支血管的中心线centerline3,centerline3的点集合为cl3_points,cl3_points中点数量为n3,n3≤n2;

按照建立单支无关联血管的数学模型算法,根据给出的中心线点集cl3_points、分支血管开口直径do,分支血管模型type、分支血管末端直径de和直径指数α,生成新的血管壁数据集vw2_points,vw2_points包括两个点集合子集vw2.1_points和vw2.2_points,vw2.1_points代表中心线起点至终点左侧血管壁,vw2.2_points代表中心线起点至终点右侧血管壁,vw2.1_points和vw2.2_points中点数量均为n2;

分别计算vw2.1_points构建的多义线和vw2.2_points构建的多义线与血管壁vesselwall1的交点;其中:当主支血管壁为vw1.1_points构建的多义线时,vw1.1_points构建的多义线与vw2.1_points构建的多义线的交点定义为pt3,vw1.1_points构建的多义线与vw2.2_points构建的多义线的交点定义为pt4;当主支血管壁为vw1.2_points构建的多义线时,vw1.2_points构建的多义线与vw2.2_points构建的多义线的交点定义为pt3,vw1.2_points构建的多义线与vw2.1_points构建的多义线的交点定义为pt4;

根据pt3和pt4重新构建主支血管与分支血管的血管壁的数据,包括:对于主支血管壁,去除pt3和pt4中间的数据点,相应主支血管壁的数据集拆分为两个,并将pt3添加到新的前段数据集的末尾,将pt4添加到新的后段数据集的开头;将vw2.1_points位于pt3前的数据去除,将pt3作为开头,构建新的数据集vw2.3_points;将vw2.2_points位于pt4前的数据去除,将pt4作为开头,构建新的数据集vw2.4_points。

本发明实施例提供一种血管矢量图模型生成装置,包括:

第一建立模块,用于根据检测到的绘制血管的鼠标轨迹,利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的主支血管;

判断模块,用于若检测到下一次绘制血管的鼠标轨迹的起点位于血管矢量图模型中已建立的血管内,则将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管;

第二建立模块,用于若所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的非分支血管,则利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的所述下一次绘制血管的鼠标轨迹所绘制的血管;

第三建立模块,用于若所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的分支血管,则利用建立分支血管的数学模型算法,建立血管矢量图模型中的当前的主支血管的分支血管。

本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述方法的步骤。

本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述方法的步骤。

本发明实施例提供的血管矢量图模型生成方法及装置,通过根据检测到的绘制血管的鼠标轨迹,利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的主支血管,若检测到下一次绘制血管的鼠标轨迹的起点位于血管矢量图模型中已建立的血管内,将当前检测到的下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断下一次绘制血管的鼠标轨迹绘制的血管是否为当前的主支血管的分支血管;若是,则利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的所述下一次绘制血管的鼠标轨迹所绘制的血管,否则利用建立分支血管的数学模型算法,建立血管矢量图模型中的当前的主支血管的分支血管,由此,能够实现血管矢量图模型的生成。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的一种血管矢量图模型生成方法的流程示意图;

图2为图1所示的血管矢量图模型生成方法中建立血管矢量图模型中的主支血管的示意图;

图3为图1所示的血管矢量图模型生成方法中建立血管矢量图模型中的当前的主支血管的分支血管的示意图;

图4为本发明一实施例提供的一种血管矢量图模型生成装置的结构示意图;

图5为本发明一实施例提供的电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1示出了本发明一实施例提供的一种血管矢量图模型生成方法的流程示意图,如图1所示,本实施例的血管矢量图模型生成方法,包括:

s1、根据检测到的绘制血管的鼠标轨迹,利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的主支血管。

需要说明的是,本实施例所述血管矢量图模型生成方法的执行主体为处理器。

在本实施例中,所述建立单支无关联血管的数学模型算法,可以包括:

检测绘制血管的鼠标轨迹,将检测到的绘制血管的鼠标轨迹转换为一个矢量曲线;基于预先设置的血管开口直径do和末端直径de、直径指数α,将所述矢量曲线转换为双线的血管模型。

可以理解的是,本实施例需要先根据检测到的绘制血管的鼠标轨迹,利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的主支血管,以便后续在所建立的血管矢量图模型中的主支血管的基础上,根据检测到下一次绘制血管的鼠标轨迹,建立后续的分支血管,实现血管矢量图模型的生成。

s2、若检测到下一次绘制血管的鼠标轨迹的起点位于血管矢量图模型中已建立的血管内,则将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管。

在本实施例中,需要先判断检测到的下一次绘制血管的鼠标轨迹的起点是否位于血管矢量图模型中已建立的血管内,若检测到下一次绘制血管的鼠标轨迹的起点位于血管矢量图模型中已建立的血管内,则将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管,以便后续基于所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管的判断结果,进行血管矢量图模型中的后面的血管的建立。

s3、若所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的非分支血管,则利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的所述下一次绘制血管的鼠标轨迹所绘制的血管。

在本实施例中,在若检测到下一次绘制血管的鼠标轨迹的起点位于血管矢量图模型中已建立的血管内,则将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管之后,若判断获知所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的非分支血管,则利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的所述下一次绘制血管的鼠标轨迹所绘制的血管,实现血管矢量图模型中后面的非分支血管的建立。

s4、若所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的分支血管,则利用建立分支血管的数学模型算法,建立血管矢量图模型中的当前的主支血管的分支血管。

在本实施例中,在若检测到下一次绘制血管的鼠标轨迹的起点位于血管矢量图模型中已建立的血管内,则将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管之后,若判断获知所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的分支血管,则利用建立分支血管的数学模型算法,建立血管矢量图模型中的当前的主支血管的分支血管,实现血管矢量图模型中后面的分支血管的建立。

可以理解的是,本实施例是先根据检测到的绘制血管的鼠标轨迹,利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的主支血管,然后当检测到下一次绘制血管的鼠标轨迹的起点位于血管矢量图模型中已建立的血管内时,将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管,基于所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管的判断结果,进行血管矢量图模型中的后面的血管的建立,最终实现血管矢量图模型的生成。本实施例生成的血管矢量图模型尺寸精度高。

本实施例提供的血管矢量图模型生成方法,通过根据检测到的绘制血管的鼠标轨迹,利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的主支血管,若检测到下一次绘制血管的鼠标轨迹的起点位于血管矢量图模型中已建立的血管内,将当前检测到的下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断下一次绘制血管的鼠标轨迹绘制的血管是否为当前的主支血管的分支血管;若是,则利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的所述下一次绘制血管的鼠标轨迹所绘制的血管,否则利用建立分支血管的数学模型算法,建立血管矢量图模型中的当前的主支血管的分支血管,由此,能够实现血管矢量图模型的生成,尺寸精度高。

基于上述实施例的内容,在本实施例中,所述检测绘制血管的鼠标轨迹,将检测到的绘制血管的鼠标轨迹转换为一个矢量曲线,可以具体包括:

令绘制血管的鼠标轨迹所产生的血管中心线的原始点集合为mouse_points;

对mouse_points进行矢量化处理产生一系列的连续的三次贝塞尔曲线所需要的控制点集合bcontrol_points;

将由bcontrol_points控制的三次贝塞尔曲线转换为svg路径crtpath和均匀分布的中心线centerline,centerline的点集合为cl_points,cl_points中点数量为n,n≥2,cl_pointsn(xn,yn)为cl_points中的第n个点对应坐标值,n∈[1,n]。

基于上述实施例的内容,在本实施例中,所述基于预先设置的血管开口直径do和末端直径de、直径指数α,将所述矢量曲线转换为双线的血管模型(可参考图2),可以包括:

定义血管模型type,血管开口直径do和末端直径de,直径指数α,满足de≤do,其中:type=1为等粗型血管,de=do,α=0;type=2为半开口直线缩减型血管,α=1;type=3为封闭曲线缩减型血管,de=0,α=3;type=4为除了等粗型血管、半开口直线缩减型血管和封闭曲线缩减型血管之外的其他血管类型,α取正整数;

获取cl_points中第1点到第2点的向量至第n-1点到第n点的向量的集合并获取的长度n∈[1,n-1]:

获取cl_points中第n点到第n-1点的向量vs[n]和vs[n]的长度

获取的总长度l:

获取cl_points中第n个点cl_pointsn到第1个点cl_points1的长度ln:

l1=0

获取ln在的总长度l中的占比rn=ln÷l;

计算血管中心线的两侧血管壁点集合vw1_points和vw2_points,包括:

定义vw1_pointsn为vw1_points集合中的第n个点,vw2_pointsn为vw2_points集合中的n个点;

通过函数计算出cl_pointsn点处血管直径dn=do-(do-de)×rnα;定义cl_pointsn为pt1(x1,y1),cl_pointsn+1为pt2(x2,y2),对应向量以pt1(x1,y1)点为圆心,半径为的圆与从pt1(x1,y1)经pt2(x2,y2)形成的射线的交点定义为pta(xa,ya);pta(xa,ya)绕pt1(x1,y1)逆时针旋转θ角得到ptb(xb,yb);

其中,xb,yb的计算过程为:

若n∈[1,n-1],则

若n=n,则

xb=(xa-x1)×cosθ-(ya-y1)×sinθ+x1,

yb=(xa-x1)×sinθ+(ya-y1)×cosθ+y1,

将计算所得ptb(xb,yb)作为vw1_pointsn,取将计算所得ptb(xb,yb)作为进而最终得到血管中心线的两侧血管壁点集合vw1_points和vw2_points。

可以理解的是,本实施例可以根据实际情况预先设置血管开口直径do和末端直径de,直径指数α,本实施例并不对其进行限制。

这样,本实施例能够实现根据检测到的绘制血管的鼠标轨迹,利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的主支血管。

基于上述实施例的内容,在本实施例中,所述将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管,可以具体包括:

将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,定义当前的主支血管的数据集,包括:定义当前的主支血管的中心线为centerline1,centerline1的点集合为cl1_points,cl1_points中点数量为n1,n1≥2,cl1_pointsn(xn,yn)为cl1_points中的第n个点对应坐标值,n∈[1,n];定义当前的主支血管的血管壁为vesselwall1,点集合vw1.1_points代表当前的主支血管的中心线起点至终点左侧血管壁,点集合vw1.2_points代表当前的主支血管的中心线起点至终点右侧血管壁,vw1.1_points和vw1.2_points中点数量均为n1;

将当前检测到的所述下一次绘制血管的鼠标轨迹转换为一个矢量曲线,包括:定义所述下一次绘制血管的鼠标轨迹所产生的血管中心线的原始点集合为mouse_points’;对mouse_points’进行矢量化处理产生一系列的连续的三次贝塞尔曲线所需要的控制点集合bcontrol_points’;将由bcontrol_points’控制的三次贝塞尔曲线转换为svg路径crtpath和均匀分布的中心线centerline2,centerline2的点集合为cl2_points,cl2_points中点数量为n2,n2≥2,cl2_pointsn(xn,yn)为cl2_points中的第n个点对应坐标值,n∈[1,n2];

遍历法计算centerline2与当前的主支血管的血管壁vesselwall1的交点,记录交点的顺序及交点所对应的主支血管的血管壁的位置,按照预设策略,判断centerline2对应的血管是否为当前的主支血管的分支血管。

具体地,所述按照预设策略,判断centerline2对应的血管是否为当前的主支血管的分支血管,可以包括:

若centerline2与当前的主支血管的血管壁vesselwall1无任何交点,则确定centerline2对应的血管为当前的主支血管的非分支血管;

若centerline2与当前的主支血管的血管壁vesselwall1有且只有一个交点,则确定centerline2对应的血管为当前的主支血管的分支血管;

若centerline2与当前的主支血管的血管壁vesselwall1存在两个或两个以上的交点,则在第一个交点和第二个交点均是与当前的主支血管的同一侧血管壁相交时,确定centerline2对应的血管为当前的主支血管的分支血管;

在第一个交点和第二个交点是与当前的主支血管的双侧血管壁相交时,确定centerline2对应的血管为当前的主支血管的非分支血管。

基于上述实施例的内容,在本实施例中,所述建立分支血管的数学模型算法,可以包括:

定义所述第一个交点所对应的主支血管壁的数据集合为vw1_points’,将分支血管中心线centerline2与vw1_points’的第一个交点定义为pt1,交点pt1所在血管壁的线段的起点vw1_pointsn’,终点vw1_pointsn+1’,n∈[1,n1-1];

血管壁的线段的起点vw1_pointsn’,终点vw1_pointsn+1’对应的中心线的控制点为cl1_pointsn,cl1_pointsn+1,cl1_pointsn与cl1_pointsn+1两点形成的直线定义为linen,n∈[1,n1-1];

计算pt1至直线linen的垂线,得到交点pt2;

计算pt1到pt2的距离的2倍作为分支血管的开口直径do,根据分支血管模型type定义分支血管末端直径de和直径指数α;

将cl2_points中分支血管的中心线centerline2上pt1之前的点舍弃,将pt2和pt1加入构建新的分支血管的中心线centerline3,centerline3的点集合为cl3_points,cl3_points中点数量为n3,n3≤n2;

按照建立单支无关联血管的数学模型算法,根据给出的中心线点集cl3_points、分支血管开口直径do,分支血管模型type、分支血管末端直径de和直径指数α,生成新的血管壁数据集vw2_points,vw2_points包括两个点集合子集vw2.1_points和vw2.2_points,vw2.1_points代表中心线起点至终点左侧血管壁,vw2.2_points代表中心线起点至终点右侧血管壁,vw2.1_points和vw2.2_points中点数量均为n2;

分别计算vw2.1_points构建的多义线和vw2.2_points构建的多义线与血管壁vesselwall1的交点;其中:当主支血管壁为vw1.1_points构建的多义线时,vw1.1_points构建的多义线与vw2.1_points构建的多义线的交点定义为pt3,vw1.1_points构建的多义线与vw2.2_points构建的多义线的交点定义为pt4;当主支血管壁为vw1.2_points构建的多义线时,vw1.2_points构建的多义线与vw2.2_points构建的多义线的交点定义为pt3,vw1.2_points构建的多义线与vw2.1_points构建的多义线的交点定义为pt4;

根据pt3和pt4重新构建主支血管与分支血管的血管壁的数据,包括:对于主支血管壁,去除pt3和pt4中间的数据点,相应主支血管壁的数据集拆分为两个,并将pt3添加到新的前段数据集的末尾,将pt4添加到新的后段数据集的开头;将vw2.1_points位于pt3前的数据去除,将pt3作为开头,构建新的数据集vw2.3_points;将vw2.2_points位于pt4前的数据去除,将pt4作为开头,构建新的数据集vw2.4_points。

这样,本实施例能够实现利用建立分支血管的数学模型算法,建立血管矢量图模型中的当前的主支血管的分支血管(可参考图3)。

本实施例提供的血管矢量图模型生成方法,能够实现血管矢量图模型的生成,尺寸精度高。

基于相同的发明构思,本发明另一实施例提供了一种血管矢量图模型生成装置,参见图4,本实施例提供的血管矢量图模型生成装置,包括:第一建立模块41、判断模块42、第二建立模块43和第三建立模块44;其中:

所述第一建立模块31,用于根据检测到的绘制血管的鼠标轨迹,利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的主支血管;

所述判断模块42,用于若检测到下一次绘制血管的鼠标轨迹的起点位于血管矢量图模型中已建立的血管内,则将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管;

所述第二建立模块43,用于若所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的非分支血管,则利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的所述下一次绘制血管的鼠标轨迹所绘制的血管;

所述第三建立模块44,用于若所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的分支血管,则利用建立分支血管的数学模型算法,建立血管矢量图模型中的当前的主支血管的分支血管。

基于上述实施例的内容,在本实施例中,所述建立单支无关联血管的数学模型算法,包括:

检测绘制血管的鼠标轨迹,将检测到的绘制血管的鼠标轨迹转换为一个矢量曲线;

基于预先设置的血管开口直径do和末端直径de、直径指数α,将所述矢量曲线转换为双线的血管模型。

基于上述实施例的内容,在本实施例中,所述检测绘制血管的鼠标轨迹,将检测到的绘制血管的鼠标轨迹转换为一个矢量曲线,包括:

令绘制血管的鼠标轨迹所产生的血管中心线的原始点集合为mouse_points;

对mouse_points进行矢量化处理产生一系列的连续的三次贝塞尔曲线所需要的控制点集合bcontrol_points;

将由bcontrol_points控制的三次贝塞尔曲线转换为svg路径crtpath和均匀分布的中心线centerline,centerline的点集合为cl_points,cl_points中点数量为n,n≥2,cl_pointsn(xn,yn)为cl_points中的第n个点对应坐标值,n∈[1,n]。

基于上述实施例的内容,在本实施例中,所述基于预先设置的血管开口直径do和末端直径de、直径指数α,将所述矢量曲线转换为双线的血管模型,包括:

定义血管模型type,血管开口直径do和末端直径de,直径指数α,满足de≤do,其中:type=1为等粗型血管,de=do,α=0;type=2为半开口直线缩减型血管,α=1;type=3为封闭曲线缩减型血管,de=0,α=3;type=4为除了等粗型血管、半开口直线缩减型血管和封闭曲线缩减型血管之外的其他血管类型,α取正整数;

获取cl_points中第1点到第2点的向量至第n-1点到第n点的向量的集合并获取的长度n∈[1,n-1]:

获取cl_points中第n点到第n-1点的向量vs[n]和vs[n]的长度

获取的总长度l:

获取cl_points中第n个点cl_pointsn到第1个点cl_points1的长度ln:

l1=0

获取ln在的总长度l中的占比rn=ln÷l;

计算血管中心线的两侧血管壁点集合vw1_points和vw2_points,包括:

定义vw1_pointsn为vw1_points集合中的第n个点,vw2_pointsn为vw2_points集合中的n个点;

通过函数计算出cl_pointsn点处血管直径dn=do-(do-de)×rnα;定义cl_pointsn为pt1(x1,y1),cl_pointsn+1为pt2(x2,y2),对应向量以pt1(x1,y1)点为圆心,半径为的圆与从pt1(x1,y1)经pt2(x2,y2)形成的射线的交点定义为pta(xa,ya);pta(xa,ya)绕pt1(x1,y1)逆时针旋转θ角得到ptb(xb,yb);

其中,xb,yb的计算过程为:

若n∈[1,n-1],则

若n=n,则

xb=(xa-x1)×cosθ-(ya-y1)×sinθ+x1,

yb=(xa-x1)×sinθ+(ya-y1)×cosθ+y1,

将计算所得ptb(xb,yb)作为vw1_pointsn,取将计算所得ptb(xb,yb)作为进而最终得到血管中心线的两侧血管壁点集合vw1_points和vw2_points。

基于上述实施例的内容,在本实施例中,所述判断模块42中的“将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管”,可以包括:

将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,定义当前的主支血管的数据集,包括:定义当前的主支血管的中心线为centerline1,centerline1的点集合为cl1_points,cl1_points中点数量为n1,n1≥2,cl1_pointsn(xn,yn)为cl1_points中的第n个点对应坐标值,n∈[1,n];定义当前的主支血管的血管壁为vesselwall1,点集合vw1.1_points代表当前的主支血管的中心线起点至终点左侧血管壁,点集合vw1.2_points代表当前的主支血管的中心线起点至终点右侧血管壁,vw1.1_points和vw1.2_points中点数量均为n1;

将当前检测到的所述下一次绘制血管的鼠标轨迹转换为一个矢量曲线,包括:定义所述下一次绘制血管的鼠标轨迹所产生的血管中心线的原始点集合为mouse_points’;对mouse_points’进行矢量化处理产生一系列的连续的三次贝塞尔曲线所需要的控制点集合bcontrol_points’;将由bcontrol_points’控制的三次贝塞尔曲线转换为svg路径crtpath和均匀分布的中心线centerline2,centerline2的点集合为cl2_points,cl2_points中点数量为n2,n2≥2,cl2_pointsn(xn,yn)为cl2_points中的第n个点对应坐标值,n∈[1,n2];

遍历法计算centerline2与当前的主支血管的血管壁vesselwall1的交点,记录交点的顺序及交点所对应的主支血管的血管壁的位置,按照预设策略,判断centerline2对应的血管是否为当前的主支血管的分支血管。

具体地,所述按照预设策略,判断centerline2对应的血管是否为当前的主支血管的分支血管,可以包括:

若centerline2与当前的主支血管的血管壁vesselwall1无任何交点,则确定centerline2对应的血管为当前的主支血管的非分支血管;

若centerline2与当前的主支血管的血管壁vesselwall1有且只有一个交点,则确定centerline2对应的血管为当前的主支血管的分支血管;

若centerline2与当前的主支血管的血管壁vesselwall1存在两个或两个以上的交点,则在第一个交点和第二个交点均是与当前的主支血管的同一侧血管壁相交时,确定centerline2对应的血管为当前的主支血管的分支血管;

在第一个交点和第二个交点是与当前的主支血管的双侧血管壁相交时,确定centerline2对应的血管为当前的主支血管的非分支血管。

基于上述实施例的内容,在本实施例中,所述建立分支血管的数学模型算法,可以包括:

定义所述第一个交点所对应的主支血管壁的数据集合为vw1_points’,将分支血管中心线centerline2与vw1_points’的第一个交点定义为pt1,交点pt1所在血管壁的线段的起点vw1_pointsn’,终点vw1_pointsn+1’,n∈[1,n1-1];

血管壁的线段的起点vw1_pointsn’,终点vw1_pointsn+1’对应的中心线的控制点为cl1_pointsn,cl1_pointsn+1,cl1_pointsn与cl1_pointsn+1两点形成的直线定义为linen,n∈[1,n1-1];

计算pt1至直线linen的垂线,得到交点pt2;

计算pt1到pt2的距离的2倍作为分支血管的开口直径do,根据分支血管模型type定义分支血管末端直径de和直径指数α;

将cl2_points中分支血管的中心线centerline2上pt1之前的点舍弃,将pt2和pt1加入构建新的分支血管的中心线centerline3,centerline3的点集合为cl3_points,cl3_points中点数量为n3,n3≤n2;

按照建立单支无关联血管的数学模型算法,根据给出的中心线点集cl3_points、分支血管开口直径do,分支血管模型type、分支血管末端直径de和直径指数α,生成新的血管壁数据集vw2_points,vw2_points包括两个点集合子集vw2.1_points和vw2.2_points,vw2.1_points代表中心线起点至终点左侧血管壁,vw2.2_points代表中心线起点至终点右侧血管壁,vw2.1_points和vw2.2_points中点数量均为n2;

分别计算vw2.1_points构建的多义线和vw2.2_points构建的多义线与血管壁vesselwall1的交点;其中:当主支血管壁为vw1.1_points构建的多义线时,vw1.1_points构建的多义线与vw2.1_points构建的多义线的交点定义为pt3,vw1.1_points构建的多义线与vw2.2_points构建的多义线的交点定义为pt4;当主支血管壁为vw1.2_points构建的多义线时,vw1.2_points构建的多义线与vw2.2_points构建的多义线的交点定义为pt3,vw1.2_points构建的多义线与vw2.1_points构建的多义线的交点定义为pt4;

根据pt3和pt4重新构建主支血管与分支血管的血管壁的数据,包括:对于主支血管壁,去除pt3和pt4中间的数据点,相应主支血管壁的数据集拆分为两个,并将pt3添加到新的前段数据集的末尾,将pt4添加到新的后段数据集的开头;将vw2.1_points位于pt3前的数据去除,将pt3作为开头,构建新的数据集vw2.3_points;将vw2.2_points位于pt4前的数据去除,将pt4作为开头,构建新的数据集vw2.4_points。

由于本实施例提供的血管矢量图模型生成装置可以用于执行上述实施例所述的血管矢量图模型生成方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。

基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图5,所述电子设备可以包括存储器502、处理器501、总线503及存储在存储器502上并可在处理器501上运行的计算机程序,其中,处理器501,存储器502通过总线503完成相互间的通信。所述处理器501执行所述计算机程序时实现上述方法的步骤,例如包括:根据检测到的绘制血管的鼠标轨迹,利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的主支血管;若检测到下一次绘制血管的鼠标轨迹的起点位于血管矢量图模型中已建立的血管内,则将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管;若所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的非分支血管,则利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的所述下一次绘制血管的鼠标轨迹所绘制的血管;若所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的分支血管,则利用建立分支血管的数学模型算法,建立血管矢量图模型中的当前的主支血管的分支血。

基于相同的发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤,例如包括:根据检测到的绘制血管的鼠标轨迹,利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的主支血管;若检测到下一次绘制血管的鼠标轨迹的起点位于血管矢量图模型中已建立的血管内,则将当前检测到的所述下一次绘制血管的鼠标轨迹的起点位于的血管作为当前的主支血管,判断所述下一次绘制血管的鼠标轨迹所绘制的血管是否为当前的主支血管的分支血管;若所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的非分支血管,则利用建立单支无关联血管的数学模型算法,建立血管矢量图模型中的所述下一次绘制血管的鼠标轨迹所绘制的血管;若所述下一次绘制血管的鼠标轨迹所绘制的血管为当前的主支血管的分支血管,则利用建立分支血管的数学模型算法,建立血管矢量图模型中的当前的主支血管的分支血管。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1