Python

Python 使用 ITK SimpleFilterWatcher 監看 Filter 執行狀態教學與範例

介紹如何在 Python 中使用 ITK 的 SimpleFilterWatcher 輸出指定 filter 產生的管線事件(pieline events)詳細資訊。

在開發 ITK 應用程式時,如果需要觀察管線內部各個 filter 的運作狀況,可以在程式中加入 SimpleFilterWatcher,把指定 filter 的所產生的所有管線事件輸出至標準輸出(standard output)。

import itk

# 影像維度
Dimension = 3

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

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

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

# 建立 ThresholdImageFilter
thresholdFilter = itk.ThresholdImageFilter[InputImageType].New()
thresholdFilter.SetInput(reader.GetOutput())
thresholdFilter.ThresholdBelow(100)
thresholdFilter.SetOutsideValue(0)

# 輸出 Filter 管線事件資訊
watcher = itk.SimpleFilterWatcher(thresholdFilter, "Threshold")

# 實際執行
thresholdFilter.Update()
-------- Start ThresholdImageFilter "Threshold" ThresholdImageFilter (0x358caa0)
  RTTI typeinfo:   itk::ThresholdImageFilter<itk::Image<unsigned short, 3u> >
  Reference Count: 3
  Modified Time: 16
  Debug: Off
  Object Name:
  Observers:
    StartEvent(SimpleMemberCommand)
    EndEvent(SimpleMemberCommand)
    ProgressEvent(SimpleMemberCommand)
    IterationEvent(SimpleMemberCommand)
    AbortEvent(SimpleMemberCommand)
  Inputs:
    Primary: (0x35ffa10) *
  Indexed Inputs:
    0: Primary (0x35ffa10)
  Required Input Names: Primary
  NumberOfRequiredInputs: 1
  Outputs:
    Primary: (0x41b7e60)
  Indexed Outputs:
    0: Primary (0x41b7e60)
  NumberOfRequiredOutputs: 1
  Number Of Work Units: 128
  ReleaseDataFlag: Off
  ReleaseDataBeforeUpdateFlag: Off
  AbortGenerateData: Off
  Progress: 0
  Multithreader:
    RTTI typeinfo:   itk::PoolMultiThreader
    Reference Count: 1
    Modified Time: 2
    Debug: Off
    Object Name:
    Observers:
      none
    Number of Work Units: 128
    Number of Threads: 48
    Global Maximum Number Of Threads: 128
    Global Default Number Of Threads: 48
    Global Default Threader Type: itk::MultiThreaderBaseEnums::Threader::Pool
    SingleMethod: 0
    SingleData: 0
  DynamicMultiThreading: On
  CoordinateTolerance: 1e-06
  DirectionTolerance: 1e-06
  InPlace: Off
  The input and output to this filter are the same type. The filter can be run in place.
  OutsideValue: 0
  Lower: 100
  Upper: 65535
Progress  | 0.00943396
Filter took 0.0180871 seconds.
-------- End ThresholdImageFilter "Threshold"
ThresholdImageFilter (0x358caa0)
  RTTI typeinfo:   itk::ThresholdImageFilter<itk::Image<unsigned short, 3u> >
  Reference Count: 3
  Modified Time: 16
  Debug: Off
  Object Name:
  Observers:
    StartEvent(SimpleMemberCommand)
    EndEvent(SimpleMemberCommand)
    ProgressEvent(SimpleMemberCommand)
    IterationEvent(SimpleMemberCommand)
    AbortEvent(SimpleMemberCommand)
  Inputs:
    Primary: (0x35ffa10) *
  Indexed Inputs:
    0: Primary (0x35ffa10)
  Required Input Names: Primary
  NumberOfRequiredInputs: 1
  Outputs:
    Primary: (0x41b7e60)
  Indexed Outputs:
    0: Primary (0x41b7e60)
  NumberOfRequiredOutputs: 1
  Number Of Work Units: 128
  ReleaseDataFlag: Off
  ReleaseDataBeforeUpdateFlag: Off
  AbortGenerateData: Off
  Progress: 1
  Multithreader:
    RTTI typeinfo:   itk::PoolMultiThreader
    Reference Count: 1
    Modified Time: 2
    Debug: Off
    Object Name:
    Observers:
      none
    Number of Work Units: 128
    Number of Threads: 48
    Global Maximum Number Of Threads: 128
    Global Default Number Of Threads: 48
    Global Default Threader Type: itk::MultiThreaderBaseEnums::Threader::Pool
    SingleMethod: 0
    SingleData: 0
  DynamicMultiThreading: On
  CoordinateTolerance: 1e-06
  DirectionTolerance: 1e-06
  InPlace: Off
  The input and output to this filter are the same type. The filter can be run in place.
  OutsideValue: 0
  Lower: 100
  Upper: 65535

參考資料:ITKExamples

Share
Published by
Office Guide
Tags: ITK

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago