介紹如何使用 CTP 的 DICOM Anonymizer Tool 指令工具,對 DICOM 影像進行去識別化處理。
DicomAnonymizerTool 是一個包含 CTP DicomFilter
、DicomPixeAnonymizer
與 DicomAnonymizer
去識別化功能的指令工具,可以對單一 DICOM 影像檔案或整個目錄進行去識別化處理,對於有自動化批次處理需求的使用者來說,可以將此工具整合至自己的程式或指令稿中。
DICOM Anonymizer Tool 是以 Java 開發的指令工具,使用前請先安裝好 Java 執行環境(JRE)。
從 RSNA MIRC 網站上下載 DicomAnonymizerTool 的 JAR 安裝檔進行安裝,並選擇安裝路徑:
# 下載 DicomAnonymizerTool-installer.jar wget http://mirc.rsna.org/download/DicomAnonymizerTool-installer.jar # 安裝 Dicom Anonymizer Tool java -jar DicomAnonymizerTool-installer.jar
安裝完成之後,進入 DicomAnonymizerTool 安裝目錄,執行 DAT.jar
不帶任何參數,可以顯示各參數的使用方式:
# 查詢使用方式 java -jar DAT.jar
Usage: java -jar DAT.jar {parameters} where: -in {input} specifies the file or directory to be anonymized If {input} is a directory, all files in it and its subdirectories are processed. -out {output} specifies the file or directory in which to store the anonymized file or files. If -out is missing and -in specifies a file, the anonymized file is named {input}-an. If -out is missing and -in specifies a directory, an output directory named {input}-an is created. If {output} is missing and -in specifies a file, the anonymized file overwrites {input} If {output} is present and -in specifies a file, the anonymized file is named {output} If {output} is present and -in specifies a directory, an output directory named {output} is created. -f {scriptfile} specifies the filter script. If -f is missing, all files are accepted. If {scriptfile} is missing, the default script is used. -da {scriptfile} specifies the anonymizer script. If -da is missing, element anonymization is not performed. If {scriptfile} is missing, the default script is used. -p{param} "{value}" specifies a value for the specified parameter. {value} must be encapsulated in quotes. -e{element} "{script}" specifies a script for the specified element. {element} may be specified as a DICOM keyword, e.g. -ePatientName. {element} may be specified as (group,element), e.g. -e(0010,0010). {element} may be specified as [group,element], e.g. -e[0010,0010]. {element} may be specified as groupelement, e.g. -e00100010. {script} must be encapsulated in quotes. -lut {lookuptablefile} specifies the anonymizer lookup table properties file. If -lut is missing, the default lookup table is used. -dpa {pixelscriptfile} specifies the pixel anonymizer script file. If -dpa is missing, pixel anonymization is not performed. If {pixelscriptfile} is missing, the default pixel script is used. -dec specifies that the image is to be decompressed if the pixel anonymizer requires it. -rec specifies that the image is to be recompressed after pixel anonymization if it was decompressed. -test specifies that the pixel anonymizer is to blank regions in mid-gray. -check {frame} specifies that the anonymized image is to be tested to ensure that the images load. If -check is missing, no frame checking is done. If {frame} is missing, only the last frame is checked. If {frame} is specified as first, only the first frame is checked. If {frame} is specified as last, only the last frame is checked. If {frame} is specified as all, all frames are checked. -n {threads} specifies the number of parallel threads used for processing. -v specifies verbose output Configuration: os.name: Linux java.version: 11.0.11 sun.arch.data.model: 64 java.home: /usr/lib/jvm/java-11-openjdk-amd64 clib: null jai: null jiio: null jiio sse2: null jiio util: null ImageIO Tools version: null Available codecs: R/W BMP R/W DICOM R/W GIF R/W JPEG R JPEG-LOSSLESS R/W JPEG2000 R/W JPG R/W PCX R/W PNG R/W PNM R/W RAW R RLE R/W TIFF R/W WBMP
若要對 DICOM 影像進行基本的去識別化,可以用 -in
與 -out
分別指定輸入與輸出的檔案或目錄,並以 -da
指定 DicomAnonymizer
去識別化規則的指令稿:
# 進行 DICOM 影像去識別化 java -jar DAT.jar -in input.dcm -out output.dcm -da dicom-anonymizer.script
---- Thread: pool-1-thread-1: Anonymizing input.dcm Anonymized file: output.dcm ---- Elapsed time: 0.460
對於一般的使用者來說,在選擇 DicomAnonymizer
去識別化規則時,建議下載 CTP 並安裝之後,使用其 profiles/dicom
目錄中附帶的 profile 指令稿範本,裡面包含標準的 DICOM PS3.15 Basic Application Level Confidentiality Profile 以及搭配各種 Basic Application Level Confidentiality Options 的指令稿,另外也提供了 TCIA 所採用的指令稿,這些標準的指令稿都依循了 DICOM 的標準規範,可以確保去識別化之後的影像也都能符合 DICOM 標準。
關於 DicomAnonymizer
去識別化規則的指令稿語法,可以參考 CTP DICOM Anonymizer 的說明文件。
若要同時對 DICOM 影像的像素(pixel)內容進行去識別化,抹除烙印在影像中的個人資料,可以使用 -dpa
指定 DICOM Pixel Anonymizer 的指令稿:
# 同時對 DICOM 影像像素進行去識別化 java -jar DAT.jar \ -in input.dcm \ -out output.dcm \ -da dicom-anonymizer.script \ -dpa dicom-pixel-anonymizer.script
如果遇到壓縮過的 DICOM 影像,必須要先進行解壓縮後,才能進行 DICOM Pixel Anonymizer 去識別化處理,加上 -dec
參數可以在必要時自動解壓縮,而若加上 -rec
參數則可在 DICOM Pixel Anonymizer 去識別化處理之後,自動重新壓縮影像。
# 同時對 DICOM 影像像素進行去識別化,自動解壓縮與重新壓縮 java -jar DAT.jar \ -in input.dcm \ -out output.dcm \ -da dicom-anonymizer.script \ -dpa dicom-pixel-anonymizer.script \ -dec -rec
若加上 -test
參數,可以讓 DICOM Pixel Anonymizer 以淺色的方式覆蓋個資區域,以方便測試與除錯。
# 同時對 DICOM 影像像素進行去識別化,以淺色覆蓋個資區域 java -jar DAT.jar \ -in input.dcm \ -out output.dcm \ -da dicom-anonymizer.script \ -dpa dicom-pixel-anonymizer.script \ -test
DicomAnonymizerTool 也可以搭配 DICOM Filter、DICOM Anonymizer、DICOM Pixel Anonymizer 與對照表(lookup table)一起使用。
# 進行 DICOM 影像去識別化 java -jar DAT.jar \ -in input.dcm \ -out output.dcm \ -f dicom-filter.script \ -da dicom-anonymizer.script \ -dpa dicom-pixel-anonymizer.script \ -lut lookup-table.properties