概述
Cornerstone3D 是一个轻量级的 JavaScript 库,用于在支持 HTML5 canvas 元素的现代浏览器中
可视化医学影像。借助 @cornerstonejs/core 及其配套库(例如 @cornerstonejs/tools),
可以完成相当广泛的影像处理任务。
功能
渲染
使用 Cornerstone3D 的渲染引擎及其堆栈视口和体数据视口,可以:
- 渲染所有传输语法,包括 JPEG2000、JPEG Lossless 等各类压缩格式
- 流式加载体数据的切片,边加载边实时查看
- 以轴位、冠状位、矢状位等不同方位查看同一份体数据,无需重新加载整份数据(内存占用最小)
- 查看体数据中的斜切面
- 对同一份体数据应用不同的混合方式(例如最大密度投影 MIP 与平均密度投影)
- 融合并叠加多份影像,例如 PET/CT 融合
- 渲染彩色影像,并将其作为体数据渲染
- 在 GPU 渲染不可用时回退到 CPU 渲染
- 通过修改视口的元数据来改变影像的校准信息(例如像素间距)
影像操作
Cornerstone3DTools 提供以下能力:
- 通过鼠标绑定放大和缩小影像
- 向任意方向平移影像
- 以任意方位滚动浏览影像,斜切面同样适用
- 调节影像的窗宽窗位

标注
Cornerstone3DTools 还支持用工具对影像进行标注。所有标注都以 SVG 元素渲染,
这保证了它们在任何显示器分辨率下都能以最佳质量显示。Cornerstone3DTools 中的标注
存储在影像的实际物理空间中,因此同一批标注可以在多个视口里渲染和修改。此外还可以:
- 用工具组(ToolGroup)让特定工具只在特定视口上生效(例如滚动操作在 CT 轴位视口上是切换切片, 在 PT MIP 视口上则是旋转体数据)
- 用长度工具测量两点之间的距离
- 用双向线工具测量长度和宽度
- 用矩形 / 椭圆 ROI 工具计算某个感兴趣区域的均值、标准差等统计量
- 用十字定位线在不同视口的影像中定位对应点,并借助参考线切换切片
- 把不同的工具绑定到特定修饰键(例如 shift、ctrl、alt)按下时激活
- 创建自己的自定义工具

分割
Cornerstone3D 支持在所有视口(包括堆栈、体数据和 3D 视口)中以标签图的形式渲染影像分割。
可以:
- 在视口中以标签图形式渲染分割结果(例如 CT 肺部分割)
- 在 3D 视口中把标签图转换为曲面,并沿用相同的颜色
- 以任意方位(轴位、矢状位、冠状位)查看分割,斜切面同样适用
- 修改标签图的配置(颜色、不透明度、是否渲染轮廓、轮廓粗细等)
- 在 3D 的轴位、矢状位、冠状位视图中,用矩形剪刀、椭圆剪刀等工具绘制和编辑分段
- 对感兴趣区域按阈值生成标签图
同步
Cornerstone3D 支持多个视口之间的同步。目前已实现两种同步器,还有更多在开发中。
- 窗宽窗位同步器:同步源视口与目标视口的窗宽窗位
- 相机同步器:同步源视口与目标视口的相机
对于通用视口(Generic / Next)的接入方式,相机类同步被建模为 ViewState 加视口投影:
工具可以用 viewportProjection.getPresentation(...) 读取可移植的显示状态,
再通过 setViewState(...) 应用转换后的原生状态。
关于本文档
本文档分为以下几个部分: