基础Cornerstone流程:
- 获取
ImageId
。 - 通过
Image Loader
使用ImageId
得到Image Object
。 - 通过
Rendering Engine
使用Image Object
渲染到视口Viewports
。
ImageId
- 简介:
ImageId
是一个URL
,用于标识单张图片。
- ImageId格式:
Image Loader
(图像加载器):<scheme name>
:方案名称,用于确定调用哪个图像加载器插件来加载图像,不同的方案对应不同的图像获取方式或来源,例如http
可能用于从普通 Web 服务器获取图像,dicomweb
用于与遵循 DICOM Web 标准的服务器交互获取医学图像等。
Image Loader specific information
(图像加载器具体信息):<hierarchical part>
:层次部分,包含与图像定位相关的层次化信息,具体内容取决于方案名称和图像加载器的定义,可能包括服务器地址、路径以及各种 UID(唯一标识符)等,用于在特定服务器或存储系统中准确找到图像资源。[?<query>]
:查询部分,可选。[#<fragment>]
:片段部分,可选。
- ImageId示例:
example://1
dicomweb://server/wado/{uid}/{uid}/{uid}
http://server/image.jpeg
custom://server/uuid
wadors://server/{StudyInstanceUID}/{SeriesInstanceUID}/{SOPInstanceUID}
Image Loaders
- 简介:图像加载器,是一个JavaScript函数,负责接收
ImageId
并返回一个Image Object
。 - 异步要求:由于加载图像通常需要调用服务器,所以图像加载的API必须是异步的。
ImageLoaders
返回一个包含Promise
的对象,cornerstone
将使用该Promise
异步接收图像对象,或者发生错误时返回错误。 ImageLoader
工作流程:- 通过
registerImageLoader
API向cornerstone
注册。 - 通过
loadImage
API加载图像(用于堆栈)或通过createAndCacheVolume
API加载体积图像。 ImageLoader
将返回一个Image Load Object
,其中包含一个Promise
,当它获取到像素数据时会解析该Promise
并返回响应的图像对象。- 使用
renderingEngine
API进行显示。
- 通过
- 可用的
Image Loader
Cornerstone DICOM Image Loader
- 用于加载
DICOM Part 10 images; Supports WADO-URI and WADO-RS; Supports multi-frame DICOM instances; Supports reading DICOM files from the File objects
。
- 用于加载
Cornerstone Web Image Loader
- 用于加载
PNG and JPEG
。
- 用于加载
Cornerstone-nifti-image-loader
- 用于加载
NIFTI
。
- 用于加载
Image Object
- 简介:图像对象或
Image load Object
是由image Loaders
返回的,是一个对象,包含一个Promise
,还有其他属性。
Metadata Provides
- 简介:元数据提供者,是一个JavaScript函数,充当访问于Cornerstone中图像相关的元数据的接口。
- 元数据:非像素级的数据,例如:图像的像素间距、病人id或日期等数据,一般存储在文件头中。
Volume Loaders
- 简介:与
Image Loaders
类似,体积加载器接收一个volumeId
和其他加载体积所需的信息,并返回一个解析为Volume
的Promise
。这个Volume
可以由一组 2D 图像(例如imageIds
)构造而成,或者可以来自一个 3D 数组对象(例如NIFTI
格式)。 cornerstoneStreamingImageVolumeLoader
:用于支持将 2D 图像(imageIds
)流式传输为 3D 体积,是流式体积的默认体积加载器。
Volumes
- 简介:体积是一个 3D 数据数组,在空间中有物理大小和方向。它可以通过组合 3D 成像系列的像素数据和元数据构建,也可以由应用程序从头开始定义。一个体积具有
FrameOfReferenceUID
、voxelSpacing (x,y,z)
(体素间距)、voxel dimensions (x,y,z)
(体素尺寸)、origin
(原点)和orientation
(方向)向量,这些属性唯一地定义了其相对于患者坐标系的坐标系。 ImageVolume
:在Cornerstone3D
中,使用ImageVolume
基类来表示 3D 图像体积,所有体积都派生自该类。Voxel Manager
(体素管理器):负责管理体积的体素数据。
Rendering Engine
- 简介:渲染引擎允许用户创建视口(
Viewports
),将这些视口与屏幕上的 HTML 元素相关联,并使用离屏 WebGL 画布将数据渲染到这些元素上。它能够渲染多个视口,一般情况下无需创建多个引擎,但在多显示器设置等场景下可创建多个实例,每个实例使用单独的 WebGL 上下文来渲染对应显示器的视口。 - 一般使用流程:
- 实例化
RenderingEngine
。 - 视口创建
setViewports
API。
- 实例化
Viewports
- 视口可以被认为是:
- 从特定角度观看图像的相机。
- 用于显示该相机输出的画布。
- 一组从图像数据到可视数据的转换(LUT、窗口级别、平移等)
StackViewport
- 适合渲染一堆图像,这些图像可能属于也可能不属于同一图像。
- 堆栈可以包含各种形状、大小和方向的 2D 图像。
VolumeViewport
- 适合渲染被视为一幅 3D 图像的体积数据。
- 拥有 VolumeViewport 可通过设计实现多平面重组或重建 (MPR),您可以在其中从各种不同方向可视化体积,而无需增加性能成本。
- 用于两个系列之间的图像融合。
- VolumeViewport3D
- 适用于体积数据的实际 3D 渲染。
- 具有不同类型的预设,例如骨骼、软组织、肺等。