本发明属于图像处理技术领域,具体来说,涉及一种断裂骨小梁的搜索方法。
背景技术:
随着人口老龄化,骨质疏松的发病率不断增加,成为常见的代谢性疾病之一。因骨质疏松所致骨折病人的治疗所带来的巨大开支,给社会和家庭带来了很大的负面影响。
使用扫描电镜观察骨,可见正常成人股骨头的骨小梁排列密集,连接性好,成圆形或椭圆形拱桥结构,厚度大,均匀,间距小,表面较光滑。高倍视野下见小梁拱桥结构表面被覆胶原纤丝层,纤丝排列紧密,沿小梁方向走向规则、整齐,纤丝之间又有更细的纤丝斜形连接,以加固其结构。而股骨颈骨折患者其股骨头骨小梁发生明显变化,失去正常拱桥状结构,连续性严重破坏,小梁变薄、变细,出现较多小梁断裂及游离末端,表面不光整。目前,世界卫生组织(who)建议用骨密度(bmd)预测骨折危险性。众多研究表明,虽然bmd参数能在一定范围内预测骨折风险,但仍然不能完全表征骨强度的变化。通常认为bmd只能解释骨强度的60%~70%。生物力学的基本准则指出:任何一种材料的强度不仅取决于其数量,还取决于其结构、形状以及内在的生物力学性能。对于骨而言,骨微结构是骨小梁的三维构筑以及骨小梁间连接情况的统称。为了更加准确的表征骨强度,需要对骨微结构进行研究,且需要进行定量而非定性的研究。目前,评价骨微结构的量化参数包含:骨体积密度、骨体积分数、骨小梁数目、骨小梁间隙、骨表面积体积比以及各项异性程度等。为了提出具有参考价值的量化参数,如何准确、客观的描述骨的微结构是目前研究的热点内容。
技术实现要素:
技术问题:本发明提出一种断裂骨小梁的搜索方法,可以准确找出骨小梁中存在的断裂点。
技术方案:为解决上述技术问题,本发明实施例采用以下技术方案:
一种断裂骨小梁的搜索方法,所述方法包括:
步骤10)预处理骨小梁三维数据;
步骤20)检测骨小梁端点;
步骤30)检测断裂骨小梁。
作为优选例,所述步骤10)包括:
采用阈值法对骨小梁三维数据进行预处理,将骨小梁三维数据分为骨数据与非骨数据;定义由骨数据组成集合a,由非骨数据组成集合
空间中任意两点相邻采用26邻域的定义;
若集合a中两点p、q之间存在一条位于集合a中的路径p、p1、p2、…、pi、…、pn、q,其中,p与p1相邻,pi与pi+1相邻,pn与q相邻,则称点p与点q连通;
对于空间中任意一点p0(x0,y0,z0)∈a,定义穿过点p0的xy连通平面mxy(p0)为:
mxy(p0)={q=(x’,y’,z0)|点p0与点q连通}
其中,x’表示点q在x轴上的坐标,且不等于x0;y’表示点q在y轴上的坐标,且不等于y0;
穿过点p0的yz连通平面myz(p0)为:
myz(p0)={q=(x0,y’,z’)|点p0与点q连通}
其中,z’表示点q在z轴上的坐标,且不等于z0;
穿过点p0的zx连通平面mxz(p0)为:
mxz(p0)={q=(x’,y0,z’)|点p0与点q连通}
对于空间中任意一点p0(x0,y0,z0)∈a,定义在z轴方向上点p0的两个相邻平面为:
mzpos(p0)={(x0+i,y0+j,z0+1),i,j∈{-1,0,1}}
mzneg(p0)={(x0+i,y0+j,z0-1),i,j∈{-1,0,1}}
对于空间中任意一点p0(x0,y0,z0)∈a,定义在x轴方向上点p0的两个相邻平面为:
mxpos(p0)={(x0+1,y0+i,z0+j),i,j∈{-1,0,1}}
mxneg(p0)={(x0-1,y0+i,z0+j),i,j∈{-1,0,1}}
对于空间中任意一点p0(x0,y0,z0)∈a,定义在y轴方向上点p0的两个相邻平面为:
mypos(p0)={(x0+i,y0+1,z0+j),i,j∈{-1,0,1}}
myneg(p0)={(x0+i,y0-1,z0+j),i,j∈{-1,0,1}};
所述步骤10)中,将骨小梁三维数据分为骨数据与非骨数据,具体包括:若骨小梁三维数据值大于或等于阈值,则所述骨小梁三维数据属于骨数据;若骨小梁三维数据值小于阈值,则所述骨小梁三维数据属于非骨数据。
作为优选例,所述步骤20)包括:对于空间中任意一点p0(x0,y0,z0)∈a,分别沿x轴、y轴和z轴三个方向对其进行判断,在任意一个方向上满足条件,则点p0(x0,y0,z0)是骨小梁端点。
作为优选例,所述步骤20)中,沿z轴方向搜索骨小梁端点的过程为:
对于空间中任意一点p0(x0,y0,z0)∈a,得到点p0(x0,y0,z0)的xy连通平面mxy(p0);若同时满足第一条件和第二条件,则p0为断裂骨小梁的端点;
第一条件为:对于平面mxy(p0)中的任意两点p1(x1,y1,z0)与p2(x2,y2,z0),max{|x1-x2|,|y1-y2|}≤brea;其中,brea表示与骨小梁三维数据分辨率相关的阈值;
第二条件为:对于平面mxy(p0)中的任意一点p(x,y,z0),点p(x,y,z0)在z方向上的相邻平面mzpos(p)或mzneg(p)中的点均属于非骨数据集合
作为优选例,所述步骤20)中,沿x轴方向搜索骨小梁端点的过程为:
对于空间中任意一点p0(x0,y0,z0)∈a,得到点p0(x0,y0,z0)的yz连通平面myz(p0);若同时满足第三条件和第四条件,则p0为断裂骨小梁的端点;
第三条件为:对于平面myz(p0)中的任意两点p1(x0,y1,z1)与p2(x0,y2,z2),max{|y1-y2|,|z1-z2|}≤brea;其中,brea表示与骨小梁三维数据分辨率相关的阈值;
第四条件为:对于平面myz(p0)中的任意一点p(x0,y,z),点p(x0,y,z)在x方向上的相邻平面mxpos(p)或mxneg(p)中的点均属于非骨数据集合
作为优选例,所述步骤30)包括:在(x,y,z)三个方向上分别采用其方向上的一组检测模板搜索断裂骨小梁;每组检测模板含有五个子模板,每个子模板的内径为din,外径为dex;din与dex均为与骨小梁三维数据分辨率有关的数值;当表现在模板中时,内径din表现为子模板中含有相应的体素个数;在子模板中,将环内体素的取值设置为0;外径dex表现为围成子模板的体素个数;在子模板中,围成子模板中的体素的取值设置为1;定义一组检测模板中,子模板的法线方向为此组检测模板的方向。
作为优选例,所述步骤30)包括:以z方向的搜索断裂骨小梁,包括:
对于一个z方向骨小梁端点p0(x0,y0,z0)∈a,定义集合s0,s0初始为空集,s0用于保存属于此端点p0(x0,y0,z0)的断裂骨小梁;
步骤3011):对于平面mxy(p0)中的任意一点p(x,y,z0),以点p(x,y,z0)为模板对称中心,放置z方向的一组检测模板,若z方向的一组检测模板中,某个子模板值为1的体素点均属于非骨数据集合则将点p(x,y,z0)放入集合s0中;
步骤3012):取mzneg(p)中任意一点q0(x0,y0,z0),点q0(x0,y0,z0)∈a;对于平面mxy(q0)任意一点q(x,y,z0),若满足第七条件,则将点q(x,y,z0)放入集合s0中;所述第七条件是:某个子模板值为1的体素点均属于非骨数据集合
步骤3013):重复步骤302),直到平面mxy(w0)内没有点满足第七条件,结束断裂骨小梁检测,则集合s0中的点为初步检测得到的对应于骨小梁端点p0(x0,y0,z0)的断裂骨小梁。
作为优选例,所述步骤30)包括:以x方向的搜索断裂骨小梁,包括:
对于一个x方向骨小梁端点p0(x0,y0,z0)∈a,定义集合s0,s0初始为空集,s0用于保存属于此端点p0(x0,y0,z0)的断裂骨小梁;
步骤3021):对于平面myz(p0)中的任意一点p(x0,y,z),以点p(x0,y,z)为模板对称中心,放置x方向的一组检测模板,若x方向的一组检测模板中,某个子模板值为1的体素点均属于非骨数据集合则将点p(x0,y,z)放入集合s0中;
步骤3022):取mxneg(p)中任意一点q0(x0,y0,z0),点q0(x0,y0,z0)∈a;对于平面myz(q0)任意一点q(x0,y,z),若满足第八条件,则将点q(x0,y,z)放入集合s0中;所述第八条件是:若x方向的一组检测模板中某个子模板值为1的体素点均属于非骨数据集合
步骤3023):重复步骤3022),直到平面myz(w0)内没有点满足第八条件,结束断裂骨小梁检测,则集合s0中的点为初步检测得到的对应于骨小梁端点p0(x0,y0,z0)的断裂骨小梁。
作为优选例,所述步骤30)包括:以y方向的搜索断裂骨小梁,包括:
对于一个y方向骨小梁端点p0(x0,y0,z0)∈a,定义集合s0,s0初始为空集,s0用于保存属于此端点p0(x0,y0,z0)的断裂骨小梁;
步骤3031):对于平面mxz(p0)中的任意一点p(x,y0,z),以点p(x,y0,z)为模板对称中心,放置y方向的一组检测模板,若y方向的一组检测模板中,某个子模板值为1的体素点均属于非骨数据集合则将点p(x,y0,z)放入集合s0中;
步骤3032):取myneg(p)中任意一点q0(x0,y0,z0),点q0(x0,y0,z0)∈a;对于平面mxz(q0)任意一点q(x,y0,z),若满足第九条件,则将点q(x,y0,z)放入集合s0中;所述第九条件是:若y方向的一组检测模板中某个子模板值为1的体素点均属于非骨数据集合
步骤3033):重复步骤3032),直到平面mxz(w0)内没有点满足第三条件,结束断裂骨小梁检测,则集合s0中的点为初步检测得到的对应于骨小梁端点p0(x0,y0,z0)的断裂骨小梁。
作为优选例,所述的断裂骨小梁的搜索方法,还包括步骤40):对断裂骨小梁进行二次检测,具体包括:
步骤401):设任一骨小梁端点pi(xi,yi,zi)以及所述骨小梁端点pi(xi,yi,zi)对应的断裂骨小梁集合si,集合si为骨小梁端点pi(xi,yi,zi)初步检测得到的断裂骨小梁,每个集合si中保存一根断裂骨小梁;
搜索距离骨小梁端点pi(xi,yi,zi)最近的骨小梁端点pj(xj,yj,zj),其中i≠j;若骨小梁端点pi(xi,yi,zi)与骨小梁端点pj(xj,yi,zj)之间的欧式距离小于breb,则骨小梁端点pi(xi,yi,zi)为正确的骨小梁断裂点,breb表示与骨小梁三维数据分辨率相关的阈值;
若骨小梁端点pi(xi,yi,zi)与骨小梁端点pj(xj,yi,zj)之间的欧式距离大于或等于breb,则搜索距离骨小梁端点pi(xi,yi,zi)最近的属于集合a、但不属于集合si的点pk(xk,yk,zk);
若骨小梁端点pi(xi,yi,zi)与点pk(xk,yk,zk)之间的欧式距离小于breb,则骨小梁端点pi(xi,yi,zi)为正确的骨小梁断裂点;
若无法搜索到点pk(xk,yk,zk),或者骨小梁端点pi(xi,yi,zi)与点pk(xk,yk,zk)之间的欧式距离大于或等于breb,则骨小梁端点pi(xi,yi,zi)与骨小梁端点pi(xi,yi,zi)对应的断裂骨小梁集合si为骨小梁上的突起噪声,删除骨小梁端点pi(xi,yi,zi)与骨小梁端点pi(xi,yi,zi)对应的断裂骨小梁集合si;
步骤402)返回步骤401),对下一个骨小梁端点以及对应的断裂骨小梁集合进行二次检测,直至所有的骨小梁端点以及对应的断裂骨小梁集合均经过二次检测;剩余保留的断裂骨小梁集合中记录的信息为断裂骨小梁。
有益效果:与现有技术相比,本发明实施例的断裂骨小梁的搜索方法,可以准确找出骨小梁中存在的断裂点。本发明实施例的断裂骨小梁的搜索方法,包括:预处理骨小梁三维数据;检测骨小梁端点;检测断裂骨小梁。采用本发明实施例所提出的断裂骨小梁搜索方法,可以准确的获得三维骨小梁中的断裂部分,有助于骨的力学特性分析,为后续提出具有参考价值的量化参数,以便准确、客观的描述骨的微结构提供了有力支持。
附图说明
图1是本发明实施例的方法流程图;
图2(a)是骨小梁中间产生断裂的模型图;
图2(b)是骨小梁根部产生断裂的模型图;
图3是断裂骨小梁检测模板示意图,其中,图3(a)是水平模板,图3(b)-(e)是倾斜模板;
图4是断裂的骨小梁样本示意图。
具体实施方式
下面结合附图,对本发明的技术方案进行详细的说明。
如图1所示,本发明实施例的一种断裂骨小梁的搜索方法,包括:
步骤10)预处理骨小梁三维数据;
步骤20)检测骨小梁端点;
步骤30)检测断裂骨小梁。
上述实施例的方法中,先预处理骨小梁三维数据,然后检测骨小梁端点,最后检测断裂骨小梁。该方法可以实现断裂骨小梁的搜索。本申请中,骨小梁断裂发生在中部或根部,且断裂处骨小梁较细,将环形模板从骨小梁端点处沿骨小梁延伸的相反方向移动,即可找到断裂的骨小梁。
本发明实施例的搜索方法,采用一个环状模板,从位于骨与非骨相邻区域的端点开始,从不同方向对断裂骨小梁进行类似于套环的操作。套环的过程中可以改变环状模板的方向。若整个套环的操作具有连续性,且连续套住的断裂骨小梁满足断裂处小于一个与骨小梁三维数据的分辨率有关的阈值,则认为搜索到了一个断裂骨小梁。本发明方法的实施有助于骨的力学特性分析,为后续提出具有参考价值的量化参数,以便准确、客观的描述骨的微结构提供了有力支持。
作为优选例,所述步骤10)预处理骨小梁三维数据,具体包括:
采用阈值法对骨小梁三维数据进行预处理,将骨小梁三维数据分为骨数据与非骨数据。将骨小梁三维数据分为骨数据与非骨数据,具体包括:若骨小梁三维数据值大于或等于阈值,则所述骨小梁三维数据属于骨数据;若骨小梁三维数据值小于阈值,则所述骨小梁三维数据属于非骨数据。定义由骨数据组成集合a,由非骨数据组成集合
空间中任意两点相邻采用26邻域的定义。
若集合a中两点p、q之间存在一条位于集合a中的路径p、p1、p2、…、pi、…、pn、q,其中,p与p1相邻,pi与pi+1相邻,pn与q相邻,则称点p与点q连通。
对于空间中任意一点p0(x0,y0,z0)∈a,定义穿过点p0的xy连通平面mxy(p0)为:
mxy(p0)={q=(x’,y’,z0)|点p0与点q连通}
其中,x’表示点q在x轴上的坐标,且不等于x0;y’表示点q在y轴上的坐标,且不等于y0。
穿过点p0的yz连通平面myz(p0)为:
myz(p0)={q=(x0,y’,z’)|点p0与点q连通}
其中,z’表示点q在z轴上的坐标,且不等于z0。
穿过点p0的zx连通平面mxz(p0)为:
mxz(p0)={q=(x’,y0,z’)|点p0与点q连通}
对于空间中任意一点p0(x0,y0,z0)∈a,定义在z轴方向上点p0的两个相邻平面为:
mzpos(p0)={(x0+i,y0+j,z0+1),i,j∈{-1,0,1}}
mzneg(p0)={(x0+i,y0+j,z0-1),i,j∈{-1,0,1}}
对于空间中任意一点p0(x0,y0,z0)∈a,定义在x轴方向上点p0的两个相邻平面为:
mxpos(p0)={(x0+1,y0+i,z0+j),i,j∈{-1,0,1}}
mxneg(p0)={(x0-1,y0+i,z0+j),i,j∈{-1,0,1}}
对于空间中任意一点p0(x0,y0,z0)∈a,定义在y轴方向上点p0的两个相邻平面为:
mypos(p0)={(x0+i,y0+1,z0+j),i,j∈{-1,0,1}}
myneg(p0)={(x0+i,y0-1,z0+j),i,j∈{-1,0,1}}。
上述步骤10)预处理骨小梁三维数据。对骨小梁三维数据进行预处理,可以将原始图像背景中的噪声去除,只保留骨小梁的骨架结构,便于后续算法分析。
作为优选例,所述步骤20)包括:对于空间中任意一点p0(x0,y0,z0)∈a,分别沿x轴、y轴和z轴三个方向对其进行判断,在任意一个方向上满足条件,则点p0(x0,y0,z0)是骨小梁端点。
步骤20)中,沿z轴方向搜索骨小梁端点的过程为:
对于空间中任意一点p0(x0,y0,z0)∈a,得到点p0(x0,y0,z0)的xy连通平面mxy(p0);若同时满足第一条件和第二条件,则p0为断裂骨小梁的端点;
第一条件为:对于平面mxy(p0)中的任意两点p1(x1,y1,z0)与p2(x2,y2,z0),max{|x1-x2|,|y1-y2|}≤brea;其中,brea表示与骨小梁三维数据分辨率相关的阈值;
第二条件为:对于平面mxy(p0)中的任意一点p(x,y,z0),点p(x,y,z0)在z方向上的相邻平面mzpos(p)或mzneg(p)中的点均属于非骨数据集合
所述步骤20)中,沿x轴方向搜索骨小梁端点的过程为:
对于空间中任意一点p0(x0,y0,z0)∈a,得到点p0(x0,y0,z0)的yz连通平面myz(p0);若同时满足第三条件和第四条件,则p0为断裂骨小梁的端点;
第三条件为:对于平面myz(p0)中的任意两点p1(x0,y1,z1)与p2(x0,y2,z2),max{|y1-y2|,|z1-z2|}≤brea;其中,brea表示与骨小梁三维数据分辨率相关的阈值;
第四条件为:对于平面myz(p0)中的任意一点p(x0,y,z),点p(x0,y,z)在x方向上的相邻平面mxpos(p)或mxneg(p)中的点均属于非骨数据集合
作为优选例,所述步骤20)中,沿y轴方向搜索骨小梁端点的过程为:
对于空间中任意一点p0(x0,y0,z0)∈a,得到点p0(x0,y0,z0)的xz连通平面mxz(p0);若同时满足第五条件和第六条件,则p0为断裂骨小梁的端点;
第五条件为:对于平面mxz(p0)中的任意两点p1(x1,y0,z1)与p2(x2,y0,z2),max{|x1-x2|,|z1-z2|}≤brea;其中,brea表示与骨小梁三维数据分辨率相关的阈值;
第六条件为:对于平面mxz(p0)中的任意一点p(x,y0,z),点p(x,y0,z)在y方向上的相邻平面mypos(p)或myneg(p)中的点均属于非骨数据集合
上述步骤20)检测骨小梁端点。从拓扑学角度找到杆状骨小梁的端点,便于后续搜索断裂骨小梁。
作为优选例,所述步骤30)包括:在(x,y,z)三个方向上分别采用其方向上的一组检测模板搜索断裂骨小梁;每组检测模板含有五个子模板,每个子模板的内径为din,外径为dex;din与dex均为与骨小梁三维数据分辨率有关的数值;当表现在模板中时,内径din表现为子模板中含有相应的体素个数;在子模板中,将环内体素的取值设置为0;外径dex表现为围成子模板的体素个数;在子模板中,围成子模板中的体素的取值设置为1;定义一组检测模板中,子模板的法线方向为此组检测模板的方向。例如,构建如附图3所示的一组检测模板,每组检测模板含有5个子模板。对于一个用三维坐标系表示的骨小梁三维数据,共有(x,y,z)三个方向的三组检测模板,共计15个子模板。
在步骤30)中,作为优选例,以z方向的搜索断裂骨小梁,包括:
对于一个z方向骨小梁端点p0(x0,y0,z0)∈a,定义集合s0,s0初始为空集,s0用于保存属于此端点p0(x0,y0,z0)的断裂骨小梁;
步骤3011):对于平面mxy(p0)中的任意一点p(x,y,z0),以点p(x,y,z0)为模板对称中心,放置z方向的一组检测模板,若z方向的一组检测模板中,某个子模板值为1的体素点均属于非骨数据集合则将点p(x,y,z0)放入集合s0中;
步骤3012):取mzneg(p)中任意一点q0(x0,y0,z0),点q0(x0,y0,z0)∈a;对于平面mxy(q0)任意一点q(x,y,z0),若满足第七条件,则将点q(x,y,z0)放入集合s0中;所述第七条件是:某个子模板值为1的体素点均属于非骨数据集合
步骤3013):重复步骤302),直到平面mxy(w0)内没有点满足第七条件,结束断裂骨小梁检测,则集合s0中的点为初步检测得到的对应于骨小梁端点p0(x0,y0,z0)的断裂骨小梁。
在步骤30)中,作为优选例,以x方向的搜索断裂骨小梁,包括:
对于一个x方向骨小梁端点p0(x0,y0,z0)∈a,定义集合s0,s0初始为空集,s0用于保存属于此端点p0(x0,y0,z0)的断裂骨小梁;
步骤3021):对于平面myz(p0)中的任意一点p(x0,y,z),以点p(x0,y,z)为模板对称中心,放置x方向的一组检测模板,若x方向的一组检测模板中,某个子模板值为1的体素点均属于非骨数据集合则将点p(x0,y,z)放入集合s0中;
步骤3022):取mxneg(p)中任意一点q0(x0,y0,z0),点q0(x0,y0,z0)∈a;对于平面myz(q0)任意一点q(x0,y,z),若满足第八条件,则将点q(x0,y,z)放入集合s0中;所述第八条件是:若x方向的一组检测模板中某个子模板值为1的体素点均属于非骨数据集合
步骤3023):重复步骤3022),直到平面myz(w0)内没有点满足第八条件,结束断裂骨小梁检测,则集合s0中的点为初步检测得到的对应于骨小梁端点p0(x0,y0,z0)的断裂骨小梁。
在步骤30)中,作为优选例,以y方向的搜索断裂骨小梁,包括:
对于一个y方向骨小梁端点p0(x0,y0,z0)∈a,定义集合s0,s0初始为空集,s0用于保存属于此端点p0(x0,y0,z0)的断裂骨小梁;
步骤3031):对于平面mxz(p0)中的任意一点p(x,y0,z),以点p(x,y0,z)为模板对称中心,放置y方向的一组检测模板,若y方向的一组检测模板中,某个子模板值为1的体素点均属于非骨数据集合则将点p(x,y0,z)放入集合s0中;
步骤3032):取myneg(p)中任意一点q0(x0,y0,z0),点q0(x0,y0,z0)∈a;对于平面mxz(q0)任意一点q(x,y0,z),若满足第九条件,则将点q(x,y0,z)放入集合s0中;所述第九条件是:若y方向的一组检测模板中某个子模板值为1的体素点均属于非骨数据集合
步骤3033):重复步骤3032),直到平面mxz(w0)内没有点满足第三条件,结束断裂骨小梁检测,则集合s0中的点为初步检测得到的对应于骨小梁端点p0(x0,y0,z0)的断裂骨小梁。
上述步骤30)检测断裂骨小梁。创建一组环形模板,从骨小梁端点处沿坐标轴搜索断裂骨小梁,可以对多种形态的断裂骨小梁进行检测和搜索。
作为优选例,所述的断裂骨小梁的搜索方法,还包括步骤40):对断裂骨小梁进行二次检测。
步骤40)具体包括:
步骤401):设任一骨小梁端点pi(xi,yi,zi)以及所述骨小梁端点pi(xi,yi,zi)对应的断裂骨小梁集合si,集合si为骨小梁端点pi(xi,yi,zi)初步检测得到的断裂骨小梁,每个集合si中保存一根断裂骨小梁;
搜索距离骨小梁端点pi(xi,yi,zi)最近的骨小梁端点pj(xj,yj,zj),其中i≠j;若骨小梁端点pi(xi,yi,zi)与骨小梁端点pj(xj,yj,zj)之间的欧式距离小于breb,则骨小梁端点pi(xi,yi,zi)为正确的骨小梁断裂点,breb表示与骨小梁三维数据分辨率相关的阈值;集合si为断裂后残余的骨小梁,该断裂的情况类似于附图2(a)所示。
若骨小梁端点pi(xi,yi,zi)与骨小梁端点pj(xj,yj,zj)之间的欧式距离大于或等于breb,则搜索距离骨小梁端点pi(xi,yi,zi)最近的属于集合a、但不属于集合si的点pk(xk,yk,zk);
若骨小梁端点pi(xi,yi,zi)与点pk(xk,yk,zk)之间的欧式距离小于breb,则骨小梁端点pi(xi,yi,zi)为正确的骨小梁断裂点;集合si为断裂后残余的骨小梁,此时,该断裂的情况类似于附图2(b)所示;
若无法搜索到点pk(xk,yk,zk),或者骨小梁端点pi(xi,yi,zi)与点pk(xk,yk,zk)之间的欧式距离大于或等于breb,则骨小梁端点pi(xi,yi,zi)与骨小梁端点pi(xi,yi,zi)对应的断裂骨小梁集合si为骨小梁上的突起噪声,删除骨小梁端点pi(xi,yi,zi)与骨小梁端点pi(xi,yi,zi)对应的断裂骨小梁集合si;
步骤402)返回步骤401),对下一个骨小梁端点以及对应的断裂骨小梁集合进行二次检测,直至所有的骨小梁端点以及对应的断裂骨小梁集合均经过二次检测;剩余保留的断裂骨小梁集合中记录的信息为断裂骨小梁。
上述步骤40)实现对断裂骨小梁进行二次检测。二次检测目的是对步骤30)寻找到的断裂骨小梁进行验证,剔除骨小梁凸起。通过二次检测,对算法结果进行优化,将骨小梁凸起从结果中剔除,使得寻找到的断裂骨小梁更准确。
骨小梁的断裂点分为两种情况,分别为骨小梁中间产生断裂,以及骨小梁根部产生断裂。断裂后的骨小梁表现为形状不规则的杆状物体,且含有位于骨与非骨相邻区域的端点。
本发明实施例的方法,采用一个环状模板,从位于骨与非骨相邻区域的端点开始,从不同方向对断裂骨小梁进行类似于套环的操作。套环的过程中可以改变环状模板的方向。若整个套环的操作具有连续性,且连续套住的断裂骨小梁满足断裂处小于一定阈值,则认为搜索到了一个断裂骨小梁。该阈值与骨小梁三维数据的分辨率有关。
下面以一个分辨率为100um,各向同性的骨小梁三维数据为例进行说明。当采用此特征的数据时,本发明技术方案中的各个阈值的具体数值为:
brea=2;
breb=3;
din约为300um,则子模板(a)中环内体素的个数为9个(3×3);如附图3(a)所示。
dex约为400um,则围成子模板(a)的体素个数为16个,围成子模板(b)~(e)的体素个数为20个,如附图3(b)~(e)所示。
对如附图3(a)所示的部分三维骨小梁数据,执行本发明实施例的技术方案,可搜索到的断裂骨小梁如图4中虚线椭圆区域所示。