cornerstoneJs 介绍

cornerstoneJs 介绍

cornerstone 是一个开源项目,目标是提供一个完整的基于 web 的医疗成像平台。

依赖库

目前基于 cornerstone 开发 web 端医疗成像平台并不止需要一个 javascript 库,而是需要多个库进行配合,庆幸的是几乎所有需要的库均为 cornerstone 提供,可以理解为已经形成了一套生态系统。依赖关系如下:

库名作用
cornerstone Core提供图像渲染、加载、缓存和视口转换的中央库
cornerstone Tools用于帮助注释、分割和测量医学图像
cornerstone WADO Image Loader用于通过 HTTP(WADO-URI)或 DICOMWeb(WADO-RS)的 DICOM P10 实例的图像加载器
cornerstone Web Image Loader用于 web 图像(PNG、JPEG)的图像加载器
dicom Parser用于在现代基于 HTML5 的 web 浏览器(IE10+)节点中解析 DICOM P10 字节流以及原始(未封装在第 10 部分中)字节流
cornerstone Math数学和计算几何

如何需要开发移动端项目,还需要额外的库支持:

库名作用
Hammer.js添加对触摸事件和手势的跨浏览器支持

在这里插入图片描述

关键特性

  • 基于 HTML5/Javascript 的库,可以轻松地将交互式医学图像添加到 web 应用程序中
  • 作为从企业查看器、报告查看器等构建更复杂医疗成像应用程序的基础
  • 支持所有基于 HTML5 的浏览器,包括手机、平板电脑和台式机
  • 显示所有常见的医学图像格式(例如 8 位灰度、16 位灰度、RGB 颜色)
  • 高性能图像显示(例如通过 webworker)
  • 通过图像加载器插件设计从具有不同协议的不同系统检索图像
  • API 支持更改视口属性(例如 ww/wc、缩放、平移、反转)
  • 仅支持 2D 成像

最简单的例子

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>最简单的例子</title>
    <script src="https://unpkg.com/cornerstone-core@2.6.1/dist/cornerstone.js"></script>
    <script src="https://unpkg.com/cornerstone-wado-image-loader@4.1.5/dist/cornerstoneWADOImageLoader.bundle.min.js"></script>
    <script src="https://unpkg.com/dicom-parser@1.8.13/dist/dicomParser.js"></script>
    <style>
      #dicom_container {
        width: 500px;
        height: 500px;
      }
    </style>
  </head>

  <body>
    <div id="dicom_container"></div>
    <script>
      cornerstoneWADOImageLoader.webWorkerManager.initialize({
        maxWebWorkers: navigator.hardwareConcurrency || 1,
        startWebWorkersOnDemand: true,
        taskConfiguration: {
          decodeTask: {
            initializeCodecsOnStartup: false,
          },
        },
        webWorkerTaskPaths: [
          "https://unpkg.com/cornerstone-wado-image-loader@4.1.5/dist/610.bundle.min.worker.js",
        ],
      });
      cornerstoneWADOImageLoader.external.cornerstone = cornerstone;
      cornerstoneWADOImageLoader.external.dicomParser = dicomParser;
      const element = document.getElementById("dicom_container");
      cornerstone.enable(element);
      const imageId =
        "dicomweb:https://tools.cornerstonejs.org/examples/assets/dicom/bellona/chest_lung/1.dcm";
      cornerstone.loadImage(imageId).then(function (image) {
        cornerstone.displayImage(element, image);
      });
    </script>
  </body>
