3D Slicer简单三维重建

前言

本文章使用3D Slicer对输入数据进行三维重建,结合别人的经验以及自己的摸索,写成这一篇文章,只是简单的记录一下自己做过的事情,并没有多少深入的去研究,对一些东西可能理解的不够好,希望读这篇文章的人能够谅解,不喜勿喷。

参考资料

CT图片三维重建方法之3DSlicer篇
临床影像实践
B站视频–血肿及中线测量

补充说明

获取切片的间距,这里我用的是python的代码来实现的,所用的图片是使用LITS数据集由NII文件转为png图片来实现的,NII转PNG图片在我的博客另外一篇文章里面有,这里获取切片间距信息的代码如下:

"""

查看数据轴向spacing分布
"""

import os
import sys
sys.path.append(os.path.split(sys.path[0])[0])

from tqdm import tqdm
import SimpleITK as sitk

import parameter as para

ct_path = r'G:\Python\liversegment\ImageResource\ImageTraning\data'
spacing_list = []

for file in os.listdir(ct_path):

    ct = sitk.ReadImage(os.path.join(ct_path, file), sitk.sitkInt16)
    temp = ct.GetSpacing()[-1]  # 关键语句

    print('-----------------')
    print(file+'         '+str(temp))

    spacing_list.append(temp)

print('mean:', sum(spacing_list) / len(spacing_list))

spacing_list.sort()
print(spacing_list)

# 训练集中的平均spacing是1.59mm
# 测试集中的数据的spacing都是1mm

按照参考的文章中的第一篇文章基本可以把数据导入成功,但是在测量的时候,我愣是没有找到在哪里能看见测量距离的大小,最后在第二个板块的3D视角看到了,如下图所示:
3D Slicer简单三维重建_第1张图片

模型重建

按照第一篇文章的做法,不知道是不是我操作不当的原因还是什么,保存的数据再导入的时候,显示的只是像前面的步骤那样把png图片导入并且把间距和比例修改之后的样子,并没有我想象的那种直接就是一个建立好的三维模型。于是就去找资料,看视频,之后在B站上面看到有人的教程可以实现自己的目的。在这里我简单的把我所使用的3种可以实现导入数据即为3D模型的方法简单的说一下,详细的可以点开前面的B站链接看B站的UP主的视频。

手动涂画

按照第一个文章,把间距和比例调整好之后,切换到模块Segment Editor
3D Slicer简单三维重建_第2张图片

然后再按照下面图的顺序将每一层的区域涂画

这里我只是涂画一层演示而已,因为这种方法不适合使用在这么多切片的数据上,适合涂画肿瘤等微小物块,占切片数量少的情况。
接下来是保存数据的重点
点击图中的按钮(Segmentations…),然后拉到底下,选择导出

3D Slicer简单三维重建_第3张图片
3D Slicer简单三维重建_第4张图片
接下来就是保存模型的时候了,可以点击左上角的File再选择Save,或者直接点击下面一列的第三个图标
3D Slicer简单三维重建_第5张图片
或者
3D Slicer简单三维重建_第6张图片
因为我只需要保存3维的模型,所以我只保留最后一个勾,保存路径可以点击Save旁边的按钮来选择位置
3D Slicer简单三维重建_第7张图片

最后点击保存就可以了,然后我们来看一下效果,导入数据的时候直接把保存的vtk文件拖入到3D Slicer然后出现一个弹窗,点击OK就可以了
3D Slicer简单三维重建_第8张图片
效果图如下所示,正好是一层手动涂画的效果:
3D Slicer简单三维重建_第9张图片

阈值选择+裁剪

重复第一种方法同样的步骤,然后再点击阈值按钮,更改阈值覆盖整个想要重建的区域,然后再点击显示3D模型的按钮,显示出阈值覆盖全部的3D模型,最后点击Apply
3D Slicer简单三维重建_第10张图片
3D Slicer简单三维重建_第11张图片
然后动手开始裁剪,可以选择裁剪方式,这里选择的是把圈起来的部分剪掉

剪掉效果如下图:
3D Slicer简单三维重建_第12张图片
这种方法适合对重建区域比较熟悉的人使用,因为很容易剪错区域,保存显示的方法跟第一种方法后面的一样,都是导出来显示。这里就不展示了,因为这种方法确实耗时。

分割好的模型+阈值法

因为我有分割好的数据,所以可以直接使用分割好的数据进行三维重建,这时就要使用全部的输入数据进行重建,还是跟之前的一样的步骤,这里简单的把步骤总结一下,1、导入数据 2、调整间距 3、调整比例 4、切换Segment Editor模块 5、添加分割模块 6、选择阈值(这里要选中全部的数据)7、点击3D显示按钮查看效果 8、导出模型 9、保存数据 这里贴一下我使用分割后的数据进行三维重建的效果

3D Slicer简单三维重建_第13张图片
这里贴一下动态图,设置了不同的透明度显示,这个动态图是一个gif格式的文件,百度搜索gifcamera可以找得到相应的软件。
3D Slicer简单三维重建_第14张图片

结束语

到这里,文章结束了,希望自己的一些经验对大家有帮助,如果有不当之处请大家批评指出。

你可能感兴趣的:(深度学习,深度学习)