DICOM 影像工具 Dicom3tools:編譯、安裝、使用教學與範例
介紹如何在 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