免費工具

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 目錄下的線上手冊。

參考資料

Share
Published by
Office Guide
Tags: DICOM

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