Activiz 使用筆記-4 數據源(2)

上一篇寫了一些數據源的生成或者讀取方法。下面開始嚴肅的講一下VTK中的數據集,雖然感受有時候不會直接去用,可是感受這個是基礎,因此要先看。c++

直接看《VTK用戶手冊》的第44頁 3.1 可視化vtkDataSet類數據算法

在寫這篇的時候,也結合了張曉東、羅火靈兩位大大編寫的《VTK圖形圖像開發進階》。這本書的3.2 節也是講數據對象和數據集編程


在VTK中,數據通常以數據對象的形式表現。數據對象是數據的集合,數據對象表現的數據是能夠被可視化管線處理的數據,只有當數據對象被組織成一種結構後,才能被VTK提供的可視化算法所處理。spa

將數據對象組織成一種結構並賦予相應的屬性值,就造成了數據集(Dataset)。VTK裏與數據集對應的類是vtkDataSet,該類從vtkdataObject直接派生。(《VTK圖形圖像開發進階》)對象

vtkDataSet 是全部數據集類的父類,是一個抽象類,不能實例化。開發

vtkDataSet由兩個部分組成:組織結構(Organizing Structure)以及與組織結構相關的屬性數據(Attribute Data)
get

而vtkDataSet的組織結構又由拓撲結構(Topology)和幾何結構(Geometry)兩部分組成。基礎

《VTK圖形圖像開發進階》這本書上將的很清晰(P49),特摘錄下來(我按照本身的理解從新組織了一下):可視化

幾何結構描述了對象的空間位置關係(好比,要畫一個三角形,首先須要指定三角形的三個頂點座標P1,P2,P3,在VTK中指定點用PointData)進階

拓撲結構描述了對象的構成形式(好比,上面所說的三個頂點P1,P2,P3在不指定拓撲關係的時候,有不少種組織形式,好比,三個孤立的點,好比一條直線加一個孤立的點,或者是一段折線,可是指定了拓撲結構,好比說按照P1-P2-P3的順序用直線鏈接起來,那麼他就是一個三角形,vtk用單元數據來描述拓撲結構)

上面的三個點P1,P2,P3定義了數據集的幾何結構,而P1,P2,P3順序鏈接方式定義了數據集的拓撲結構。也就是點數據定義了數據集的幾何結構,單元數據定義了數據集的拓撲結構,要造成完整的數據集必須有幾何和拓撲兩種結構。

拓撲結構具備幾個變換不變性。例如說一個多邊形是三角形,即指器拓撲結構,而給定每一個點的座標,則爲其幾何結構。

幾何結構是一種空間描述,與空間變換有緊密聯繫,常見的變換有旋轉、平移和縮放。

屬性數據是對拓撲結構和幾何信息的補充,屬性數據能夠是某個點的溫度值,也能夠是某個單元的質量。

可能單看上面以爲有點蒙,也可能會以爲好像太理論沒什麼用,那能夠直接看《VTK圖形圖像開發進階》的第62頁,這裏講了數據集中的一種,vtkImageData,這個數據集的應用十分普遍,vtkImageData類型的數據集是按照規則排列在矩形方格中的點和單元的集合,以下圖所示,若是數據集的點和單元排列在平面(二維)上,則稱此數據集爲像素映射(pixmap)、位圖或圖像。若是排列在層疊面(三維)上,則稱爲體。vtkImageData 是由一維的線、二維的像素或三維的體素組成,vtkImageData的結構以及拓撲都是規則的,所以每一個點的位置能夠隱式的表達,只須要知道vtkIamgeData數據的維數、起始點的位置和相鄰點之間的間距,就能夠計算出每一個點的空間位置。數據維數用一個三元組(nx,ny,nz)來表示,分別表示在X,Y,Z 方向上點的個數。vtkImageData數據集的點的個數一共是 nx*ny*nz,單元的個數一共是(nx-1)*(ny-1)*(nz-1)。

http://image.szpt.edu.cn/UploadFiles/%E6%95%B0%E6%8D%AE%E9%9B%86%E4%B8%8E%E6%95%B0%E6%8D%AE%E5%B1%9E%E6%80%A7.swf

上面的網址中也詳細的講解了,VTK的數據集和數據屬性,這時周振環老師的《醫學圖像編程技術》中的內容。

下面簡單寫幾個例子,c++實現的例子在書上面都有了,我就把他們改爲C#下的實現吧。

代碼有點多放在下一篇。

相關文章
相關標籤/搜索