基于stl缺損模型的切割修整方法
【專利摘要】本發(fā)明提供一種基于STL缺損模型的切割修整方法,所述基于STL缺損模型的切割修整方法包括以下步驟:步驟一,讀入缺損骨模型的CT數(shù)據(jù);步驟二,對CT數(shù)據(jù)三維重建;步驟三,基于VTK的三維模型切割修整。本發(fā)明可用于提供缺損形狀規(guī)則的STL模型,用于生物3D打印骨缺損修復(fù)體的制造。
【專利說明】
基于STL缺損模型的切割修整方法
技術(shù)領(lǐng)域
[0001 ] 本發(fā)明專利涉及一種基于STL(stereolithography的縮寫,光固化立體造型術(shù))缺損模型的切割修整方法,其可用于提供缺損形狀規(guī)則的STL模型,用于生物3D打印骨缺損修復(fù)體的制造?!颈尘凹夹g(shù)】
[0002]由于自然災(zāi)害、交通事故等因素,世界上每年都會有很多骨缺損患者在遭受痛苦, 他們急迫需要進行骨組織修復(fù),以改善生活質(zhì)量。隨著醫(yī)學(xué)圖像處理系統(tǒng)和快速成型技術(shù)的發(fā)展,將醫(yī)學(xué)圖像處理技術(shù)同快速成型技術(shù)結(jié)合起來進行骨缺損修復(fù)的方法越來越為廣大醫(yī)療工作者所采用。即首先對病人缺損部位附近組織進行CT圖像斷層掃描,然后利用醫(yī)學(xué)圖像處理系統(tǒng)重建患者缺損部位三維模型,再采用快速成型設(shè)備獲取物理模型,最后根據(jù)此物理模型進行缺損骨修復(fù)體模型的手工制作。采用這樣的方法可以避免病人的二次手術(shù),減少多次手術(shù)對病人的損傷。
[0003]但是骨缺損STL模型輪廓常出現(xiàn)破損的、不規(guī)則的三角網(wǎng)格,現(xiàn)有的生物3D打印無法打印出符合這種缺損的物理模型。修復(fù)者需要手動修整這些缺損輪廓周圍的尖銳部分, 因此需要對STL模型進行修整,獲得可進行加工的三維模型。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的具體目的在于針對已有技術(shù)存在的不足,提供一種基于STL缺損模型的切割修整方法,其可用于提供缺損形狀規(guī)則的STL模型,用于生物3D打印骨缺損修復(fù)體的制造。
[0005]本發(fā)明是通過下述技術(shù)方案來達到上述目的的:一種基于STL缺損模型的切割修整方法,其特征在于:所述基于STL缺損模型的切割修整方法包括以下步驟:步驟一,讀入缺損骨模型的CT數(shù)據(jù);步驟二,對CT數(shù)據(jù)三維重建;步驟三,基于VTK的三維模型切割修整。
[0006]優(yōu)選地,所述步驟一采用MITK實現(xiàn)了對CT數(shù)據(jù)的讀寫。
[0007]優(yōu)選地,所述步驟二包括以下步驟:步驟二十一,輸入醫(yī)學(xué)影像的二維斷層序列;步驟二十二,將三維離散規(guī)則數(shù)據(jù)場分層讀入;步驟二十三,遍歷兩層數(shù)據(jù),逐個構(gòu)造體素,每個體素中的8個交點取自相鄰的兩層; 步驟二十四,將體素每個角點的數(shù)據(jù)與給定的等值面值進行比較,根據(jù)比較結(jié)果,構(gòu)造該體素的索引表;步驟二十五,根據(jù)索引表得到與等值面有交點的邊界體素;步驟二十六,通過線性插值插值方法計算出體素棱邊與等值面的交點;步驟二十七,求出體素各個角點的法向量,再通過線性插值方法,求出三角面片各頂點處的法向量;步驟二十八,根據(jù)各三角面片各頂點的坐標及法向量繪制等值面;步驟二十九,輸出STL文件。
[0008]優(yōu)選地,所述步驟三包括以下步驟:步驟三i^一,讀取一個三維模型的切割工具;步驟三十二,建立Translate函數(shù)、Rotate函數(shù)、Scale函數(shù),實現(xiàn)作為切割工具的圓柱體的平移、旋轉(zhuǎn)以及放大縮小操作;步驟三十三,進行布爾差運算,即用原始的三維模型數(shù)據(jù)減去作為切割工具的圓柱體的三維模型數(shù)據(jù);步驟三十四,即用原始的三維模型數(shù)據(jù)減去作為切割工具的圓柱體的三維模型數(shù)據(jù); 步驟三十五,調(diào)整所得三維圖形的顏色以及透明度等屬性;步驟三十六,渲染所得的三維模型數(shù)據(jù),得到切割修整后的模型。
[0009]優(yōu)選地,所述的步驟三利用VTK中的布爾運算來實現(xiàn)其切割功能。
[0010]本發(fā)明的積極進步效果在于:本發(fā)明首次提出利用模型刀具對模型進行切割修復(fù)的概念,為生物3D打印提供可加工的三維模型。采用人機交互操作,操作簡便,易成功,大大提高了工作效率?!靖綀D說明】
[0011]圖1是VTK數(shù)據(jù)處理流程圖。[〇〇12]圖2是切割修整流程圖。[〇〇13]圖3是讀入CT數(shù)據(jù)界面圖。[〇〇14] 圖4(a)、圖4(b)、圖4(c)、圖4(d)是醫(yī)學(xué)圖像三維重建界面圖。
[0015]圖5(a)和圖5(b)是切割修整后的模型和原模型的對比圖?!揪唧w實施方式】
[0016]下面結(jié)合附圖給出本發(fā)明較佳實施例,以詳細說明本發(fā)明的技術(shù)方案。
[0017]本發(fā)明基于STL缺損模型的切割修整方法包括以下步驟:步驟一,讀入缺損骨模型的CT數(shù)據(jù)CT數(shù)據(jù)以DIC0M格式存儲,DIC0M文件具體由文件頭以及數(shù)據(jù)集組成。利用MITK (Medical Imaging ToolKit,醫(yī)學(xué)影像開發(fā)包)實現(xiàn)了對CT數(shù)據(jù)的讀寫。在MITK中,圖像文件的讀寫操作都進行了模塊化的封裝,并且還為用戶提供了簡便的接口,方便用戶使用。 MITK中完成DIC0M文件的讀寫功能所自定義的類為mitkDICOMReader以及 mitkDICOMffriter,其主要是將實現(xiàn)DIC0M文件的讀寫功能的數(shù)據(jù)結(jié)構(gòu)以及算法提取出來作為一個獨立的部分,從而面向用戶提供DIC0M文件的讀寫功能。
[0018]步驟二,對CT數(shù)據(jù)三維重建步驟二利用基于表面的三維重建方法MC(Marching Cubes)算法實現(xiàn)對CT數(shù)據(jù)的三維重建,其基本思想是逐個對數(shù)據(jù)場中的立方體體素處理,來分類出與等值面相交的立方體, 并且采用線性插值計算出立方體的邊與等值面的交點。根據(jù)立方體每一個頂點與等值面的相對位置,將立方體的邊與等值面的交點按一定方式連接生成等值面作為等值面在該立方體內(nèi)的一個逼近表不。
[0019]三維重建方法包括以下過程:首先對表面輪廓數(shù)據(jù)進行獲取,調(diào)用MITK開發(fā)包封裝的mitkMarchingCubes類來實現(xiàn)MC算法,根據(jù)需要重建的組織來設(shè)置高低閥值,從而在存儲體數(shù)據(jù)的mitkVolume類的一個對象之中提取等值面的三角網(wǎng)格,并且把它存儲mitkMesh 類的一個對象中。其次設(shè)置面繪制的屬性,調(diào)用MitkModel的子類MitkSurfaceModel來控制面繪制的材質(zhì)屬性。最后顯示三維模型,調(diào)用MitkView類來控制三維模型的顯示,通過該類提供的接口可以設(shè)置顯示窗口的大小背景顏色等屬性。
[0020]所述步驟二包括以下步驟:步驟二十一,輸入醫(yī)學(xué)影像的二維斷層序列;步驟二十二,將三維離散規(guī)則數(shù)據(jù)場分層讀入;步驟二十三,遍歷兩層數(shù)據(jù),逐個構(gòu)造體素,每個體素中的8個交點取自相鄰的兩層;步驟二十四,將體素每個角點的數(shù)據(jù)與給定的等值面值進行比較,根據(jù)比較結(jié)果,構(gòu)造該體素的索引表;步驟二十五,根據(jù)索引表得到與等值面有交點的邊界體素;步驟二十六,通過線性插值插值方法計算出體素棱邊與等值面的交點;步驟二十七,求出體素各個角點的法向量,再通過線性插值方法,求出三角面片各頂點處的法向量;步驟二十八,根據(jù)各三角面片各頂點的坐標及法向量繪制等值面;步驟二十九,輸出 STL文件。[〇〇21] 步驟三,基于VTK的三維模型切割修整VTK(Visualizat1n Toolkit)是由美國著名的Kitware公司開發(fā)的一個開放源代碼的自由軟件,在Will Schroeder等人于1993年在已有的相關(guān)研究成果基礎(chǔ)上,利用面向?qū)ο蟮慕<夹g(shù),設(shè)計和實現(xiàn)的三維可視化工具箱。利用VTK進行可視化應(yīng)用是非常方便的。它包括兩個基本部分:首先,建立適當(dāng)?shù)哪繕藞D形來演示數(shù)據(jù);其次,建立一個數(shù)據(jù)流水線 (Data Pipe line)來處理數(shù)據(jù),建立流水線(Pipe line)就是將vtkSource、vtkFi Iters和 vtkMappers連接起來,如圖1所示為VTK數(shù)據(jù)處理流水線圖,vtkSources提供獲取VTK數(shù)據(jù)的方法;vtkFilters接收vtkSource中的數(shù)據(jù),進行各種不同的數(shù)據(jù)處理工作,vtkFilters為 VTK的主要部件,實現(xiàn)了許多圖形學(xué)算法;vtkMappers將輸入數(shù)據(jù)解釋為圖形元素; vtkActors可用于調(diào)整圖形的顏色,透明度等顯示屬性;vtkRenderers實現(xiàn)對圖形元素進行渲染。
[0022]本發(fā)明利用VTK中的布爾運算來實現(xiàn)其切割功能,具體流程如圖2,分為以下幾個步驟:一,生成vtkSTLReader類,用來讀取一個小圓柱體作為三維模型的切割工具。二,再生成vtkTransform類,利用其中的Translate()、Rotate()、Scale()函數(shù)實現(xiàn)作為切割工具的圓柱體的平移、旋轉(zhuǎn)以及放大縮小操作。三,生成booleanOperat1n類,利用其中的 SetOpera1nToDifference()函數(shù)實現(xiàn)布爾差運算,S卩用原始的三維模型數(shù)據(jù)減去作為切割工具的圓柱體的三維模型數(shù)據(jù)。四,通過booleanOperat1nMapper類,將經(jīng)過布爾運算后所得的數(shù)據(jù)映射到圖形元素中。五,生成booleanOperat1nActor類,來調(diào)整所得三維圖形的顏色以及透明度等屬性。六,最后再通過Renderer將所得的三維模型數(shù)據(jù)進行渲染,得到切割修整后的模型。[〇〇23] 所述步驟三包括以下步驟:步驟三^^一,讀取一個三維模型的切割工具;步驟三十二,建立Translate函數(shù)、Rotate函數(shù)、Scale函數(shù),實現(xiàn)作為切割工具的圓柱體的平移、旋轉(zhuǎn)以及放大縮小操作;步驟三十三,進行布爾差運算,即用原始的三維模型數(shù)據(jù)減去作為切割工具的圓柱體的三維模型數(shù)據(jù);步驟三十四,即用原始的三維模型數(shù)據(jù)減去作為切割工具的圓柱體的三維模型數(shù)據(jù);步驟三十五,調(diào)整所得三維圖形的顏色以及透明度等屬性;步驟三十六,渲染所得的三維模型數(shù)據(jù),得到切割修整后的模型。
[0024]本發(fā)明利用VTK中的布爾運算來實現(xiàn)切割功能,導(dǎo)入一個模型作為刀具和需要修復(fù)的三維模型做布爾差運算,通過鍵盤的向鍵移動刀具切割模型。本發(fā)明首先讀入缺損骨模型的CT數(shù)據(jù),然后將其三維重建為STL模型,利用VTK中的布爾運算來實現(xiàn)其切割功能,保存切割后的模型,獲取缺損模型,最后利用快速成型裝備制作修復(fù)體物理模型。[〇〇25]圖3中,點擊菜單欄中的“打開”,導(dǎo)入一個CT數(shù)據(jù)的DIC0M文件,醫(yī)學(xué)影像數(shù)據(jù)的瀏覽模塊可以實現(xiàn)醫(yī)學(xué)影像包括灰度值等的顯示、DIC0M的Tag信息的瀏覽。按住鼠標左鍵移動鼠標可調(diào)整左側(cè)Tag信息的瀏覽窗口的窗寬和窗位。[〇〇26]圖4中,按照步驟一所述方法導(dǎo)入一序列的CT數(shù)據(jù),點擊工具欄的“三維重建”,彈出高低閾值設(shè)置窗口,設(shè)置好高低閾值,點擊即可實現(xiàn)三維重建,重建的結(jié)果保存為STL文件。按住右鍵移動可以放大縮小模型,按住左鍵移動有旋轉(zhuǎn)三維模型,按住中鍵可以平移三維模型。
[0027]本發(fā)明運用圓柱模型作為切割工具,對缺損骨模型進行切割,圓柱模型可進行旋轉(zhuǎn)、平移、放大、縮小等交互操作。其中在操作界面中,鍵盤右下角數(shù)字鍵4和6控制X方向移動;數(shù)字鍵2和8控制Y方向移動;數(shù)字鍵0和5控制Z方向移動;F1控制圓柱沿X軸旋轉(zhuǎn);F2控制圓柱沿Y軸旋轉(zhuǎn);F3控制圓柱沿Z軸旋轉(zhuǎn)。運用鼠標和鍵盤控制切割刀具,道具和模型重合的地方將被切掉。切割完之后可以將獲得的模型保存為STL文件。
[0028]圖5(a)和圖5(b)是切割后的模型與原模型的對比圖,可以看出切割后的模型形狀更加規(guī)則,更適用于生物3D打印,為骨支架的制備成型提供計算機圖形數(shù)據(jù)。
【主權(quán)項】
1.一種基于STL缺損模型的切割修整方法,其特征在于:所述基于STL缺損模型的切割 修整方法包括以下步驟:步驟一,讀入缺損骨模型的CT數(shù)據(jù);步驟二,對CT數(shù)據(jù)三維重建;步驟三,基于VTK的三維模型切割修整。2.如權(quán)利要求1所述的基于STL缺損模型的切割修整方法,其特征在于:所述步驟一采 用MITK實現(xiàn)了對CT數(shù)據(jù)的讀寫。3.如權(quán)利要求1或2中所述的基于STL缺損模型的切割修整方法,其特征在于:所述步驟 二包括以下步驟:步驟二十一,輸入醫(yī)學(xué)影像的二維斷層序列;步驟二十二,將三維離散規(guī)則數(shù)據(jù)場分層讀入;步驟二十三,遍歷兩層數(shù)據(jù),逐個構(gòu)造體素,每個體素中的8個交點取自相鄰的兩層; 步驟二十四,將體素每個角點的數(shù)據(jù)與給定的等值面值進行比較,根據(jù)比較結(jié)果,構(gòu)造 該體素的索引表;步驟二十五,根據(jù)索引表得到與等值面有交點的邊界體素;步驟二十六,通過線性插值插值方法計算出體素棱邊與等值面的交點;步驟二十七,求出體素各個角點的法向量,再通過線性插值方法,求出三角面片各頂點 處的法向量;步驟二十八,根據(jù)各三角面片各頂點的坐標及法向量繪制等值面;步驟二十九,輸出STL文件。4.如權(quán)利要求1或2中所述的基于STL缺損模型的切割修整方法,其特征在于:所述步驟 三包括以下步驟:步驟三i^一,讀取一個三維模型的切割工具;步驟三十二,建立Translate函數(shù)、Rotate函數(shù)、Scale函數(shù),實現(xiàn)作為切割工具的圓柱 體的平移、旋轉(zhuǎn)以及放大縮小操作;步驟三十三,進行布爾差運算,即用原始的三維模型數(shù)據(jù)減去作為切割工具的圓柱體 的三維模型數(shù)據(jù);步驟三十四,即用原始的三維模型數(shù)據(jù)減去作為切割工具的圓柱體的三維模型數(shù)據(jù); 步驟三十五,調(diào)整所得三維圖形的顏色以及透明度等屬性;步驟三十六,渲染所得的三維模型數(shù)據(jù),得到切割修整后的模型。5.如權(quán)利要求1或2所述的基于STL缺損模型的切割修整方法,其特征在于:所述步驟三 利用VTK中的布爾運算來實現(xiàn)其切割功能。
【文檔編號】G06T19/20GK106097457SQ201610406581
【公開日】2016年11月9日
【申請日】2016年6月12日
【發(fā)明人】胡慶夕, 孫振林, 謝明亮, 劉媛媛, 魯小保, 蔣維健
【申請人】上海大學(xué)