介紹如何在 Jupyter 環境中使用 itkwidgets
模組,互動式顯示影像或網格等 3D 資料。
itkwidgets
是從 itk-vtk-viewer 所衍生出來的 Python 模組,可以讓使用者在 Jupyter 環境之下顯示各種影像分析相關的資料。
NodeSource 的 GitHub 說明,安裝最新版本的 Node.js:
# 安裝 14 版 Node.js curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - sudo apt-get install -y nodejs
itkwidgets
itkwidgets
可以透過 pip
或 conda
安裝:
# 透過 pip 安裝 itkwidgets sudo pip3 install itkwidgets # 透過 conda 安裝 itkwidgets conda install -c conda-forge itkwidgets
若需要在 Jupyter Lab 中使用,需要再執行:
# 設定 Jupyter Lab sudo jupyter labextension install @jupyter-widgets/jupyterlab-manager \ jupyter-matplotlib jupyterlab-datawidgets itkwidgets
itkwidgets
支援 NumPy、Dask、ITK、VTK、SimpleITK、pyvista、vtkplotter 等各種 2D、3D 影像與網格(mesh)資料格式。
以下是顯示 ITK 的影像與網格資料範例,範例資料是 Allen Brain Altas 的平均腦影像以及標註網格:
import itk import itkwidgets # 讀取網格資料 meshType = itk.Mesh[itk.F, 3] meshReader = itk.MeshFileReader[meshType].New() meshIO = itk.OBJMeshIO.New() meshReader.SetMeshIO(meshIO) meshReader.SetFileName("annotation/ccf_2017/structure_meshes/375.obj") meshReader.Update() mesh1 = meshReader.GetOutput() meshType = itk.Mesh[itk.F, 3] meshReader = itk.MeshFileReader[meshType].New() meshIO = itk.OBJMeshIO.New() meshReader.SetMeshIO(meshIO) meshReader.SetFileName("annotation/ccf_2017/structure_meshes/698.obj") meshReader.Update() mesh2 = meshReader.GetOutput() # 讀取 Volume 影像 image = itk.imread("average_template/average_template_25.nrrd", itk.US) # 顯示 Volume 影像與網格 itkwidgets.view(image, geometries = [mesh1, mesh2])
關於更詳細使用說明與範例,可以參考 itkwidgets
的 GitHub 網站。另外亦可使用 help
查閱其使用說明:
# 查看使用說明
help(itkwidgets.view)