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

Office 指南

辦公室工作實用教學

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

WSI to DICOM Converter 數位病理全玻片影像 SVS 轉 DICOM 格式教學與範例

介紹如何使用 WSI to DICOM Converter 指令工具,將 SVS 格式的數位病理全玻片影像(WSI)轉換為標準的 DICOM 影像格式。

下載與編譯 WSI to DICOM Converter

從 WSI to DICOM Converter 的 GitHub 網站上下載原始碼:

# 下載 WSI to DICOM Converter 原始碼
git clone https://github.com/GoogleCloudPlatform/wsi-to-dicom-converter.git

進入專案目錄:

# 進入專案目錄
cd wsi-to-dicom-converter/

若在 Ubuntu Linux 環境之下,可以使用預先寫好的編譯指令稿自動編譯:

# 自動編譯(Ubuntu Linux)
sudo ./cloud_build/ubuntuBuild.sh

編譯完成之後,會產生一個 wsi2dcm 執行檔,接著就可以使用此工具進行 WSI 影像的轉換了。

WSI 影像 SVS 轉 DICOM 格式

在 WSI to DICOM Converter 原始碼的 tests 目錄之下有一個 CMU-1-Small-Region.svs 測試用的 WSI 影像,我們可以使用這個 SVS 檔案來示範如何將 WSI 影像轉為 DICOM 格式。首先建立一個存放輸出 DICOM 影像的目錄:

# 建立輸出用目錄
mkdir output

接著使用 wsi2dcm 將 SVS 格式的 WSI 影像轉為 DICOM 格式,其 --input 可指定輸入的 SVS 檔案,--outFolder 可指定輸出的目錄,而 --seriesDescription 則可用來指定 DICOM 的 (0008,103E) Series Description 標籤內容:

# 將 SVS 格式的 WSI 影像轉為 DICOM 格式
wsi2dcm \
  --input=CMU-1-Small-Region.svs \
  --outFolder=output \
  --seriesDescription=CMU-1-Small-Region
[2021-10-26 18:02:09.913615] [0x00007f59f5fdca40] [info]    dicomization is started
[2021-10-26 18:02:09.913726] [0x00007f59f5fdca40] [warning] threads parameter is less than 1, consuming all avalible threads
[2021-10-26 18:02:09.913787] [0x00007f59f5fdca40] [warning] batch parameter is not set, batch is unlimited
[2021-10-26 18:02:10.280053] [0x00007f59f5fdca40] [info]    dicomization is done

轉換完成之後,output 目錄中就會產生一個 DICOM 個式的檔案 level-0-frames-0-30.dcm。

Tile 大小

若要調整輸出 DICOM 影像中每片 tile 的尺寸,可以使用 --tileHeight 與 --tileWidth 參數分別指定 tile 的高度與寬度:

# 指定 Tile 尺寸為 400x400
wsi2dcm \
  --input=CMU-1-Small-Region.svs \
  --outFolder=output \
  --seriesDescription=CMU-1-Small-Region \
  --tileHeight 400 \
  --tileWidth 400

解析度層級

若要自行指定解析度層級數量,可以使用 --levels 參數:

# 指定解析度層級數為 2
wsi2dcm \
  --input=CMU-1-Small-Region.svs \
  --outFolder=output \
  --seriesDescription=CMU-1-Small-Region \
  --levels 2

另外 --downsamples 參數可以指定各層級的降解析度的因子:

# 指定各層級降解析度因子為 1 2 4
wsi2dcm \
  --input=CMU-1-Small-Region.svs \
  --outFolder=output \
  --seriesDescription=CMU-1-Small-Region \
  --downsamples 1 2 4

--startOn 與 --stopOn 參數可以用來指定起始與結束的層級。

分批儲存

wsi2dcm 的 --batch 參數可以指定每個 DICOM 檔案儲存的影像張數上限值,可用於高解析度的病理影像,將大量的影像分開在多個檔案儲存:

# 指定單一檔案儲存影像張數上限值為 10
wsi2dcm \
  --input=CMU-1-Small-Region.svs \
  --outFolder=output \
  --seriesDescription=CMU-1-Small-Region \
  --batch 10

空間位置

WSI 影像轉為 DICOM 時,預設會使用 TILED_FULL 方式儲存,若要改用 TILED_SPARSE 方式儲存,可以加上 --sparse 參數,詳細說明請參考 DICOM PS3.3 的文件。

# 以 TILED_SPARSE 方式儲存
wsi2dcm \
  --input=CMU-1-Small-Region.svs \
  --outFolder=output \
  --seriesDescription=CMU-1-Small-Region \
  --sparse

影像壓縮

wsi2dcm 預設會使用 jpeg 的方式壓縮影像,若要更改壓縮方式,可以使用 --compression 參數指定,可用的選項有 jpeg、jpeg2000、raw:

