【从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
  • 官方答复可关注Issue:https://github.com/cornerstonejs/cornerstone3D/issues/1006

拓展

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 格式,同时增加新的功能。它被设计为足够灵活,以适应不断发展的医学影像技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/631406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt/C++编写视频监控系统83-自定义悬浮条信息

一、前言 一般视频控件上会给出个悬浮条,这个悬浮条用于显示分辨率或者一些用户期望看到的信息,一般常用的信息除了分辨率以外,还有帧率、封装格式、视频解码器名称、音频解码器名称、实时码率等,由于实际的场景不一样&#xff0…

G7易流:API连接实现无代码开发的电商平台和营销系统集成

【无代码开发的G7易流连接解决方案】 在今天的电商大环境下,效率和自动化不仅是提升业务运作成功的关键因素,更是决定电商平台生存与否的重要环节。G7易流,全球领先的物联网软件服务公司,对此深有体会。他们为电商行业提供了一种…

el-date-picker默认结束为当前时分秒

在element ui中的日期时间选择组件中默认是00:00,现在需求是点击默认结束时间为当前时分秒,查了很多资料写的都不准确 需求:实现日期时间组件可选择当前日期,比如当前是2024年01月17号下午17:21 那选中时必须结束时间为17&#x…

wpf DataGrid 实现拖拽变换位置,双击拖拽向下自动滚动

DataGrid_Drop事件是在拖放操作中释放拖动的对象时触发的事件。使用VisualTreeHelper.HitTest方法获取鼠标释放位置的目标元素。 循环向上遍历VisualTree,直到找到DataGridRow为止。 如果找到DataGridRow,则获取其索引。 检查索引是否有效,如…

页面数据类型为json,后端接受json数据

项目结构 依赖pom.xml <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.8.RELEASE</version></dependency><dependency><groupId>org.springframework…

Spring Boot整合Junit,@RunWith和@SpringBootTest的使用

Spring Boot整合Junit&#xff0c;RunWith和SpringBootTest的使用 1、在pom.xml添加junit启动器 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId> </dependency>2、编写测试…

小白准备蓝桥杯之旅(c/c++b组)

前言&#xff1a;省赛获奖比例高达百分之60,只要比一半的人努力&#xff0c;你就能大概率获奖。 寒假做的3件事 1.稳基础 熟练掌握基础语法部分&#xff0c;c比c多个stl库优势&#xff0c;c语言的同学需要会实现c中stl库部分 2.刷真题 大概比赛前30天&#xff0c;坚持每天做…

Linux查询内存占用情况以及服务器内大文件

