介紹如何在 Windows、macOS 與 Linux 平台上編譯、安裝與使用 Dicom3tools 這套 DICOM 影像工具組。

Dicom3tools 是一套開放原始碼的 DICOM 影像工具組,此工具組中包含了許多的 DICOM 檔案處理指令工具,對於批次處理大量 DICOM 檔案來說非常有用。

Dicom3tools 安裝預先編譯版本

Dicom3tools 是一套開放原始碼的工具,也同時提供預先編譯好的二進位版本,但是由於 DICOM 的 UID 根節點編號不可以重複的因素,預先編譯版本只包含少量的唯讀性質工具。

Windows

適用於 Windows 的預先編譯版本可以從 Dicom3tools 官方網站上直接下載 Windows executables 的壓縮檔,解壓縮之後裡面的執行檔就可以直接使用。

通常在使用時都會開啟 Windows 的「命令提示字元」或是「PowerShell」來執行指令,並指定各種參數與輸入的 DICOM 檔案等,以 dcstats 這個計算影像基本統計量的工具來說,若要計算 MR-SIEMENS-DICOM-WithOverlays.dcm 這個 DICOM 影像的統計量,就可以執行:

.\dicom3tools_winexe_1.00.snapshot.20211009110822\dcstats.exe .\MR-SIEMENS-DICOM-WithOverlays.dcm

這是在 Windows 「命令提示字元」中執行的狀況。

Windows 命令提示字元

這是在 Windows 「PowerShell」中執行的狀況。

Windows PowerShell

macOS

適用於 macOS 的預先編譯版本可以從 Dicom3tools 官方網站上直接下載 Mac OS X executables 的壓縮檔,解壓縮之後裡面的執行檔就可以直接使用。

以下是在終端機中使用 dcstats 工具計算 MR-SIEMENS-DICOM-WithOverlays.dcm 這個 DICOM 影像統計量的範例:

# 計算 DICOM 影像基本統計量

dicom3tools_macexe_1.00.snapshot.20211009110239/dcstats MR-SIEMENS-DICOM-WithOverlays.dcm

macOS 終端機

Ubuntu Linux

在 Ubuntu Linux 中可以透過 apt 安裝 dicom3tools 套件:

# 安裝 dicom3tools 套件

sudo apt install dicom3tools

安裝完成之後,即可使用。以下是在終端機中使用 dcstats 工具計算 MR-SIEMENS-DICOM-WithOverlays.dcm 這個 DICOM 影像統計量的範例:

# 計算 DICOM 影像基本統計量

dcstats MR-SIEMENS-DICOM-WithOverlays.dcm

Ubuntu Linux 終端機

Dicom3tools 原始碼編譯與安裝

Dicom3tools 的預先編譯版本中只有涵蓋少量唯讀性質的工具,若想要取得完整的 Dicom3tools 工具組,必須從原始碼進行編譯,以下是 Dicom3tools 在各平台的編譯與安裝方式。

Ubuntu Linux

編譯 Dicom3tools 所需的 imake 工具可以透過 xutils-dev 套件來安裝,同時也要安裝 g++ 編譯器:

# 安裝 xutils-dev 套件

sudo apt install xutils-dev g++

若要編譯 dcdisp 工具,就要安裝 X11 開發套件:

# 安裝 X11 開發套件

sudo apt install libx11-dev libxext-dev

從 Dicom3tools 網站下載最新的原始碼:

# 下載最新的 Dicom3tools 原始碼

wget https://www.dclunie.com/dicom3tools/workinprogress/dicom3tools_1.00.snapshot.20211009110822.tar.bz2

解壓縮之後,進入原始碼目錄:

# 解壓縮

tar jxvf dicom3tools_1.00.snapshot.20211009110822.tar.bz2

cd dicom3tools_1.00.snapshot.20211009110822/

進行編譯前的環境檢查:

# 編譯前環境檢查

./Configure

Configure: begin

Configure: we are on OS Linux

Configure: we are on instruction set architecture x86_64

Configure: make install use platform specific directory linux.5.4.0.x8664

