3D Slicer简单三维重建
前言
本文章使用3D Slicer對(duì)輸入數(shù)據(jù)進(jìn)行三維重建,結(jié)合別人的經(jīng)驗(yàn)以及自己的摸索,寫成這一篇文章,只是簡(jiǎn)單的記錄一下自己做過(guò)的事情,并沒(méi)有多少深入的去研究,對(duì)一些東西可能理解的不夠好,希望讀這篇文章的人能夠諒解,不喜勿噴。
參考資料
CT圖片三維重建方法之3DSlicer篇
臨床影像實(shí)踐
B站視頻–血腫及中線測(cè)量
補(bǔ)充說(shuō)明
獲取切片的間距,這里我用的是python的代碼來(lái)實(shí)現(xiàn)的,所用的圖片是使用LITS數(shù)據(jù)集由NII文件轉(zhuǎn)為png圖片來(lái)實(shí)現(xiàn)的,NII轉(zhuǎn)PNG圖片在我的博客另外一篇文章里面有,這里獲取切片間距信息的代碼如下:
"""查看數(shù)據(jù)軸向spacing分布 """import os import sys sys.path.append(os.path.split(sys.path[0])[0])from tqdm import tqdm import SimpleITK as sitkimport parameter as paract_path = r'G:\Python\liversegment\ImageResource\ImageTraning\data' spacing_list = []for file in os.listdir(ct_path):ct = sitk.ReadImage(os.path.join(ct_path, file), sitk.sitkInt16)temp = ct.GetSpacing()[-1] # 關(guān)鍵語(yǔ)句print('-----------------')print(file+' '+str(temp))spacing_list.append(temp)print('mean:', sum(spacing_list) / len(spacing_list))spacing_list.sort() print(spacing_list)# 訓(xùn)練集中的平均spacing是1.59mm # 測(cè)試集中的數(shù)據(jù)的spacing都是1mm按照參考的文章中的第一篇文章基本可以把數(shù)據(jù)導(dǎo)入成功,但是在測(cè)量的時(shí)候,我愣是沒(méi)有找到在哪里能看見(jiàn)測(cè)量距離的大小,最后在第二個(gè)板塊的3D視角看到了,如下圖所示:
模型重建
按照第一篇文章的做法,不知道是不是我操作不當(dāng)?shù)脑蜻€是什么,保存的數(shù)據(jù)再導(dǎo)入的時(shí)候,顯示的只是像前面的步驟那樣把png圖片導(dǎo)入并且把間距和比例修改之后的樣子,并沒(méi)有我想象的那種直接就是一個(gè)建立好的三維模型。于是就去找資料,看視頻,之后在B站上面看到有人的教程可以實(shí)現(xiàn)自己的目的。在這里我簡(jiǎn)單的把我所使用的3種可以實(shí)現(xiàn)導(dǎo)入數(shù)據(jù)即為3D模型的方法簡(jiǎn)單的說(shuō)一下,詳細(xì)的可以點(diǎn)開(kāi)前面的B站鏈接看B站的UP主的視頻。
手動(dòng)涂畫
按照第一個(gè)文章,把間距和比例調(diào)整好之后,切換到模塊Segment Editor
然后再按照下面圖的順序?qū)⒚恳粚拥膮^(qū)域涂畫
這里我只是涂畫一層演示而已,因?yàn)檫@種方法不適合使用在這么多切片的數(shù)據(jù)上,適合涂畫腫瘤等微小物塊,占切片數(shù)量少的情況。
接下來(lái)是保存數(shù)據(jù)的重點(diǎn)
點(diǎn)擊圖中的按鈕(Segmentations…),然后拉到底下,選擇導(dǎo)出
接下來(lái)就是保存模型的時(shí)候了,可以點(diǎn)擊左上角的File再選擇Save,或者直接點(diǎn)擊下面一列的第三個(gè)圖標(biāo)
或者
因?yàn)槲抑恍枰4?維的模型,所以我只保留最后一個(gè)勾,保存路徑可以點(diǎn)擊Save旁邊的按鈕來(lái)選擇位置
最后點(diǎn)擊保存就可以了,然后我們來(lái)看一下效果,導(dǎo)入數(shù)據(jù)的時(shí)候直接把保存的vtk文件拖入到3D Slicer然后出現(xiàn)一個(gè)彈窗,點(diǎn)擊OK就可以了
效果圖如下所示,正好是一層手動(dòng)涂畫的效果:
閾值選擇+裁剪
重復(fù)第一種方法同樣的步驟,然后再點(diǎn)擊閾值按鈕,更改閾值覆蓋整個(gè)想要重建的區(qū)域,然后再點(diǎn)擊顯示3D模型的按鈕,顯示出閾值覆蓋全部的3D模型,最后點(diǎn)擊Apply
然后動(dòng)手開(kāi)始裁剪,可以選擇裁剪方式,這里選擇的是把圈起來(lái)的部分剪掉
剪掉效果如下圖:
這種方法適合對(duì)重建區(qū)域比較熟悉的人使用,因?yàn)楹苋菀准翦e(cuò)區(qū)域,保存顯示的方法跟第一種方法后面的一樣,都是導(dǎo)出來(lái)顯示。這里就不展示了,因?yàn)檫@種方法確實(shí)耗時(shí)。
分割好的模型+閾值法
因?yàn)槲矣蟹指詈玫臄?shù)據(jù),所以可以直接使用分割好的數(shù)據(jù)進(jìn)行三維重建,這時(shí)就要使用全部的輸入數(shù)據(jù)進(jìn)行重建,還是跟之前的一樣的步驟,這里簡(jiǎn)單的把步驟總結(jié)一下,1、導(dǎo)入數(shù)據(jù) 2、調(diào)整間距 3、調(diào)整比例 4、切換Segment Editor模塊 5、添加分割模塊 6、選擇閾值(這里要選中全部的數(shù)據(jù))7、點(diǎn)擊3D顯示按鈕查看效果 8、導(dǎo)出模型 9、保存數(shù)據(jù) 這里貼一下我使用分割后的數(shù)據(jù)進(jìn)行三維重建的效果
這里貼一下動(dòng)態(tài)圖,設(shè)置了不同的透明度顯示,這個(gè)動(dòng)態(tài)圖是一個(gè)gif格式的文件,百度搜索gifcamera可以找得到相應(yīng)的軟件。
結(jié)束語(yǔ)
到這里,文章結(jié)束了,希望自己的一些經(jīng)驗(yàn)對(duì)大家有幫助,如果有不當(dāng)之處請(qǐng)大家批評(píng)指出。
總結(jié)
以上是生活随笔為你收集整理的3D Slicer简单三维重建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WinIo驱动级键盘模拟编程
- 下一篇: 企业中台最佳实践--阿里数据中台最佳实践