1.Slicer的模块:

CLI(命令行交互)

Python脚本模块:这个是特色,我们可以用python控制台去访问数据,对象,GUI,处理库(numpy,VTK,ITK,CTK等)

可加载的模块:用于优化计算,是C++插件。

本学习部分的目标是实现拉普拉斯滤波。

2.python在slicer的版本是2.7:打开python交互器:

3Dslicer学习(4)--Programming(在slicer中编程)

3.加载一个MRI数据,名字是name,格式是nrrd。

4.在控制台输入a=slicer.util.array('name')来获取3D图像每个位置的值,这个值不是灰度值,是MRI成像原理里得到的值。因此我的数据里,a.max()是279,比255大。

而且a的类型此时就是numpy的ndarray,从而很方便进行处理。

5.创建一个GUI来执行特定的函数功能:

首先定义好函数,假设函数名为test(),然后

b=qt.QPushButton('123')#参数是按钮名字

b.connect('clicked',test)#表示按钮的触发方式和触发的功能即执行的函数

b.show()

6.把自己写的脚本集成为3Dslicer的模块:首先创建一个扩展:

3Dslicer学习(4)--Programming(在slicer中编程)


然后点击后找到Creat Extension,之后按照步骤创建。

7.在这个Extension中添加我们自己的模块:点击Add Modules to Extension

3Dslicer学习(4)--Programming(在slicer中编程)

这步骤完成后就在我们Creat Extension时的文件夹里生成了一个我们刚才Add的.py文件,我们的处理就在这个py文件中完成。这个py文件有4个类:

Module Description

Module Widget (GUI):控件就显示在左边Model Panel里,可以在py文件中编程改变

Module Logic(processing, no user interface) :功能,可以修改控件的触发函数即功能。

Module Test(automatic selftests)

8.对我们的加的py文件进行代码修改:找到我们的py文件,然后用自己的编辑器修改后在3Dslicer找到:

3Dslicer学习(4)--Programming(在slicer中编程)

然后reload才能运行。

9.因为我自己写的py文件有问题,读不进去,好像因为编码问题?就直接拿3Dslicer自带的一个做说明:

在Modules找到Filtering,然后选择Simple Filters,然后如图:

3Dslicer学习(4)--Programming(在slicer中编程)

Filters可以找到我们想到的滤波器类型,然后Parameters可以调整参数,也可以选择输入的数据和输出到哪里,然后点Apply来让这个脚本文件工作,也就是这个模块自己在文件的GUI有这些按钮,而且给这些按钮都关联了触发函数,这个Apply点击的触发函数就是我们选择的这个滤波器。而如果是我们自己的模块,就在Modules里找到Examples,然后找到我们自己的工程的名字,然后点击,然后修改了py文件后,reload一下,就可以实现我们自己的模块了。

相关文章:

  • 2021-10-02
  • 2021-05-04
  • 2021-11-28
  • 2022-12-23
  • 2021-09-03
  • 2021-06-10
  • 2021-07-28
  • 2021-12-05
猜你喜欢
  • 2021-12-07
  • 2021-09-17
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-15
  • 2022-12-23
相关资源
相似解决方案