【从0上手cornerstone3D】如何加载nifti格式的文件

在线演示

支持加载的文件格式

  • .nii

  • .nii.gz

代码实现

npm install @cornerstonejs/nifti-volume-loader
// ------------- 核心代码 Start-------------------
// 注册一个nifti格式的加载器
volumeLoader.registerVolumeLoader(
  "nifti",
  cornerstoneNiftiImageVolumeLoader
);

const niftiURL =
  "https://ohif-assets.s3.us-east-2.amazonaws.com/nifti/MRHead.nii.gz";

// 在定义volumeId时使用 nifti 前缀,便于识别使用的加载器种类
const volumeId = "nifti:" + niftiURL;
await volumeLoader.createAndCacheVolume(volumeId);
// ------------- 核心代码 End-------------------

const renderingEngine = new RenderingEngine(this.renderingEngineId);
// 在渲染引擎中创建并加载视图,使视图与HTML元素绑定
const viewportId1 = "CT_AXIAL";
const viewportId2 = "CT_SAGITTAL";
const viewportId3 = "CT_CORONAL";
const viewportInputArray = [
  {
   
    viewportId: viewportId1,
    type: csEnums.ViewportType.ORTHOGRAPHIC,
    element: document.querySelector("#element1"),
    defaultOptions: {
   
      orientation: csEnums.OrientationAxis.AXIAL,
    },
  },
  {
   
    viewportId: viewportId2,
    type: csEnums.ViewportType.ORTHOGRAPHIC,
    element: document.querySelector("#element2"),
    defaultOptions: {
   
      orientation: csEnums.OrientationAxis.SAGITTAL,
    },
  },
  {
   
    viewportId: viewportId3,
    type: csEnums.ViewportType.ORTHOGRAPHIC,
    element: document.querySelector("#element3"),
    defaultOptions: {
   
      orientation: csEnums.OrientationAxis.CORONAL,
    },
  },
];
renderingEngine.setViewports(viewportInputArray);

// 在视图上设置Volume
await setVolumesForViewports(
  renderingEngine,
  [
    {
   
      volumeId: volumeId,
    },
  ],
  [viewportId1, viewportId2, viewportId3]
);

// 渲染图像
renderingEngine.renderViewports([viewportId1, viewportId2, viewportId3]);

问题解决

  1. 非安全上下文下,提示 SharedArrayBuffer is not defined 的问题
  • 原因:非安全模式下,SharedArrayBuffer的构造函数为隐藏的,所以在类型判断时,由于SharedArrayBuffer未声明而被使用导致ReferenceError
    在这里插入图片描述

  • 临时解决:手动声明一个SharedArrayBuffer跳过检测

window.SharedArrayBuffer = ArrayBuffer

拓展

NIfTI文件

NIfTI(Neuroimaging Informatics Technology Initiative)格式是一种广泛使用的数据格式,主要用于存储和交换神经影像学数据,尤其是在功能磁共振成像(fMRI)、结构 MRI 和 DTI(扩散张量成像)等领域。这种格式由 NIfTI 组织开发,旨在简化神经影像数据的使用和交换。

NIfTI 文件的主要特点:

支持 3D 和 4D 数据
NIfTI 文件能够存储三维影像数据(如单个时间点的 MRI 扫描)以及四维数据(如随时间变化的系列扫描)

包含数据和头信息:
每个 NIfTI 文件不仅包含影像像素或体素的原始数据,还包含了描述这些数据的元数据(头信息)。这些信息包括维度、空间定位、数据类型、单位(如毫米和秒)等。

两种文件格式:
单文件(.nii)格式,将数据和头信息存储在一个文件中。
双文件(.hdr 和 .img)格式,分别存储头信息和数据。

支持数据压缩:
NIfTI 文件可以被压缩以减少空间,通常以 .nii.gz 的格式出现。

灵活性和兼容性:
NIfTI 格式旨在兼容旧的 ANALYZE 7.5 格式,同时增加新的功能。它被设计为足够灵活,以适应不断发展的医学影像技术。

最近更新

  1. TCP协议是安全的吗?

    2024-01-18 15:20:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-18 15:20:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-18 15:20:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-18 15:20:02       18 阅读

热门阅读

  1. 解析Nginx配置文件conf中的常用块

    2024-01-18 15:20:02       32 阅读
  2. nvm1.1.11

    2024-01-18 15:20:02       30 阅读
  3. 用友U8:业务员自己不能查询自己录的销售订单

    2024-01-18 15:20:02       32 阅读
  4. 如何扫描网址ip的特定端口或扫描全部网段

    2024-01-18 15:20:02       30 阅读