首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xtk :无法显示标签地图

Xtk :无法显示标签地图
EN

Stack Overflow用户
提问于 2014-06-23 20:33:47
回答 1查看 721关注 0票数 2

我稍微修改了演示#11,以加载我的图像而不是演示的。

我可以加载我的MRI图像很好,见演示。如果我将标签映射作为主卷加载,它也能工作。

代码语言:javascript
复制
window.onload = function() {
    // create and initialize a 3D renderer
    var r = new X.renderer3D();
    r.init();

    // create a X.volume
    var volume = new X.volume();

    // Attach the single-file dicom in .NRRD format
    // this works with gzip/gz/raw encoded NRRD files but XTK also supports other
    // formats like MGH/MGZ
    volume.file = '1123_N3.nii.gz';

    // we also attach a label map to show segmentations on a slice-by-slice base
    // volume.labelmap.file = '1123_seg.nii.gz';

    // add the volume
    r.add(volume);

    // the onShowtime method gets executed after all files were fully loaded and just before the first rendering attempt
    r.onShowtime = function() {
        //
        // The GUI panel
        //
        // (we need to create this during onShowtime(..) since we do not know the
        // volume dimensions before the loading was completed)
        var gui = new dat.GUI();

        // the following configures the gui for interacting with the X.volume
        var volumegui = gui.addFolder('Volume');

        // now we can configure controllers which switch between slicing and volume rendering
        var vrController = volumegui.add(volume, 'volumeRendering');

        // configure the volume rendering opacity
        var opacityController = volumegui.add(volume, 'opacity', 0, 1).listen();

        // and the threshold in the min..max range
        var lowerThresholdController = volumegui.add(volume, 'lowerThreshold', volume.min, volume.max);
        var upperThresholdController = volumegui.add(volume, 'upperThreshold', volume.min, volume.max);

        // the indexX,Y,Z are the currently displayed slice indices in the range [0 - (dimensions-1)]
        var sliceXController = volumegui.add(volume, 'indexX', 0, volume.range[0] - 1);
        var sliceYController = volumegui.add(volume, 'indexY', 0, volume.range[1] - 1);
        var sliceZController = volumegui.add(volume, 'indexZ', 0, volume.range[2] - 1);
        volumegui.open();

        // and this configures the gui for interacting with the label map overlay
        var labelmapgui = gui.addFolder('Label Map');
        var labelMapVisibleController = labelmapgui.add(volume.labelmap, 'visible');
        var labelMapOpacityController = labelmapgui.add(volume.labelmap, 'opacity', 0, 1);
        labelmapgui.open();

    };

    // adjust the camera position a little bit, just for visualization purposes
    r.camera.position = [120, 80, 160];

    // showtime! this triggers the loading of the volume and executes r.onShowtime() once done
    r.render();
};

但是,如果我将标签映射添加到我的卷volume.labelmap.file = '1123_seg.nii.gz';中,加载失败,卷永远不会显示,请参见破碎的演示。控制台中唯一的错误是:

TypeError: b.e.c.cMath.floor(…)未定义

知道什么可能是错的吗?我应该如何调试这些错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-01 21:26:08

像这样的Javascript库对于生产准备版本来说通常是小型化的。调试最小化的javascript代码几乎是不可能的,但是您可以看到调用堆栈中的一个方法名是.parse,它立即表明它存在解析标签映射文件的问题。

大多数javascript库还将包括一个不缩小的-debug版本。我似乎无法为xtk找到一个调试版本,但下面是为自己创建调试版本的过程:

  1. 克隆最新的xtk项目: git克隆https://github.com/xtk/X.git
  2. 更新google闭包(不包括源代码): cd X/lib/ git克隆https://github.com/google/closure-library mv关闭-库google-关闭-库
  3. 我在X目录中创建了一个demo.html文件,但是您可能可以将它放在任何地方并设置如下: <script src="lib/google-closure-library/closure/goog/base.js"></script> <script src="xtk-deps.js"></script> <script> goog.require("X"); goog.require("X.renderer3D"); </script> <script type="text/javascript" src="demo.js"></script>

现在您可以调试了,您应该看到您的错误:

代码语言:javascript
复制
Uncaught TypeError: Cannot read property '_texture' of undefined parser.js:1205
X.parser.reslice parser.js:1205
X.parserNII.parse parserNII.js:258
(anonymous function)

从现在起,你应该能够找到你的问题。好像缺少了纹理。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24374847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档