本站小編為你精心準(zhǔn)備了MITK醫(yī)學(xué)圖像設(shè)計(jì)參考范文,愿這些范文能點(diǎn)燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。
1三維面繪制設(shè)計(jì)
面繪制是通過一系列的二維圖像進(jìn)行邊界識別等分割處理,重新還原出被檢物體的三維模型,并以表面的方法顯示出來,為用戶提供具有較強(qiáng)真實(shí)感的三維醫(yī)學(xué)圖像,便于醫(yī)生從多角度、多層次進(jìn)行觀察和分析[3]。在mitk中,表面重建算法被抽象成一個Volu-meToMeshFilter,其接收n張兩維的切片生成數(shù)據(jù),表示為一個mitkVolume輸入,經(jīng)過處理后的輸出數(shù)據(jù)是一個以三角網(wǎng)絡(luò)來表示的三維表面模型,表示為mitkMesh對象。MITK中跟面繪制相關(guān)的Model是SurfaceModel,它的主要任務(wù)是實(shí)現(xiàn)父類里規(guī)定的接口Render()來繪制表面重建算法生成的三角網(wǎng)格數(shù)據(jù)。SurfaceModel擁有3個類成員:Mesh提供對生成的三角面片數(shù)據(jù)的訪問;SurfacePropery維護(hù)表面模型的材質(zhì)屬性,并且提供給用戶修改屬性參數(shù)的接口;SurfaceRenderer負(fù)責(zé)最終實(shí)際的繪制工作[4-6]。//提供取得指向mitkVolume指針的接口mitkVolume*GetVolume(){returnm_Volume;}//提供取得指向mitkMesh指針的接口mitkMesh*GetMesh(){returnm_Mesh;}…//生成一個mitkMarchingCubes對象mitkMarchingCubes*mc=newmitkMarchingCubes;//將從圣誕框中得到的閾值設(shè)置給MarchingCubes算法[7-8]mc->SetThreshold(dlg.m_LowValue,dlg.m_HighValue);//設(shè)置輸入數(shù)據(jù)mc->SetInput(m_Volume);//從mitkMarchingCubes算法得到輸出結(jié)果m_Mesh=mc->GetOutput();m_Mesh->AddReference();…//產(chǎn)生mitkView對象m_SceneView=newmitkView;//顯示mitkViewm_SceneView->Show();//生成一個mitkSurfaceModelm_SurfaceModel=newmitkSurfaceModel;//將Model加入到View中m_SceneView->AddModel(m_SurfaceModel);實(shí)驗(yàn)數(shù)據(jù)為一組頭顱CT斷層圖像,數(shù)據(jù)規(guī)模為256×256×99,執(zhí)行MC算法面繪制重建后可以得到質(zhì)量較好的三維圖像,并基本可以達(dá)到實(shí)時操作的效果。
2體繪制設(shè)計(jì)
在MITK體繪制算法框架中,VolumeModel來實(shí)現(xiàn)父類里面規(guī)定的接口Render函數(shù)。mitkVolumeModel對應(yīng)一個以體繪制方式顯示在場景中的實(shí)體,通過SetData函數(shù)得到mitkVolume數(shù)據(jù)。用mitkVol-umeProperty來管理mitkVolumeModel的屬性結(jié)構(gòu),如光源參數(shù)、插值類型、傳遞函數(shù)等;用mitkVolumeRen-derer這個抽象的繪制類來負(fù)責(zé)實(shí)際的繪制工作[9]。在該系統(tǒng)中,用RayCasting[10-11](光束投射法)來實(shí)現(xiàn)圖像的體繪制。在VC6.0中用建立好基本框架后,新增一個DrawParam來定義圖像的著色參數(shù),在CMITKTestView添加函數(shù)將著色參數(shù)應(yīng)用于傳遞函數(shù)。通過調(diào)用mitkVolumeRendererRayCasting來實(shí)現(xiàn)光束投射算法,其部分代碼如下://創(chuàng)建VolumeModelm_VolModel=newmitkVolumeModel;//取得模型屬性mitkVolumeProperty*prop=m_VolModel->GetProperty();…//將VolumeModel加入Viewm_View->AddModel(m_VolModel);…//將volume指定給modelm_VolModel->SetData(volume);…//將一個mitkVolumeRendererRayCastingLoD的實(shí)例指定給m_VolModelmitkVolumeRendererRayCastingLoD*ren=newmitkVol-umeRendererRayCastingLoD;CopyPlanes(m_VolModel->GetRenderer(),ren);m_VolModel->SetRenderer(ren);執(zhí)行上述算法后,把前面256×256×99規(guī)模的斷層圖像輸入后,得到的體繪制圖像(阻光度=0.001)。
3基于MITK的圖像分割
圖像分割的目的是為了將圖像中某一感興趣的區(qū)域劃分出來,分割結(jié)果是圖像定量分析后續(xù)處理的基礎(chǔ)。MITK中提供了一些主流的分割算法,如閾值分割[12-[13]、區(qū)域生長等[14],本文以區(qū)域生長算法來設(shè)計(jì)分割的實(shí)現(xiàn)。該算法假設(shè)當(dāng)前處理的區(qū)域中的點(diǎn)灰度值為gc,其相鄰點(diǎn)灰度值為gn,用戶選定的種子點(diǎn)灰度值為gs,則當(dāng)相鄰點(diǎn)灰度值滿足條件|gn-gc|<dv和|gn-gs|>cv時認(rèn)為該相鄰點(diǎn)也屬于分割區(qū)域而將其合并到區(qū)域中。在系統(tǒng)中,分割功能通過一個繼承自mitkVolu-meToVolumeFilter的mitkRegionGrowImageFilter的類來實(shí)現(xiàn)。設(shè)計(jì)好一個區(qū)域生長對話框(如圖4所示)后,在對話框中添加兩個mitkImageView,分別用來顯示源圖像和分割結(jié)果。用m_DifferentValue和m_ChangeValue來表示用戶設(shè)定的灰度值,從mitkIm-ageModel派生一個類mitkRegionGrowImageModel,來實(shí)現(xiàn)對標(biāo)記圖像的顯示。用SetLabelImage函數(shù)將外部輸入的標(biāo)記數(shù)據(jù)合并到m_LabelImage中,再通過重載mitkImageModel的Render函數(shù),在其中使用OpenGL的繪制函數(shù)加入對標(biāo)記圖像的繪制。圖4區(qū)域生長對話框拖動滑塊,可以選擇切片,在左側(cè)的“源圖像”窗口中用鼠標(biāo)選取種子點(diǎn),然后修改DifferentValue和ChangeValue值(即dv和cv),即可得到不同的分割結(jié)果,分割區(qū)域用紅色標(biāo)記。在輸入一組切片后進(jìn)行分割,得到分割成像效果如圖5所示。圖5分割成像效果圖dv=6,cv=20
4結(jié)束語
MITK作為一個專門用于醫(yī)學(xué)圖像處理和可視化的工具包,在實(shí)現(xiàn)三維可視化功能方面,能取得較好的成像速度和繪制結(jié)果,同時可以添加自己的圖像處理算法,增強(qiáng)了MITK的靈活性。本文基于MITK的繪制模型和分割技術(shù),設(shè)計(jì)了三維重建和分割系統(tǒng),滿足部分使用的要求,具有一定的實(shí)用價(jià)值。同時也是作為以后研究的一個基礎(chǔ),添加新的圖像處理算法,擴(kuò)展功能。