在(一)和(二)中簡單介紹了LUNA16數據集的組成,以及肺結節的可視化,有了對數據集的基本了解后,還要對數據集進行預處理,計算機視覺中原始數據一般不會直接送入神經網絡,這里也是如此。
這篇博客想寫已經有好久了,遲遲沒有動筆,還是因為自己看過幾個版本的預處理,有些地方有些混淆,有些地方猶豫該采取哪種方法,最近思路逐漸理清,遂決定動筆。
首先說一個前提,LUNA16數據集附帶了一個seg-lungs-LUNA16的文件夾,里面是所有case(此處case指一個病例,也就是一張CT圖像,由好多張切片組成)的mask,用來剔除與肺部無關的區域,但是通常來講拿過來一個case,是不會有mask的,LUNA16還是為參賽選手降低了難度,不過在DSB2017中就沒有mask,選手需要自行生成mask。
前提說完,就說說預處理需要哪些步驟吧。
大致來講,共有以下三步。
- 將CT圖像灰度數值轉為HU值,HU值指的是人體組織器官對輻射的透光性,越是不透光,值越高,比如骨頭的值就非常高。這里附一張HU值表,里面有常見的組織器官的透光性。順便說一句,LUNA16的數據已經處理成HU值,真是很人性化了。
- 生成mask,這一步的處理方法我看過兩種,一種訓練一個分割網絡,然后對每張切片進行分割,另一種是閾值化,第二種更簡單些,我傾向於使用第二種,這也是DSB2017第一名的方案。下面就說一下方案二,閾值化采取的閾值不是隨便定的,這里采取-600,這樣水,空氣基本就被過濾掉了,剩下的部分,進行以下膨脹處理,將肺部內部的小孔洞填上,這樣,一張mask就完成了,簡潔高效。
- 歸一化,首先將所有體素的值截取到-1200~600這個范圍,小於-1200的設為-1200,大於600的設為600,然后再縮放至0~255,最后再加上mask。
完結撒花~
