RVesselX
RVX概述
RVesselX(后续简称RVX) 是一个专门用于血管分割和分析的工具包,主要用于医学图像中的血管自动化检测和可视化。它可以在 3D Slicer 中通过扩展方式使用,适合处理复杂的血管网络,如肝脏血管和其他主要血管系统。
RVX提供一系列丰富工具可用于肝脏、肝脏血管和肝脏肿瘤的建模。本文档将从肝脏相关三维重建工作方面展开讨论
相关实验采用3DSlicer的SampleData中的3D_IRCAD_B_5_Liver数据进行
下载安装RVX插件
文档中暂时涉及VesselnessFilters和LiverSegmentation两插件
VesselnessFilters
打开拓展管理器在搜索框中键入“RVX”,可以得到如图1搜索结果

Figure 1 拓展管理器搜索RVX
其中RVXVesselnessFilters即为所需插件,下载安装即可
- 官方教程通过“RVessel”搜索,无法搜索到RVXVesselnessFilters插件,结果如图2。RVesselX插件中似乎不包含滤波器,建议搜索RVXVesselnessFilters
LiverSegmentation
在拓展管理器中搜索“RVX”后,下载安装RVXLiverSegmentation同样可以
搜索“RVesselX”下载安装RVesselX亦可,此时搜索结果如图2

Figure 2 拓展管理器搜索RVesselX
- 官方教程通过“RVesselX”搜索,但RVXLiverSegmentation插件应具备和RVesselX一致的功能,前者最后更新日期新于后者,暂不清楚二者版本具体有何不同或者同时按照是否有冲突问题,对于大部分任务二者择一即可
首次下载安装时,将检测以下依赖(若无将自动安装):
- SegmentEditorExtraEffects
- SlicerVMTK
- MarkupsToModel
- PyTorch
除上述依赖以外,还有其它依赖的库文件,需要进入RVX拓展的界面,点击Download Dependencies and restart即可完成
-
下载依赖时可能由于国内网络原因,原始源的连接不稳定,可以考虑以下方法
-
使用代理,可能SSL协议产生问题
-
更换3dslicer内置python的pip源,打开3dslicer的python解释器界面,从
View>Python Console进入,输入以下命令即可更换源:
import subprocess subprocess.check_call(['python-real', '-m', 'pip', 'config', 'set', 'global.index-url', 'https://pypi.tuna.tsinghua.edu.cn/simple']) -
使用RVX Vesselness Filters完成图像滤波
完成RVXVesselnessFilters插件安装后,通过模块中选择Filtering>Vesselness即可查看已有的滤波器,如图3所示

Figure 3 RVX Vesselness Filters
RVX提供了如下滤波器:
- Frangi滤波器
- Jerman滤波器
- Meijering滤波器
- OOF滤波器
- Sato滤波器
- Zhang滤波器
各滤波算法比较
各滤波器特点汇总如下:
Frangi 滤波器
特点:
- 主要基于图像的 Hessian 矩阵(即二阶导数矩阵),通过特征值分解来识别线状结构。
- 使用特征值的几何关系来增强血管结构,同时抑制噪声和非线性结构。
- 滤波效果依赖于尺度空间,能够处理多种尺寸的血管。
- 适用场景:适用于增强具有一定厚度且清晰的血管、管状结构,但对细小血管的表现可能不如某些其他方法。
Jerman 滤波器
特点:
- 基于图像梯度,能够更好地处理带有模糊边缘或低对比度的血管。
- 通过调整滤波参数,可以更好地应对细小、模糊或者与周围组织对比度不明显的血管。
- 其设计旨在克服 Frangi 滤波器在低对比度血管处理上的不足。
- 适用场景:适合处理那些边缘模糊、不太清晰的血管,对比度不明显的情况下表现出色。
Meijering 滤波器
特点:
- 主要用于增强线状结构,包括血管和神经纤维等。
- 采用方向选择性滤波器,专注于线状结构的响应。
- 针对不同尺度的血管能够有不错的增强效果,但可能对噪声比较敏感。
- 适用场景:适用于增强细小线状结构,常用于神经和毛细血管等非常细的血管。
OOF (Optimally Oriented Flux) 滤波器
特点:
- 基于几何测量学的概念,使用“最优方向通量”来捕捉线状结构。
- 能够有效处理复杂的血管分叉结构,对粗细变化较大的血管具有较好的表现。
- 对于复杂血管结构能够提供较高的分辨率,但计算量较大。
- 适用场景:适用于需要精确分辨血管分支的情况,对细小和复杂血管网络都有较好表现。
Sato 滤波器
特点:
- 采用二阶导数信息的 Hessian 矩阵,增强线状和管状结构。
- 其与 Frangi 滤波器类似,但其设计更加关注细小血管结构。
- 可以在不同尺度上增强血管,同时减少背景噪声的影响。
- 适用场景:更适合处理细小的血管和管状结构,对小血管有良好增强效果。
Zhang 滤波器
特点:
- 通过结合局部图像对比度的变化来增强血管的细小结构。
- 特别关注微血管网络的增强,同时保持较好的噪声抑制效果。
- 其参数设计能够针对不同血管尺寸和对比度进行调优。
- 适用场景:适用于需要增强微小血管或对比度变化大的血管网络。
实验对比效果(默认参数)如图4所示,滤波效果随原始数据而效果不同,实际工作中请参考适用场景选择恰当滤波器。

Figure 4 各滤波器比较(从上至下分别为原始数据,frangi,Jerman,Meijering,OOF,Sato,Zhang滤波器结果)
各滤波器参考论文如下供进一步了解细节:
- Antiga Vesselness Filter : A. F. Frangi, W. J. Niessen, K. L. Vincken, and M. A. Viergever, “Multiscale vessel enhancement filtering,” in MICCAI, 1998, pp. 130–137.
- Jerman Vesselness Filter : T. Jerman, F. Pernus, B. Likar, and Z. Spiclin, “Enhancement of vascular structures in 3D and 2D angiographic images,” IEEE T Med Imaging, vol. 35, pp. 2107–2118, 2016.
- Meijering Vesselness Filter : E. Meijering, M. Jacob, J.-C. Sarria, P. Steiner, H. Hirling, and M. Unser, “Neurite tracing in fluorescence microscopy images using ridge filtering and graph searching: Principles and validation,” in ISBI, 2004, pp. 1219–1222.
- OOF Vesselness Filter : M. W. K. Law and A. C. S. Chung, “Three dimensional curvilinear structure detection using optimally oriented flux,” in ECCV, 2008, pp. 368–382.
- Sato Vesselness Filter : Y. Sato, S. Nakajima, H. Atsumi, T. Koller, G. Gerig, S. Yoshida, and R. Kikinis, “3D multi-scale line filter for segmentation and visualization of curvilinear structures in medical images,” in CVRMed-MRCAS, 1997, pp. 213–222.
- Zhang Vesselness Filter : D. Li, L. Zhang, C. Sun, T. Yin, C. Liu, and J. Yang, “Robust retinal image enhancement via dual-tree complex wavelet transform and morphology-based method,” IEEE Access, vol. 7, pp. 47 303–47 316, 2019.
滤波器使用
选取任一滤波器,界面如图5所示(以使用Frangi滤波器为例)

Figure 5 RVX滤波器使用(选中OutputVolume创建新Volume中)
左侧菜单可以调整参数、输入输出等设置。
在调节完成参数后在选中IO下拉窗口分别在Input Volume和Output Volume中选择输入和输出窗位,在输出窗位选择中可新建窗位,图5中展示创建选中了Creat New Volume as...选项
- 输出窗位可以与输入窗位相同,但不建议将输出窗位设为输入窗位,否则将覆盖原有数据。建议将原数据保留
完成参数和IO设置后,点击下方Apply开始图像滤波处理,进度条将显示在Apply按键上侧,完成后如图6所示

Figure 6 RVX滤波器使用(应用后滤波结果)
返回Data模块可以查看到原始数据和命名的滤波后数据,如图7

Figure 7 滤波后Data界面
在RVX Liver Segmentation模块可以比较滤波前后结果,如图8所示

Figure 8 原始数据(左)与滤波后数据(右)比较
可以观察出使用Frangi滤波将血管成像大大增强而过滤掉大多其它不关心的部分,更直观的在二维和三维界面观察,便于血管部分的三维重建工作
使用RVX Liver Segmentation三维重建
从模块选择Segmentation>RVX Liver Segmentation即可进入RVX Liver Segmentation模块,如图9

Figure 9 RVX Liver Segmentation选择
RVX Liver Segmentation模块初始界面如图10,实际为该模块的Data界面

Figure 10 RVX Liver Segmentation界面
图像滤波/预处理
在肝脏建模工作中建议进行图像增强或滤波,即选择合适的窗位。在手动和自动两方面加快工作进程,对于前者而言能够更轻松的判断而对于后者可以加快计算速度甚至不当的滤波可能得到错误的结果
一般而言,使用Volumes模块中Display>Presets下的CT-Abdomen(从左数第4个),如图11
- 建议克隆新窗位作为滤波结果以免覆盖原始数据,保留原始数据作更多用途

Figure 11 Volumes模块下CT-Abdomen预设
点击图标应用CT-Abdomen预设后结果如图12所示。

Figure 12 采用CT-Abdomen预设下结果
- 在RVX Liver Segmentation的Data界面亦可完成一些基本的窗位设置,详细可见图10,点击界面中
Volume展开即可,功能与上述Volumes模块大抵相似
当图像增强完毕后可以着手肝脏建模任务,由于肝部位在CT图像中阈值与其它部位相近,难以仅通过阈值的方法获取肝脏部位,通常建议的手动方法是通过Grow From Seeds即种子生长法完成肝脏部位三维重建,也有以深度学习为基础的AIAA工具来自动化识别肝脏部位。后续两小节将从该两方向着手介绍。
种子生长法完成肝脏三维重建
选取数据后,进入Liver界面,点击Grow From Seeds的图标,工具界面如图13所示

