VTK 表面重建-等值面提取
来源:互联网 发布:淘宝买东西有限额吗 编辑:程序博客网 时间:2024/05/16 07:59
等值面提取
等值面(线)提取是一种常用的可视化技术,常应用与医学、地质、气象学等领域,例如,在医学图像处理中,由于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"vtkPolyDataMapper.h"#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(){ std::string str = "HeadMRVolume.mhd"; vtkSmartPointer<vtkMetaImageReader> reader = vtkSmartPointer<vtkMetaImageReader>::New(); reader->SetFileName(str.c_str()); reader->Update(); vtkSmartPointer<vtkMarchingCubes> surface = vtkSmartPointer<vtkMarchingCubes>::New(); surface->SetInputConnection(reader->GetOutputPort()); surface->ComputeNormalsOn(); surface->SetValue(0, 200); surface->Update(); vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); mapper->SetInputConnection(surface->GetOutputPort()); mapper->Update(); vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New(); actor->SetMapper(mapper); actor->GetProperty()->SetColor(1,0,0); vtkSmartPointer<vtkRenderer> ren = vtkSmartPointer<vtkRenderer>::New(); ren->AddActor(actor); vtkSmartPointer<vtkRenderWindow> renwin = vtkSmartPointer<vtkRenderWindow>::New(); renwin->AddRenderer(ren); renwin->SetSize(740, 480); renwin->SetWindowName("Set_Value"); renwin->Render(); vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New(); iren->SetRenderWindow(renwin); iren->Initialize(); iren->Start(); return EXIT_SUCCESS;}
运行结果如下图
阅读全文
1 0
- VTK 表面重建-等值面提取
- VTK修炼之道55:图形基本操作进阶_表面重建技术(等值面提取)
- vtk 提取等值面并显示
- VTK 三维轮廓等值面的提取
- VTK教程之十 可视化基础算法-三维轮廓面(等值面)提取
- VTK 面绘制 重建
- VTK 表面重建-三角剖分
- 图形处理(九)点云重建(下)法矢求取、有向距离场等值面提取
- 图形处理(九)点云重建(下)法矢求取、有向距离场等值面提取
- MarchingCubes算法提取等值面的基本原理
- VTK修炼之道56:图形基本操作进阶_表面重建技术(三维点云曲面重建)
- VTK修炼之道61:体绘制_光线投影+最大密度投影+等值面法
- VTK修炼之道54:图形基本操作进阶_表面重建技术(三角剖分)
- vtk等值面体绘制|纹理映射体绘制 附:不透明传输函数,颜色传输函数、光照与阴影
- VTK虚拟切片提取
- VTK轮廓提取
- vtk计算Polydata的表面曲率
- 聚焦等值面的创建
- 设计模式知识连载(17)---原型模式:
- SIFT算法详解
- ShaderWeaver使用教程-动画序列帧
- ps-黑底图片抠图
- C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
- VTK 表面重建-等值面提取
- 服务器VPN配置教程(2)——界面配置法+shell脚本启动
- AutoCAD .Net 遍历组
- C++ 栈和队列的使用
- tp5分页遇到的问题
- 洛谷 P2084 进制转换
- js--打卡--DOM的querySelector和querySelectorAll方法
- 特征工程
- C#中null和""的区别