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

Office 指南

辦公室工作實用教學

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

Python 使用 ITK ImageFileWriter 串流分批寫入大型檔案教學與範例

介紹如何在 Python 中使用 ITK 的 ImageFileWriter 本身的串流功能,分批處理大型檔案。


在使用 ITK 進行各種處理流程時,除了使用 StreamingImageFilter 分割資料建立串流之外,亦可在使用 ImageFileWriter 寫入檔案的時候,以 SetNumberOfStreamDivisions 設定串流分割參數,讓整條管線都以串流的方式處理,以下是一個轉換影像類型的範例:

import itk

# 設定分割數量
numberOfSplits = 4

# 影像維度
Dimension = 3

# 輸入影像類型
InputPixelType = itk.US
InputImageType = itk.Image[InputPixelType, Dimension]

# 輸出影像類型
OutputPixelType = itk.UC
OutputImageType = itk.Image[OutputPixelType, Dimension]

# 讀取 MHA 影像檔案
inputImageFilename = "input.mha"
outputImageFilename = "output.mha"

# 建立影像 Reader
reader = itk.ImageFileReader[InputImageType].New(FileName=inputImageFilename)

# 建立 PipelineMonitorImageFilter 查看 Streaming 每次處理的範圍
monitorFilter = itk.PipelineMonitorImageFilter[InputImageType].New()
monitorFilter.SetInput(reader.GetOutput())

# 影像資料轉換
rescaler = itk.RescaleIntensityImageFilter[InputImageType, InputImageType].New()
rescaler.SetInput(monitorFilter.GetOutput())
rescaler.SetOutputMinimum(0)
outputPixelTypeMaximum = itk.NumericTraits[OutputPixelType].max()
rescaler.SetOutputMaximum(outputPixelTypeMaximum)

# 影像轉型
castImageFilter = itk.CastImageFilter[InputImageType, OutputImageType].New()
castImageFilter.SetInput(rescaler.GetOutput())

# 寫入影像檔案
writer = itk.ImageFileWriter[OutputImageType].New()
writer.SetFileName(outputImageFilename)
writer.SetInput(castImageFilter.GetOutput())
writer.SetNumberOfStreamDivisions(numberOfSplits)

# 實際執行
writer.Update()

# 輸出 Streaming 的分批 Region 資訊
updatedRequestedRegions = monitorFilter.GetUpdatedRequestedRegions()
print("Updated RequestedRegion's:")
for r in range(len(updatedRequestedRegions)):
    print('  ' + str(updatedRequestedRegions[r]))
Updated RequestedRegion's:
  itkImageRegion3([0, 0, 0], [249, 278, 106])
  itkImageRegion3([0, 0, 106], [249, 278, 106])
  itkImageRegion3([0, 0, 212], [249, 278, 106])
  itkImageRegion3([0, 0, 318], [249, 278, 106])

分類:Python 標籤:ITK

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • Linux 檢查、測試 CPU AES-NI 硬體加速加密指令集教學
  • CentOS Linux 7.9 自行編譯、安裝 OpenSSH 9.0p1 伺服器教學與範例
  • Python 使用 zipfile 模組壓縮、解壓縮 ZIP 檔案教學與範例
  • Python 以 LINE Notify 自動傳送即時訊息、圖片教學與範例
  • Linux 使用 Prometheus 與 Grafana 監控伺服器狀態、發送告警 Email 簡訊教學與範例
  • Linux 設定 pam_tty_audit 記錄 SSH 使用者操作指令教學與範例
  • Linux 封鎖、解鎖登入失敗次數過多的帳號 pam_faillock 教學與範例
  • Python 使用 pytube 自動下載 YouTube 影片教學與範例

推薦網站

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

關注本站

  • 電子郵件
  • Facebook

公益

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

Copyright © 2021 · Office Guide