一文详解cornerstone Tools 基础概念

目录
  • cornerstone Tools 基础概念
  • 工具类型
    • Base Tool
    • BaseAnnotationTool
  • 工具模式
  • 事件
  • 全局配置项

cornerstone Tools 基础概念

Cornerstone Tools 是一个 JavaScript 库,用于帮助注释、分割和测量医学图像。该库还提供了一个框架,用于创建新工具,以一致、连贯的方式管理所有工具,以及导入/导出工具度量数据。

下面将介绍 Cornerstone Tools 中的基本概念,以便后续了解 Cornerstone Tools 的用法。

工具类型

目前,Cornerstone Tools 所有的工具均为 class 类,都是通过继承 class 类的方式实现统一的集成。根据工具的使用方式主要分为三个父类:BaseTool、BaseAnnotationTool、BaseBrushTool。

Base Tool

BaseTool 是 Cornerstone Tools 中所有工具的顶级父级。它负责初始化工具的配置,应用 mixin,并为激活状态工具的鼠标/触摸交互提供 @virtual 函数。

继承于 BaseTool 类的工具类:

工具类名 工具名称 说明
CrosshairsTool 十字线 用于在与同步图像序列中的图像位置相对应的另一元素中查找切片的工具。
DragProbeTool 探针 拖动时在输入位置提供图像数据探测的工具,主要用于测量 CT 值。
MagnifyTool 放大镜 用于放大检查区域的工具。
OrientationMarkersTool 方向标记 用于在图像上显示方向标记的工具,激活后无需操作自动显示。
PanTool 平移 用于平移图像的工具。
RotateTool 旋转 用于旋转图像的工具。
ScaleOverlayTool 比例尺 用于在图像上显示比例覆盖的工具,激活后无需操作自动显示。
WWWCTool 调窗 通过拖动设置窗宽窗位的工具。
ZoomTool 缩放 用于调整缩放比例的工具。
StackScrollTool 浏览序列 用于滚动系列的工具。
StackScrollMouseWheelTool 鼠标滚轮浏览序列 使用鼠标滚轮滚动序列的工具。
OverlayTool 覆盖层 用于在图像上显示覆盖信息或图形的工具。
ReferenceLinesTool 参考线 用于显示其他已启用元素的参考线的工具。
EraserTool 橡皮擦 用于删除其他注释工具的数据的工具。

BaseAnnotationTool

BaseAnnotationTool 继承于 BaseTool ,扩展了部分方法,主要用于创建和操作注释数据。

继承于 BaseAnnotationTool 类的工具类:

工具类名 工具名称 说明
AngleTool 角度 通过放置三个连续点创建和定位角度。
ArrowAnnotateTool 箭头标注 创建并定位箭头和标签。
BidirectionalTool 双向 创建并定位测量区域长度和宽度的注释。
CircleRoiTool 圆形 用于绘制感兴趣的圆形区域并测量封闭像素的统计信息的工具。
CobbAngleTool cobb 角 用于测量两条直线之间的角度的工具。
EllipticalRoiTool 椭圆 用于绘制感兴趣的椭圆区域并测量封闭像素的统计信息的工具。
FreehandRoiTool 多边形 用于绘制任意多边形感兴趣区域并测量封闭像素统计信息的工具。
LengthTool 长度 测量距离的工具。
ProbeTool 探针 在所需位置提供图像数据探测的工具,与 DragProbeTool 使用方式一致,区别在于 ProbeTool 会保存测量数据。
RectangleRoiTool 矩形 用于绘制感兴趣的矩形区域并测量封闭像素的统计信息的工具。
TextMarkerTool 文字标注 用于使用文本标记注释图像的工具。

工具模式

工具的模式决定了如何渲染工具,以及如何与其交互。包含四种标准模式,分别是:

工具类名 说明
Active 激活模式的工具将渲染并响应用户输入,并且能够创建新的注释或测量。
Passive 被动模式的工具将渲染并被动响应用户输入,数据可以被 操纵,但不能被创建。
Enabled 启用模式的工具将渲染,但不会响应输入,本质上是只读状态。
Disabled 工具的默认状态。禁用模式的工具无法交互,也不会在启用的元素上呈现。

事件

CornelstoneTools 事件将本地事件捕获,并进行规范化,并使用 cornerstonetools 前缀重新触发,这样在不同的浏览器中可以一致地处理事件。