# 不壓縮影像
wsi2dcm \
  --input=CMU-1-Small-Region.svs \
  --outFolder=output \
  --seriesDescription=CMU-1-Small-Region \
  --compression raw

而若是有採用影像壓縮,可以使用 --compressionQuality 參數來指定影像壓縮品質,可用的值為 0 到 100:

# 指定影像壓縮品質為 90
wsi2dcm \
  --input=CMU-1-Small-Region.svs \
  --outFolder=output \
  --seriesDescription=CMU-1-Small-Region \
  --compressionQuality 90

DICOM 標籤

在使用 wsi2dcm 轉換檔案時,至少要以 --seriesDescription 參數指定 (0008,103E) Series Description 標籤內容,除此之外亦可使用 --studyId 與 --seriesId 來指定 (0020,000D) Study Instance UID 與 (0020,000E) Series Instance UID。

# 指定 Study Instance UID 與 Series Instance UID
wsi2dcm \
  --input=CMU-1-Small-Region.svs \
  --outFolder=output \
  --seriesDescription=CMU-1-Small-Region \
  --studyId 1.3.6.1.4.1.14519.5.2.1.7777.9002.29231581743327260 \
  --seriesId 1.3.6.1.4.1.14519.5.2.1.7777.9002.53195580009743992

若要指定其他更多的 DICOM 標籤內容,可以使用 JSON 檔案來指定大量的 DICOM 標籤內容,以下是 JSON 格式的 DICOM 標籤內容範例,包含 (0010,0010) Patient’s Name、(0010,0020) Patient ID 與 (0010,0040) Patient’s Sex 三筆標籤資料:

{
    "00100010": {
        "vr": "PN",
        "Value": [
            "PD-1-MELANOMA-00016"
        ]
    },
    "00100020": {
        "vr": "LO",
        "Value": [
            "0326baf9-4e1b-47e3-9290-fd3d90e79ee0"
        ]
    },
    "00100040": {
        "vr": "CS",
        "Value": [
            "M"
        ]
    }
}

關於 JSON 的 DICOM 標籤格式可以參考 DICOM JSON Format。

準備好 JSON 格式的 DICOM 標籤內容檔案之後,即可使用 --jsonFile 參數透過 JSON 檔案指定 DICOM 標籤內容:

# 透過 JSON 檔案設定 DICOM 標籤內容
wsi2dcm \
  --input=CMU-1-Small-Region.svs \
  --outFolder=output \
  --seriesDescription=CMU-1-Small-Region \
  --jsonFile my_tags.json

多執行緒

wsi2dcm 的 --threads 參數可以指定程式使用的執行緒數量:

# 指定執行緒數量為 2
wsi2dcm \
  --input=CMU-1-Small-Region.svs \
  --outFolder=output \
  --seriesDescription=CMU-1-Small-Region \
  --threads 2

內插演算法

wsi2dcm 再降解析度時預設使用的演算法是 nearest neighbor 內差法,若希望改用 bilinear 內差法,可以加上 --bilinearDownsampling 參數。

# 以 bilinear 內差法降解析度
wsi2dcm \
  --input=CMU-1-Small-Region.svs \
  --outFolder=output \
  --seriesDescription=CMU-1-Small-Region \
  --bilinearDownsampling

常見問題

若編譯時出現 Could NOT find GTest 的問題,通常是因為 libgtest-dev 僅提供未編譯的原始碼,可參考 StackOverflow 的的建議自行編譯 GTest。

# 安裝 GTest 與 CMake
sudo apt-get install libgtest-dev cmake

# 自行編譯 GTest
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make

DICOM 標準問題

以 wsi2dcm 轉換出來的 DICOM 影像通常會因為使用者沒有提供 DICOM 標準中所要求的必要標籤(tags)資料,導致產生出來的 DICOM 影像檔案有瑕疵,若想要確保 DICOM 影像檔案的可流通性,建議在 DICOM 影像轉出之後,以 dciodvfy 與 dcentvfy 這兩項 DICOM 影像標準驗證工具來進行驗證,並修正錯誤的項目,通常就是在轉換檔案時以 JSON 檔案補足該有的 DICOM 標籤資訊即可。

參考資料

  • Google Cloud:Using the Cloud Healthcare API for digital pathology
  • DICOM Whole Slide Imaging (WSI)

分類:免費工具 標籤:DICOM, 數位病理全玻片影像(WSI)

主要資訊欄

搜尋

近期文章

  • Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤
  • Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例
  • Linux 網路設定 ip 指令用法教學與範例
  • Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例
  • Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例
  • Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例
  • Linux 以 Cryptsetup 與 LUKS 加密磁碟教學與範例
  • Linux 使用 age 簡潔的加密、解密工具使用教學與範例

推薦網站

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

關注本站

  • 電子郵件
  • Facebook

公益

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

Copyright © 2021 · Office Guide