免費工具

CTP DICOM Pixel Anonymizer 影像去識別化教學與範例

介紹如何使用 CTP DICOM Pixel Anonymizer 影像去識別化工具,抹除烙印(burned-in)在影像上的個人資料。

CTP DICOM Pixel Anonymizer

CTP DICOM Pixel Anonymizer 是 CTP 處理流程中的一個處理步驟(stages),可依據指令稿所定義的判斷條件,將烙印在 DICOM 影像內的個人資料抹除。

CTP DICOM Pixel Anonymizer 指令稿語法

CTP DICOM Pixel Anonymizer 指令稿包含了一個或多個判斷條件抹除區塊組合,每個組合的結構如下:

{判斷條件}
(抹除區塊1) (抹除區塊2) ...

判斷條件 固定寫在大括號之內,隨後緊接著一個或多個以小括號包住的抹除區塊

在 CTP DICOM Pixel Anonymizer 的指令稿中,所有不在大括號或小括號內的文字內容,都會被視為註解。

判斷條件

CTP DICOM Pixel Anonymizer 寫在大括號內的判斷條件的語法跟 CTP DICOM Filter 的語法相同,請參考 CTP DICOM Filter 影像條件篩選教學與範例

抹除區塊

抹除區塊的結構為 (x,y,w,h),其意義如下:

  • x:區塊左上角 X 座標值,也代表區塊左側的空白寬度。
  • y:區塊左上角 Y 座標值,也代表區塊上方的空白寬度。
  • w:區塊寬度。
  • h:區塊高度。

而在影像的座標系統中,原點位於影像的左上角,X 軸正向往右,Y 軸正向往下。

舉例來說,(20,30,100,50) 代表左上角座標為 (20,30),寬度為 100 像素,高度為 50 像素的區塊。

如果 x 值為負值,則會由影像的右側算起;同理如果 y 值為負值,則會由影像的下方算起。例如 (-50,-60,40,50) 就代表一個寬度 40 像素、高度 50 像素的區塊,右側與下方距離影像邊界都是 10 像素的區塊。

實際範例

以下是從 TCIA 的 Pseudo-PHI-DICOM-Data 資料集中取出的一張含有個資烙印的影像。

TCIA Pseudo-PHI-DICOM-Data 資料集影像

透過觀察此 DICOM 影像的後設資料,發現以下幾個 DICOM 標籤可能可以做為辨識是否含有烙印個資的依據:

(0008,0060)	Modality	CT
(0008,0070)	Manufacturer	TOSHIBA
(0018,1030)	Protocol Name	PE CHEST

假設我們希望當 DICOM 影像同時符合以下三條件時,將影像的 (0,0,230,30) 區域抹除:

  1. Manufacturer 標籤含有 TOSHIBA 關鍵字(不分大小寫)。
  2. ModalityCT
  3. ProtocolName 含有 PE CHEST 關鍵字(不分大小寫)。

判斷條件與抹除區塊組合就可以這樣寫:

TOSHIBA 設備產生的 CT 影像
  { Manufacturer.containsIgnoreCase("TOSHIBA") *
    Modality.equals("CT") *
    ProtocolName.containsIgnoreCase("PE CHEST") }
  (0,0,230,30)

將這段判斷條件與抹除區塊組合加入至 CTP DICOM Pixel Anonymizer 的指令稿中,或是將這段組合儲存為一個新的指令稿,並修改 CTP DICOM Pixel Anonymizer 的指令稿設定。

CTP DICOM Pixel Anonymizer 指令稿設定

由於在判斷 DICOM 影像是否含有烙印的個人資料時,會使用到 DICOM 標籤的內容,所以在 CTP 的 pipeline 中建議將 DICOM Pixel Anonymizer 放置在 DICOM Anonymizer 之前,避免需要的標籤內容被 DICOM Anonymizer 先抹除。

在測試時可以將 CTP DICOM Pixel Anonymizer 的 test 選項打開,可以比較容易看出 CTP 有沒有實際執行區塊抹除。

打開 CTP DICOM Pixel Anonymizer 的 test 選項

若開啟 test 選項,CTP DICOM Pixel Anonymizer 就會以淺色的方式覆蓋掉指定的區塊,抹除之後的影像會像這樣:

抹除影像烙印個資

若測試沒問題,即可將 test 選項關閉,讓 CTP DICOM Pixel Anonymizer 以黑色覆蓋指定區塊。

抹除影像烙印個資

參考資料

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago