介紹如何在 Windows、macOS 與 Linux 平台上編譯、安裝與使用 Dicom3tools 這套 DICOM 影像工具組。
Dicom3tools 是一套開放原始碼的 DICOM 影像工具組,此工具組中包含了許多的 DICOM 檔案處理指令工具,對於批次處理大量 DICOM 檔案來說非常有用。
Dicom3tools 是一套開放原始碼的工具,也同時提供預先編譯好的二進位版本,但是由於 DICOM 的 UID 根節點編號不可以重複的因素,預先編譯版本只包含少量的唯讀性質工具。
適用於 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 「PowerShell」中執行的狀況。
適用於 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
在 Ubuntu Linux 中可以透過 apt
安裝 dicom3tools
套件:
# 安裝 dicom3tools 套件
sudo apt install dicom3tools
安裝完成之後,即可使用。以下是在終端機中使用 dcstats
工具計算 MR-SIEMENS-DICOM-WithOverlays.dcm
這個 DICOM 影像統計量的範例:
# 計算 DICOM 影像基本統計量
dcstats MR-SIEMENS-DICOM-WithOverlays.dcm
Dicom3tools 的預先編譯版本中只有涵蓋少量唯讀性質的工具,若想要取得完整的 Dicom3tools 工具組,必須從原始碼進行編譯,以下是 Dicom3tools 在各平台的編譯與安裝方式。
編譯 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
目錄下的線上手冊。