Cornerstone3d 基础概念

ops/2024/12/28 12:40:11/

基础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工作流程:
    • 通过registerImageLoaderAPI向cornerstone注册。
    • 通过loadImageAPI加载图像(用于堆栈)或通过createAndCacheVolumeAPI加载体积图像。
    • ImageLoader将返回一个Image Load Object,其中包含一个Promise,当它获取到像素数据时会解析该Promise并返回响应的图像对象。
    • 使用renderingEngineAPI进行显示。
  • 可用的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和其他加载体积所需的信息,并返回一个解析为VolumePromise。这个Volume可以由一组 2D 图像(例如imageIds)构造而成,或者可以来自一个 3D 数组对象(例如NIFTI格式)。
  • cornerstoneStreamingImageVolumeLoader:用于支持将 2D 图像(imageIds)流式传输为 3D 体积,是流式体积的默认体积加载器。

Volumes

  • 简介:体积是一个 3D 数据数组,在空间中有物理大小和方向。它可以通过组合 3D 成像系列的像素数据和元数据构建,也可以由应用程序从头开始定义。一个体积具有FrameOfReferenceUIDvoxelSpacing (x,y,z)(体素间距)、voxel dimensions (x,y,z)(体素尺寸)、origin(原点)和orientation(方向)向量,这些属性唯一地定义了其相对于患者坐标系的坐标系。
  • ImageVolume:在Cornerstone3D中,使用ImageVolume基类来表示 3D 图像体积,所有体积都派生自该类。
  • Voxel Manager(体素管理器):负责管理体积的体素数据。

Rendering Engine

  • 简介:渲染引擎允许用户创建视口(Viewports),将这些视口与屏幕上的 HTML 元素相关联,并使用离屏 WebGL 画布将数据渲染到这些元素上。它能够渲染多个视口,一般情况下无需创建多个引擎,但在多显示器设置等场景下可创建多个实例,每个实例使用单独的 WebGL 上下文来渲染对应显示器的视口。
  • 一般使用流程:
    • 实例化RenderingEngine
    • 视口创建setViewportsAPI。

Viewports

  • 视口可以被认为是:
    • 从特定角度观看图像的相机。
    • 用于显示该相机输出的画布。
    • 一组从图像数据到可视数据的转换(LUT、窗口级别、平移等)
      在这里插入图片描述
  • StackViewport
    • 适合渲染一堆图像,这些图像可能属于也可能不属于同一图像。
    • 堆栈可以包含各种形状、大小和方向的 2D 图像。
  • VolumeViewport
    • 适合渲染被视为一幅 3D 图像的体积数据。
    • 拥有 VolumeViewport 可通过设计实现多平面重组或重建 (MPR),您可以在其中从各种不同方向可视化体积,而无需增加性能成本。
    • 用于两个系列之间的图像融合。
  • VolumeViewport3D
    • 适用于体积数据的实际 3D 渲染。
    • 具有不同类型的预设,例如骨骼、软组织、肺等。

http://www.ppmy.cn/ops/145655.html

相关文章

Android Https和WebView

系统会提示说不安全&#xff0c;因为网站通过js就能调用你的android代码&#xff0c;如果你确认你的网站没用到JS的话就不要打开这个开关&#xff0c;如果用到了&#xff0c;就添加一个注解忽略它就行了。 后来就使用我们公司的网站了&#xff0c;发现也出不来&#xff0c;后来…

云计算时代携程的网络架构变迁

大家觉得有意义和帮助记得及时关注和点赞!!! 前言0 携程云平台简介 网络演进时间线1 基于 VLAN 的二层网络 1.1 需求1.2 解决方案&#xff1a;OpenStack Provider Network 模型1.3 硬件网络拓扑1.4 宿主机内部网络拓扑1.5 小结 优点缺点2 基于 SDN 的大二层网络 2.1 面临的新问…

Python爬虫获取1688详情接口详细解析

概述 1688作为阿里巴巴集团旗下的批发交易平台&#xff0c;提供了丰富的API接口供开发者获取商品详情信息。本文将详细介绍如何使用Python爬虫技术结合1688的API接口来获取商品详情数据。 1688 API接口简介 1688提供的商品详情API接口允许开发者获取商品的详细信息&#xff…

Rocky DEM tutorial7_Conical Dryer_锥形干燥器

tutorial 7_Conical Dryer_锥形干燥器 文章目录 tutorial 7_Conical Dryer_锥形干燥器0. 目的1. 模型介绍2. 模型设置2.1设置physics2.2 导入几何2.3 设置motion2.4 Boundary边界设置2.5 设置材料2.6设置材料间相互作用2.7 创建粒子2.8 设置颗粒进口2.9 求解器设置3. 后处理Enj…

Flink 的并行度配置低于Kafka 分区数会出现的问题

在 Flink 中使用 Kafka 数据源时&#xff0c;设置的 Kafka 分区数 和 Flink 的并行度 会直接影响数据的处理方式。如果你的 Kafka 分区数大于 Flink 的并行度&#xff0c;可能会引发以下问题&#xff1a; 1. Kafka 分区与 Flink 任务不匹配 Flink 在读取 Kafka 数据时&#xf…

web服务器之云主机、物理机租用、服务器托管的区别

云主机、物理机租用和服务器托管是三种不同的Web服务器部署方式&#xff0c;它们各有特点&#xff0c;适用于不同需求的用户。以下是这三种服务的区别&#xff1a; 云主机&#xff08;Cloud Hosting&#xff09;&#xff1a; 资源分配&#xff1a;基于虚拟化技术&#xff0c;多…

面试场景题系列:设计指标监控和告警系统

在本文中&#xff0c;我们将探讨可扩展的指标监控和告警系统的设计。理解基础设施的状况对维持其可用性和可靠性至关重要。 图-1展示了一些市面上最流行的商用和开源的指标监控和告警服务。 图-1 1.场景边界界定 为了便于展开设计以及考虑通用性&#xff0c;监控和告警需求如…

【GO基础学习】Gin 框架中间件的详解

文章目录 中间件详解中间件执行全局中间件路由级中间件运行流程中间件的链式执行中断流程 代码示例 gin框架总结 中间件详解 Gin 框架中间件是其核心特性之一&#xff0c;主要用于对 HTTP 请求的处理进行前置或后置的逻辑插入&#xff0c;例如日志记录、身份认证、错误处理等。…