B-spine: Learning B-spline Curve Representation for Robust and Interpretable Spinal Curvature Estimation

B-spine: Learning B-spline Curve Representation for Robust and Interpretable Spinal Curvature Estimation

B-spine(AAAI'24):基于B样条曲线预测,使用深度学习进行曲线参数预测CT图像中的脊柱曲线。
代码仓库

动机

基于B样条的脊柱曲线拟合,通过网络预测曲线参数以及Cobb角计算,使得整个过程不依赖于关键点标注。

方法

基本流程:脊柱区域分割\(\rightarrow\)脊柱曲线拟合\(\rightarrow\)Cobb角计算

流程图

分割

使用轻量化的SSformer进行分割。得到的初步掩码较为粗糙,因此提出SegRefine模块进行优化,即训练一个CycleGAN实现粗糙掩码和精细掩码的转换。

B样条中心线预测

通过ResNet预测B样条曲线参数,设置:degree=3, 控制点数量=10,节点数量=14,节点向量=\(\{0, 0, 0, 0, u_4, u_5, \cdots, u_9, 1, 1, 1, 1\}\)。故而网络需要预测的曲线参数包括10个控制点坐标\(P\)与6个节点\(U\)。

直接预测曲线参数可能会导致结果不稳定,因此先预测34个点,通过MSE监督:

\[L_{init}=\frac{1}{34}=\sum_{i=1}^{34}{|| C^{init}_i - C^{GT}_i ||^2_2} \]

其中,\(C_i\)表示对应曲线上的第\(i\)个点。

随后,再通过MLP以34个点坐标为输入预测B样条曲线的参数,通过MSE监督:

\[L_{paras}=\frac{1}{10}\sum_{i=0}^9{|| P^{pred}_i - P^{GT}_i ||^2_2} + \frac{1}{6}\sum_{i=4}^9{|| U^{pred}_i - U^{GT}_i ||^2_2} \]

得到曲线表示后,再从曲线上采样34个点,并通过MSE监督:

\[L_{resample}=\frac{1}{34}\sum_{i=1}^{34}{|| C(u_i) - C^{GT}_i ||^2_2} \]

总损失为上述三者加权求和。

Cobb角估计

参照已有方法,通过曲线曲率分析(Curve Slop Analysis)计算Cobb角。

  1. 均匀采样17个点,记作\(\{ S_i \}\),对应12胸椎和5腰椎

  2. 假定脊柱沿\(y\)轴延伸(span along the y direction),根据相邻点\(S'_i\)计算曲率:(此处曲率是有符号的,所以取相邻点时应该在同个方向上取)

\[{slope}_i=\frac{S'_{i,y}-S_{i,y}}{S'_{i,x}-S_{i,x}} \]

注:此处的坐标轴方向描述有些歧义,个人复现的时候觉得比较可能的配置为:站立姿态图像的高方向(竖直方向)为x轴,宽方向(水平方向)为y轴。

  1. 根据最大曲率与最小曲率计算\({Cobb}_{MT}\):

\[{Cobb}^s_{MT}=\frac{180}{\pi}{| \arctan{\frac{{slope}_{max}-{slope_{min}}}{1+{slope}_{max}\cdot{slope_{min}}}} |} \]

  1. 根据最大曲率点和最小曲率点所处位置,在这段区间外再以类似的方式计算PT或TL角,记作:

\[{Cobb}^s = \{ {Cobb}^s_{MT}, {Cobb}^s_{PT}, {Cobb}^s_{TL} \} \]

  1. 通过一个4层MLP,以34个采样点为输入,对\({Cobb}^s\)进行细化,得到\({Cobb}^r = \{ {Cobb}^r_{MT}, {Cobb}^r_{PT}, {Cobb}^r_{TL} \}\)

实验

数据集

  • AASCE2019
  • JLU-CJUH(自行收集,未见公开)

结果

仅记录本文方法的MAE,其余指标见原文。

  • AASCE2019:平均 4.22,MT 3.73,PT 4.13,TL 4.81
  • JLU-CJUH:平均 4.32,MT 4.17,PT 4.59,TL 4.20

总结

本文方法通过预测B样条曲线参数的方式估计Cobb角,较有新意。模型采用了多个细化(refine)模块对结果进行优化,虽然形式上不是非常优雅,但应该能一定程度上保证结果的稳定性。目前来看,主要有以下可改进的点:

  1. 模型引入了一些超参,如B样条曲线的参数设置、采样点个数,因此面向不同数据集或场景可能需要手动调整。
  2. 由于代码未公开,所以不太确定B样条曲线的基函数是如何计算的。如果采用递归式的方式计算,可能会有额外的耗时。当然这个时间消耗在B样条曲线参数较少时应该不大,但也是一个效率上的潜在不稳定因素。
  3. 文章只用了B样条曲线进行实验,如果采用不同的曲线表示方法,也许能够获得其他一些性质。
posted @ 2025-09-26 09:49  Bcai  阅读(87)  评论(0)    收藏  举报