itk.js读取dicom文件,vtk.js进行渲染

61 篇文章 0 订阅
46 篇文章 16 订阅

itk.js读取dicom文件时,我们只需要用到

readImageDICOMFileSeries即可

其余的均为vtk.js中调用

let files_paths = [];
//path为dicom文件
files_paths.push(path);
const fetchFiles = files_paths.map((file_path, index) => {
    const path = file_path;
    return axios.get(path, { responseType: 'blob' }).then((response) => {
        const jsFile = new File([response.data], `${index}.dcm`);
        return jsFile;
    });
});
Promise.all(fetchFiles).then((path) => {
    readImageDICOMFileSeries(path).then(({ webWorker, image }) => {
        imageData = vtkITKHelper.convertItkToVtkImage(image);
        //下面的操作放在promise.all中,否者会报错
        const view3d = document.getElementById('view3d');
        const fullScreenRenderer = vtkFullScreenRenderWindow.newInstance({
            container:view3d,
            background: [0, 0, 0],
        });
        const renderer = fullScreenRenderer.getRenderer();
        const renderWindow = fullScreenRenderer.getRenderWindow();

        const actor = vtkVolume.newInstance();
        const mapper = vtkVolumeMapper.newInstance({ sampleDistance: 1.1 });//体渲染映射;
        mapper.setSampleDistance(1.3);//体渲染距离原色
        mapper.setInputData(imageData);
        actor.setMapper(mapper);

        const sampleDistance =
            0.7 *
            Math.sqrt(
                imageData
                    .getSpacing()
                    .map((v) => v * v)
                    .reduce((a, b) => a + b, 0),
            );
        mapper.setSampleDistance(sampleDistance);

        renderer.addVolume(actor);
        renderer.resetCamera();
        renderWindow.render();

    });
});

其中我们调用体渲染的时候一定记得加入下面的引入,否则,我们会看不到渲染的实体

import 'vtk.js/Sources/Rendering/Profiles/Volume';

最终我们得到一个渲染的dicom文件实体

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值