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

Office 指南

辦公室工作實用教學

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

Python ITK 以 Observer 監看影像對準過程教學與範例

介紹如何使用 ITK 的 observer 監看影像對準過程,繪製及時的距離變化圖,確認收斂情況。


影像對準(image registration)的計算過程需要確認結果是否正確收斂到最佳解,在 ITK 中我們可以透過設定 observer 的方式,取出每次疊代產生的 metric 數值,並及時繪製出圖形,方便開發者調整參數。

以下幾個回呼函數(callback function)可用來繪製即時的 metric 數值收斂狀況。

from IPython.display import clear_output

# 初始事件回呼函數
def cb_registration_start():
    global cb_metric_values
    global cb_current_iteration_number
    cb_metric_values = []
    cb_current_iteration_number = -1

# 結束事件回呼函數
def cb_registration_end():
    global cb_metric_values
    global cb_current_iteration_number
    del cb_metric_values
    del cb_current_iteration_number
    plt.close()

# 疊代事件回呼函數
def cb_registration_iteration():
    global cb_metric_values
    global cb_current_iteration_number

    # 忽略重覆產生的疊代事件
    if optimizer.GetCurrentIteration() == cb_current_iteration_number:
        return

    cb_current_iteration_number = optimizer.GetCurrentIteration()
    cb_metric_values.append(optimizer.GetValue())

    # 清空輸出
    clear_output(wait=True)

    # 繪製 Metric 圖形
    plt.plot(cb_metric_values)
    plt.xlabel('Iteration Number', fontsize=12)
    plt.ylabel('Metric Value', fontsize=12)
    plt.show()

定義好這些回呼函數之後,接著在 optimizer 上面加上 sbserver,設定事件與回呼函數的對應關係:

# 加上 Observer,設定事件與回呼函數的對應關係
optimizer.AddObserver(itk.StartEvent(), cb_registration_start)
optimizer.AddObserver(itk.EndEvent(), cb_registration_end)
optimizer.AddObserver(itk.IterationEvent(), cb_registration_iteration)

這樣在執行影像對準的時候,就會及時繪製出 metric 數值收斂的狀況了。

這裡我們將這些 observer 套用在影像平移線性對準的範例中,可得到向這樣的 metric 收斂圖形。

metric 數值收斂狀況
metric 數值收斂狀況

參考資料:ITK discussion forum、SimpleITK Notebooks、ImageRegistration3.py

分類:Python 標籤:ITK

讀者互動方式

發佈留言 取消回覆

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

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

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

關注本站

  • 電子郵件
  • Facebook

公益

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

Copyright © 2021 · Office Guide