Figure 13 Liver界面种子生长法工具
RVX Segmentation工具默认将创建Liver in和Liver out两个分割,种子生长法要求在多个影像上标记出roi区域即感兴趣区域和不感兴趣区域,在肝脏三维重建工作中即肝脏区域(Liver in)和非肝脏区域(Liver out),随后由算法推导出每张连贯的图像上roi区域所在。
因此种子生长法操作步骤大致简述为:
- 在当前图像上使用Paint工具大致绘制肝脏区域(Liver in)和非肝脏区域(Liver out),如图14所示;
- 若认为绘制图像数量足够,则进入第3步,否则切换图像重复步骤1;
- 进入Grow From Seeds,应用算法开始计算roi区域

Figure 14 种子生长法绘制肝脏和非肝脏区域
也可参考种子生长法工具中的detail,查看帮助信息
在大致完成绘制roi区域后在Grow From Seeds界面可以点击Preview下Initialize可应用算法计算当前结果如图15所示

Figure 15 应用种子生长法
后续可以使用其它工具如Paint,Erase等修正区域,点击Preview下Update重新应用算法更新结果,或当结果满意后点击Apply应用结果,如图16所示

Figure 16 应用种子生长法结果
基于深度学习的方法完成肝脏三维重建
RVX提供了AIAA工具标记roi区域后自动提取肝脏部位完成三维重建
点击Segment CT/MRI Liver图标进入工具如图17所示

Figure 17 Segment CT/MRI Liver工具界面
在ROI选项下设置已有或新建的ROI区域,在右侧界面可以在二维和三维下拖拽框体调整roi区域,如图18所示

Figure 18 ROI区域调整
确定ROI区域后点击Apply应用算法识别肝脏区域,结果如图19所示

Figure 19 深度学习方法完成肝脏三维重建
完成基本的肝脏三维重建后,可以使用Erase,Scissors,Smoothing等工具对结果修正或光滑等操作,此处暂时不再赘述
肝脏血管三维重建
RVX中采用半自动的方法完成肝脏中门静脉以及下腔静脉的三维重建,基本原理是标识出门静脉以及下腔静脉中血管的关键节点,随后通过节点抽取出完整的树。树的模型见图20所示,图示中红色节点即为所需标识的节点,其中虚线分支均为可选分支,其余实线分支则为必备节点。
此小节需要对CT影像解读需要一定基础,尽可能正确的放置节点最终可得到较好的三维重建效果,暂时对影像解读方面有所欠缺,不会进行过多实验或演示,因此此小节将暂时略写。

Figure 20 下腔静脉和门静脉portal tree示意
进入RVX Liver Segmentation中Portal Vein和IVC Vein板块即可查看当前节点情况,按照界面提示即可在二维和三维上放置节点。
在所有节点放置完毕后点击Extract Vessels from node tree即可生成相应血管三维重建,门静脉和下腔静脉界面如图21和22所示,后续可以在Portal Vein Edit和IVC Vein Edit板块编辑和修正血管三维重建效果

Figure 21 门静脉节点

Figure 22 下腔静脉节点
在抽取和分割出树的操作上,在官方介绍基础上理解出的过程如下:
- 使用树的节点标识了一个roi区域
- 在这些roi区域上应用海森滤波器加强血管结果对比明显度
- 使用分支节点作为种子节点应用一种基于level set的分割方法于使用海森滤波器增强过的roi区域上
这部分涉及的点比较多,可能需要后期其它文章做专门讨论和探究,待后期来补充
在海森滤波器的调整方面可以前往节点放置界面的Vesselness Filter Options上查看,更多关于海森滤波器可以参考以下文章:
Jonas Lamy, Odyssée Merveille, Bertrand Kerautret, Nicolas Passat, Antoine Vacavant. Vesselness
filters: A survey with benchmarks applied to liver imaging. International Conference on Pattern
Recognition (ICPR), 2020, Milan, Italy. pp.3528-3535, ff10.1109/ICPR48806.2021.9412362ff. ffhal-
02544493v2ff
数据导出
数据导出在Tumors板块,该板块如图23所示

Figure 23 Tumors板块
该板块默认创建Tumor和Not Tumor两个分割,同时作为该模块最后一个板块提供数据导出功能,点击Export all segmented volumes即可
下列结果将得到保存:
- 肝脏label map和模型
- 门静脉label map,模型和中心线
- 门静脉树intersection positions (CSV,邻接矩阵和DGtal兼容格式)
- 下腔静脉label map, 模型和中心线
- 下腔静脉树 intersection positions (CSV,邻接矩阵和DGtal兼容格式)
- 肿瘤label map
- .MRB格式文件
RVX官方文档
相关官方github主页如下:
RVXLiverSegmentation:https://github.com/R-Vessel-X/SlicerRVXLiverSegmentation
RVXVesselnessFilters:https://github.com/R-Vessel-X/SlicerRVXVesselnessFilters