1.Adding in MRML to Slicer

MRML是Slicer中用到的场景描述,并映射到他的数据模型。MRML库提供了API管理医学图像数据类型和可视化,数据类型包含Volume、model、transform、fiducials、camera...
在MRML中,每一种数据类型都通过一个特殊的MRML节点表示。MRML场景实际上就是不同节点的集合。
Slicer MRML数据模型独立于系统的可视化和算法组件实现的。其他的组分(Logic & GUI)一旦观测到MRML场景(独立节点)的改变,就会启动相应的MRML事件响应。

2.MRML Scene

MRML场景管理着MRML节点:添加、删除、遍历(按类型)。也包含如下两个方面:
  • 永久的节点:读XML文件、写XML文件。
  • Undo/Redo机制,能够存储场景(各个节点)的前一个状态

3.MRML Nodes

MRML节点用来存储Slicer应用的状态,包括原始数据和可视化参数。
MRML所有节点组织成C++层次结构,所有的都继承自vtkVolumeNode类。
举一个简单的例子:
vtkMRMLTransformableNode就是(Volume、Model、Fiducial、Transformation)的父类;
vtkMRMLVolumeNode就是vtkMRMLScalarVolumeNode和vtkMRMLVectorVolumeNode的父类。
具体类的继承关系如下:

4.Reference to MRML Nodes

一些MRML节点会引用其他节点。例如:Transformable 节点就会引用Transformation节点。引用存储在节点ID中。注意:
  • 使用vtkSetReferenceStringMacra() 设置引用ID(负责在场景中注册引用)
  • 使用ID检查当前的引用节点是否还在MRML场景中

5.MRML Events-Observers

MRML场景和各自节点的改变,将会传递给其他的观察者节点。GUI和Logic对象通过vtk事件以及命令-观察者机制响应。一些经验如下:
  • 使用vtk AddObserver()和InvokeEvent()方法。vtk 宏 SetMacro生成ModifiedEvents
  • The command-observer mechanism for MRML is implemented using helper vtkObserverManager, class, MRML Observer macros, and ProcessMRMLEvents method.
  • 观察者应该存储一个已经注册了的指向MRML节点的指针,这样可以防止回调函数操作一个已经销毁的对象。
一则实例:

6.MRML Observer API

观察者API定义在Libs/MRML/vtkMRMLNode.h中
  • vtkSetMRMLObjectMacro:用另一个vtk对象(另一个MRML节点、Logic、GUI)注册MRML节点
  • vtkSetAndObserverMRMLObjectMacro:注册一个MRML节点,并为vtkCommand::ModifyEvent()添加一个观察者
  • vtkSetAndObserveMRMLObjectEventMacro:注册一个MRML节点,并为一个指定的Event集合设置一个观察者。
  • SetAndObserveMEMLScene[Events]:函数方法,在GUI和Logic中使用,观测Modify、NewScene、NodeAdded等事件
  • ProcessMRMLEvents:函数方法,在MRML节点、Logic、GUI类中使用,为了处理来自观察者节点的事件。

创建自定义的MRML节点:

  • 自定义的MRML节点为模型参数提供了永久的存储。
  • 自定义的MRML节点应该使用RegisterNodeClass()在MRML场景中注册,这样有利于存储,以及从场景文件中恢复
  • 自定义节点类会用到如下方法
  • 自定义节点类会使用到如下方法:
    • CreateNodeInstance()
    • GetNodeTagName()
    • ReadXMLAttributes()
    • WriteXML()
    • Copy()

3DSlicer33:Adding MRML相关推荐

  1. 论文阅读:Adding Attentiveness to the Neurons in Recurrent Neural Networks

    目录 Summary Details (Implementation) 原来的 RNN 结构 变为 Element-wise-Attention Gate (EleAttG) 后 论文名称:Addin ...

  2. 3DSlicer16:数据类型MRML

    1.Slicer MRML数据类型综述 MRML提供API(应用程序接口)管理医学图像数据类型(Volume.Model.Transform.Fiducial.Camera等)和它们的可视化: 每种数 ...

  3. 图像分类:13个Kaggle项目的经验总结

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 方向:图像分类,编辑:数据派THU 本文约2800字,建议阅读9分钟 本 ...

  4. 图像分类:来自13个Kaggle项目的经验总结

    来源:机器学习实验室 本文约2800字,建议阅读9分钟 本文作者与你分享图像分类项目经验总结. 任何领域的成功都可以归结为一套小规则和基本原则,当它们结合在一起时会产生伟大的结果. 机器学习和图像分类 ...

  5. Java内存模型深度解析:锁--转

    原文地址:http://www.codeceo.com/article/java-memory-5.html 锁的释放-获取建立的happens before 关系 锁是java并发编程中最重要的同步 ...

  6. $.when.apply_When2Meet vs.LettuceMeet:UI和美学方面的案例研究

    $.when.apply 并非所有计划应用程序都是一样创建的. (Not all scheduling apps are created equal.) As any college student ...

  7. Redis集群(一):集群搭建

    2019独角兽企业重金招聘Python工程师标准>>> 概述 这里只记录操作步骤和集群测试,保证快速搭建集群环境.具体原理请查阅官方文档(中文版): http://www.redis ...

  8. python大型项目经验_图像分类:13个Kaggle项目的经验总结

    来源:数据派THU 任何领域的成功都可以归结为一套小规则和基本原则,当它们结合在一起时会产生伟大的结果. 机器学习和图像分类也不例外,工程师们可以通过参加像Kaggle这样的竞赛来展示最佳实践. 在这 ...

  9. 小程序动画从头开始_渐进式Web应用程序102:从头开始构建渐进式Web应用程序

    小程序动画从头开始 We learnt about what is a Progressive Web App (PWA) in part 1. In this part, we are going ...

最新文章

  1. 检测数据类型的几种方式
  2. 不会Object.defineProperty你就out了
  3. SAP Cloud Platform Identity Authentication service
  4. (JAVA)复制文件test.txt,并且排序。文件重新命名为test1.txt
  5. 链接服务器 因为它不存在或者您没有所需的权限。处理
  6. 1bit和1byte_1byte等于( )bit_学小易找答案
  7. .NET实现之(自动更新
  8. 2021,要不断学习!吴恩达等 AI 大佬发表新年寄语
  9. html li标签横向排列_Html笔记lt;1gt;
  10. Chrome json 插件 JSONView-for-Chrome
  11. Ubuntu 隐藏上方状态栏、左边任务栏及菜单按钮移到下方居中及隐藏(详细)
  12. 简单spring cloud服务升级实现
  13. cas22112-84-1/5,10,15,20-四(4-氨基苯)-21H,23H-卟啉简称:H2TAPP; Tph
  14. 软件开发的早期为何要进行可行性研究?该从哪几个方面研究目标系统的可行性?...
  15. linux 密码修改下次,Linux 强制使用者下次登入修改密码
  16. Freemark生成Word文件的加密处理
  17. 阿里云ECS通用型g7云服务器支持vTPM第三代神龙架构性能评测
  18. 重整网站。。。。。。。。。
  19. 需求工程:软件建模与分析 读书笔记三
  20. 自己修改官方rec,使其可以刷第三方包

热门文章

  1. Linux中printk和strace命令调试的一些技巧
  2. 【ZT】详细设计文档规范
  3. Object Detection中的IOU
  4. 2019.07.11
  5. 2.13 break和continue
  6. PHP服务器环境打开配置文件
  7. 滴水穿石-05数组排序
  8. Windows Server Backup 裸机恢复
  9. JavaScript中getBoundingClientRect()方法详解
  10. js实时获取系统当前时间