• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于改進MC算法的腦圖譜三維重建

      2016-05-09 07:19:04樊令仲李海芳
      計算機應用與軟件 2016年4期
      關鍵詞:體素等值立方體

      朱 愷 樊令仲 李海芳*

      基于改進MC算法的腦圖譜三維重建

      朱 愷1樊令仲2,3李海芳1*

      1(太原理工大學計算機科學與技術學院 山西 太原 030024)

      2(中國科學院自動化研究所腦網(wǎng)絡組研究中心 北京 100190)

      3(中國科學院自動化研究所模式識別國家重點實驗室 北京 100190)

      隨著腦圖譜在神經(jīng)外科手術的教學與應用中起到越來越重要的作用,腦圖譜的三維重建成為了腦圖譜研究的一個主要方向。針對MarchingCubes算法在提取腦圖譜數(shù)據(jù)等值面效率低下的問題,通過對MarchingCubes算法的遍歷方法和拓撲結(jié)構的研究,提出一種適用于腦圖譜三維重建的改進算法,采用該改進算法實現(xiàn)腦圖譜三維重建系統(tǒng)。并以Brainnetome Atlas腦圖譜數(shù)據(jù)作為實驗數(shù)據(jù)對系統(tǒng)效率進行測試,實驗結(jié)果表明,相對于原始算法,改進算法確實提高了三維重建系統(tǒng)處理腦圖譜數(shù)據(jù)的效率。

      等值面 MarchingCubes 三維重建 腦分區(qū)圖譜

      0 引 言

      腦圖譜不僅是臨床神經(jīng)外科手術中的重要工具,而且在神經(jīng)解剖的教育教學中也扮演著重要的角色。早期的腦圖譜均為紙質(zhì)印刷的二維圖像。近年來,隨著大腦圖譜研究的不斷發(fā)展,人們開始尋求將腦圖譜進行數(shù)字化處理,并且從二維圖譜逐漸的向三維圖譜發(fā)展。通過將二維的腦部切片在計算機中重新整合并最終完成腦部結(jié)構的三維重建,從而使人們不僅僅能夠觀察大腦的不同斷面也能夠以三維的形式對腦結(jié)構進行觀察。

      在腦圖譜的三維重建系統(tǒng)中最關鍵的技術就是體數(shù)據(jù)的三維重建技術,體數(shù)據(jù)的三維重建算法直接決定了整個系統(tǒng)的重建效率以及重建準確率。醫(yī)學體數(shù)據(jù)三維可視化方法分為兩大類[1]:面繪制方法和體繪制方法。面繪制計算量小,處理速度快;體繪制能良好地保持醫(yī)學圖像的細節(jié),但是計算量比較大。因此針對于應用背景選擇一種合適的算法就成為了三維腦圖譜繪制的一個核心問題。

      基于對傳統(tǒng)體數(shù)據(jù)三維重建算法的分析,本文提出一種基于移動立方體算法的快速體數(shù)據(jù)三維重建算法,提高了三維重建的速度,并應用于三維腦圖譜繪制系統(tǒng)當中。

      1 三維重建算法

      1.1 重建算法的選擇

      三維重建算法主要分為體繪制和面繪制兩種,其中體繪制的常用算法中有很多基于光線投射算法[2]。例如等值面光線投射繪制、最大密度投影算法和合成體法光線投射算法。面繪制算法常用的有Marching Cubes算法。為了提高系統(tǒng)的運行效率就必須選擇一種合適的算法對腦圖譜數(shù)據(jù)進行三維重建。為此本文選擇了在腦圖譜三維重建中經(jīng)常用到的幾種文件規(guī)模對以上這些算法的效率進行了測試,測試所用文件列表如表1所示。

      表1 測試文件列表

      以上這三個文件中AIPS_IP1為單一腦區(qū)數(shù)據(jù)文件,cpbet為本文中使用的腦模板文件,cpbetter則為一種更為精細的腦模板文件,該文件并沒有在本文中使用,這里作為一種極端情況來測試算法效率。

      算法效率測試不對原始數(shù)據(jù)文件進行二次抽樣,也不對生成的圖形進行優(yōu)化。測試包含三個指標:(1) 數(shù)據(jù)處理的時間;(2) 處理完成后圖形渲染顯示的時間;(3) 所用時間的綜合。測試結(jié)果如表2所示。

      表2 算法效率測試結(jié)果

      通過表2我們可以看出在這些三維重建算法中,體繪制算法中的合成體法光線投射算法效果是最好的,但是其渲染效率卻沒有Marching Cubes算法高。在本文中用戶對生成的三維圖像每進行一次交互操作,都要進行一次渲染,因此渲染時間的長短是算法是否適合本系統(tǒng)的一個重要指標,過長的渲染時間將極大地影響用戶的體驗。此外體繪制在用戶進行視角變換操作時也要進行重新繪制,這大大影響了使用效果。對于移動立方體算法只要提高數(shù)據(jù)處理的效率就能使其整體效率達到最高。因此本文最后選用Marching Cubes作為系統(tǒng)的三維重建算法。

      1.2 MC算法

      Lorensond等人于1987年提出的Marching Cubes算法是一種流行的從體數(shù)據(jù)中提取等值面的算法[3]。其原理是通過對體數(shù)據(jù)中各個體素進行處理,找到含有等值面的體素并將這些體素中的等值面對應到一系列等值面穿過體素所在立方體的模式中。然后將這些對應好的模式以某種拓撲結(jié)構連接成三角面片得到等值面。體素中等值面的模式經(jīng)過反轉(zhuǎn)、旋轉(zhuǎn)等操作后有很多模式是重復的,去除重復的模式最終體素含有的等值面有15種模式,如圖1所示。在此圖中深色的頂點代表體素中該頂點處于等值面的閥值之下,也就是等值面在該點之上。根據(jù)立方體8個頂點不同的狀態(tài)決定了該體素中等值面所處的狀態(tài)。

      圖1 等值面在立方體中的15種模式

      得到等值面在體素內(nèi)的狀態(tài)后,就要根據(jù)等值面狀態(tài)來得到等值面與體素立方體各條棱相交的頂點,假設有一條棱與等值面相交于點c(x,y,z),等值面閾值為T。該棱的兩個頂點分別為a(x,y,z)和b(x,y,z),兩點的值分別為va與vb,那么交點c的位置可以由下式求出:

      (1)

      由此類推能將其他交點頂點的位置求出,計算出等值面各個頂點之后,還要計算等值面每個三角面片的法向量,為了計算該法向量就要先計算體素立方體頂點的梯度值,假設頂點梯度值為G(i,j,k),則梯度值能夠由下式求出:

      (2)

      其中D(i,j,k)為k層(i,j)點的灰度值,在本文應用背景下其實D就可以取為腦圖譜數(shù)據(jù)k層(i,j)點的值,而△x、△y、△z則分別取為xyz方向上的掃描間隔。

      MC算法作為一種經(jīng)典算法本身也存在一些缺點,例如等值面存在二義性、繪制精度不高、處理效率不高等。針對這些缺點Nielson等提出了解決二義性的方法[4];Lopes提出了提高繪制精度的方法[5];張迎平等提出的區(qū)間樹硬件加速索引的方法[6],通過使用GPU提高了MC算法的處理效率;王旭等初提出的最近鄰移動立方體方法[7]則通過建立等分點避免了大量的插值計算;熊邦書等提出的基于連通性的快速曲面重建算法[8]則通過減少遍歷體素的個數(shù)來提高算法的處理效率。

      1.3 MC算法的改進

      傳統(tǒng)的MC算法是通過對體數(shù)據(jù)所形成的體素進行逐個遍歷來生成小立方體內(nèi)的等值面,并最終合稱為體數(shù)據(jù)的表面。但是體數(shù)據(jù)中大多數(shù)體素并不與體數(shù)據(jù)的等值面相交,因此對體素進行逐個遍歷將浪費很多時間在空的體素處理上。腦圖譜的腦區(qū)都是一組體數(shù)據(jù)中的小部分數(shù)據(jù),傳統(tǒng)的MC算法在處理腦圖譜數(shù)據(jù)時重建一個較小的腦區(qū)也要遍歷龐大的體數(shù)據(jù)的每個體素。但是腦區(qū)表面只占整體數(shù)據(jù)的很小一部分,這使得傳統(tǒng)MC算法在重建腦圖譜數(shù)據(jù)時效率比一般的數(shù)據(jù)下降更為嚴重。為了解決這種問題我們提出了一種基于體素立方體頂點監(jiān)測的改進算法。本算法不采用遍歷的方式生成等值面,而是判斷出種子體素相鄰的體素中哪些體素中包含了等值面,再通過區(qū)域增長法將包含有等值面的體素全部提取出來進行等值面的繪制。

      改進算法的核心在于對種子體素相鄰的體素中包含等值面體素的監(jiān)測。我們通過對體素構成的立方體8個頂點的監(jiān)測來判斷與該體素接鄰的體素是否包含等值面。體素構成的立方體包含有8個頂點6個面,每個面包含4個頂點,在屬于同一個面的4個頂點中只要這四個頂點不同時大于或小于等值面閾值,則與種子體素共同包含該面的體素也包含有等值面。例如圖2所示左右兩個體素均包含同一個面,線段ab為該面與左邊的體素立方體中等值面的交線,因為該面同屬于右面的體素,所以在右面體素中的等值面也必然與此面相交于該交線。由此證明在右面的體素中也是含有等值面的。

      圖2 包含有共同面的兩個體素立方體

      而體素立方體各個面上有沒有與體素內(nèi)等值面的交線通過檢測該面的四個頂點就可以確定。四個頂點中我們假設它們都有兩種狀態(tài)即高于閾值和低于閾值狀態(tài),則一個面有1個點處于不同狀態(tài),2個點處于不同狀態(tài),和全部處于同一狀態(tài)三種情況。其中1點狀態(tài)不同有一種交線形式,2點有兩種,全部處于同一狀態(tài)則沒有交線出現(xiàn),如圖3所示。綜上所述通過對種子體素立方體一個方向的面的四個頂點進行監(jiān)測就可以判斷這個方向的接鄰體素是否含有等值面。

      圖3 體素內(nèi)等值面與體素表面相交的幾種情況

      通過上面的規(guī)則,只要給出相應的種子體素我們就能夠?qū)⒄麄€體數(shù)據(jù)中包含有等值面的體素提取出來進行處理,避免將體素逐個遍歷從而節(jié)省大量時間。

      1.4 改進算法的實現(xiàn)

      實現(xiàn)該算法首先要解決的問題是種子體素的選取問題,我們采用了二次取樣的方法進行種子點的提取,即遍歷時對每個維度增長速度進行加倍。這樣能夠提高遍歷的速度,一般二次取樣都會降低體數(shù)據(jù)的精度,但是本算法二次取樣后得到的體素在進行區(qū)域增長獲取邊界體素后并不會影響精度。在獲得了種子體素后就可以進行鄰接體素的檢測了,本算法使用了一個棧和一個哈希表來輔助算法計算。

      算法流程為:

      (1) 將種子體素入棧,監(jiān)測接鄰體素8個頂點,判斷哪些接鄰體素具有等值面,將具有等值面的接鄰體素入棧,并加入哈希表。

      (2) 監(jiān)測棧是否為空,為空則算法結(jié)束,不為空則將棧頂部的體素彈出。

      (3) 將彈出體素的八個頂點進行監(jiān)測,判斷哪些接鄰體素據(jù)有等值面,監(jiān)測具有等值面的接鄰體素是否在哈希表中,不在表中的接鄰體素入棧。

      (4) 為彈出的體素進行等值面繪制,轉(zhuǎn)到第(2)步。

      算法核心編程:

      //算法通過棧和哈希表提取含有等值面的體素立方體

      while (!readyCubes.empty())

      {

      idx=readyCubes.top();

      readyCubes.pop();

      //從圖譜數(shù)據(jù)文件取出組成一個立方體8個頂點的值

      s[0] = scalars[idx];

      s[1] = scalars[idx+1];

      s[2] = scalars[idx+1 + dims[0]];

      s[3] = scalars[idx + dims[0]];

      s[4] = scalars[idx + sliceSize];

      s[5] = scalars[idx+1 + sliceSize];

      s[6] = scalars[idx+1 + dims[0] + sliceSize];

      s[7] = scalars[idx + dims[0] + sliceSize];

      //向棧加入鄰接立方體,并為當前立方體添加哈希標記

      //監(jiān)測上方鄰接立方體在哈希表中是否有記錄以及是否有等值

      //面,如果有等值面且哈希表無記錄則將其入棧

      if (!(s[0] < min && s[1] < min && s[2] < min && s[3] < min||s[0] > max && s[1] > max && s[2] > max && s[3] > max))

      {

      if((idx-sliceSize)<0)

      continue;

      if (!CheckedCubes.find(idx-sliceSize))

      {

      readyCubes.push(idx-sliceSize);

      CheckedCubes.insert(idx-sliceSize);

      }

      }

      //監(jiān)測下方鄰接立方體在哈希表中是否有記錄以及是否有等值

      //面,如果有等值面且哈希表無記錄則將其入棧

      if (!(s[4] < min && s[5] < min && s[6] < min && s[7] < min||s[4] > max && s[5] > max && s[6] > max && s[7] > max))

      {

      if((idx+sliceSize)<0)

      continue;

      if (!CheckedCubes.find(idx+sliceSize))

      {

      readyCubes.push(idx+sliceSize);

      CheckedCubes.insert(idx+sliceSize);

      }

      }

      //監(jiān)測左方鄰接立方體在哈希表中是否有記錄以及是否有等值

      //面,如果有等值面且哈希表無記錄則將其入棧

      if (!(s[0] < min && s[3] < min && s[4] < min && s[7] < min||s[0] > max && s[3] > max && s[4] > max && s[7] > max))

      {

      ?

      }

      //監(jiān)測右方鄰接立方體在哈希表中是否有記錄以及是否有等值

      //面,如果有等值面且哈希表無記錄則將其入棧

      ?

      //監(jiān)測前方……

      ?

      //監(jiān)測后方……

      ?

      }

      2 VTK應用

      2.1 VTK簡介

      VTK(visualization toolkit)[9,10]是一個開源的免費軟件系統(tǒng),我們可以直接從官網(wǎng)上獲得最新版本。它廣泛應用于三維計算機圖形學、圖像處理和可視化。VTK具有強大的三維圖形功能,在支持體繪制的同時也保留了傳統(tǒng)的面繪制。其獨特的數(shù)據(jù)管道化處理使得VTK在處理大量數(shù)據(jù)時不用考慮內(nèi)存資源的限制。它將我們在可視化開發(fā)中常用的一些算法封裝起來,提供給我們相關的類,通過將開發(fā)中的細節(jié)屏蔽起來大大簡化了可視化開發(fā)中的復雜程度。此外VTK還能夠跨平臺并且支持數(shù)據(jù)并行處理,它能夠在任何Unix和Windows平臺上使用,而且具有良好的可移植性。

      2.2 VTK可視化管線

      VTK對數(shù)據(jù)進行可視化采用的是獨特的管線處理機制[11],通過管線機制VTK能夠讀取數(shù)據(jù)、對數(shù)據(jù)進行處理、將處理后的數(shù)據(jù)傳入渲染引擎進行顯示。這種機制減小了編程的復雜度,使數(shù)據(jù)的輸入與數(shù)據(jù)的處理過程相分離。將數(shù)據(jù)與處理算法引入后只需要保證輸入與處理過程的接口一致就可以了,而不用去考慮除了管線以外其他的因素。并且在對同一數(shù)據(jù)用不同的算法進行處理時,只需要更換相關處理過程的類就可以了。

      處理管線一般包括數(shù)據(jù)源、過濾器、映射器、表演者、渲染器和窗口。另外用戶接口和控制器雖然不是處理管線中必要的部分,但是作為應用程序用戶交互一部分也是十分重要的。處理管線根據(jù)數(shù)據(jù)類型的不同具有不同的數(shù)據(jù)處理過程,但是其本質(zhì)是相同的,流程如圖4所示。

      圖4 VTK可視化處理管線

      改進算法融入到VTK可視化管線的方法如下:

      (1) 讀入腦圖譜數(shù)據(jù)

      vtkImageReader *imreader = vtkImageReader::New();

      GetImageReader(imreader);

      (2) 建立數(shù)據(jù)處理過濾器,并將改進算法引入其中

      //其中MarchingCubesReduce為改進MC算法的封裝類

      MarchingCubesReduce *extractor = MarchingCubesReduce::New();

      extractor->SetInputConnection(imreader->GetOutputPort());

      extractor->SetValue(0,3);

      extractor->Update();

      (3) 建立映射器

      vtkPolyDataMapper *mapper = vtkPolyDataMapper::New();

      mapper->SetInputConnection(extractor->GetOutputPort());

      mapper->SetColorModeToMapScalars();

      mapper->SetScalarRange(1.0,20.0);

      (5) 添加表演者、渲染窗口以及控制器

      vtkActor *actor = vtkActor::New();

      actor->GetProperty()->SetColor(0.5,0.0,0.0);

      actor->SetMapper(mapper);

      vtkRenderer *ren = vtkRenderer::New();

      vtkRenderWindow *renWin = vtkRenderWindow::New();

      renWin->AddRenderer(ren);

      vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();

      iren->SetRenderWindow(renWin);

      在引入改進MC算法之后,該算法能夠提高過濾器處理腦圖譜數(shù)據(jù)的效率。

      2.3 生成圖像性能及質(zhì)量的優(yōu)化

      考慮到系統(tǒng)最后的運行效果,我們要對三維重建后得到的圖形進行優(yōu)化,減小它的復雜度、提高顯示效果,加快系統(tǒng)的運行速度。對生成圖像進行優(yōu)化主要從三方面入手:對原始數(shù)據(jù)進行精簡;選擇產(chǎn)生更簡單圖形的算法;對最終生成圖像采用優(yōu)化算法。

      VTK類庫中有多種方法能對原始數(shù)據(jù)進行簡化,縮小原始數(shù)據(jù)的規(guī)模。其中vtkImageResample類通過線性插值方式對輸入的數(shù)據(jù)進行重新采樣,重新采樣的結(jié)果可以更致密或者相對稀疏一些。通過該類我們能夠?qū)⒃紨?shù)據(jù)的質(zhì)量降低,從而降低數(shù)據(jù)的復雜程度,提高處理速度。另外VTK中的vtkImageShrink3D類能夠?qū)崿F(xiàn)二次抽樣,可以加速數(shù)據(jù)的輸入。通過該類的相關函數(shù)能夠控制抽樣的精度從而得到速度和質(zhì)量平衡的效果。該類搭配vtkImageResample類能夠大幅度地提高數(shù)據(jù)的處理速度。

      選擇性能更優(yōu)良的處理算法能夠使最后獲得的圖像有更好的效果,并提高處理速度。本文使用了MC算法計算腦圖譜數(shù)據(jù)的等值面,該算法得到的最后結(jié)果經(jīng)過優(yōu)化與未經(jīng)過優(yōu)化的結(jié)果相比其最后圖像所包含的三角面片大大減少。如圖5所示。優(yōu)化前腦區(qū)三維重建包含25 296個單元,優(yōu)化后包含15 412個單元。

      圖5 三維重建優(yōu)化前后比較

      如果對最后生成的圖像面片數(shù)量還是不滿意還可以通過使用VTK提供的vtkDecimatePro 類,它能夠有效地減少生成圖像的三角面片。不過削減比例過大有可能破壞圖形原本的拓撲結(jié)構。

      對圖形進行削減后雖然提高了性能但是有可能使圖像變得參差不齊,這時我們可以通過圖像平滑類vtkSmoothPoly-DataFilter對圖像進行處理,提高其顯示質(zhì)量。該類通過對生成圖像各個點的坐標進行修改,從而使構成圖形的網(wǎng)格更疏松,各個定點的分布更加均勻,最終使圖形的各個單元獲得更好的形狀。

      優(yōu)化圖像步驟如下:

      (1) 重新采樣縮小數(shù)據(jù)規(guī)模

      vtkImageResample *irreduce =vtkImageResample::New();

      Irreduce->SetInput(imreader.GetOutput());

      Irreduce->SetAxisMagnificationFactor(0, 0.5);

      Irreduce->SetAxisMagnificationFactor(1, 0.5);

      Irreduce->SetAxisMagnificationFactor(2, 0.5)

      (3) 使用vtkDecimatePro 類削減面片

      vtkDecimatePro *DecimatePro = vtkDecimatePro::New();

      DecimatePro->SetInputConnection(extractor->GetOutputPort() );

      DecimatePro->SetTargetReduction(0.3);

      DecimatePro->PreserveTopologyOn();

      (3) 對生成的圖像進行平滑處理

      vtkSmoothPolyDataFilter *smoother = vtkSmoothPolyDataFilter::New();

      smoother->SetlnputConnection(DecimatePro->GetOutput());

      smoother->SetNumberOflterations(200);

      (4) 計算面片的法向量

      vtkPolyDataNormals *Normals = vtkPolyDataNormals::New();

      Normals->SetInputConnection(smoother->GetOutputPort());

      Normals->FlipNormalsOn();

      3 系統(tǒng)結(jié)構及人機界面

      3.1 系統(tǒng)結(jié)構設計

      本文制作的腦圖譜三維重建系統(tǒng)基于VTK以及在醫(yī)學圖像處理平臺3D Slicer 開發(fā)中曾用到的KWWidgets[12]類庫。通過人機交互界面控制腦圖譜數(shù)據(jù)的輸入,以及腦圖譜數(shù)據(jù)的處理。根據(jù)不同的顯示要求對數(shù)據(jù)處理調(diào)用相應的算法和優(yōu)化處理過程,最終為腦圖譜的三維顯示、二維顯示、腦圖譜各個腦區(qū)的偵測和標記提供處理好的數(shù)據(jù)。系統(tǒng)結(jié)構如圖6所示。

      圖6 系統(tǒng)結(jié)構設計圖

      3.2 人機交互界面設計

      系統(tǒng)圖形界面使用KWWidgets界面庫制作,該類庫也是由VTK的開發(fā)公司開發(fā)的。因此與VTK庫能良好的配合使用,同時這套類庫提供了很多可視化編程要用到的控件,能極大地節(jié)省軟件開發(fā)的時間,此類庫還支持TCL/TK腳本語言,方便進行開發(fā)。

      整個系統(tǒng)的用戶界面分為三部分:(1) 主控制面板;(2) 主顯示窗口;(3) 二維圖像顯示窗口。如圖7所示。

      圖7 系統(tǒng)界面

      (1) 主控面板包含有相關文件的輸入輸出功能,為各個腦區(qū)建立標簽的功能,調(diào)整腦區(qū)三維圖形光照的功能,以及調(diào)整腦區(qū)三維圖形的顏色與透明度的功能。

      (2) 主顯示窗口用來顯示腦圖譜的三維重建圖像,用戶可以通過鼠標點擊拖拽和滾輪滾動控制三維圖像的角度變換,以及視角的拉近和推遠。

      (3) 二維圖像顯示窗口顯示二維的腦圖譜數(shù)據(jù),用戶可以在任意一個顯示窗口點擊,從而交互的改變其他窗口顯示的腦切面的位置。

      4 實驗及結(jié)果分析

      4.1 實驗數(shù)據(jù)介紹

      本系統(tǒng)要求的輸入文件為包含腦圖譜數(shù)據(jù)的NIfTI[13]格式文件。在本文中的實驗數(shù)據(jù)為來自于中國科學院自動化研究所腦網(wǎng)絡組研究中心的腦網(wǎng)絡組圖譜(Brainnetome Atlas)中的腦區(qū)分區(qū)結(jié)果[14](http://atlas.brainnetome.org)。文件維度為181×271×181。本圖譜文件包含有兩個大腦半球的39個腦區(qū),圖譜文件各個分區(qū)所包含的體素value值都為其所屬分區(qū)的編號值。如表3所示。

      表3 Brainnetome Atlas腦圖譜數(shù)據(jù)

      續(xù)表3

      此外由于實驗數(shù)據(jù)的腦圖譜文件不包含腦模板。因此本文在實驗中輸入文件還包含了與圖譜文件匹配的的cpbet腦模板文件,用來形成腦模板的三維圖像,使重構后的圖譜文件三維圖像能夠在模板上顯示。

      4.2 系統(tǒng)效率分析

      本系統(tǒng)在CPU為酷睿雙核2 GHz,3 GB內(nèi)存,顯卡為GT130m的平臺上對實驗數(shù)據(jù)進行處理。實驗得到的MC原始算法與改進后的效率對比如表4所示。

      表4 原始算法與改進算法效率對比

      從對比數(shù)據(jù)中可以看出原始MC算法重建整個腦圖譜表面比改進算法多進行了400多倍的遍歷次數(shù)。但是由于棧和哈希表所占用的時間耗費,實際處理時間雖然沒有遍歷次數(shù)下降的幅度大但是也能夠從12 814 ms加快到1852 ms,減少了85%的時間耗費。重建時間分為遍歷時間和繪制時間。繪制時間是對體素的等值面進行繪制的時間這個時間兩種算法基本持平。在遍歷時間上改進算法根據(jù)重建表面所占的體素數(shù)來決定耗費時間,原始算法則遍歷整個體數(shù)據(jù)空間,因此原始算法的遍歷時間基本上是不變的,改進算法提高效率就是源于遍歷時間相對于原始算法大大減少。圖8給出了隨著處理體素數(shù)量增長兩種算法的效率對比。

      圖8 改進算法與原始算法基于體素數(shù)的效率對比

      4.3 三維重建效果

      圖9給出了兩種算法重建的單個腦區(qū)圖形,改進算法與原始算法產(chǎn)生的圖形相差無幾。證明使用改進算法進行加速不會影響重建效果。圖10則給出了二維腦圖譜圖像與三維重建的對比,其中二維圖像為單層圖像看不見下層的腦區(qū),三維重建后所有的腦區(qū)都能夠方便地進行觀察。

      圖9 單個腦區(qū)的重建對比

      圖10 三維重建結(jié)果與二維圖譜對比

      5 結(jié) 語

      腦圖譜一直以來都是研究腦部結(jié)構和功能的重要手段。目前,腦圖譜相關的研究工作正在國內(nèi)外腦科學研究單位如火如荼的開展。醫(yī)學三維重建技術作為一門已經(jīng)成熟的技術應用在腦圖譜三維重構上極大地提升了腦圖譜的可視化效果。本文對腦圖譜三維重建顯示過程中處理算法的選擇、圖形的優(yōu)化以及用戶交互進行設計,并完成了一個處理速度快、顯示質(zhì)量達到應用要求的腦圖譜三維重建和可視化系統(tǒng)。并且使用Brainnetome Atlas的臨床數(shù)據(jù)對系統(tǒng)進行測試,基于改進MC算法的三維重建系統(tǒng)確實在腦圖譜數(shù)據(jù)的處理上展現(xiàn)了高于原始算法的效率。

      在本文課題進行過程中,VTK類庫得到了大量的應用。它作為一款開源的可視化軟件,其功能十分強大,而且可以根據(jù)個人需要對其進行改進,這方面是其他軟件做不到的。

      以上工作只是腦圖譜三維重建及可視化的一個初步探索,很多功能還尚待進一步實現(xiàn)。隨著對體數(shù)據(jù)三維重建算法在并行計算和GPU處理等方面改進的實現(xiàn),我們將進一步豐富該系統(tǒng)的功能,提高其重建效率,改善其可視化效果。

      [1] 常旖旎,魯雯,聶生東.醫(yī)學圖像三維可視化技術及其應用[J].中國醫(yī)學物理學雜志,2012,29(2):3254-3258.

      [2] 解立志,周明全,田沄,等.基于光線投射算法的腦血管體繪制技術[J].系統(tǒng)仿真學報,2012,24(9):1-5.

      [3] 陳卿.醫(yī)學影像三維可視化Marching Cubes算法研究[D].成都:電子科技大學,2011.

      [4] Nielson G M.On marching cubes[J].Visualization and Computer Graphics,IEEE Transactions on,2003,9(3):283-297.

      [5] Lopes A,Brodlie K.Improving the robustness and accuracy of the marching cubes algorithm for isosurfacing[J].Visualization and Computer Graphics,IEEE Transactions on,2003,9(1):16-29.

      [6] 張迎平,高國賢,陸一峰,等.基于區(qū)間樹硬件加速索引的Marching Cubes算法[J].計算機輔助設計與圖形學學報,2012,24(7):871-878.

      [7] 王旭初,王贊.基于最近鄰Marching Cubes的醫(yī)學圖像三維重建[J].計算機工程與應用,2012,48(18):154-158.

      [8] 熊邦書,何明一,俞華璟.基于空間連通性的快速曲面重建算法[J].系統(tǒng)仿真學報,2005,17(1):75-78.

      [9] 洪濤,潘志方,林立本,等.VTK醫(yī)學圖像三維重建應用及實現(xiàn)[J].計算機系統(tǒng)應用,2011,20(4):127-130.

      [10] Sun S,He J,Ma L.3D visualization system for medical image based on VTK and OK Series Image Board[C]//Computer Science and Service System (CSSS),2011 International Conference on.IEEE,2011:951-954.

      [11] Caban J J,Joshi A,Nagy P.Rapid development of medical imaging tools with open-source libraries[J].Journal of digital imaging,2007,20(1):83-93.

      [12] Fang L,Wan Z,Zeng W,et al.Research on Internationalization of 3D Slicer[C]//Computer Sciences and Applications (CSA),2013 International Conference on.IEEE,2013:469-473.

      [13] Larobina M,Murino L.Medical Image File Formats[J].Journal of digital imaging,2014,27(2):200-206.

      [14] Jiang T,Zhou Y,Liu B,et al.Brainnetome-wide association studies in schizophrenia:The advances and future[J].Neuroscience & Biobehavioral Reviews,2013,37(10):2818-2835.

      3D RECONSTRUCTION OF BRAIN ATLAS BASED ON MODIFIED MARCHING CUBES ALGORITHM

      Zhu Kai1Fan Lingzhong2,3Li Haifang1*

      1(SchoolofComputerScienceandTechnology,TaiyuanUniversityofTechnology,Taiyuan030024,Shanxi,China)2(BrainnetomeCenter,InstituteofAutomation,ChineseAcademyofSciences,Beijing100190,China)3(NationalLaboratoryofPatternRecognition,InstituteofAutomation,ChineseAcademyofSciences,Beijing100190,China)

      Along with that brain atlas plays more and more important role in teaching and application of neurosurgery operation, 3D reconstruction of brain atlas has become a major research direction of brain atlas. In order to improve the efficiency of MarchingCubes algorithm in extracting isosurface of brain atlas data, we propose an improved algorithm suitable for 3D reconstruction of brain atlas through the study on the traversal method and topological structure of MarchingCubes algorithm, and realise the brain atlas 3D reconstruction system based on the improved algorithm. We use brain atlas data of Brainnetome Atlas as the experimental data to test the efficiency of the system, experimental results show that relative to original algorithm the improved algorithm really improves the efficiency of 3D reconstruction system in processing brain atlas data.

      Isosurface MarchingCubes 3D reconstruction Brain atlas

      2014-09-06。國家自然科學基金項目(61373101);山西省自然科學(青年科技研究)基金項目(2014021022-5);山西省科技攻關項目(20130311037-4)。朱愷,碩士生,主研領域:智能信息處理。樊令仲,助理研究員。李海芳,教授。

      TP391.7

      A

      10.3969/j.issn.1000-386x.2016.04.042

      猜你喜歡
      體素等值立方體
      基于超體素聚合的流式細胞術自動門控方法
      疊出一個立方體
      基于多級細分的彩色模型表面體素化算法
      異步電動機等值負載研究
      防爆電機(2020年5期)2020-12-14 07:03:50
      運用邊界狀態(tài)約束的表面體素加密細分算法
      基于體素格尺度不變特征變換的快速點云配準方法
      圖形前線
      立方體星交會對接和空間飛行演示
      太空探索(2016年9期)2016-07-12 09:59:53
      折紙
      電網(wǎng)單點等值下等效諧波參數(shù)計算
      岱山县| 贵阳市| 昭苏县| 章丘市| 炎陵县| 贵州省| 双牌县| 孟村| 日土县| 西平县| 六盘水市| 金溪县| 察哈| 南昌县| 佳木斯市| 房山区| 西平县| 巫溪县| 巴里| 乐安县| 双牌县| 大竹县| 蓝田县| 临安市| 宿松县| 沙洋县| 灵寿县| 海门市| 长汀县| 新蔡县| 康乐县| 吉木萨尔县| 泗洪县| 聊城市| 台北市| 彭水| 兴隆县| 平果县| 韶关市| 利辛县| 芒康县|