项目范围
范围
Cornerstone3D 是一个纯粹基于 Web 标准实现医学影像三维渲染的 JavaScript 库,
在条件允许时使用 WebGL 进行 GPU 加速渲染。Cornerstone3DTools 是它的对等库,
包含一系列用于与影像交互的操作工具和标注工具。
Cornerstone3D 的范围不包含影像 / 体数据的加载和元数据解析;
包含影像渲染与缓存。合适的影像加载器需要通过 imageLoader.registerImageLoader
和 volumeLoader.registerVolumeLoader 注册到 Cornerstone3D 上。
这类加载器的例子包括:基于 cornerstoneDICOMImageLoader 的 wadors 加载器
(通过 dicomweb 获取 DICOM P10 实例),以及 wadouri 加载器
(通过 HTTP 获取 DICOM P10 实例)。
此外,Cornerstone3D 提供了一套元数据注册机制,元数据解析器可以通过
metaData.addProvider 注册到 Cornerstone3D 上。使用
cornerstoneDICOMImageLoader 时,它的影像加载器和元数据提供者会自行完成注册。
如果想了解从元数据解析到影像加载再到影像渲染的完整流程,可以随时查看示例中的辅助代码。
TypeScript
Cornerstone3D monorepo 中的所有库都用 TypeScript 编写,因此提供类型安全的 API。
这意味着你可以在 TypeScript 环境中使用本库,并借助类型信息确认传给任何方法的参数
都符合预期。
浏览器支持
Cornerstone3D 使用 HTML5 canvas 元素和 WebGL 2.0 的 GPU 渲染来显示影像,
所有现代浏览器都支持这两项能力。体数据渲染部分最近做过一轮重构,
性能和内存管理都有改善,并且不再需要 sharedArrayBuffer——早前渲染体数据时它是必需的。
- Chrome > 68
- Firefox > 79
- Edge > 79
如果你使用的是更老的浏览器,或者设备没有显卡,那么可能无法用 Cornerstone3D
渲染体数据影像。不过堆栈影像仍然可以显示:Cornerstone3D 为这类场景实现了 CPU 回退方案。
Monorepo 结构
Cornerstone3D 是一个 monorepo,包含以下几个包:
/packages/core:核心库,负责影像与体数据的渲染和缓存。/packages/tools:工具库,负责影像操作、标注,以及分割的渲染与工具。/packages/dicom-image-loader:影像加载器,处理通过 HTTP 获取的wadors与wadouriDICOM P10 实例。/packages/nifti-volume-loader:NIfTI 文件的加载器。/packages/docs:全部包的文档,包括指南、示例和 API 参考。