以船壁为例的边界探测先进方法

有趣的信息


下图显示了心脏的三维重建,这是通过现代断层扫描仪的工作获得的:


对于鳞片,主动脉球的厚度为3.2厘米,请考虑一下! 但是,当人们因血管而有心脏问题时,通常,我们并不是在谈论如此大的问题。 该图像显示心脏被较小的血管包围,其中一些直接从大动脉分支。 这些就是所谓的冠状动脉,直接向心脏供血。 如果例如由于钙的形成而使管腔变窄(狭窄),则血流量减少。 当狭窄明显时,会发生组织坏死,换句话说就是心脏病。 接下来,我将讨论我们计算血管边界的方法,从而使您可以自动找到变窄并对其进行估算。

要了解材质,您需要对体积,体素及其强度有一个表面的了解。 您可以通过阅读本文开头来了解。

要评估血管的狭窄程度,我们需要知道血管的内腔或其内部边界。 为此,至少要检测所有的钙。 我们还找到了外部边界,因为它可以估计壁厚,这也是有用的。 首先,让我们看一下完整的边界检测方案,然后我们将详细分析每个阶段:


绘制中心线


在实施方面最困难的阶段(至少花费了最多的时间)。 该方法基于Hessian矩阵的使用(使用Hessian矩阵增强的多尺度血管分割)。 在前面提到的文章中有更多详细信息。

切片


我们只有一条中心线,我们需要可以方便地使用的空间依赖强度的体素。 为了获得它们,要进行“一堆”切片。 对于初学者,在中心线上以固定距离设置点。 然后从每个点构造一个垂直线 。 之后是第二垂直 。 哪里 -点的中心线方向。 两个垂直线均已归一化。 在每一点上 中心线矢量图 形成一个二维坐标系。 因此,形成切片:


体素位置定义为 在哪里 在这里 是体素的真实坐标,k是切片编号。 实坐标的逆公式: 。 移至新的坐标系时,将简化切片形成的空间:


我们需要什么!

建造船舶外边界


让我们看一下该图:


我们将前一阶段获得的切片堆栈切成八个平面(类似于切蛋糕),并在平面空间中执行所有计算:



如果显示击中切割平面的体素强度的归一化值,则会得到以下图片:


为了检测血管的边界,将经典方法(通过梯度进行边缘检测)与路径搜索结合使用。 方案:


1.应用小值的高斯平滑 抑制噪音:
对于具有坐标的点
在哪里 返回一个点的强度值 ; r通常取值 -四舍五入); -平滑系数。

2.在每个点上,我们找到渐变及其值,并使用平滑后的强度值进行计算:

在哪里 -私人衍生工具。 它们是通过有限差分法找到的:


在哪里 -一点强度 平滑后。
接下来我们需要渐变的方向 是向量的归一化)和梯度的值 是向量的长度)

3.渐变的方向以度或弧度表示:
(atan2()是C ++中反正切的函数,不要与atan()混淆),然后我们对角度进行四舍五入,使其可以具有4个值,以45度为增量,即 顶部和底部被认为是同一方向:

4.执行非最大值的抑制。 如果渐变值 至少在两个相邻点之一(根据渐变的方向)大于或等于当前点的渐变值,则这样的点不能属于边界:


5.所有剩余的体素均视为边界。 根据梯度的值,钙的阈值(无法立即获得)和与“垂直”中心的接近程度,为每个点分配一定的成本(体素越亮,搜索路径时优先级越高):

在这种形式下,容器的边界几乎是唯一定义的。

6、7。要建立边界,我们使用搜索路径。 成本最低的最接近的极端点作为初始值和最终值。 要搜索路径,请使用简单的广度优先搜索,该搜索选择成本最低的边界点。 也可以使用跳转,但价格昂贵。 分别搜索容器的上下边界,然后对其进行平滑处理:

结果


对每个平面执行此过程,这会导致堆栈中每个切片的十六段环。 这些环形成容器的外边界。

从图像中可以看到,在某些区域中边界检测不正确。 这是由于钙的存在,导致钙边界的检测而不是血管边界的检测。 为防止这种情况在第一次检测到边界后发生,有必要确定钙阈值(稍后会详细介绍),然后执行第二次边界检测,而忽略钙相关的体素。 然后我们得到:

好成绩

检测内部,外部边界的阈值和钙阈值


知道外部边界之后,我们需要收集统计信息。 即,血管内所有体素的强度。

阈值检测


现在考虑聚类算法期望最大化(以下称为EM)。 让我们从正态分布函数开始:它具有数学上的期望 和标准偏差 。 它们如何影响分发类型:



假设我们有来自“黄色”来源和“蓝色”来源的数据(点):


然后,使用标准公式,我们可以轻松找到每个来源的平均值和标准偏差。 来源“ a”的公式:




但是,如果我们知道来源的数量却不知道哪个点属于哪个来源,该怎么办? 如果我们有这样的照片怎么办?


如果有人来告诉我们分布参数,那么我们可以轻松计算出每个点属于每个源的概率。 该点属于源“ a”的概率:

在哪里




并且如果我们需要计算源参数,则知道概率:



因此,形成了一个恶性循环:如果我们知道源的参数,我们将计算哪个点属于哪个源,但是我们不知道参数。 而且,如果我们知道哪个点属于哪个源,则可以计算它们的参数,但是我们不知道哪个点属于哪个源。 这些事实之间的平衡正是EM算法所做的。

在启动时,EM会收到一些预定义的源参数,只需简单地随机选择即可。 显然,如果参数已知,那么我们可以计算出每个点属于每个源的概率。 现在已经知道了概率,我们可以计算出新的更准确的参数。 然后重新开始,但是带有新参数。 在每个循环之后,源的参数变得越来越准确。

我们如何将这种知识用于船只? 让我们看一下其中一个的结构:

在图表中,通常省略此点,但容器中也可能存在脂肪和钙的形成。 因此,每个体素将属于组织之一。 经过实验,结果证明可以进行以下划分:

-脂肪
-1号墙
-2号墙
-造影剂
-钙

每种情况下体素强度的分布是正常的。 即 我们拥有使用EM查找每个来源的参数所需的一切。

结果足够好

绿线是强度的直方图,红线是所得的数学模型。

既然我们知道了每个光源的参数,我们就可以计算阈值-强度值,在这些强度的交点处,体素成员从一个光源变为另一个光源。 我们感兴趣的是:

1.容器外边界的阈值。 如果体素强度低于此值,则认为它根本不属于血管;否则,认为完全不属于血管。

2.容器内边界的阈值。 如果体素强度大于此值,则它
指血管的内腔,即 血液和造影剂的混合物;

3.钙的阈值。 如果体素强度的值大于该值,则表示钙。

船内边界的构造


与往常一样,让我们​​从图开始;对每个切片执行计算。



如果根据上一步中获得的阈值直观地显示数据,我们将得到以下图片:



红色是容器的壁。 绿色-间隙。 白色就是钙。

引起您注意的第一件事是“垂悬”的钙,它不邻接任何壁。 这被认为是正常现象,是由于断层扫描仪本身施加的平滑作用而引起的。

首先,您需要根据阈值获得边界,为此使用了行进平方算法。 可以说,分两个阶段进行。 首先,该区域被离散的网格划分,并且强度值大于或等于阈值的正方形被视为“正”,其余区域被视为“负”。

每次我们进入某种节点时,都需要围绕“正”正方形绘制轮廓。 为了做出决定,我们将考虑四个相邻正方形的符号:左上,左下,右上,右下。 除对称性外,我们对三种情况感兴趣。

1.三个正方形的一个符号和一个相反的符号,轮廓的移动沿对角线发生:

例子


2.两个具有相同符号的正方形和两个相对的正方形,并且具有相同符号的正方形在一侧,轮廓的移动是垂直或水平的:

例子


3.具有相同符号的两个正方形和具有相同符号的两个相反的正方形分别放置在相对的两侧:

例子


这是一个例外情况,为了做出决定,将取所有四个正方形的强度平均值,如果强度平均值大于或等于阈值,则中心为正,在其他情况下为负。 当前哪个节点是最新的也很重要:

例子


行进平方算法可以准确,准确地构造轮廓。 在下面的示例中,我故意将线从侧面的中心移开,以便每个步骤都清晰可见。

例子
具体来说,第一种和第二种情况:



对于船只的每个部分,我们找到两个主要轮廓-这是外边界的轮廓和内边界的轮廓。 我们立即用其他外部轮廓“剪切”了外部轮廓,在本文开头通过搜索路径找到了该轮廓。 这样做是为了忽略船只的分支。 我们忽略了距内壁太远的钙的轮廓,就好像它们根本不存在一样,我们找到了其余的并在将来使用它们。 如果血管的中心在钙内部,则我们将其向最靠近钙回路的方向移动,直到中心在管腔内(绿色区域)。 如此更新的中心,我将称为起始位置。

根据该方案,可以有两种情况:简单和复杂。


如果起始位置在闭合的钙环内(例如,如果安装了支架),则我们立即将内边界等同于该环。 当中心在钙之外时,事情会变得更加复杂。 在这种情况下,我们需要扩展启动电路,以使其在钙和内边界周围顺畅流动:


为了获得期望的结果,基于物理2d引擎中使用的思想开发了一种特殊的算法,特别是多边形碰撞解决方案和分离轴定理。

不能忽略的两个基本概念:对于相交的凸多边形,mtv向量(最小平移向量)是其中一个多边形的最小位移,其后相交停止。

我们还需要多边形法线-在2D中,它们垂直于面并指示“出”:

为了不使文章冗长,我将省略关于物理引擎的其余细节。 我唯一要注意的是,在每次迭代过程中,轮廓中的每个点都以矢量的形式累积了作用力对其自身的影响,并且在每次迭代结束时,它在此方向上沿此矢量的长度移动。 考虑一下力量:

1.两个力沿相邻顶点的方向作用在起始轮廓的每个顶点上,并且这些力与到这些顶点的距离成正比。 这使轮廓缩小并努力保持圆形;

2.如果侧面轮廓的顶点落在起始轮廓之内,则与该顶点的顶点mtv向量成比例的偏移将应用于起始轮廓的最近面;

3.如果起始轮廓的顶部在侧面轮廓内,则将与顶点的顶点向量成比例的偏移量应用于起始轮廓的顶部。 连同上一段,这不允许该电路超出其他电路的范围;

4.如果案例2和3不适用于该顶点,则在相邻面的两个法线的平均方向上对其施加力。 这样可以确保轮廓“在宽度上”增长。

重要说明:不能将顶点或面完全移动mtv向量的长度-它乘以0.2到0.8范围内的某个系数。 在其余情况下,每个力的系数是通过实验选择的。

由于采用了这种方法,我们考虑到了钙不会靠近壁的情况,​​从而找到了血管腔。 现在,只需合并所有部分的结果,即可获得容器的内部和外部边界:


支架后边界明显不准确是由异常分叉引起的:


切口处的内边界区域将代表我们最终感兴趣的间隙。 我认为进一步使用这些数据是微不足道的,不需要考虑。 最后,我将导出的内部边框的图像保留为3D:

Source: https://habr.com/ru/post/zh-CN441204/


All Articles