cornerstoneTools 作用,用法,api使用心得

一、cornerstoneTools的用途

1、作用可以响应一些事件,例如鼠标按下的事件,鼠标滚轮的事件或按键或触摸事件

2、可以对视口进行缩放平移

3、可以在图像上绘制图形

4、可以在图像上绘制文本

二、外部依赖库

1、jquery

2、cornerstone

3、hammer

三、api 

1、addToolState(element, toolType, data)  element当前元素,toolType唯一标识,data元素总集,把所有元素绑定到tools工具中,element为当前挂载元素,主要功能影响切换下一张,不能切换下一张,下一张图片tools工具自然就不能对他操作,我的理解是这个api的意思是把所有元素都挂载tools工具。

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="utf-8">
        <link href="./css/bootstrap.min.css" rel="stylesheet">
        <link href="./css/cornerstone.min.css" rel="stylesheet">
        <style>
            body{width: 100%;height: 100%;margin: 0;padding: 0;max-width: 750px;}
            .container{position: absolute;width: 100%;height: 100%;left: 0;top: 0;}
        </style>
    </head>
    <body>
        <div class="container">
            <div id="dicomImagebox">
                <div class="dicomImage" id="dicomImage0" style="width:100%;height:100%;top:0px;left:0px; position:absolute">
                </div>
            </div>
        </div>
    </body>
    <script src="./js/jquery.min.js"></script>
    <!-- 引入 cornerstone 库 -->
    <script src="./js/cornerstone.min.js"></script>
    <script src="./js/dicomParser.min.js"></script>
    <script src="../ImageLoader/cornerstoneWADOImageLoader.js"></script>
    <script src="js/cornerstoneMath.min.js"></script>
    <script src="js/hammer.js"></script>
    <script src="js/cornerstoneTools.min.js"></script>
    <script>
        cornerstoneTools.external.Hammer = Hammer;
        cornerstoneTools.external.cornerstone = cornerstone;
        cornerstoneTools.external.cornerstoneMath = cornerstoneMath;
        cornerstoneWADOImageLoader.external.cornerstoneMath = cornerstoneMath;
        //指定要注册加载程序的基石实例
        cornerstoneWADOImageLoader.external.cornerstone = cornerstone;
        cornerstone.registerImageLoader("http", cornerstoneWADOImageLoader.loadImage);
        cornerstone.registerImageLoader("https", cornerstoneWADOImageLoader.loadImage);
        var config = {
          webWorkerPath: "../ImageLoader/cornerstoneWADOImageLoaderWebWorker.js",
          taskConfiguration: {
            decodeTask: {
              codecsPath: "../ImageLoader/cornerstoneWADOImageLoaderCodecs.js"
            }
          }
        };
        cornerstoneWADOImageLoader.webWorkerManager.initialize(config);
      var baseUrl="";
      var exampleStudyImageIds="";
      var isInitLoad=true;
      var isShow=true;
      window.onload=function show(){
      if (isShow === true) {
            isShow = false;
               var arr=["MR000000.dcm","MR000001.dcm"];
            baseUrl = "http://localhost/testDICOM/CTStudy/";
            exampleStudyImageIds = arr;            
            // 找到要渲染的元素
            var canvas = document.getElementById("dicomImage0");
            canvas.width=document.documentElement.clientWidth;
            canvas.height=document.documentElement.clientHeight;
            // 在 DOM 中将 canvas 元素注册到 cornerstone
            cornerstone.enable(canvas);
            // 拼接 url : cornerstoneWADOImageLoader 需要 wadouri 路径头
            var imageUrl = baseUrl + exampleStudyImageIds[0];
            var imageId = "wadouri:" + imageUrl;
            
            //  Load & Display
            cornerstone.loadAndCacheImage(imageId).then(
             
              function(image) {
                  
                // 设置元素视口
                var viewport = cornerstone.getDefaultViewportForImage(canvas, image);
                // 显示图像
                var datacorne=cornerstone.displayImage(canvas, image, viewport);                
                // 激活工具
                initCanvasTools();
              }
            );
         
      }else{
          isShow = true;
      }
      } 
     function initCanvasTools(){
      var canvas = document.getElementById("dicomImage0");
      console.log(canvas)
      isInitLoad = false;
      // 为 canvasStack 找到 imageIds
      var allImageIds = [];
      console.log(allImageIds)
      $.each(exampleStudyImageIds,function(k,v) {
        let imageUrl = "wadouri:" + baseUrl + v;
        allImageIds.push(imageUrl);
      });
    console.log(allImageIds)
      // Create canvasStack
      var canvasStack = {
        currentImageIdIndex: 0,
        imageIds: allImageIds
      };
      // Enable Inputs
      cornerstoneTools.mouseInput.enable(canvas);//鼠标按下事件
      cornerstoneTools.mouseWheelInput.enable(canvas);//鼠标滚轮事件
      cornerstoneTools.touchInput.enable(canvas);//手势事件
      // Set the stack as tool state
      cornerstoneTools.addStackStateManager(canvas, ["stack"]);
      cornerstoneTools.addToolState(canvas, "stack", canvasStack);//将工具状态添加到toolStateManager,这由工具以及恢复已保存状态的模块完成。addToolState(element, toolType, measurementData)
      cornerstoneTools.stackScrollWheel.activate(canvas); // Mouse wheel
//    cornerstoneTools.scrollIndicator.enable(canvas); // Position indicator
      // Mouse
      cornerstoneTools.wwwc.activate(canvas, 1); // left click
      cornerstoneTools.pan.activate(canvas, 2); // middle click
      cornerstoneTools.zoom.activate(canvas, 4); // right click
      // Touch / Gesture
         cornerstoneTools.wwwcTouchDrag.activate(canvas); // - Drag
      cornerstoneTools.zoomTouchPinch.activate(canvas); // - Pinch
      cornerstoneTools.panMultiTouch.activate(canvas); // - Multi (x2)
//    cornerstoneTools.zoomWheel.activate(canvas);
    }
    </script>
</html>

 

转载于:https://www.cnblogs.com/iwen1992/p/10820968.html

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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); ``` 以上是一些大致的步骤,具体实现需要根据具体需求和技术条件进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值