对于医疗图像数据可视化有一些比较成熟的开源软件库,其中包括volview(2011年已经停止维护和更新),MITK(德国非中科大版),3Dslicer和ITK-SNAP。3Dslicer功能非常的强大但是也是代码量最多的。可以去它的官网直接下载打包好的程序,支持windows、apple、linux三个平台,生态还是比较健全的。slicer还有一个比较方便的地方是支持c++和python开发,支持python的话可以快速验证深度学习的一些算法,开发速度比较快。相比较 于其他的库而言slicer更像一个IDE。
有的时候需要对slcer进行修改,比如你的公司想使用自己的布局还有logo等,此时就需要对源码进行编译修改。下面介绍在windows平台下如何配合visual studio进行编译。
环境:
Cmake >= 3.21.1
Git >= 1.7.10VS 我使用的是2019社区版
Qt5 要求的是5.15.2 下载地址https://download.qt.io/official_releases/online_installers/ 选择 qt-unified-windows-x64-online.exe 只能在线安装了
NSIS 可选 (程序打包的时候使用的,即打包成一个exe文件,可以在别人电脑上安装你写好的程序)
1. 创建source文件和build文件
.在自己的电脑上创建3D slicer程序的source文件路径 例如C:\D\S4 由于windows的最大路径问题,在编译的时候源文件必须在非常短的文件路径下编译,虽然不是必须但是强烈建议不要将source文件和build文件放到同一个空间中。创建build文件路径,推荐release文件路径为C:\D\S4R,debug文件路径为C:\D\S4D,同样可以使用相同的build文件树。
2.下载source code到创建的C:\D\S4文件下
使用 git clone https://github.com/Slicer/Slicer.git . 下载 注意这里的. 是必要的因为没有这个“.”的话会创建一个Slicer子文件在当前的文件下。
3.配置开发者仓库(可选)
右键选择刚下载的C:\D\S4\的Utilities --》 Git bash here 然后输入 ./SetupForDevelopment.sh 此时可以注册自己的代码仓库。
4.配置并且build 3D slicer
4.1 运行Cmake(cmake-gui)
4.2 配置source和build文件的路径,先别急着configure
4.3 Add Entry-> Name Qt5_DIR Type -> PATH Value -> Qt5文件 例如C:\Qt\5.15.2\msvc2019_64\lib\cmake\Qt5
4.4 点击Configure 取消 BUILD_TESTING 取消Slicer_USE_QtTesting 只使用Debug和Release2个编译
4.5 需要能够科学上网
4.6 点击Generate
4.7 点击Open Project 打开vs2019
4.8 点击生成开始下载依赖编译
这一步会报错 Error in configuration process, project files may be invalid error: "Couldn't resolve host name"
解决方案:修改该文件(文件位置在源码目录的CMake文件夹下)的set(url “…”),将url改成https://www.baidu.com,只要能访问的就行。
(这里我最开始报的错误是:SSL connect error,后来发现是我之前修改过hosts文件,在里面添加了raw.githubusercontent.com,解析的ip还是个错的,最后就把它删了)
右击All_build进行生成,这里需要能够科学上网,因为需要下载一些库。如果失败了先别管多试几次,网络不好会报错timeout的。
如下图就是报错MSB806很多错误都是网络引起。 5.运行slicer
找到../Slicer-build(你编译的文件下)/Slicer.exe 执行app应用
注意: Slicer.exe是一个“launcher”设置了环境变量,真正的执行文件是在../Slicer-build(你编译的文件下)/bin/Release/SlicerApp-real.exe
到这里就是编译成功了,如果想要打包你的程序生成exe的话需要安装开头说的NSIS,然后编译
6.Package Slicer(创建 安装包)
打包成为exe可执行文件
使用vs打开D:\Slicer_B\Slicer-build\Slicer.sln
右键点击解决方案中的CmakePredefinedTargets下的PACKAGE选择生成即可生成exe执行文件
文件在D:\Slicer_B\Slicer-build\Slicer-5.1.0-2022-07-20-win-amd64.exe即可在其他的电脑上执行
这里编译和打包就完成了,下面说下编译的过程中可能需要的错误和解决方案。
错误1 Error in configuration process, project files may be invalid
error: "Couldn't resolve host name"
解决方案:修改该文件(文件位置在源码目录的CMake文件夹下)的set(url “…”),将url改成https://www.baidu.com,只要能访问的就行。
(这里我最开始报的错误是:SSL connect error,后来发现是我之前修改过hosts文件,在里面添加了raw.githubusercontent.com,解析的ip还是个错的,最后就把它删了)
1.查看是否有 CMAKE_USE_OPENSSL 选项,有就打钩,没有的话添加
2.function(slicer_check_cmake_https)
#set(url "https://raw.githubusercontent.com/Slicer/Slicer/main/CMakeLists.txt") 修改成下面的
set(url "https://www.baidu.com")
set(dest "${CMAKE_CURRENT_BINARY_DIR}/slicer_check_cmake_https_output")
错误2 python-dicom-requirements 报错 error MSB6006: “cmd.exe”已退出,代码为 1
解决方案1:由于缺少Python库而导致的错误(或其他与Python相关的错误,例如构建Python -…-requirements项目或Python包装SimpleITK)可能是由于构建系统检测到系统上某处安装了Python,而不是Slicer自己的Python环境。要解决此类问题,请删除环境变量(PATH, PYTHONPATH, PYTHONHOME)中对Python的所有引用。或者,在开始构建Slicer之前,暂时重命名或删除其他Python安装;它们可以在Slicer构建完成后恢复。
解决方案2:重新安装新的python后解决(注意这里一定要断了VPN但是别断网安装程序)。
错误3unable to access 'https://github.com/miloyip/rapidjson.git/': OpenSSL SSL_read: Connection was reset, errno 10054
解决方案:有时候当我们使用Git获取资源,会报“OpenSSL SSL_read: Connection was reset, errno 10054”的错误,出现该错误是因为服务器的SSL证书没有经过第三方机构的签署
在我们需要获取资源的文件夹中,右键打开Git的命令面板 Git Bash Here
输入 git config --global http.sslVerify "false"