事件分类 事件名称 说明
鼠标事件 cornerstonetoolsmousedown 鼠标按下时触发
cornerstonetoolsmouseup 鼠标抬起时触发
cornerstonetoolsmousedownactivate 鼠标按下 ,并且 cornerstonetoolsmousedown 事件回调函数不使用 stopPropagation 时触发。此时触发 createNewMeasurement 函数。
cornerstonetoolsmousedrag 鼠标拖拽时触发
cornerstonetoolsmousemove 鼠标移动时触发
cornerstonetoolsmouseclick 鼠标点击时触发
cornerstonetoolsmousedoubleclick 鼠标双击时触发
cornerstonetoolsmousewheel 鼠标滚轮滚动时触发
键盘事件 cornerstonetoolskeydown 键盘按下时触发
cornerstonetoolskeyup 键盘抬起时触发
cornerstonetoolskeypress 键盘按下生字符值的键时触发
自定义事件 cornerstonetoolsmeasurementadded 增加测量数据时触发
cornerstonetoolsmeasurementmodified 修改测量数据时触发
cornerstonetoolsmeasurementcompleted 测量停止时触发
cornerstonetoolsmeasurementremoved 移除测量数据时触发
cornerstonetoolstooldeactivated 工具停用时触发,工具模式被修改为 passive
cornerstonetoolsclipstopped 播放工具停止时触发
cornerstonetoolsstackscroll scroll stack 图像时触发
cornerstonetoolsstackprefetchimageloaded stack预加载图像完成时触发
cornerstonetoolsstackprefetchdone 全部完成 stack 预加载时触发
cornersontetoolslabelmapmodified labelmap 修改时触发

全局配置项

在初始化 Cornerstone Tools 时,可以通过应用合理的默认值,启用/禁用不同的特性和功能。

cornerstoneTools.init({
  // 当元素被启用时,是否监听鼠标事件
  mouseEnabled: true,
  // 当元素被启用时,是否监听触摸事件
  touchEnabled: true,
  // 全局工具同步
  globalToolSyncEnabled: true,
  // 显示svg光标
  showSVGCursors: true,
  // 自动调整视口大小
  autoResizeViewports: true,
  // 虚线样式
  lineDash: [4, 4]
});

以上就是一文详解cornerstone Tools 基础概念的详细内容,更多关于cornerstone Tools基础概念的资料请关注我们其它相关文章!

(0)

