2014年4月16日

用CT SCAN做自己的3D模型

內弟韓醫生跟我說他們醫院最近進了新的斷層掃描機,正式營運上線要先做一些測試,需要一些自願者進去被掃描一下,聽到這個,當然高舉雙手喊「選我選我」。

喬了幾個時間,終於找到我有空,機器也有空的時間。然後去掃描了幾個部位,分別是腦、心和髖部。

自己想去做斷層掃描,其實不只是為了醫療,心裡頭更想要做的是看能不能做成3D模型,印一個自己的器官。不過該怎麼處理醫學影像呢?我沒這方面的經驗,所以開始在網路上尋找能處理的軟體。

結果意外的發現,原來imagej就可以開啟那些DICOM檔,然後直接做成3D影像了。不過要再安裝3D Viewer這個plugin。把那些掃描出來的DICOM檔,用File/Import/Image sequence..的方式把那些檔案匯入imagej變成一個stack,然後再開啟3D Viewer,就可以變成3D影像了。

例如心臟和下面的腦都是這樣開的。





也許你有注意到,開啟的軟體並不是單純的叫做Imagej,而是叫做「(Fiji Is Just)  Imagej」的軟體,誠如軟體的名字所言,Fiji其實就是imagej,它是把許多生命科學研究相關的plugin預裝好的imagej。裡頭眾多的Plugin,我還沒細看過,但粗略看過的結果,發現一些plugin,可能可以解決過去我的一些分析問題。


imagej的3D Viewer,可以設定看Volume還是Surface,若要匯出成STL檔,則是要選擇檢視surface才可以。不過我發現光是靠Imagej處理表面的多邊形細節來輸出,實在不夠力,所以我繼續尋找可以使用的軟體。


Devide
後來在Youtube上找到這段影片《Extracting STL surface from CT data with DeVIDE》,完全符合我的需求,我只要跟著做就可以了。

使用的軟體有二,一個是Devide,另一個是Meshlab。在Devide裡頭使用的模組包括以下這些:

  • slice3dVWR
  • DICOMRreader
  • doubleThreshold
  • seedConnect
  • closing
  • contour
  • wsMeshSmooth
  • Quickinfo

Meshlab在網路有些教學,例如這篇就教了怎麼減少表面多邊形,不過像我在Devide就已經用wsMeshSmooth處理過了,所以也不一定要進去Meshlab來處理。

做出來的STL檔案,看來還不錯,不過還沒辦法去做成3D模型,因為我還沒搞懂怎麼把內部的細節填滿,還有頂和底的洞到底要怎麼封閉。那些問題搞定之後,才可以送到切片軟體去轉Gcode。





前面用的Devide,門檻有點高,我做了幾次都還是得邊看影片才會邊操作,所以我又在 Youtube找相關的操作影片,又找到一個軟體,名字叫做Invesalius。Invesalius的界面簡單,功能也很強,可以直接用預設值做出骨骼、脂肪、皮膚或肌肉等遮罩。不用多作設定,就可以將原先的橫切圖,直接產生出另外兩個方向的切面。

有中文界面,產出的3D圖,甚至可以把皮膚、肌肉和骨骼設定不同的透明度,然後同時呈現。有興趣看看這個用豬頭做3D模型的影片,就知道它的長處了。