当前位置: 首页 > web >正文

基于cornerstone3D的dicom影像浏览器 第二十三章 mpr预设窗值与vr preset

文章目录

  • 前言
  • 一、mpr窗口预设窗值
  • 二、vr preset
  • 三、调用流程


前言

实现mpr窗口预设窗值,vr窗口预设配色
效果如下:

在这里插入图片描述


一、mpr窗口预设窗值

可参考 第十五章 预设窗值
逻辑一样的,把windowWidth, windowCenter值转换为voiRange值,再调用viewport.setProperties设置。
在MPR类中增加函数setWindow

const presetWindow = [{id: "wwwl-default",text: "默认",tooltip: "默认窗宽窗位",icon: "icon-tiaochuang",wwwl: {wl: 0,ww: 0,}},{id: "wwwl-ct-bone",text: "骨窗",tooltip: "CT骨窗 [300/1500]",icon: "icon-jawbone",wwwl: {wl: 300,ww: 1500,}},{id: "wwwl-ct-lung",text: "肺窗",tooltip: "CT肺窗 [-600/1500]",icon: "icon-lungs-line",wwwl: {wl: -600,ww: 1500,}},{id: "wwwl-ct-abdomen",text: "腹部",tooltip: "CT腹部 [60/400]",icon: "icon-fubu",wwwl: {wl: 60,ww: 400,}},{id: "wwwl-ct-angio",text: "血管",tooltip: "CT血管 [300/600]",icon: "icon-xinxieguan1",wwwl: {wl: 300,ww: 600,}},{id: "wwwl-ct-brain",text: "颅脑",tooltip: "CT颅脑 [40/80]",icon: "icon-xinxieguan",wwwl: {wl: 40,ww: 80,}},{id: "wwwl-ct-chest",text: "胸腔",tooltip: "CT胸腔 [40/400]",icon: "icon-Frightn",wwwl: {wl: 40,ww: 400,}},
];setWindow(ww, wl) {if (!this.loaded) {return;}const viewports = this.renderingEngine.getViewports();for (let i = 0; i < viewports.length; i++) {const viewport = viewports[i];if (viewport.id !== idVolume) {const voiLutFunction = viewport.getProperties().VOILUTFunction;const newRange = csUtils.windowLevel.toLowHighRange(ww, wl, voiLutFunction);viewport.setProperties({voiRange: newRange});viewport.render();}}}

二、vr preset

cornerstone3D中预设22种viewport preset。保存在CONSTANTS.VIEWPORT_PRESETS中。
在MPR类中添加setVRColor函数,同时把CONSTANTS.VIEWPORT_PRESETS.name导出,以便Toolbar3d.vue中使用

import {RenderingEngine,Enums,...CONSTANTS
} from "@cornerstonejs/core";const presetColors = CONSTANTS.VIEWPORT_PRESETS.map(preset => preset.name);setVRColor(presetName) {if (!this.loaded) {return;}const viewport = this.renderingEngine.getViewport(idVolume);const volumeActor = viewport.getDefaultActor().actor;csUtils.applyPreset(volumeActor,CONSTANTS.VIEWPORT_PRESETS.find(preset => preset.name === presetName));viewport.render();
}

三、调用流程

基本流程:

    1. Toolbar3d.vue中添加操作按钮或其他元素
    1. View3d.vue中响应操作
    1. DisplayerArea3d.vue调用MPR类中的函数

可参考前面章节

http://www.xdnf.cn/news/9025.html

相关文章:

  • 鸿蒙OSUniApp 开发的图文混排展示组件#三方框架 #Uniapp
  • 3d tiles高级样式设计与条件渲染
  • 基于小米Open-Vela开源系统的高级计算器实现 | 支持C++数学函数与 LVGL UI
  • 2025.05.09【Bubblemap】气泡图深入解析
  • 回调函数的使用
  • 鸿蒙OSUniApp 实现的一键清除输入框内容功能#三方框架 #Uniapp
  • Git切换历史版本及Gitee云绑定
  • 横向联邦学习、纵向联邦学习与联邦迁移学习是联邦学习的三大主要分支
  • 企微客服如何接入ai大模型
  • [网页五子棋]项目介绍以及websocket的消息推送(轮询操作)、报文格式和握手过程(建立连接过程)
  • Vue3 + Element Plus 实现用户管理模块
  • 计算机网络学习(八)——MAC
  • 3560. 木材运输的最小成本
  • 时序模型上——ARIMA/MA/AR
  • GaussDB资源冻结与解冻:精细化资源管理的实践与策略
  • Webpack和Vite构建工具有什么区别?各自的优缺点是什么
  • 华为OD机试真题——虚拟理财游戏(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 华为OD机试真题——数据分类(2025B卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 162. 寻找峰值
  • 【芯片设计中的跨时钟域信号处理:攻克亚稳态的终极指南】
  • Rust 1.0 发布十周年,梦想再度扬帆起航!
  • Class ‘AlibabaCloud\Tea\Utils\Utils\RuntimeOptions‘ not found
  • 人脸识别备案快速高效服务
  • 有效的字母异位符--LeetCode
  • 2025年5月架构真题回忆
  • SQL连接字符串的差异造成远程服务器不能正常连接
  • 数据库入门教程:以商品订单系统为例
  • 篇章四 数据结构——顺序表
  • 代码随想录算法训练营第60期第四十八天打卡
  • 010501上传下载_反弹shell-渗透命令-基础入门-网络安全