内存占用率 free -m查看硬盘空间大小 df -lh显示大于100MiB(注意不是100MB&#xff0c;MiB和MB的区别)的所有文件 find / -size 100M -ls查看根目录占用大小 du -sh /* 2>dev.null |sort -hr | head -3列出 /bin 目录中的 5 个最大文件 ls -lSh /bin | head -5 查找 / …

Redis集群优化

文章目录 前言集群完整性问题集群带宽问题 前言 集群虽然具备高可用特性&#xff0c;能实现自动故障修复&#xff0c;但是如果使用不当&#xff0c;也会存在一些问题 集群完整性问题集群带宽问题数据倾泻问题客户端性能问题命令的集群兼容性问题Lua和事务问题 集群完整性问题…

低代码配置-属性配置面板设计

模块设计 tab项切换 组件基础属性组件数据属性组件事件属性表单属性 模块输出函数设计 tab切换函数 列表表单属性 数据来源&#xff1a; 调用接口时一次赋予&#xff0c;无需使用selectItem&#xff0c;如需使用&#xff0c;归入基础属性列表标题是否展示筛选区域 示例&am…

阿里云1T空间服务器多少钱一年?

阿里云服务器租用费用1t空间多少钱&#xff1f;1T空间如果是系统盘SSD云盘价格是3686元一年、ESSD云盘1t空间是5222元一年&#xff0c;ESSD Entry云盘1024G存储空间价格是2580元一年。阿里云服务器网aliyunfuwuqi.com整理几款不同的云盘1t空间价格&#xff1a; 阿里云服务器租…

ubuntu18.04clion无法进入断点

ubuntu18.04的gdb版本是8.1.1&#xff0c;升级为10.2之后解决&#xff1b; 升级方法点这里&#xff1b; 还需要多输入 sudo apt install texinfo

输入框输入关键字 下拉框的关键字高亮

直接上代码 //搜索框部分 <div><input v-modelkeyWord /><button clickseachFn>搜索</button> </div> //下拉框部分 <div><div v-html"item.name" v-foritem in droplist :keyitem.id></div> </div> <sc…

centos环境下安装nginx+简单使用nginx

参考&#xff1a; https://www.cnblogs.com/chaofanq/p/15022916.html Nginx安装使用教程 - 简书 1.安装 1.1 下载一下 nginx: download 选择稳定版本下载 1.2 上传到虚拟机 cd /usr/local/src/ 1.3 进入目录开始解压 tar -xvf nginx-1.24.0.tar.gz 1.4 安装 cd nginx…

我帮企业找市场|福田供应链企业走进佛山,刮起“两业融合”新旋风!

前言&#xff1a; 2023年以来&#xff0c;福田区锚定高质量发展首要任务&#xff0c;鼓实劲、出实招、求实效&#xff0c;继推出“万名干部助企行”“我帮企业找市场”“我帮企业找资金”等系列服务举措后&#xff0c;坚持系统、全面完善产业支持政策&#xff0c;打造产业发展最…

QT中操作word文档

QT中操作word文档&#xff1a; 参考如下内容&#xff1a; C(Qt) 和 Word、Excel、PDF 交互总结 Qt对word文档操作总结 QT中操作word文档 Qt/Windows桌面版提供了ActiveQt框架&#xff0c;用以为Qt和ActiveX提供完美结合。ActiveQt由两个模块组成&#xff1a; QAxContainer模…

透镜中的实像和不通过透镜中的实像有什么区别?实像可以分为物体本身和物体通过透镜呈现的图像两种吗?

问题描述&#xff1a; 透镜中的实像和不通过透镜中的实像有什么区别&#xff1f;实像可以分为物体本身和物体通过透镜呈现的图像两种吗&#xff1f; 问题1解答&#xff1a; 透镜中的实像与不通过透镜的实像有一些重要区别&#xff0c;主要体现在形成方式和性质上&#xff1a;…

SpringBoot整合MyBatis项目进行CRUD操作项目示例

文章目录 SpringBoot整合MyBatis项目进行CRUD操作项目示例1.1.需求分析1.2.创建工程1.3.pom.xml1.4.application.properties1.5.启动类 2.添加用户2.1.数据表设计2.2.pojo2.3.mapper2.4.service2.5.junit2.6.controller2.7.thymeleaf2.8.测试 3.查询用户3.1.mapper3.2.service3…

【用法总结】LiveData组件要点

【用法总结】LiveData组件要点 1、如何实现和生命周期的关联&#xff1f;1.1 observe的实现逻辑&#xff1a;1.2 观察者的装饰者&#xff1a;ObserverWrapper1.3 观察者集合的存储&#xff1a;SafeIterableMap<Observer<? super T>, ObserverWrapper>&#xff0c;…

Linux第30步_通过USB OTG将固件烧写到eMMC中

学习目的&#xff1a;在Win11中&#xff0c;使用STM32CubeProgrammer工具&#xff0c;通过USB OTG将固件烧写到eMMC中。 安装软件检查&#xff1a; 1、是否安装了JAVA; 2、是否安装了STM32CubeProgrammer工具; 3、是否安装 了DFU驱动程序; 4、是否安装了“Notepad”软件; …