2016年3月6日

從斷層掃描的醫學影像,建模出可3D列印的模型檔




身為一個骨頭愛好者,同時又對3D列印躍躍欲試,當然會想試試看把斷層掃描的圖檔轉成3D列印的圖檔囉。



兩年前寫過一篇《用CT SCAN做自己的3D模型》,但其實當初還沒學會用3D建模軟體來整理影像,以至於雖有影像,但還是不會建模。經過一年多不懈怠的努力(其實也只是偶而想起來就玩一玩),終於學會了。

於是乎就有了這一篇教學筆記,目的是幫我自己紀錄過程,免得下次我要作的時候,又要重新摸索一次。


下載DICOM檔案

想要有斷層掃描的影像,除了自己去進醫院躺在機器裡頭掃描外,也可以在「京都大學靈長類研究所」建制的「靈長類數位型態博物館」( Digital Morphology Museum (DMM)下載。此資料庫提供非人靈長類,與其他哺乳類的MRI和CT的醫學影像。
http://dmm3.pri.kyoto-u.ac.jp/dmm/WebGallery/index.html

下載前需註冊(免費),下載後的檔案格式為DICOM。

我使用的是這隻水獺的DICOM模型
http://dmm3.pri.kyoto-u.ac.jp/dmm/WebGallery/dicom/dicomProperty.html?id=1351

將DICOM轉為STL
這過程很簡單,就兩步而已
1.用inVesalius開啟
2.設定Threshold為Bones,然後匯出surface成stl


具體的步驟,紀錄於此
開啟invesalius,將DICOM檔案匯入




可以選擇是否每張匯入,如果每張影像都匯入的話,記憶體太小的電腦可能會處理很慢。下圖的[1]可以決定是否要每張匯入



匯入之後,選擇Bone這個Threshold,這個設定值可以把骨頭的灰階值抓出來,然後按下Create Surface




製作出的立體圖像會在右下角



最後選擇Export 3D surface...存出STL檔。接下來就是去Blender修整了














BLENDER修整模型

你以為InVesalius做出來的STL檔案就可以送進3D印表機的切片軟體嗎?不行喔,因為那個STL檔太多細節,而且還有破面,所以我們就要用Blender去大幅修整
本來的影像切片看起來是這樣,頭骨的內壁也一起被掃出來了,但是3D列印時,是不需要內壁的。



最後就是要處理成這個樣子





整體的過程我就用影片來說明吧,影片底下有整理了各種指令的快速鍵




檢視
數字鍵盤5:切換透視和正射投影(Perspective and Orthographic Projection)
數字鍵盤137:分別切換前視、右視、俯視(加上ctrl則是仰視、仰視、仰視)
其他數字鍵盤則是微調角度

切割出要的部份
1.進入Edit Mode
2.按下a全選,在左側Tools的Add:,有個Bisect。點選後,在畫面點擊畫出一條切割線。左下角視窗可以調整線的位置與Plane Normal。依據Plane Normal的數字,如果Plane的法線是1,而不要的部份是在朝外的方向,就選取clean outer。

移動物件到場景中心
1.按下Shift+Ctrl+alt+C(或是在Object Mode中,左側Object Tools(按下T出現的視窗),選擇Set Origin,選擇Origin to Center of Mass。這是將物件原點設定為物件的質心
2.右側Transform視窗中,調整Location與Rotate之後,按下ctrl A(object/Apply),套用改變的位置與角度。

如果需要將特定位置指定為物件原點,例如物件的底腳,則先進入Edit Mode,Mesh Select Mode(Ctrl+Tab)選擇Vertex,點選特定點之後,按下Shift+S(Mesh/Snap/cursor to select)。然後進入Object,按下shift+ctrl+alt+c,設定origin to 3D cursor。

選取方式
在Edit Mode,按B,可以用方形選取,若是用套索Lasso選取方式,則是按下Ctrl+左鍵。


  • 找出與選取區相連的線條或面,Ctrl+L(Select/Linked)
  • 相反選取,Ctrl+I(Select/Inverse)
  • 將選取區隱藏和呈現:H和alt+H
  • 在線條選取模式下,按alt+L點擊線條,可以選出相連一圈的線。按下F(Mesh/Faces)可以做出面。Ctrl+T(Mesh/Triangulate Faces)可以將面做成三角形。
  • 要觀察物件內部,可以用Alt+B(View/Clipping Border)
  • 找出沒有成面的線條:Shift+Ctrl+Alt+M(Select/Non Manifold)
  • 刪除時,選擇刪除vertices,可以刪除比較乾淨


柔化物件
在Object Mode,最右邊的視窗,選取扳手圖示,Add Modifier,選擇Smooth Modifier,改變Repeat。

匯出stl檔案
File/Export/Stl...




最後製作出的STL檔,我放在Thingiverse
http://www.thingiverse.com/thing:1394568