相关推荐

  • JavaScript工具库MyTools详解

    本文实例为大家分享了JavaScript工具库MyTools,供大家参考,具体内容如下 MyTools.js 将功能绑定在window中,调用的时候,直接使用myToos.xxx就可以进行函数调用. (function (w) { w.myTool = { /** * 根据id获取元素节点 * @param {string}id 节点id * @returns {any} id为id的节点 */ $: function (id) { return typeof id === 'string' ?

  • Vue开发工具之vuejs-devtools安装教程及常见问题解决(最详细)

    目录 一.vue.js插件下载 二.Vue开发工具vuejs-devtools下载 三.Vue开发工具vuejs-devtools安装+使用 四.常见问题解决 这绝对是最详细的Vue开发工具vuejs-devtools安装教程,相信你只需要5分钟即可解决所有问题 vue-devtools是什么? vue-devtools是一款基于chrome游览器的插件,用于调试vue应用,这可以极大地提高我们的调试效率. 一.vue.js插件下载 下载地址:vue.js插件下载: 点击进入Vue官网即可下载,

  • 一文详解cornerstone Tools 基础概念

    目录 cornerstone Tools 基础概念 工具类型 Base Tool BaseAnnotationTool 工具模式 事件 全局配置项 cornerstone Tools 基础概念 Cornerstone Tools 是一个 JavaScript 库,用于帮助注释.分割和测量医学图像.该库还提供了一个框架,用于创建新工具,以一致.连贯的方式管理所有工具,以及导入/导出工具度量数据. 下面将介绍 Cornerstone Tools 中的基本概念,以便后续了解 Cornerstone T

  • 一文详解Java中的类加载机制

    目录 一.前言 二.类加载的时机 2.1 类加载过程 2.2 什么时候类初始化 2.3 被动引用不会初始化 三.类加载的过程 3.1 加载 3.2 验证 3.3 准备 3.4 解析 3.5 初始化 四.父类和子类初始化过程中的执行顺序 五.类加载器 5.1 类与类加载器 5.2 双亲委派模型 5.3 破坏双亲委派模型 六.Java模块化系统 一.前言 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最 终形成可以被虚拟机直接使用的Java类型,这个过程

  • python实现决策树C4.5算法详解(在ID3基础上改进)

    一.概论 C4.5主要是在ID3的基础上改进,ID3选择(属性)树节点是选择信息增益值最大的属性作为节点.而C4.5引入了新概念"信息增益率",C4.5是选择信息增益率最大的属性作为树节点. 二.信息增益 以上公式是求信息增益率(ID3的知识点) 三.信息增益率 信息增益率是在求出信息增益值在除以. 例如下面公式为求属性为"outlook"的值: 四.C4.5的完整代码 from numpy import * from scipy import * from mat

  • 一文详解MySQL不同隔离级别都使用什么锁

    目录 说透 MySQL 锁机制 事务隔离级别 MySQL 锁类型 读未提交 读已提交 可重复读 总结 在上篇文章,我们聊了「MySQL 啥时候会用表锁,啥时候用行锁」这个问题.在文章中,我们还留了一个问题,即:如果查询或更新时的数据特别多,是否从行锁会升级为表锁? 此外,还有朋友留言说到:不同的隔离级别可能会用不同的锁,可以结合隔离级别来聊聊.其实上面虽然是两个问题,但如果你把不同隔离级别下的加锁问题搞清楚了,那么第一个问题自然也清楚了. 今天,就让我带着大家来聊聊不同隔离级别下,都会使用什么锁

  • 一文详解JavaScript闭包典型应用

    目录 1.应用 1.1 模拟私有变量 1.2 柯里化 1.3 偏函数 1.4 防抖 1.5 节流 2.性能问题 2.1 内存泄漏 2.2 常见的内存泄漏 3.闭包与循环体 3.1 这段代码输出啥 3.2 改造方法 4.总结 1.应用 以下这几个方面是我们开发中最为常用到的,同时也是面试中回答比较稳的几个方面. 1.1 模拟私有变量 我们都知道JS是基于对象的语言,JS强调的是对象,而非类的概念,在ES6中,可以通过class关键字模拟类,生成对象实例. 通过class模拟出来的类,仍然无法实现传

  • 一文详解Java如何创建和销毁对象

    目录 一.介绍 二.实例构造(Instance Construction) 2.1 隐式(implicitly)构造器 2.2 无参构造器(Constructors without Arguments) 2.3 有参构造器(Constructors with Arguments) 2.4 初始化块(Initialization Blocks) 2.5 构造保障(Construction guarantee) 2.6 可见性(Visibility) 2.7 垃圾回收(Garbage collect

  • 一文详解JS私有属性的6种实现方式

    目录 _prop Proxy Symbol WeakMap #prop ts private 总结 class 是创建对象的模版,由一系列属性和方法构成,用于表示对同一概念的数据和操作. 有的属性和方法是对外的,但也有的是只想内部用的,也就是私有的,那怎么实现私有属性和方法呢? 不知道大家会怎么实现,我梳理了下,我大概用过 6 种方式,我们分别来看一下: _prop 区分私有和公有最简单的方式就是加个下划线 _,从命名上来区分. 比如: class Dong { constructor() {

  • 一文详解JS中的事件循环机制

    目录 前言 1.JavaScript是单线程的 2.同步和异步 3.事件循环 前言 我们知道JavaScript 是单线程的编程语言,只能同一时间内做一件事,按顺序来处理事件,但是在遇到异步事件的时候,js线程并没有阻塞,还会继续执行,这又是为什么呢?本文来总结一下js 的事件循环机制. 1.JavaScript是单线程的 JavaScript 是一种单线程的编程语言,只有一个调用栈,决定了它在同一时间只能做一件事.在代码执行的时候,通过将不同函数的执行上下文压入执行栈中来保证代码的有序执行.在

  • 一文详解Java线程中的安全策略

    目录 一.不可变对象 二.线程封闭 三.线程不安全类与写法 四.线程安全-同步容器 1. ArrayList -> Vector, Stack 2. HashMap -> HashTable(Key, Value都不能为null) 3. Collections.synchronizedXXX(List.Set.Map) 五.线程安全-并发容器J.U.C 1. ArrayList -> CopyOnWriteArrayList 2.HashSet.TreeSet -> CopyOnW

  • 一文详解Python中PO模式的设计与实现

    目录 什么是PO模式 PO 三层模式 PO 设计模式的优点 将改写的脚本转为PO设计模式 构建基础的 BasePage 层 构建首页的 Page 层(HomePage) 构建登录页的 Page 层(LoginPage) 构建 首页 - 订单 - 支付 流程的 Page 层(OrderPage) PO 设计模式下测试Case的改造 在使用 Python 进行编码的时候,会使用自身自带的编码设计格式,比如说最常见的单例模式,稍微抽象一些的抽象工厂模式等等… 在利用 Python 做自动化测试的时候,

随机推荐