3d Slicer在windows和linux系统上的编译介绍

Posted inter_peng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3d Slicer在windows和linux系统上的编译介绍相关的知识,希望对你有一定的参考价值。

本文由Markdown语法编辑器编辑完成。

1. 前言

3d Slicer是一个主要用于医学影像的可视化和计算分析开源软件,支持所有针对数据的通用操作,如分割,配准,重建,转换,定性分析等。

3d Slicer也是一个软件研究平台,允许研究人员快速地开发和评估新算法,并且将它们发布到用户。

3d Slicer也是一个产品开发平台,允许企业快速地验证产品原型,并且将发布产品到用户。开发者可以将精力集中在开发新的算法上面,而无需再花费时间,重新开发一些基本的图像导入/导出,可视化,交互等模块。它可以被高度地定制化。

它是完全免费,而且在如何使用上面没有任何限制。

2. 3d Slicer的编译介绍

2.1 windows 10平台编译

2.2 linux(ubuntu 18.04)平台编译

官方指导文档: https://slicer.readthedocs.io/en/latest/developer_guide/build_instructions/linux.html
官方建议是在Ubuntu 20.04 (Focal Fossa)上面编译3d Slicer.
由于本机的Ubuntu是18.04的,所以这里介绍在18.04上面编译3d Slicer遇到的问题和解决过程。

要想编译3d Slicer, 需要在本机安装依赖的库和相关的工具。
由于Slicer需要依赖的库非常多,没有办法直接把这些库都放在源码中。因此,Slicer在编译的过程中,会自动去相应的库下载源代码并且编译。因此,需要依赖git, gcc。Slicer的界面,则是依赖于QT开发,因此也需要安装QT以及相关的库。

官网给出了如下的安装依赖的指令:

sudo apt update && sudo apt install git subversion build-essential cmake cmake-curses-gui cmake-qt-gui \\
  qt5-default qtmultimedia5-dev qttools5-dev libqt5xmlpatterns5-dev libqt5svg5-dev qtwebengine5-dev qtscript5-dev \\
  qtbase5-private-dev libqt5x11extras5-dev libxt-dev

报错1:
运行上述指令时会报错。
报错的主要原因是,在执行 sudo apt update时造成的。
https://www.omgubuntu.co.uk/2017/08/fix-google-gpg-key-linux-repository-error
https://www.google.com/linuxrepositories/
根据以上的链接,更新key后,sudo apt update, 就可以成功运行了。
然后再次运行上面的指令,就可以成功地安装相关的依赖了。

接下来,按照官网的描述,下载3d Slicer的源码。

git clone git://github.com/Slicer/Slicer.git

此时会自动创建一个名称为Slicer的文件夹,里面就是Slicer的源代码。
然后就是根据官网的描述,运行其中的脚本,来配置开发环境。

cd Slicer
./Utilities/SetupForDevelopment.sh
cd ..

然后就是,新建一个目录,用于存放编译后的文件和解决方案。相关的指令如下:

mkdir Slicer-SuperBuild-Debug
cd Slicer-SuperBuild-Debug
cmake ../Slicer

这里由于是编译Debug版本,因此创建的文件夹名称为: Slicer-SuperBuild-Debug.
通过运行cmake指令,可以生成相应的项目依赖和makefile. 然后再运行make指令,就可以开始编译项目了。为了能够应用多核的优势,官网建议编译的时候,选择的并行编译进程数,为cpu核数+1.
我在编译的时候,选择的是9. 因此,我的编译指令如下:

make -j8

以上是关于3d Slicer在windows和linux系统上的编译介绍的主要内容,如果未能解决你的问题,请参考以下文章

3D slicer

使用3D Slicer对图像进行配准

3D Slicer中文教程—基本介绍

3D Slicer Modify Mouse Event 修改3D Slicer中的鼠标响应事件

3D-Slicer的插件Radiomics为啥打不开?

slicer 3d操作