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