使用cornerstone展示一张dicom

使用cornerstone展示一张dicom

cornerstone.js里有一个核心概念:enable elements(谷歌直译为启用元素),它的本质就是一个HTML 元素(通常是div),我们所希望展示的的dic om影像就在这个元素里。

展示一个dicom影像的步骤:

  1. 调用cornerstone
  2. 在DOM里创建一个用于展示影像的element
  3. 调用enable() API关联用于展示影像的element
  4. 调用loadImage() API加载图片
  5. 调用 displayImage() API 显示图片

使用案例如下:
首先安装cornerstone:
yarn add cornerstone-core

引入cornerstone:
import * as cornerstone from “cornerstone-core”

如果使用CRA创建的react项目,dom里会有一个id为root的div,可以调用enable() API直接关联该element,也可以关联自己创建的其他element,例子代码中为了简化就直接关联root的div了

  const element = document.getElementById("root")
  cornerstone.enable(element);

调用加载图片的loadImage() API之前,首先需要安装image-loader:
yarn add cornerstone-web-image-loader
并导入:

import * as cornerstoneWebImageLoader from "cornerstone-web-image-loader";
cornerstoneWebImageLoader.external.cornerstone = cornerstone;

使用的时候需要给API函数传入imageId作为参数,imageId不是dicom文件的路径,是在dicom服务上的url,我这边使用orthanc搭建了一个本地的dicom服务(详情看我的主页里orthanc相关的文章),在orthanc里任意选择一个影像的url地址作为参数传入即可:

url格式通常为:
webserver/imageloader?requestType&studyUID&seriesUID&objectUID
url会根据参数寻找对应的影像,举个例子:

https://localhost/wado?requestType=WADO&studyUID=1.2.840.113704.1.111.8264.1553388392.1&seriesUID=1.2.840.113704.1.111.8264.1553388470.12&objectUID=1.2.840.113704.1.111.2524.1553389722.12097

结合displayImage后的用法:

const ImageId = “https://.....”
cornerstone.loadImage(ImageId).then((image) => {
    cornerstone.displayImage(element, image);
}

踩坑记录:注意一点,在react框架下,这样写并不能在页面上成功显示图像,因为document.getElementById执行的时候,dom并没有渲染完成,因此element的值为null,可以用useEffect的hooks解决这个问题。

在App.js里的完整代码可以是:

import * as cornerstone from "cornerstone-core"
import * as cornerstoneWebImageLoader from "cornerstone-web-image-loader";
import { useEffect } from "react";

cornerstoneWebImageLoader.external.cornerstone = cornerstone;

function App() {

  useEffect(() => {
    const element = document.getElementById("root")
    const imageid = "https://localhost/wado?requestType=WADO&studyUID=1.2.840.113704.1.111.8264.1553388392.1&seriesUID=1.2.840.113704.1.111.8264.1553388470.12&objectUID=1.2.840.113704.1.111.2524.1553389722.12097"
    cornerstone.enable(element);
    cornerstone.loadImage(imageid).then((image) => {
        cornerstone.displayImage(element, image);
    })
  },[])

  
  return (
    <div> </div>
  );
}

export default App;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Cornerstone.js 是一个用于Web应用程序的开源JavaScript库,可用于在Web浏览器中显示医学图像。它提供了一些强大的功能,包括图像缩放、窗宽窗位调整、图像旋转、图像移动和图像测量等。 要实现MPR(Multi-Planar Reconstruction)功能,需要使用Cornerstone的一些高级功能来处理医学图像数据。以下是一些步骤可以参考: 1. 加载DICOM图像数据 在Cornerstone中加载DICOM图像数据非常容易。只需要使用`cornerstone.loadAndCacheImage()`函数加载图像数据即可。例如: ``` cornerstone.loadAndCacheImage('dicomfile.dcm').then(function(image) { // 图像加载成功,可以进行后续处理 }); ``` 2. 将DICOM图像数据转换为像素数组 获取DICOM图像数据的像素数组需要使用Cornerstone的`getPixelData()`函数。例如: ``` var pixelData = cornerstone.getPixelData(image); ``` 3. 将像素数组转换为体素数组 将像素数组转换为体素数组需要根据DICOM图像的标准元数据进行计算。这个过程比较复杂,需要一些专业的知识和技能。可以使用第三方库,如`dicom-parser`来辅助完成该过程。例如: ``` var dataSet = dicomParser.parseDicom(pixelData); var imageFrame = new dicomParser.ImageFrame(dataSet, frameIndex); var volume = imageFrame.getInterpretedData(); ``` 4. 计算MPR图像数据 计算MPR图像数据需要使用数学公式和算法。可以参考一些开源的MPR实现,如`cornerstoneTools`,来辅助完成该过程。例如: ``` var mprImage = cornerstoneTools.generateMPRImage(volume, xAxis, yAxis, zAxis, xSpacing, ySpacing, zSpacing); ``` 5. 显示MPR图像数据 将MPR图像数据显示在Web浏览器中需要使用Cornerstone的`displayImage()`函数。例如: ``` cornerstone.displayImage(mprImage); ``` 以上是一些大致的步骤,具体实现需要根据具体需求和技术条件进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值