1.Slicer的模块:
CLI(命令行交互)
Python脚本模块:这个是特色,我们可以用python控制台去访问数据,对象,GUI,处理库(numpy,VTK,ITK,CTK等)
可加载的模块:用于优化计算,是C++插件。
本学习部分的目标是实现拉普拉斯滤波。
2.python在slicer的版本是2.7:打开python交互器:
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的模块:首先创建一个扩展:
然后点击后找到Creat Extension,之后按照步骤创建。
7.在这个Extension中添加我们自己的模块:点击Add Modules to Extension
这步骤完成后就在我们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找到:
然后reload才能运行。
9.因为我自己写的py文件有问题,读不进去,好像因为编码问题?就直接拿3Dslicer自带的一个做说明:
在Modules找到Filtering,然后选择Simple Filters,然后如图:
Filters可以找到我们想到的滤波器类型,然后Parameters可以调整参数,也可以选择输入的数据和输出到哪里,然后点Apply来让这个脚本文件工作,也就是这个模块自己在文件的GUI有这些按钮,而且给这些按钮都关联了触发函数,这个Apply点击的触发函数就是我们选择的这个滤波器。而如果是我们自己的模块,就在Modules里找到Examples,然后找到我们自己的工程的名字,然后点击,然后修改了py文件后,reload一下,就可以实现我们自己的模块了。