C/C++

Python 使用 VTK 讀取 DICOM 影像教學與範例

介紹如何在 Python 中使用 VTK 函式庫讀取 DICOM 影像。

vtkDICOMImageReader 讀取單一檔案 DICOM 影像

若要以 VTK 讀取單一檔案的 DICOM 影像,可以使用 vtkDICOMImageReader 並指定檔案位置即可:

import vtk

# 建立 vtkDICOMImageReader
dicomReader = vtk.vtkDICOMImageReader()

# 指定 DICOM 檔案
dicomReader.SetFileName("myfile.dcm")

# 讀取 DICOM 影像
dicomReader.Update()

# 取得 DICOM 影像
img = dicomReader.GetOutput()

# 顯示影像資訊
print("Scalar Type:", img.GetScalarTypeAsString())
print("Origin:", img.GetOrigin())
print("Extend:", img.GetExtent())
print("Spacing:", img.GetSpacing())

vtkDICOMImageReader 讀取 DICOM 影像序列

vtkDICOMImageReader 亦可用於讀取 DICOM 影像序列,只要指定 DICOM 序列檔案的所在目錄即可:

import vtk

# 建立 vtkDICOMImageReader
dicomReader = vtk.vtkDICOMImageReader()

# 指定 DICOM 檔案所在目錄
dicomReader.SetDirectoryName("/my/dicom/folder")

# 讀取 DICOM 影像
dicomReader.Update()

# 取得 DICOM 影像
img = dicomReader.GetOutput()

# 顯示影像資訊
print("Scalar Type:", img.GetScalarTypeAsString())
print("Origin:", img.GetOrigin())
print("Extend:", img.GetExtent())
print("Spacing:", img.GetSpacing())

vtkDICOMImageReader 在讀取 DICOM 影像序列時,如果該目錄中包含多組影像序列(包含多個 Series Instance UID),則 vtkDICOMImageReader 就只會依據第一個找到的 Series Instance UID 來讀取 DICOM 影像序列,其餘的 DICOM 影像則不會被讀取到,所以在使用 vtkDICOMImageReader 讀取 DICOM 影像序列時,必須先確認同一個目錄中僅包含同一個 Series Instance UID 的 DICOM 影像,避免遺漏部分的影像。

標準的 VTK 函式庫所提供的 DICOM 影像讀取功能非常有限,若需要讀取較複雜的 DICOM 影像,可以參考 vtk-dicom,或是改用 SimpleITKPydicom 來讀取 DICOM,再透過 NumPy 與 VTK 的轉換,將影像轉換為 VTK 格式。

參考資料:discourse.vtk.org

Share
Published by
Office Guide
Tags: DICOMVTK

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