基于最大流策略的三维体数据分割方法与流程

文档序号:18170123发布日期:2019-07-13 09:49阅读:184来源:国知局
基于最大流策略的三维体数据分割方法与流程

本发明涉及医学三维图像处理领域,尤其涉及基于最大流策略的三维体数据分割方法。



背景技术:

随着三维技术在医学上的广泛应用,使得早先的二维医学图像逐渐被三维成像所替代,如何简化直接提取三维图像中有效的数据的方法成为关键的问题。目前已知的方法是基于区域生长、分裂合并或者虚拟人切片技术的三维体数据分割算法,其中区域生长技术需要用大量的内存保存待生长的体数据点,时间复杂度较大。其中分裂合并技术需要依据用户需求的某种规则划分子区域,子区域划分的结果会直接影响分割效果,因此该算法具有一定的限定性。其中阈值分割技术是根据灰度阈值将三维体数据分割成多阈值体数据,从而进行分割的,由于阈值是在给定的某一范围内进行选择,所以精确性不能保证。



技术实现要素:

根据现有技术中关于三维体数据分割方法精度低的问题,本发明公开了一种基于最大流策略的三维体数据分割方法,具体包括以下步骤:

s1:读取虚拟人序列化切片图像中的虚拟人切片信息,并将读取的数据信息保存在体数据集合中;

s2:对虚拟人部分切片进行前景像素点和背景像素点的标记,将欲提取的部位设置为前景像素点,不提取的部分设置为背景像素点;

s3:对读取到的体数据按照颜色划分到不同的颜色区间,将体数据中所有体素和每个颜色区间对应的辅助节点建立有向连通图,采用最大流算法对有向连通图中每个节点划分前景体素节点或背景体素节点;

s4:对三维体数据的角度、阴影和光线参数进行设置只显示三维体数据的前景体素不显示背景体素。

进一步的,s3中具体采用如下方式:

s31:将每个体素根据红、绿、蓝通道的值划分到不同的颜色区间,每个体素对应的颜色区间编号保存在一个数组中,将每个颜色区间包括的体素的编号保存到一个队列中;设体素f的颜色区间已包括其他的体素h,计算体素f和体素h的相似度,当两个体素相似时,体素f对应的颜色区间设置为体素h所属的颜色区间,把体素f加入到该颜色区间对应体素的队列中;当两个体素不相似时,继续判断体素f和其余有相同区间值的体素的相似性,直到该区间对应的所有体素判断完毕或找到相似的体素,如果没有相似体素,则增加一个新的颜色区间,最终所有的相似体素属于同一个颜色区间;

s32:计算体数据集合中所有体素和其邻居体素的权重的方差;

s33:为所有体素建立有向连通图,每个节点对应一个体素,称为体素节点,体素节点的值为对应体素的rgb颜色值,并为每个颜色区间内的所有体素建立一个辅助节点;

s34:将s2中的前景像素点对应的体素和背景像素点对应的体素标记在有向连通图中,分别定义为前景体素节点和背景体素节点;

s35:采用最大流算法对有向连通图进行分割:将所有已经标记过的体素节点加入到队列中,对队列中每个体素节点进行遍历扩展,即遍历其所有子节点,若子节点此时没有设置前景或背景类型,则该子节点需要被扩展,其中被扩展的子节点类型设置为与当前体素节点类型相同,把被扩展的子节点加入到队列中,并且判断该子节点是否通过当前体素节点到达源节点的距离最短,若不是则从该子节点到达源节点的路径中找到某节点m,该子节点通过节点m到达源节点距离最短,把节点m设为该子节点的父节点;

当找到一条可行流后调整饱和边,其中可行流为从前景类型的体素节点经过一些节点后到达背景类型的体素节点的路径;即给饱和边指向的节点p找个新的父节点q,父节点q需要满足如下条件:到p的边的权重大于0,父节点q是已经被扩展过的节点,通过父节点q到达源节点的距离最近;如果找不到满足上述条件的节点,则重新寻找节点p的父节点、节点p的所有子节点的父节点和节点p的邻居节点的父节点。

由于采用了上述技术方案,本发明提供的基于最大流策略的三维体数据分割方法,本方法只需要用户标记部分提取目标,简化了图像分割步骤,减少了人工操作,从而减少了一些由于人工失误导致的误差,使得准确性增加,并且占用内存较小,运行时间少。

附图说明

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

图1为本发明方法实现的流程图

图2为本发明中体数据建立效果图

图3为本发明中计算方差相邻点示意图

图4为本发明中建立图mygraph的示意图

图5为本发明中计算权重相邻点示意图

图6为本发明中三维体数据分割后的效果图

具体实施方式

为使本发明的技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述:

如图1所示的一种基于最大流策略的三维体数据分割方法,在实施过程中,体数据建立效果图如图2所示,图中体数据和坐标存在对应关系,可以根据坐标来获取每个数据,然后对体数据中的一些层的数据点进行标记,而后把每个数据点划分到不同颜色区间,并建立包括所有数据点和代表不同颜色区间的辅助节点的图,对图进行最大流处理,最后对数据点进行体绘制。本发明公开的方法具体步骤如下:

s1:输入虚拟人序列化切片图像并存储体数据:对虚拟人切片进行读取,并把读取到的数据保存在体数据reader中。具体采用如下方式:

由于体数据为长方体,可以设置体数据位于xyz坐标系中,每个数据间隔为1,体数据的建立如图2所示,所以每个数据和坐标有个对应关系,可以根据坐标来获取每个数据。例点a坐标为(ax,ay,az),其对应的体数据编号为

id=ax*image.length+ay*image.width+az*height,

其中image.length和image.width分别为图片的长和宽,height为图像的层数。

s2:标记一些图像的前景和背景:对虚拟人部分切片进行前景像素点和背景像素点的标记。将要提取的部位设置为前景像素点,用白色标记;其余为背景像素点,用黑色标记。

s3:三维体数据分割:对读取到的体数据按照颜色划分到不同的颜色区间,并将所有体数据的体素和每个颜色区间对应的辅助节点建立有向连通图采用最大流算法对有向连通图中每个节点划分前景体素节点或背景体素节点。具体采用如下方式:

s31.将每个体素根据rgb值划分到不同的颜色区间,数组id_bin中保存每个体素对应的颜色区间编号。

先计算每个体素的rgb值的区间

其中,ri、gi、bi分别为该体素对应的rgb值,numbinsperchannel为切片图像的位深度。

并用变量newbinidx记录此时已有颜色区间的数量,作为每个颜色区间的编号。将每个颜色区间包括的体素的编号保存到一个队列中。数组occupiedbins来标记该颜色区间是否已经有体素存在。若没有存在,则标记该颜色区间已有体素存在,编号为newbinidx,并保存此时颜色区间对应体素的rgb值,该体素所属的颜色区间为newbinidx,newbinidx自加;否则要判断下该体素f=(rf,gf,bf)'和该颜色区间已包括其他的体素h=(rh,gh,bh)'是否应该划分到同一个颜色区间中,要计算下两个体素的相似度。相似度c(f,h)计算方式如下所示:

c(f,h)=λrr(f,h)+λbb(f,h),

其中设置λr=0.85,λb=0.15。若c(f,h)<0.995,则认为两个体素不相似,不属于同一个颜色区间;否则相似,同属一个颜色区间。

(1)当两个体素相似时,体素f对应的颜色区间设置为h所属的颜色区间,把f加入到该颜色区间对应体素的队列中。

(2)当两个体素不相似时,继续判断体素f和其余有相同区间值的体素的相似性,直到该区间对应的所有体素判断完或者找到相似的体素。若存在相似的体素f',则体素f对应的颜色区间设置为f'所属的颜色区间,把f加入到该颜色区间对应体素的队列中;否则体素f的颜色区间设置为当前的颜色区间数量newbinidx,即增加一个新的颜色区间。并在occupiedbins数组中对该颜色区间进行标记已有体素存在。

最终所有的相似体素属于同一个颜色区间,即把所有的体素按照颜色划分到不同的颜色区间中。

s32.计算体数据集合中所有体素(ri,gi,bi)和其邻居体素(nr,ng,nb)的权重的方差。值为

其中counter为所有体素的个数。邻居体素的示意图如图3所示。

s33.为所有体素建立有向连通图mygraph,每个节点对应一个体素,称为体素节点,体素节点的值为对应体素的rgb颜色值,并为每个颜色区间内的所有体素建立一个辅助节点。有向连通图的建立如图4所示,每个体素节点和其邻居体素节点相连,并且每个体素节点和其所属的颜色区间对应的辅助节点相连。由于有向连通图中每个颜色区间的体素节点和其辅助节点相连,并且同属一个颜色区间的体素节点同属于前景或者背景类型的概率很大,所以在遍历拓展时,一个颜色区间中所有体素节点可以通过辅助节点在广度优先搜索时快速扩建,降低复杂度,提高效率。