Configure: using gawk

Configure: using bzip2 bzip2, a block-sorting file compressor. Version 1.0.6, 6-Sept-2010.

Configure: will try to use gcc

Configure: using gcc version gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)

Configure: using g++ version gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) (7.5.0)

Configure: we are on Linux

執行 imake 設定各種編譯參數,這裡可以自行依照情況調整參數,若都使用預設值,可以執行:

# 編譯參數設定

imake -I./config

加上 InstallInTopDir 代表將編譯完成的執行檔與文件安裝在目前的專案目錄之下,不要安裝在系統的 /usr/local/bin 與 /usr/local/man 目錄之下;DefaultUIDRoot 變數則是設定自己的 UID 根節點編號。

# 編譯參數設定

imake -I./config -DInstallInTopDir -DDefaultUIDRoot=1.2.840.99999

另外一種比較建議的方式是在 config/site.p-def 設定檔中,設定好自己的 UID 根節點編號,透過以下方式指定 UID 根節點編號:

# 編譯參數設定

imake -I./config -DInstallInTopDir -DUseXXXXID

若要使用 C++ 編譯器的最佳化功能,可以透過 OptimizeLevel 參數來指定最佳化層級:

# 最佳化參數設定

imake -I./config -DOptimizeLevel=-O3

以 g++ 來說,OptimizeLevel 可以設定的選項有 -O、-O2、-O3,預設值為 -O,若要停用最佳化功能則可設定為 -O0。

設定好編譯參數之後,以 make 進行編譯與安裝:

# 以四核心 CPU 編譯專案

make -j4 World

執行測試:

# 執行測試

make test

確認無誤後,進行安裝:

# 安裝執行檔

make install

# 安裝說明文件

make install.man

若在編譯時加上 InstallInTopDir 參數,就會將檔案安裝在目前的專案目錄之下。

採用自行編譯的方式所建立的執行檔包含 Dicom3tools 所有的工具,以下是所有工具的列表:

# 列出 Dicom3tools 所有工具

ls bin/1.5.4.0.x8664/

ancp dcdump dcpost dumptiff pgxtodc

ancreate dcencap dcproj dumpwhat pnmpred

andiff dcentvfy dcrmmeta gawdump pnmtodc

andump dcfile dcrmsfx.all gawtodc pnmtoraw

antodc dchist dcsmpte ge9800dump pqdump

antodc.all dcinflate dcsort ge9800todc pqsplit

binpatch dciodvfy dcsqextr ge98id pqtodc

bmpdump dcj2k dcsrdiff ge98topgm rawarith

dcacqmap dcjls dcsrdump gendump rawdiff

dcanon dcjpeg dcsrmrg gentodc rawftodc

dcarith dckey dcstats gentodc.dat.all rawmask

dcbriggs dclutburn dcsub gentopgm rawnjl

dcburn dclutdmp dcswab himrdump rawnjl2

dcbzip2 dclutmix dctable himrtodc rawtodc

dcckovly dcmerge dctopdf himrunid sgndump

dccmp dcmkpres dctopgm8 imtndump sgntodc

dccomb dcmulti dctopgx imtntodc sgntopgm

dccp dcmvhier dctopnm jpegdump shimdump

dccreate dcmvhier.8only dctoraw jpegsplit shimtodc

dcdecmpr dcmvhier.all dcuidchg pacedump sompdump

dcdeflate dcmvhier.datedesc dcunbzip2 pacetodc somptodc

dcdict dcmvhier.datedescnoid dcuncat pacetopgm somtopgm

dcdiff dcmvhier.uid dcunjls paceunid syttopgm

dcdirdmp dcortho dcunjpeg pbmswbit toshtodc

dcdirmk dcostosr dcunjpeg.all pbmtoovl vsntopgm

dcdisp dcpatmpl dcunmeta pdftodc

dcdtchg dcposn dcunrgb pgmtobmp

關於各種工具的說明與使用方式,可以參考 man 目錄下的線上手冊。

參考資料

David Clunie’s Medical Image Format Site