</html>
<think>嗯,用户想了解CornerstoneJS的使用方法或教程。好的,首先我得回忆一下之前用户提供的引用内容,里面提到了几个关键点,比如初始化配置、加载图像、工具库的使用,还有体积渲染相关的部分。用户可能是在做医学影像相关的项目,需要处理DICOM图像,所以需要指导如何设置CornerstoneJS的环境以及基本操作步骤。 首先,用户可能需要知道如何安装和引入必要的库。根据引用[1]和[2],里面提到了需要导入cornerstone-core、cornerstone-tools,还有图像加载器如cornerstone-wado-image-loader和dicom-parser。所以第一步应该说明如何安装这些依赖,比如使用npm或yarn安装。 然后,初始化配置是关键步骤。需要配置图像加载器,比如设置DICOM文件的加载器,可能还要处理Web图像或者其他格式。引用[3]里提到了注册image loader的步骤,这里需要详细说明如何注册不同的loader,比如使用cornerstoneWADOImageLoader.configure来配置codecs和webWorkerManager。 接下来,创建HTML结构。用户需要在页面上添加div元素作为渲染容器,并设置样式,比如宽度、高度和背景颜色。这部分需要具体示例,比如给出一个div的HTML代码和CSS样式。 加载并显示图像是核心功能。根据引用[3],图像加载涉及缓存检查、加载器选择以及异步加载。需要展示如何通过imageId加载图像,并使用loadImage函数返回的promise来处理图像显示,可能还要用到enable元素和displayImage函数。 工具库的初始化也很重要,比如启用手动工具,如窗宽窗位调整、平移缩放等。这部分需要说明如何调用cornerstoneTools.init,并设置工具的模式,比如设置dragProbe工具为活跃状态。 此外,用户可能对体积渲染感兴趣,引用[1]提到需要处理不同方向的渲染容器,比如轴向和矢状面。可能需要进一步说明如何加载和显示体积数据,但当前用户的问题可能更基础,所以可以放在进阶部分或作为相关问题提出。 还要注意用户可能遇到的常见问题,比如Web Worker的配置、跨域问题,或者图像加载失败的处理。需要提醒用户配置正确的路径和权限,以及如何处理错误。 最后,生成相关问题时,应该围绕用户可能进一步需要的内容,比如高级工具的使用、体积渲染、性能优化,以及如何处理DICOM标签。这些问题可以帮助用户深入学习和解决问题。 总结一下,回答的结构应该是分步骤的教程,涵盖安装、配置、HTML结构、图像加载、工具初始化,并提供代码示例。同时,相关问题要引导用户探索更深入的主题。</think># CornerstoneJS基础使用教程 ### 一、环境初始化 1. **安装依赖** ```bash npm install @cornerstonejs/core @cornerstonejs/tools dicom-parser @cornerstonejs/dicom-image-loader ``` 2. **配置图像加载器** ```javascript import * as cornerstone from '@cornerstonejs/core'; import * as cornerstoneTools from '@cornerstonejs/tools'; import cornerstoneDICOMImageLoader from '@cornerstonejs/dicom-image-loader'; // 配置DICOM图像加载器 cornerstoneDICOMImageLoader.external.cornerstone = cornerstone; cornerstoneDICOMImageLoader.external.dicomParser = dicomParser; cornerstone.imageLoader.registerImageLoader('wadouri', cornerstoneDICOMImageLoader.wadouri.loadImage); ``` ### 二、HTML结构准备 ```html <div id="cornerstone-viewport" style="width:512px; height:512px; background:black"></div> ``` ### 三、图像加载与显示 ```javascript // 启用DOM元素 const element = document.getElementById('cornerstone-viewport'); await cornerstone.enable(element); // 加载DICOM图像 const imageId = 'wadouri:https://example.com/dicom/image001.dcm'; const image = await cornerstone.loadImage(imageId); // 渲染图像 cornerstone.displayImage(element, image); ``` ### 四、工具库初始化 ```javascript // 初始化工具库 cornerstoneTools.init({ globalToolSyncEnabled: true }); // 启用手动工具 cornerstoneTools.addTool(cornerstoneTools.WindowLevelTool); cornerstoneTools.addTool(cornerstoneTools.PanTool); cornerstoneTools.addTool(cornerstoneTools.ZoomTool); cornerstoneTools.setToolActive('WindowLevel', { mouseButtonMask: 1 }); cornerstoneTools.setToolActive('Pan', { mouseButtonMask: 2 }); cornerstoneTools.setToolActive('Zoom', { mouseButtonMask: 4 }); ``` ### 五、进阶配置 1. **Web Worker配置**(提升大文件加载性能) ```javascript cornerstoneWADOImageLoader.webWorkerManager.initialize({ maxWebWorkers: 4, startWebWorkersOnDemand: true }); ``` 2. **体积数据加载** ```javascript const volumeId = 'cornerstoneStreamingImageVolume:myVolume'; const volumeLoader = cornerstone.volumeLoader.registerVolumeLoader(volumeId, cornerstoneStreamingImageVolumeLoader); const volume = await volumeLoader.load(volumeId, { imageIds: [...] }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值