🏄♀️ 前言
这里是关于Cornerstone3D Tools对影像进行交互(中篇 )- 注释类工具的使用介绍。在 Cornerstone3D Tools对影像进行交互(上篇)-基础交互工具及同步器 一文中主要介绍了一下基础交互类工具的使用,感兴趣的小伙伴可以去回顾一下呦。接下来主要介绍的就是注释类的工具,当我们拿到一个影像时,总是会有各种各种需要对影像进行注释标注类操作的需求,比如测量下长短、计算下Mean和面积、做个文字标注、或者圈定一下边缘等等。不过不用着急,上述说的这些操作Cornerstone3D Tools中基本都已涵盖,本文从支持的注释类工具种类及使用场景、编程式操作注释两大方面展开介绍。
🚀 效果演示
依旧是先来看一下案例演示效果,点击查看完整代码
-
注释工具交互效果演示
-
注释类相关API交互效果演示
🏝 工具介绍
对于目前Cornerstone3D Tools中提供的注释类工具,将它们按照功能分为了3大类:基础测量类工具、轮廓&自由绘制类工具及特定场景类绘制工具,分别对应了影像的基础注释功能、自由绘制和轮廓绘制功能及特定场景下的绘制功能。单就代码层面来说,激活使用不同的工具的实现方式基本一致。
本小节主要是对目前版本(~1.70)已支持的工具进行一个罗列介绍,目的在于当遇到某些场景时能够了解到当前版本是否具有相关的交互工具,不感兴趣的小伙伴可以直接跳过或者只针对某一寻找的工具具体查看。
基础测量工具
简单介绍
-
LengthTool(长度测量工具): 最基础的测量工具,在一个切片上计算两点之间的距离,既可以用于volume视图也可以用于stack视图
-
ProbeTool(探针工具):获取影像上某一点的位置和CT值
-
RectangleROITool(长方形ROI测量):方形测量工具,可以计算当前区域的面积、平均值、最大最小值,也可以根据业务需求由圈定的范围自行计算某些数据。
-
EllipticalROITool(椭圆形ROI测量):椭圆形测量工具,同样可以计算区域面积、平均值、最大最小值等
-
CircleROITool(圆形ROI测量):圆形测量工具
-
ArrowAnnotateTool(箭头标注):箭头指示工具,📣 📣 📣 特别说明:很多小伙伴问目前有没有文字标注工具,目前没有单独一个用于文本标注的工具,但是可以使用箭头指示工具替代,在绘制箭头指向需要标注的位置后可以自定义输入标注的文本内容。
-
AngleTool(通用角度测量):测量两条线之间的角度
使用工具
如何在项目中激活使用工具的完整代码可以参考 windowLevel 中的完整代码
// 注册工具
cornerstoneTools.addTool(ProbeTool)
const toolGroup = ToolGroupManager.createToolGroup('toolGroupId')
toolGroup.addTool(ProbeTool.toolName)
toolGroup.addViewport('viewportId', 'renderingEngineId')
// 激活工具
toolGroup.setToolActive(ProbeTool.toolName, {
bindings: [
{
mouseButton: MouseBindings.Primary, // Left Click
},
],
})
轮廓&自由绘制工具
轮廓绘制工具与基础测量工具不同,针对不同的场景需要灵活选择对应的工具
动态轮廓测量工具(LivewireContourTool
)
-
用于进行半自动化轮廓绘制。工具可以通过用户提供的种子点来进行动态计算影像中的最优路径,从而生成相对比较精确的轮廓线。
-
适用场景:高精度的区域识别识别标注任务,例如病灶的边界识别任务
自由曲线测量工具(PlanarFreehandROITool
)
-
自由手绘ROI标注工具,允许用户在图像上自由勾勒出不规则形状的区域轮廓,可以计算选中长度及面积,支持二次编辑调整。
-
适用场景:相对比较复杂且不规则的区域标注及分割、自由工具无法精准捕获边界需要手动标记时
样条曲线绘制工具(SplineROITool
)
-
创建平滑曲线形式的ROI绘制工具,支持用户通过一系列控制点生成光滑的曲线轮廓,可以更好的捕获到复杂的结构轮廓。
-
适用场景:适用于血管、神经等弯曲边界结构的标注;高平滑度的标注任务等
-
样条种类:
-
线性样条(Linear Spline):在控制点之间直接连接直线段,不进行平滑处理。适合简单直线标注,快速但不平滑
-
张量样条(Cardinal Spline):一种平滑曲线,适度紧贴控制点,并在控制点之间生成柔和过渡的曲线。平滑度适中,适合适度弯曲的区域标注
-
卡特姆-罗姆样条(Catmull-Rom Spline):一种特殊的 Cardinal 样条,具有自动设置的张力值。它生成的曲线会严格穿过所有控制点,使曲线平滑贴合于每个控制点。严格通过控制点,适合精确标注,不适合过度弯曲。
-
B样条(Cubic B-Spline):一种高阶样条曲线,不必严格穿过控制点,而是生成的平滑曲线会跟随控制点的位置。与 Catmull-Rom 样条不同,B-Spline 曲线控制点对曲线有影响,但不会强制曲线通过控制点。平滑度最高,不严格贴合控制点,适合自然曲线标注。
-
-
使用样条工具
📣 跟直接全局添加及工具组添加工具不同,不同种类的样条工具是以工具实例的方式添加到工具管理器中
toolGroup.addToolInstance(instanceToolName, SplineROITool.toolName, { spline: { type: CARDINAL, configuration: { [CARDINAL]: { scale: DEFAULT_CARDINAL_SCALE, }, }, }, })
特定场景绘制工具
脊柱侧弯角度测量工具(CobbAngleTool)
-
专门用于评估脊柱的弯曲角度(Cobb角)
-
适用场景:主要用于脊柱侧弯的诊断和评估,可以帮助医生确认脊柱侧弯的严重程度
超声波束的方向测量工具(UltrasoundDirectionalTool)
- 专门为超声影像设计的一种测量工具,用于在超声图像中标注方向信息,帮助医护人员更好地理解和分析超声成像中的位置和方向
🚢 操作API演示
终于啰里啰嗦的完成了这一大堆工具的简单介绍(这个过程简直比直接写演示Demo还要痛苦🥱),接下来终于就是代码环节了,我们可以通过激活工具的方式绘制注释,但是往往又需要对绘制的工具进行一些编程式操作,接下来介绍一些编程式交互API,主要为数据管理、选中状态管理、锁定状态管理、显示隐藏状态管理、代码添加删除注释等等方面。