则有向连通图mygraph的节点的个数为所有体素节点的个数加上辅助节点的个数。有向连通图中表示体素节点的节点之间连线的边的权重为该体素节点的值(ri,gi,bi)和其邻居体素节点的值(nr,ng,nb)的权重

其中intconst设置为1000,边界项权重

其中weight设置为0.95,e是自然常数,e=2.7182818284...,邻居体素节点和选取体素节点的距离

其中si,sj,sk分别为两个体素节点在x,y,z轴上的距离。邻居体素节点的示意图如图5所示。有向连通图中表示体素节点和辅助节点连线的边的权重为

其中bhaslope设置为0.5。

s34.将s2中的前景像素点对应的体素和背景像素点对应的体素标记在有向连通图mygraph中,分别定义为前景体素节点和背景体素节点。若为前景体素节点,则在有向连通图中标记这个节点的类型为source,否则为sink。

s35.采用最大流算法对有向连通图进行分割,即标记有向连通图中每个节点的类型为source,还是sink。

算法采用了两条增广路径,分别从source类型节点和sink类型节点出发,边搜索边标记,这样当所有的节点都被搜索并标记后,最小割集也就形成了。所有被标记的体素节点称为active类型节点,这些节点需要往周围拓展新的节点,将所有active类型节点存储到一个队列中。

之后遍历active类型节点的队列,寻找从所有source类型节点到sink类型节点的可行流,其中可行流为从前景类型的体素节点经过一些节点后到达背景类型的体素节点的路径。每次找要从源节点(source或者sink类型节点)开始进行一个广度优先遍历直到找到汇节点(sink或者source类型节点)。步骤如下:

(1)对队列中每个体素节点进行遍历扩展,即遍历其所有子节点,若子节点此时没有设置类型(前景或背景),则该子节点需要被扩展,若是由source类型节点进行扩展,则被扩展的子节点的类型设置为source,否则设置为sink,把被扩展的子节点加入到active队列中,

(2)当一个active类型节点m扩展到节点n时,并且判断节点n是否通过节点m到达源节点的距离(到源节点经过的节点的个数)最短,若不是则从节点n到达源节点的路径中找到某节点m,节点n通过节点m到达源节点距离最短,把节点m设为节点n的父节点;

(3)当找到一个可行流后,会存在饱和的边,所以,要调整路径中存在的饱和边,使得在已经构建的路径中不存在饱和的边。饱和边指向的点称为orphan类型节点,加入到orphan类型节点的队列中。遍历orphan类型节点的队列,即给每个orphan类型节点找一个新的父节点,即路径中指向它的节点。步骤如下:

遍历orphan类型节点p的邻居节点,看是否有满足以下条件的节点q:

(a)q→p边的权重大于0

(b)q节点是已经被扩展过的节点,即当我们沿着汇节点逆流而上搜索到q节点时,可以找到q节点的父节点(若没有被扩展过,节点的父节点为null(空)),从而可以找到连接到source类型节点的路径。

(c)通过q节点最终能到达汇节点,并选择距离源节点最近的q节点(若p节点是source类型节点则选择到source类型节点最近的节点,反之选择到sink类型节点最近的节点)。

若找不到满足条件的节点q,那么节点p及其所有子节点设置为orphan类型节点。并且若节点p的邻居节点p'到节点p的边的权重大于0,则将p'标记为active类型节点,加入到队列中。若节点p是其邻居节点p”的父节点那么把p”也设置为orphan类型节点,加入到orphan队列里。

s4:对三维体数据的角度、阴影和光线参数进行设置只显示三维体数据的前景体素不显示背景体素。

如图6所示,图中为脾的三维体数据分割后的效果。可以看到脾已经很好的被分割出来,特别是形状的完整性,并且连接到脾的血管都可以很好地分割出来,并且分割后的体数据中噪声很少。

本发明是一种在三维体数据中直接分割得到提取目标的方法。该方法将替代原来的先在单张图像中分割然后再绘制成三维体的分割方式,简化了体数据分割步骤。本方法只需要用户标记部分提取目标,减少了人工操作,从而减少了一些由于人工失误导致的误差,使得准确性增加,并且占用内存较小,运行时间少。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

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