對醫學3D圖像中的病灶區域進行Detection時,需要提供Bounding Box標簽。3D Slicer(4.10.2)中的Segment Editor與Legacy/Editor都可以對三維體數據中的ROI進行矩形標簽框注。Segment Editor較為方便,雖然這個模塊本身是用於像素級Segmentation的標注,但是也可以用來標注ROI的矩形框。本文介紹如何使用3D Slicer的Segment Editor模塊對DICOM格式的CT數據進行矩形框標注;標注過程中,每個流程都可能會出現問題,建議先隨意地標記幾張slice,然后導出保存。當整個流程沒有出現問題時,再開始正式地標記。
一、安裝軟件
現在最新的3D slicer是4.10.2版本的,官網可以免費下載。https://download.slicer.org/,下載完成后點擊安裝包傻瓜式安裝 (安裝路徑不能有中文)。
另外,如果電腦用戶名user是中文的話,有可能會出現問題,例如最后導出的文件夾為空,解決方法:在3D slicer的導航欄里的Edit – Application settings里,修改Module – Temporary directory為全英文路徑:
二、讀取數據
打開3D slicer后,首先導入3D數據(DICOM格式)。
-
將包含.dcm文件序列的文件夾直接拖入3D Slicer,導入文件路徑不能有中文,選擇reader:
注意:一個病人有多個掃描的CT,選擇薄層的,就是上圖的S0004文件夾。
-
導入完成后,點擊彈窗的OK:
然后會彈出DICOM Brower:
如果沒有自動彈出上圖的DICOM Brower的話,點擊3D slicer左上角的DCM按鈕: -
在DICOM Brower中,先選中本次要打標注的case,選擇的時候,左中右三列都要選擇到。然后點擊Examine,再點擊load(有些3D slicer沒有Examine按鈕,這可能是因為安裝的路徑有問題,退出重新安裝到全英文路徑下):
-
點擊load之后,CT的三個維度的2D切片會出現在3D slicer中,退出DICOM Brower。3D slicer的左上視圖為CT的橫斷面,我們在橫斷面中進行標注:
一些基本的交互操作:https://blog.csdn.net/Huadong_eddy/article/details/80392595 (一定要看)
三、標注工具
-
切換3D slicer的功能模塊至Segment Editor:
上圖藍色框內,Segmentation表示本次label volume的名字,Master volume表示右邊正在顯示的Volume的名字,按默認的就行。 -
點擊Add,新建一個類別的標簽:
一個Case只需要一個Segment就行,即只需要點擊一次Add。
-
下方的effects內,顯示了很多種標注的工具,我們需要用到的有:
初始是在None的狀態下;Draw為畫筆工具;Erase為橡皮擦工具。 -
點擊Draw畫筆,可以看到該工具的操作方式:
在橫斷面視圖內,點擊左鍵新加點,按住左鍵拖拽鼠標可以畫線(加多個點),點擊右鍵可以將所有加的點閉合起來;按x鍵刪除上一個點;按ctrl+z可以撤銷上一組操作。
四、示例標注
-
在橫斷面內,滾動鼠標瀏覽slice,找到有病灶的slice,可以通過前文鏈接里的那些交互操作方式改變窗寬窗位,或者放縮移動圖像,來更加有效地查找病灶(注意有部分交互操作方式只有在None狀態下才可以進行),例如下圖的右下方有個病灶:
-
使用Draw工具,圍繞着病灶左鍵點3-4個點,然后點擊右鍵,生成一個比較扭曲的矩形包圍住這個病灶就行了。
左鍵點了四個點:
右鍵生成閉合多邊形(偽矩陣):
一個病灶區域就標好了。注意:雖然說在Detection時需要的是矩形框,但是只要所生成的多邊形包圍着病灶就OK了,后期把多邊形轉為矩形就行了,即包圍多邊形的最小矩陣。
標注的要求:病灶區域的多邊形,不是矩陣也行,也不需要嚴格地沿着病灶區域的邊界畫,把病灶區域給包圍住就行,但是盡量不要把非病灶區域給包了。
-
標完這個slice的病灶之后,滾動滑輪到下一張slice繼續接着標就行,不需要在左邊欄再次點擊Add添加Segment。把這個Case的所有橫斷面slice都找一遍,然后把每張slice中的所有病灶區域用偽矩形框給標注出來就行了。
注意:一個Case中,很多slice可能沒有病灶,沒有病灶的slice就不需要標了;有些slice會有多個病灶,就需要用多個偽矩形把每個病灶都標出來;大部分病灶會跨越多張slice。
-
標注時,點擊當前標簽名字前面的小眼睛,可以選擇顯示/不顯示標簽;
點擊Segmentations可以調節標簽的透明度:
調完之后按Edit selected返回繼續標注。
五、保存標注
把Case里所有橫斷面slice的所有病灶都標記完成之后,需要保存標簽。
-
切換至3D slicer的Data模塊:
-
選中剛剛的標簽的名字,右鍵,選擇Export visible segments to binary labelmap
-
生成一個LabelMapVolume:
-
選中並右鍵這個LabelMapVolume,選擇Export to Dicom,即選擇將標簽導出為DICOM格式,會彈出Dicom Export彈窗:
修改導出的保存路徑后(使用全英文路徑;不要用默認的路徑,不然默認路徑下只會生成.sql文件) ,點擊Export,顯示Export successful就成功了:檢查一下導出的DICOM序列的文件夾,建議手動更改一下文件夾名字,改成病例的名字,以防多個病例之間弄混。
六、刪除數據
當標記完一個case,並將標簽成功導出之后,建議刪除3D Slicer中的數據,以防標記下一個case時內存溢出。
- 刪除導入歷史:在DICOM Brower里面,選中病例,右鍵,點擊delete 1 selected patient:
- 刪除3D slicer中的數據:在Data模塊里,將數據全部選中,然后右鍵Delete:
刪除3D Slicer中的數據並不會刪除原始的在文件夾里的CT和已經導出的label。