VTK 表面重建 等值面提取

2021-08-13 11:51:46 字數 1394 閱讀 5479

等值面(線)提取是一種常用的視覺化技術,常應用與醫學、地質、氣象學等領域,例如,在醫學影象處理中,由於ct、mri等影象解析度越來越高,雖然體繪製可以清晰地對資料結構進行視覺化,但是其計算量和效率卻制約了其使用。此時可以通過等值面提取技術,僅提取感興趣的乙個或幾個組織輪廓,並生成網格模型以供後續的處理和顯示。

vtk中的等值面提取演算法多基於marching cubes演算法來實現。marchingcubes是經典的移動立方體等值面提取演算法,等值面提取類根據資料型別的不同而有所側重。vtkimagemarchingcubes主要處理三維影象資料;vtkmarchingcubes主要是針對規則體資料生成等值面;vtkmarchingsquares則是針對二維規則網格資料生成等值線。

首先通過乙個reader物件讀取一副,並將其輸入到vtkmarchingcubes中,提取等值麵時,最重要的操作是設定等值面的數值,setvalue()函式用於設定等值面的值,其第乙個引數表示等值面的序號,因此可以通過此函式設定多個等值面數值來提取多個等值面。

#include

"vtksmartpointer.h"

#include

"vtkrenderer.h"

#include

"vtkrenderwindow.h"

#include

"vtkactor.h"

#include

"vtkpolydata.h"

#include

#include

"vtkimagereader.h"

#include

"vtkmarchingcubes.h"

#include

"vtkproperty.h"

#include

"vtkrenderwindowinteractor.h"

#include

"vtkvoxelmodeller.h"

#include

"vtkinteractorstyle.h"

#include

"vtkautoinit.h"

#include

"vtkmetaimagereader.h"

vtk_module_init(vtkrenderingopengl);

vtk_module_init(vtkrenderingfreetype);

vtk_module_init(vtkinteractionstyle);

int main()

執行結果如下圖

利用VTK構造球形(表面)點雲

vtkpointsource用於在球體內產生指定數量的點,使用者可以指定球的半徑和球心位置。預設情況下,產生的點隨機分布於球內,也可以產生隨機分布於球表面的點雲。include include include include for point and indices enum values int...

VTK學習(八)vtk管線

vtk module init vtkinteractionstyle int main int argc,char argv vtk兩個重要概念,一,渲染引擎,負責資料的視覺化表達。二,視覺化管線,指用於獲取資料,處理資料以及把資料寫入檔案或者把資料傳入渲染引擎進行顯示。資料物件,處理物件,資料流...

VTK 在linux下編譯VTK

3 cd vtk build ccmake home jack software vtk 8.2.0 vtk 8.2.0 在鍵盤上按下 c 會出現下面的介面 cmake install prefix表示庫檔案和標頭檔案要存放的位置 如果看到可以按下g 按下g進行生成 4 使用make進行編譯 mak...