cornerstone.js 中PT图像自己计算窗宽窗位

背景:做petct过程中,前端的PT图像可以正常显示窗框窗位,后端要做截图时不能正确显示窗宽窗位。

解决思路:前端可以正常显示是因为 cornerstone.js 的源码里有算法做过处理,可以参考源码算法。

computeAutoVoi.js 中的源码贴出来记录一下:

javascript 复制代码
/**
 * Computes the VOI to display all the pixels if no VOI LUT data (Window Width/Window Center or voiLUT) exists on the viewport object.
 *
 * @param {Viewport} viewport - Object containing the viewport properties
 * @param {Object} image An Image loaded by a Cornerstone Image Loader
 * @returns {void}
 * @memberof Internal
 */
export default function computeAutoVoi (viewport, image) {
  if (hasVoi(viewport)) {
    return;
  }

  const maxVoi = image.maxPixelValue * image.slope + image.intercept;
  const minVoi = image.minPixelValue * image.slope + image.intercept;
  const ww = maxVoi - minVoi;
  const wc = (maxVoi + minVoi) / 2;

  if (viewport.voi === undefined) {
    viewport.voi = {
      windowWidth: ww,
      windowCenter: wc
    };
  } else {
    viewport.voi.windowWidth = ww;
    viewport.voi.windowCenter = wc;
  }
}

核心代码就是:

javascript 复制代码
  // 从图像的dicom标签中可以拿到图像最大像素值/最小像素值*图像斜率+图像的截距
  const maxVoi = image.maxPixelValue * image.slope + image.intercept;
  const minVoi = image.minPixelValue * image.slope + image.intercept;

  // 窗宽
  const ww = maxVoi - minVoi;
  // 窗位
  const wc = (maxVoi + minVoi) / 2;
相关推荐
dancing9992 小时前
cocos3.X的oops框架oops-plugin-excel-to-json改进兼容多表单导出功能
前端·javascript·typescript·游戏程序
萌萌哒草头将军2 小时前
🚀🚀🚀Prisma 发布无 Rust 引擎预览版,安装和使用更轻量;支持任何 ORM 连接引擎;支持自动备份...
前端·javascript·vue.js
书语时3 小时前
ES6 Promise 状态机
前端·javascript·es6
拉不动的猪3 小时前
管理不同权限用户的左侧菜单展示以及权限按钮的启用 / 禁用之其中一种解决方案
前端·javascript·面试
西陵3 小时前
前端框架渲染DOM的的方式你知道多少?
前端·javascript·架构
海的诗篇_4 小时前
前端开发面试题总结-JavaScript篇(一)
开发语言·前端·javascript·学习·面试
じ☆ve 清风°4 小时前
理解JavaScript中map和parseInt的陷阱:一个常见的面试题解析
开发语言·javascript·ecmascript
江城开朗的豌豆4 小时前
eval:JavaScript里的双刃剑,用好了封神,用不好封号!
前端·javascript·面试
江城开朗的豌豆4 小时前
JavaScript篇:前端定时器黑科技:不用setInterval照样玩转循环任务
前端·javascript·面试
江城开朗的豌豆5 小时前
JavaScript篇:自定义事件:让你的代码学会'打小报告'
前端·javascript·面试