zoukankan      html  css  js  c++  java
  • 3D Slicer 医学图像检测标注教程(矩形框)

    对医学3D图像中的病灶区域进行Detection时,需要提供Bounding Box标签。3D Slicer(4.10.2)中的Segment Editor与Legacy/Editor都可以对三维体数据中的ROI进行矩形标签框注。Segment Editor较为方便,虽然这个模块本身是用于像素级Segmentation的标注,但是也可以用来标注ROI的矩形框。本文介绍如何使用3D Slicer的Segment Editor模块对DICOM格式的CT数据进行矩形框标注;标注过程中,每个流程都可能会出现问题,建议先随意地标记几张slice,然后导出保存。当整个流程没有出现问题时,再开始正式地标记。

    一、安装软件

    现在最新的3D slicer是4.10.2版本的,官网可以免费下载。https://download.slicer.org/,下载完成后点击安装包傻瓜式安装 (安装路径不能有中文)。
    另外,如果电脑用户名user是中文的话,有可能会出现问题,例如最后导出的文件夹为空,解决方法:在3D slicer的导航栏里的Edit – Application settings里,修改Module – Temporary directory为全英文路径:
    在这里插入图片描述

    二、读取数据

    打开3D slicer后,首先导入3D数据(DICOM格式)。

    1. 将包含.dcm文件序列的文件夹直接拖入3D Slicer,导入文件路径不能有中文,选择reader:
      在这里插入图片描述

      注意:一个病人有多个扫描的CT,选择薄层的,就是上图的S0004文件夹。

    2. 导入完成后,点击弹窗的OK:
      在这里插入图片描述
      然后会弹出DICOM Brower:
      在这里插入图片描述
      如果没有自动弹出上图的DICOM Brower的话,点击3D slicer左上角的DCM按钮:
      在这里插入图片描述

    3. 在DICOM Brower中,先选中本次要打标注的case,选择的时候,左中右三列都要选择到。然后点击Examine,再点击load(有些3D slicer没有Examine按钮,这可能是因为安装的路径有问题,退出重新安装到全英文路径下):
      在这里插入图片描述

    4. 点击load之后,CT的三个维度的2D切片会出现在3D slicer中,退出DICOM Brower。3D slicer的左上视图为CT的横断面,我们在横断面中进行标注:
      在这里插入图片描述

      一些基本的交互操作:https://blog.csdn.net/Huadong_eddy/article/details/80392595 (一定要看)

    三、标注工具

    1. 切换3D slicer的功能模块至Segment Editor:
      在这里插入图片描述
      上图蓝色框内,Segmentation表示本次label volume的名字,Master volume表示右边正在显示的Volume的名字,按默认的就行。

    2. 点击Add,新建一个类别的标签:
      在这里插入图片描述

      一个Case只需要一个Segment就行,即只需要点击一次Add。

    3. 下方的effects内,显示了很多种标注的工具,我们需要用到的有:
      在这里插入图片描述
      初始是在None的状态下;Draw为画笔工具;Erase为橡皮擦工具。

    4. 点击Draw画笔,可以看到该工具的操作方式:
      在这里插入图片描述
      在横断面视图内,点击左键新加点,按住左键拖拽鼠标可以画线(加多个点),点击右键可以将所有加的点闭合起来;按x键删除上一个点;按ctrl+z可以撤销上一组操作。

    四、示例标注

    1. 在横断面内,滚动鼠标浏览slice,找到有病灶的slice,可以通过前文链接里的那些交互操作方式改变窗宽窗位,或者放缩移动图像,来更加有效地查找病灶(注意有部分交互操作方式只有在None状态下才可以进行),例如下图的右下方有个病灶:
      在这里插入图片描述

    2. 使用Draw工具,围绕着病灶左键点3-4个点,然后点击右键,生成一个比较扭曲的矩形包围住这个病灶就行了。
      左键点了四个点:
      在这里插入图片描述
      右键生成闭合多边形(伪矩阵):
      在这里插入图片描述
      一个病灶区域就标好了。

      注意:虽然说在Detection时需要的是矩形框,但是只要所生成的多边形包围着病灶就OK了,后期把多边形转为矩形就行了,即包围多边形的最小矩阵。

      标注的要求:病灶区域的多边形,不是矩阵也行,也不需要严格地沿着病灶区域的边界画,把病灶区域给包围住就行,但是尽量不要把非病灶区域给包了。

    3. 标完这个slice的病灶之后,滚动滑轮到下一张slice继续接着标就行,不需要在左边栏再次点击Add添加Segment。把这个Case的所有横断面slice都找一遍,然后把每张slice中的所有病灶区域用伪矩形框给标注出来就行了。

      注意:一个Case中,很多slice可能没有病灶,没有病灶的slice就不需要标了;有些slice会有多个病灶,就需要用多个伪矩形把每个病灶都标出来;大部分病灶会跨越多张slice。

    4. 标注时,点击当前标签名字前面的小眼睛,可以选择显示/不显示标签;
      在这里插入图片描述
      点击Segmentations可以调节标签的透明度:
      在这里插入图片描述
      在这里插入图片描述
      调完之后按Edit selected返回继续标注。

    五、保存标注

    把Case里所有横断面slice的所有病灶都标记完成之后,需要保存标签。

    1. 切换至3D slicer的Data模块:
      在这里插入图片描述

    2. 选中刚刚的标签的名字,右键,选择Export visible segments to binary labelmap
      在这里插入图片描述

    3. 生成一个LabelMapVolume:
      在这里插入图片描述

    4. 选中并右键这个LabelMapVolume,选择Export to Dicom,即选择将标签导出为DICOM格式,会弹出Dicom Export弹窗:
      在这里插入图片描述
      修改导出的保存路径后(使用全英文路径;不要用默认的路径,不然默认路径下只会生成.sql文件) ,点击Export,显示Export successful就成功了:
      w_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FuaGVj,size_16,color_FFFFFF,t_70)

      检查一下导出的DICOM序列的文件夹,建议手动更改一下文件夹名字,改成病例的名字,以防多个病例之间弄混。

    六、删除数据

    当标记完一个case,并将标签成功导出之后,建议删除3D Slicer中的数据,以防标记下一个case时内存溢出。

      1. 删除导入历史:在DICOM Brower里面,选中病例,右键,点击delete 1 selected patient:
        在这里插入图片描述
      2. 删除3D slicer中的数据:在Data模块里,将数据全部选中,然后右键Delete:
        在这里插入图片描述
        删除3D Slicer中的数据并不会删除原始的在文件夹里的CT和已经导出的label。
  • 相关阅读:
    Datawhale文化运营 —— 推文排版
    Datawhale文化运营 —— 策划活动
    Datawhale文化运营 —— 选题
    Datawhale文化运营 —— 分析公众号运营
    前端面试——记一次于某司的经历
    Win10+Cent7双系统安装
    梳理 Opengl ES 3.0 (五)shader运行原理
    梳理 Opengl ES 3.0 (三)顶点坐标变换
    梳理 Opengl ES 3.0 (二)剖析一个GLSL程序
    梳理 Opengl ES 3.0 (一)宏观着眼
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14228962.html
Copyright © 2011-2022 走看看