3D Slicer Programmatically Set Slice Offset and Intersections 用代码修改Slicer中的切片偏移和交叉点显示
在3D Slicer中,当我们导入.mha/.mhd等格式的volume文件后,那么我们就可以在Axial, Sagittal, Coronal三个方向来观察我们的MRI或者CT的图像了。3D Slicer界面提供了很多交互的功能,比如正上方就有一个滑动条slider,可以用来滑动切片观察,如果我们不想手动来滑动slider,而是通过事件触发,或者其他功能来触发时,那么我们就是要通过代码来对切片进行交互。Slicer的用户界面是Qt写的,所有我们能通过用户交互触发的功能,都可以通过代码来触发。我们首先要获取slicer的层管理器,然后获得三个窗口的控件,然后通过窗口控件来获得Logic类。因为Slicer使用的是典型的MVC框架,模型,视图和控制器都分离开了。Slicer的模型就是各种节点Node,视图就是各种窗口控件Widget,而控制器就是这些Logic类,所有的算法部分都可以放到Logic类里头,而跟用户界面相关的控件都在Wdiget类里。那么我们通过代码来设置切片偏移如下所示:
lm = slicer.app.layoutManager()
redLogic = lm.sliceWidget('Red').sliceLogic()
yellowLogic = lm.sliceWidget('Yellow').sliceLogic()
greenLogic = lm.sliceWidget('Green').sliceLogic()
# Set offset
redLogic.SetSliceOffset(10)
yellowLogic.SetSliceOffset(20)
greenLogic.SetSliceOffset(30)
我们在工具栏中的Crosshair按钮下点击最后一个项Slice Intersections可以打开Slice的交叉十字标,如果我们不想手动点击,而是加载我们的插件的时候就自动打开,可以使用如下代码:
# Set intersection visible
redLogic.GetSliceCompositeNode().SetSliceIntersectionVisibility(1)
yellowLogic.GetSliceCompositeNode().SetSliceIntersectionVisibility(1)
greenLogic.GetSliceCompositeNode().SetSliceIntersectionVisibility(1)
如果我们想在建立模型的时候,自动打开Slice Intersections Visible的话,可以添加下面这行代码:
# Set slice intersections visible
slicer.util.getNode('YourModelNode').GetDisplayNode(). SetSliceIntersectionVisibility(1)
3D Slicer Programmatically Set Slice Offset and Intersections 用代码修改Slicer中的切片偏移和交叉点显示的更多相关文章
- 利用WPF建立自己的3d gis软件(非axhost方式)(十一)SDK中的动画系统
原文:利用WPF建立自己的3d gis软件(非axhost方式)(十一)SDK中的动画系统 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew ...
- 利用WPF建立自己的3d gis软件(非axhost方式)(十)SDK中一些自带的展示面板应用
原文:利用WPF建立自己的3d gis软件(非axhost方式)(十)SDK中一些自带的展示面板应用 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV ...
- WPF在3D Cad模型中利用TextureCoordinates实现颜色渐变显示偏差值的变化
原文:WPF在3D Cad模型中利用TextureCoordinates实现颜色渐变显示偏差值的变化 注:最近在做3D机械模型重建方面的软件,需要根据光栅传感器采集的数据绘制3D图形,并显示出色差以及 ...
- Go语言中使用切片(slice)实现一个Vector容器
Go语言中的切片(slice)和一些内置函数能实现其他语言容器类Array.Vector的功能,但是Go内置语言包container里只提供了list.heap.ring三种容器,缺少vector容器 ...
- 3D Lut 电影级调色算法 附完整C代码
在前面的文章,我提到过VSCO Cam 的胶片滤镜算法实现是3d lut. 那么3d lut 到底是个什么东西呢? 或者说它是用来做什么的? 长话短说,3d lut(全称 : 3D Lookup t ...
- RESTful-rest_framework版本控制、分页器-第六篇
版本控制: 源码位置分析第一步: 源码位置分析第二步:在APIView-despath方法-initial-determine_version #执行determine_version,返回两个值, ...
- Java 虚拟机体系结构
众所周知,Java源代码被编译器编译成class文件.而并不是底层操作系统可以直接执行的二进制指令(比如Windows OS的.exe文件).因此,我们需要有一种平台可以解释class文件并运行它.而 ...
- 汇编-13.0-int指令
1.int指令 int指令的格式为:int n,n为中断类型码,它的功能是引发中断过程. 执行int n指令,相当于引发一个中断号为n的中断过程. (1).取中断类型码n: (2).标志寄存器入栈,I ...
- 20155205 郝博雅 Exp 8 Web基础
20155205 郝博雅 Exp 8 Web基础 一.实验目标 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单 ...
随机推荐
- pygame-KidsCanCode系列jumpy-part3-重力及碰撞检测
这个游戏叫jumpy,大致玩法就是模拟超级玛丽一样,可以不停在各个档板上跳动,同时受到重力的作用,会向下掉,如果落下时,没有站在档板上,就挂了. 这节,我们加入重力因素,继续改造sprites.py ...
- [原创] 上海招聘高级测试工程师(性能测试/自动化测试/App测试),长期有效
[原创] 上海招聘高级测试工程师(性能测试/自动化测试/App测试方向),长期有效 高级测试工程师(性能/自动化方向) 1.负责性能测试计划,性能需求分析,性能测试方案和用例设计,搭建性能测试环境,执 ...
- Java全栈程序员之05:Ubuntu下安装TOMCAT、集成到IDEA
使用idea绝不是开发一个Hello World这么简单,现在我们要使用idea进行企业级开发(也就是JavaEE)的准备了,那么首先,我们就得有一个web应用服务器.选什么呢?当然首选是大名鼎鼎的T ...
- Spark2.3(四十二):Spark Streaming和Spark Structured Streaming更新broadcast总结(二)
本次此时是在SPARK2,3 structured streaming下测试,不过这种方案,在spark2.2 structured streaming下应该也可行(请自行测试).以下是我测试结果: ...
- DENIED Redis is running in protected mode
1.开源软件往往做的非常出色,错误的时候,会告诉你原因,以及怎么修改,仔细阅读就能明白.比如这个错误: [root@localhost src]# ./redis-cli -h 172.16.2.16 ...
- mysql忘记密码时如何修改密码
1.首先关闭mysql服务 2.进入mysql安装目录,我的是在C:\Program Files\MySQL\MySQL Server 5.5\bin 3.dos命令行执行:mysqld -nt -- ...
- 机器学习中Batch Size、Iteration和Epoch的概念
Batch Size:批尺寸.机器学习中参数更新的方法有三种: (1)Batch Gradient Descent,批梯度下降,遍历全部数据集计算一次损失函数,进行一次参数更新,这样得到的方向能够更加 ...
- libreoffice python 操作word及excel文档
1.开始.关闭libreoffice服务: 开始之前同步字体文件时间,是因为创建soffice服务时,服务会检查所需加载的文件的时间,如果其认为时间不符,则其可能会重新加载,耗时较长,因此需事先统一时 ...
- 分析技术和方法论营销理论知识框架,营销方面4P、用户使用行为、STP,管理方面5W2H、逻辑树、金字塔、生命周期
原文:五种分析框架:PEST.5W2H.逻辑树.4P.用户使用行为 最近在一点点的啃<谁说菜鸟不懂得数据分析>,相当慢,相当的费脑力,总之,真正的学习伴随着痛苦:) 最初拿到这本书的时候, ...
- Linux内核调试方法总结
Linux内核调试方法总结 一 调试前的准备 二 内核中的bug 三 内核调试配置选项 1 内核配置 2 调试原子操作 四 引发bug并打印信息 1 BUG()和BUG_ON() 2 ...