Python

OpenPhi 讀取 PHILIPS iSyntax 數位病理全玻片影像 WSI 教學與範例

介紹如何使用 Python 的 OpenPhi 模組,讀取 PHILIPS iSyntax 格式的數位病理全玻片影像(WSI)。

PHILIPS iSyntax

iSyntax 是 PHILIPS 公司所使用的 WSI 影像格式,應用小波轉換技術加速 WSI 影像縮放與平移動作,並且也避免了「金字塔」格式在低倍率圖像的冗餘存儲,大幅降低影像檔案大小,降幅達 25%,除此之外 iSyntax 格式也沒有位元深度(bit-depths)與通道(channels)數上限,詳細的說明可以參考 PHILIPS Pathology SDK

安裝 PHILIPS Pathology SDK

若要使用 Python 的 OpenPhi 模組讀取 PHILIPS iSyntax 格式的 WSI 影像,需要先安裝 PHILIPS Pathology SDK,請從 PHILIPS 網站 下載 Philips Pathology SDK 的安裝檔案 PathologySDK_2.0-L1_Packages.zip,解壓縮之後進行安裝。

Pathology SDK 對於 Python 的版本有嚴格的限制,以 Ubuntu Linux 20.04 來說,需要 Python 3.8 版,安裝前要先檢查 Python 的版本:

# 檢查 Python 版本
python3 --version
Python 3.8.10

其他作業系統與版本資訊請參考 Pathology SDK 的說明手冊。

解壓縮下載的 PathologySDK_2.0-L1_Packages.zip 壓縮檔:

# 解壓縮 ZIP 檔案
unzip PathologySDK_2.0-L1_Packages.zip

PathologySDK_2.0-L1_Packages 目錄中包含了各種作業系統的安裝檔,進入 Ubuntu20.04 目錄並解壓縮 python 的 research 版本:

# 進入對應的作業系統目錄
cd PathologySDK_2.0-L1_Packages/Ubuntu20.04/

# 解壓縮 ZIP 檔案
unzip philips-pathologysdk-2.0-L1-ubuntu20_04_py38_research.zip

進入安裝檔目錄,啟用安裝檔的執行權限後,以管理者權限執行安裝:

# 進入安裝檔目錄
cd philips-pathologysdk-2.0-L1-ubuntu20_04_py38_research/

# 啟用執行權限
chmod +x InstallPathologySDK.sh

# 以管理者權限執行安裝
sudo ./InstallPathologySDK.sh

安裝完成後,要確認是否有以下安裝成功的訊息:

PathologySDK2.0-L1 successfully installed

安裝 OpenPhi 模組

安裝完成 Philips Pathology SDK 之後,接著以 pip 安裝 OpenPhi 模組

# 安裝 OpenPhi 模組
pip3 install openphi

安裝完成之後,即可使用 OpenPhi 模組撰寫 Python 指令稿讀取 PHILIPS iSyntax 的 WSI 影像了,詳細的說明可以參考 OpenPhi 的網站

基本範例

下載 iSyntax 格式的 WSI 影像範例檔案:

# 下載 iSyntax 格式的 WSI 影像範例檔案
wget https://www.ectopic.eu/files/sample.isyntax

以下是一個使用 OpenPhi 模組讀取 PHILIPS iSyntax 的 WSI 影像的範例:

from openphi import OpenPhi

# 讀取 iSyntax 影像檔案
im = OpenPhi("sample.isyntax")

# 取得層級數,以及各層級解析度與降解析度因子
numlevels = im.level_count
dimensions = im.level_dimensions
downsamples = im.level_downsamples

# 取得一些後設資料
pixelsize = im.properties['openslide.mpp-x']
scanningtime = im.properties['DICOM_ACQUISITION_DATETIME']

# 取得標註與巨觀影像
labelim = im.associated_images['label']
macroim = im.associated_images['macro']

# 取得解析度不超過 2000x2000 的縮圖
thumbnail = im.get_thumbnail(size=(2000,2000))

# 讀取層級 3 的整張 WSI 影像,背景設為白色
wsi = im.read_wsi(level=3, bgvalue=255, channels="RGB")

# 讀取座標位置為 (4000,2000) 大小為 512x512 的一塊 tile 影像
tile = im.read_region(location=(4000,2000), level=0, size=(512,512))

# 關閉影像
im.close()

這裡讀取出來的影像都是 pillow 的 Image 類型,若要對影像作進一步處理或顯示,可以參考 pillow 的網站說明

參考資料

Share
Published by
Office Guide

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