影像加载器
ImageLoader 是一个 JavaScript 函数,职责是接收一个
ImageId 并返回一个影像对象。
由于加载影像通常需要请求服务器,影像加载的 API 必须是异步的。
Cornerstone 要求影像加载器返回一个包含 Promise 的对象,
Cornerstone 通过这个 Promise 异步接收影像对象,或者在出错时接收到 Error。
影像加载器的工作流
ImageLoader通过registerImageLoaderAPI 向 cornerstone 注册自己,声明它负责加载哪些 ImageId URL scheme。- 应用请求加载影像:堆栈用
loadImageAPI,体数据用createAndCacheVolumeAPI。 - Cornerstone 把加载请求转交给与该 imageId URL scheme 相匹配的已注册
ImageLoader。 ImageLoader返回一个包含 Promise 的影像加载对象, 并在拿到像素数据后用对应的影像对象 resolve 该 Promise。 获取像素数据的过程可能包括:用XMLHttpRequest请求远端服务器、 解压像素数据(例如从 JPEG 2000 解压),以及把像素数据转换成 Cornerstone 能理解的格式(例如 RGB 与 YBR 之间的转换)。- Promise resolve 后回传的影像对象随即通过
renderingEngineAPI 显示出来。
注册影像加载器
你可以用
registerImageLoader
把一个外部影像加载器接入 cornerstone 库。该函数接受一个 scheme,
表示第二个参数那个影像加载器函数负责处理的 scheme。
可用的影像加载器
| 影像加载器 | 用途 |
|---|---|
| Cornerstone DICOM Image Loader | DICOM Part 10 影像;支持 WADO-URI 与 WADO-RS;支持多帧 DICOM 实例;支持从 File 对象读取 DICOM 文件 |
| Cornerstone Web Image Loader | PNG 与 JPEG |
| Cornerstone-nifti-image-loader | NIfTI |
CornerstoneDICOMImageLoader
CornerstoneDICOMImageLoader
是一个 cornerstone 影像加载器,用于从兼容 WADO 的服务器加载 DICOM 影像。
可以用下面的代码安装并初始化它。在内部,CornerstoneDICOMImageLoader 会把自己的
wado-rs 和 wado-uri 影像加载器注册到 Cornerstone3D,
并使用 dicomParser
解析元数据和像素数据。
import { init } from '@cornerstonejs/dicom-image-loader';
init({
maxWebWorkers: navigator.hardwareConcurrency || 1,
});
CornerstoneDICOMImageLoader 初始化之后,任何使用 wado-uri scheme 的 imageId
都会由 CornerstoneDICOMImageLoader 的 wado-uri 影像加载器和元数据提供者来处理
(例如 imageId = 'wado-uri: https://exampleServer.com/wadoURIEndPoint?requestType=WADO&studyUID=1.2.3&seriesUID=4.5.6&objectUID=7.8.9&contentType=application%2Fdicom');
wado-rs 的 imageId 同理,会走 CornerstoneDICOMImageLoader 的 wado-rs
影像加载器和元数据提供者
(例如 imageId = 'wado-rs: https://exampleServer.com/wadoRSEndPoint/studies/1.2.3/series/4.5.6/instances/7.8.9/frames/1')。
CornerstoneWebImageLoader
CornerstoneWebImageLoader 的示例代码可以在
这里
查看。