• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Python 處理 NumPy、SimpleITK 與 ITK 影像互相轉換教學與範例

介紹如何在 Python 中處理 NumPy、SimpleITK 與 ITK 三種影像格式的互相轉換。

SimpleITK 轉換為 NumPy 與 ITK

若要將 SimpleITK 格式轉換為單純的 NumPy 陣列,可以使用 GetArrayFromImage 或是 GetArrayViewFromImage。

import SimpleITK as sitk
import itk
import numpy as np

# 以 SimpleITK 讀取影像檔案
sitkImage = sitk.ReadImage("my_image.nrrd")

# SimpleITK 轉為 NumPy 陣列(複製影像)
npImage = sitk.GetArrayFromImage(sitkImage)

# SimpleITK 轉為 NumPy 陣列(共用記憶體)
npImageView = sitk.GetArrayViewFromImage(sitkImage)

若要轉換成 ITK 格式,可以將 NumPy 陣列轉為 ITK 格式之後,再由 SimpleITK 的影像中將影像的 origin、spacing 與 direction 資訊複製過來。

# NumPy 陣列轉為 ITK 影像
IMAGE_DIMENSION = 3
itkImage = itk.GetImageFromArray(npImage,
  is_vector = sitkImage.GetNumberOfComponentsPerPixel() > 1)
itkImage.SetOrigin(sitkImage.GetOrigin())
itkImage.SetSpacing(sitkImage.GetSpacing())
itkImage.SetDirection(itk.GetMatrixFromArray(
  np.reshape(np.array(sitkImage.GetDirection()), [IMAGE_DIMENSION]*2)))

ITK 轉換為 NumPy 與 SimpleITK

將 ITK 影像轉為 NumPy 陣列的做法也非常類似,都是使用 GetArrayFromImage 或 GetArrayViewFromImage 函數。

import SimpleITK as sitk
import itk
import numpy as np

# 以 ITK 讀取影像檔案
itkImage = itk.imread("my_image.nrrd")

# ITK 轉為 NumPy 陣列(複製影像)
npImage = itk.GetArrayFromImage(itkImage)

# ITK 轉為 NumPy 陣列(共用記憶體)
npImageView = itk.GetArrayViewFromImage(itkImage)

將 ITK 轉換為 SimpleITK 格式的作法也很類似,將 NumPy 陣列轉為 SimpleITK 格式之後,再複製影像的 origin、spacing 與 direction 資訊。

# NumPy 陣列轉為 SimpleITK 影像
sitkImage = sitk.GetImageFromArray(npImage,
  isVector=itkImage.GetNumberOfComponentsPerPixel()>1)
sitkImage.SetOrigin(tuple(itkImage.GetOrigin()))
sitkImage.SetSpacing(tuple(itkImage.GetSpacing()))
sitkImage.SetDirection(itk.GetArrayFromMatrix(itkImage.GetDirection()).flatten())

參考資料:ITK

分類:Python 標籤:ITK

主要資訊欄

搜尋

近期文章

  • Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤
  • Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例
  • Linux 網路設定 ip 指令用法教學與範例
  • Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例
  • Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例
  • Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例
  • Linux 以 Cryptsetup 與 LUKS 加密磁碟教學與範例
  • Linux 使用 age 簡潔的加密、解密工具使用教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide